настя юсупова
07.06.2011 15:36:47
Описание телефона фирмы NOKIA, модели X3-02 Touch and Type
Сегодня хотелось бы рассмотреть довольно хорошую модель телефона, фирмы Nokia. Полное название дан ...
  Андрей Жуков
18.04.2011 07:39:06
Фото-проект Anode.ru
Как наверное заметили самые внимательные читатели, в начале 2011 года у Anode.ru появилось ответвл ...
 мультимедиа аудиоконтроллер
(в форуме "Звук и мультимедиа")
 Сопровождение и обслуживание веб сайтов
(в форуме "Продвижение и раскрутка Интернет-проектов")
 PSP Slim - необратимый БРИК
(в форуме "Прошивки и решение проблем с SonyPSP")
 проблема с Samsung sp1213n
(в форуме "Память и накопители")
 Посоветуйте бюдежтный коммуникатор на Windows Mobile
(в форуме "Мобильные телефоны, КПК и смартфоны")


.

TCL и BBInterface. Не вместо, а вместе! (Продолжение)

По мере написания предыдущей статьи я нашёл ещё один способ создания иконок. По видимому автор растёт вместе со своими статьями. Я думаю это неплохо. Ну пробуем.

И так в меню любого элемента bbInterface - Global Options - Desctop OnDrop Command пишем:
@Script [@BBInterface Control Create Button|@tcl confIcon $$LastControl$$ {$$DroppedFile$$} $$Mouse.X$$ $$Mouse.Y$$]

И добавляем tcl-команду следующего содержания:
set iCount 0

Код
proc confIcon {icon file x y} {
broam "@BBInterface Control SetWindowProperty $icon Width 38"
broam "@BBInterface Control SetWindowProperty $icon Height 38"
broam "@BBInterface Control SetWindowProperty $icon X $x"
broam "@BBInterface Control SetWindowProperty $icon Y $y"
broam "@BBInterface Control SetAgent $icon Image Icon \"$file\""
broam "@BBInterface Control SetAgent $icon LeftMouseDown Run \"$file\""
if {[string trim $icon Button]>$::iCount} {incr ::iCount}
}


Разбор полётов. В первых двух способах мы использовали для создания иконок независимые способы. Сейчас всё немного по другому:
@Script [@BBInterface Control Create Button|@tcl confIcon $$LastControl$$ {$$DroppedFile$$} $$Mouse.X$$ $$Mouse.Y$$]

Конструкция @Script нам знакома. @BBInterface Control Create Button также (см способ создания иконок через bbInterface).

А как же работает наша процедура? Четыре параметра отвечают за передачу TCL четырёх переменных bbInterface:
icon - $$LastControl$$ - имя последнего созданного элемента.
file - $$DroppedFile$$ - путь к перенесённому на рабочий стол файлу.
x y - $$Mouse.X$$ $$Mouse.Y$$ - координаты X и Y мыши во время срабатывания скрипта.

Я думаю что вызов всех Bro@m в коде процедуры ясен. Разберём только строчку:
if {[string trim $icon Button]>$::iCount} {incr ::iCount}

оператор if - оператор сравнения. Простой (есть ещё и сложный) формат оператора if:
if {выражение} {действие}. Сначала вычисляется выражение, если оно истинно (=1) то выполняется действие, иначе ничего и скрипт продолжает выполняться дальше.

string trim $icon Button - команда string trim позволяет "обрезать" в строке начальные и конечные символы. Формат такой: string trim строка символы. В нашем случае из строки $icon вырезаются символы Button. Когда bbInterface создаёт кнопку командой @BBInterface Control Create Button то он присваивает ей имя ButtonX где Х первое свободное число. Вырезав из строки ButtonX символы Button мы оставляем только число X.

Далее мы сравниваем это число X с параметром iCount и если X больше то увеличиваем iCount на 1. Для чего это делается мы увидим чуть позже.

Здесь также необходимо пояснить использование ::iCount. Мы объявили iCount вне текста нашей процедуры (как в примере с TCL вариантом создания иконок). Значит если мы хотим использовать переменную внутри процедуры нам необходимо выполнить команду global. Но есть и второй вариант: использовать пространства имён. Объясню подробно. Всё что написано вне процедур выполняется в основном пространстве имён (оно обозначается :: ). Переменные заданные внутри тела процедуры (например её параметры) составляют другое пространство имён. Это позволяет использовать переменные с одинаковыми именами в процедуре и в основном коде, т.е. мы вполне могли бы задать в коде процедуры confIcon переменную iCount (set iCount 0 например) и она не совпадала бы по значению с переменной iCount заданной в основном коде. Если в теле процедуры необходимо использовать переменную из основного кода то можно получить к ней доступ через команду global или через указание её полного имени (включая пространство имён), что мы и делаем (::iCount). Попробуйте убрать в TCL варианте команду global и заменить iCount на ::iCount. Процедура будет работать точно также. Всё это выглядит немного заумно, но впоследствии я попробую на более ярких примерах показать варианты использования пространств имён.
Sim
27.11.2008 07:41:55
офтопик
Привет.
Я не нашел ваших контактных данных, поэтому пишу тут, в надежде на помощь.
Я использую blackbox уже довольно давно, но столкнулся с одной неприятностью. Я пользуюсь программой Skype, она работает так что для сворачивания в трэй надо нажать на крестик сверху справа. Так вот, при использовании blackbox сворачивание в трэй Skype-а не происходит. Его кнопка остается на панели задач(кстати в качестве панели задач я использую bbLeanBar). И я не знаю как это исправить, как спрятать окно Skype с панели задач? Может есть какие-то настройки или плагин, который умеет выборочно прятать с панели задач кнопки запущенных программ?
Заранее спасибо за помощь.
20.12.2008 13:12:50
RE: офтопик
опа давно я на блоге не появлялся.
честно надо попробовать себе поставить скайп, если смогу эмулировать проблему то смогу и найти решение. А пока попробуйте добавить скайп в список exclusion.rc в настройках bbLeanSkin. Возможно это поможет.
Sim
20.12.2008 14:30:33
Skype и BlackBox
Я не использую плагин BBLeanSkin, мне нравится классический вид окон Windows. Кстати временно проблему решаю путем отправки мешающей кнопки Skype на второй виртуальный рабочий стол, там она и болтается, пока не нужна, а если нужна, без проблем вызываю окно из трэя, правда потом опять приходится ее прятать на другой рабочий стол.
22.12.2008 04:08:30
RE: Skype и BlackBox
Поставил Skype на чистый BBClean последней версии. Плагины bbLeanBar, bbLeanSkin, bbKeys. Всё работает как надо: при сворачивание - сворачивается в панель задач, при закрытии - сворачивается в трей. bbLeanSkin на работу ни как не влияет. Попробуй поставить чистый BB и проверь как будет работать.
Sim
22.12.2008 05:22:02
RE: RE: Skype и BlackBox
Дай пожалуйста ссылку на тот BBLean который ты скачал и поставил.
Sim
22.12.2008 06:47:22
RE: RE: RE: Skype и BlackBox
Уже скачал и поставил последнюю версию BBClean, у меня только версии плагинов отличаются (BBLeanBar и BBkeys).
Проблема с неисчезающей кнопкой Skype осталась.
Sim
22.12.2008 07:09:38
RE: RE: RE: RE: Skype и BlackBox
После установки новых версий плагинов, в частности bbKeys перестала работать клавиша Win на открытие главного меню. Хотя в настройках включена
KeyToGrab(LWIN), WithModifier(), WithAction(ExecCommand), DoThis(@BBCore.ShowMenu root)
KeyToGrab(RWIN), WithModifier(), WithAction(ExecCommand), DoThis(@BBCore.ShowMenu root)
Sim
22.12.2008 05:34:21
RE: RE: Skype и BlackBox
У меня усткановлено следующее:
bbLean 1.16 (bbClean) Built at Mar 1 2008 01:50:43 from SVN
плагины:
bbKeys 1.16 by grischka (2005-05-02)
bbLeanBar 1.16 by grischka (2005-05-02)
BBKeyhook v0.62b by Kaloth & GDR (23-05-2007)

Кстати, Skype по началу нормально скрывается в трее, а позже начинает выдрючиваться.
Sim
22.12.2008 05:39:36
RE: RE: Skype и BlackBox
Если есть желание может поговорим в аське? 53933805

комментарии | тесты    
Все права защищены
Anode.ru [2004г.-2009г.]