Полезная информация

Юристы зарабатывают огромные деньги и славу, оперируя хорошим знанием законов. Правила форума — простой путь к успешному общению.

№52609-04-2008 22:04:58

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4291
UA: Firefox 2.0

Re: Custom Buttons

Anton

Я из DOM Inspectora смотрел - type="menu". Может и врёт, конечно.

Именно из него и смотрел...

стрелка оказывается в этом случае дальше от кнопки, чем обычно.

Гм, хорошо, как создать «обычную» кнопку-меню? И на какой версии Thunderbird все это проверялось (есть у меня смутные подозрения...)?


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№52709-04-2008 22:18:54

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Custom Buttons

Гм, хорошо, как создать «обычную» кнопку-меню?

Ну очевидно же - type="menu";

И на какой версии Thunderbird все это проверялось (есть у меня смутные подозрения...)?

2.0.0.12, инспектор 1.8.1.2

Плюс ещё из кнопки

Выделить код

Код:

var bt = document. getElementById ("button-tag");
alert (bt. getAttribute ("type"));
alert (bt. type);

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№52810-04-2008 00:16:05

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4291
UA: Firefox 2.0

Re: Custom Buttons

Anton

Ну очевидно же - type="menu";

Ну, type="menu" и type="menu-button" – разные вещи. Например, «Получить новые сообщения» – и кнопка, и список (что я и хотел получить).

С другой стороны, стрелка оказывается в этом случае дальше от кнопки, чем обычно.

В этом и дело.
Для menu-button слева – кнопка, справа – список. А у menu – только список. Потому-то первая и шире.

P.S. Версии совпали.

Добавлено Thu Apr 10 00:29:21 2008 :
Кстати, из-за того, что атрибут orient="vertical" не работает в Firefox 2.0, есть смысл привязать к
toolbarbutton[type="menu"]
chrome://global/content/bindings/toolbarbutton.xml#menu-vertical
(причем в Firefox 1.5 данный binding отсутствует)
Тогда «треугольничек» будет справа, а не снизу.

Добавлено Thu Apr 10 00:34:06 2008 :
Причем я еще менял класс "menu-iconic-icon" на "blah-blah-blah-menu-iconic-icon". Насколько я помню, в одной из альф fx 3.0 в дефолтной теме было ограничение в 16px на размеры иконки, что жутко корявило картинки большего размера.

Отредактировано Infocatcher (10-04-2008 00:17:24)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№52910-04-2008 14:08:46

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Custom Buttons

атрибут orient="vertical" не работает в Firefox 2.0,

Почему у меня работает ?
2.0.0.12/13


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№53010-04-2008 14:31:14

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4291
UA: Firefox 2.0

Re: Custom Buttons

Почему у меня работает ?

http://pastebin.mozilla-russia.org/91123
Кнопка:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EMenu-button%20test%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20mp%20%3D%20document.createElement%28%22menupopup%22%29%3B%0Avar%20mi%20%3D%20document.createElement%28%22menuitem%22%29%3B%0Ami.setAttribute%28%22label%22%2C%20%22test%22%29%3B%0Amp.appendChild%28mi%29%3B%0Athis.appendChild%28mp%29%3B%0Athis.type%20%3D%20%22menu-button%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B//%20alert%28event.target.nodeName%29%3B%0Athis.type%20%3D%20%22menu%22%3B%0Athis.setAttribute%28%22orient%22%2C%20%22vertical%22%29%3B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%3C/custombutton%3E

После клика по кнопке:
fx 1.5.0.12: http://i019.radikal.ru/0804/d6/aa360f2d86fc.png
fx 2.0.0.13: http://i017.radikal.ru/0804/46/fb49bff3036e.png

Добавлено Thu Apr 10 14:33:55 2008 :
А без
this.setAttribute("orient", "vertical");
вид у кнопок будет одинаковый.

Отредактировано Infocatcher (10-04-2008 14:32:01)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№53110-04-2008 15:01:42

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Custom Buttons

может быть, это наоборот в 1.5 что-то не поддерживается, или просто разное поведение по умолчанию ?
попробуй

Выделить код

Код:

this. type = "menu";
this. orient = "horizontal"; // this. setAttribute ("orient", "horizontal");

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№53210-04-2008 15:57:01

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Custom Buttons

Ошибка связана с отсутствием четырёх строчек в chrome.manifest. В 0.0.3 добавлю недостающие.
Для временного обхода ошибки могу предложить записать в userChrome.css содержимое chrome://custombuttons/content/overlay.css

Выделить код

Код:

toolbarbutton[id^='custombuttons-button'] {
  -moz-binding: url("toolbarbutton.xml#toolbarbutton");
}

toolbarbutton[id^='custombuttons-button'][type="menu"] {
  -moz-binding: url("toolbarbutton.xml#menu");
}

toolbarbutton[id^='custombuttons-button'][type="menu-button"] {
  -moz-binding: url("toolbarbutton.xml#menu-button");
}

или дополнительный код в init-секцию (только для menu-button)

Выделить код

Код:

if (!this. getAttribute ("cbMenuButtonBindingFix"))
{
    this. setAttribute ("cbMenuButtonBindingFix", "true");
    document. addBinding (this, "chrome://custombuttons/content/toolbarbutton.xml#menu-button");
}

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№53310-04-2008 23:25:49

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4291
UA: Firefox 2.0

Re: Custom Buttons

может быть, это наоборот в 1.5 что-то не поддерживается, или просто разное поведение по умолчанию ?

Это смотря как посмотреть...
Реакцию на orient="vertical" я уже показал (см. скриншоты). И в 1.5 нет chrome://global/content/bindings/toolbarbutton.xml#menu-vertical.
Насколько я помню (давно это было), способ изменения положения «треугольничков» (через binding на #menu-vertical) я подсмотрел в Tab Mix Plus... Про orient="vertical" – тоже где-то подсмотрел. :)
В общем, хорошо, что компактная по высоте менюшка получилась с помощью уже имеющихся средств :)

Отредактировано Infocatcher (10-04-2008 23:26:26)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№53411-04-2008 14:22:14

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Custom Buttons

Infocatcher

Это смотря как посмотреть...

Заинтриговал ты меня этим orient'ом. Объясни на словах, пожалуйста, что значит, что этот атрибуте "не работает" ?


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№53511-04-2008 20:38:51

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4291
UA: Firefox 2.0

Re: Custom Buttons

Заинтриговал ты меня этим orient'ом. Объясни на словах, пожалуйста, что значит, что этот атрибуте "не работает" ?

(Ну вот, опять все дело в словах)
Не работает == не дает никакого эффекта.

Выделить код

Код:

this.type = "menu";
this.orient = "vertical";

На что Firefox 1.5 выдает стрелочку справа, без «this.orient = "vertical";» – стрелочку снизу. Firefox 2.0 на «this.orient = "vertical";» не реагирует никак (стрелочка всегда снизу).

Отредактировано Infocatcher (11-04-2008 21:26:31)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№53611-04-2008 21:00:33

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Custom Buttons

Firefox 1.5 выдает стрелочку слева

Очепятка ?

Firefox 2.0 на «this.orient = "vertical";» не реагирует никак

Реагирует же на orient="horizontal" ?


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№53711-04-2008 21:26:35

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4291
UA: Firefox 2.0

Re: Custom Buttons

Очепятка ?

Да. Исправил.

Реагирует же на orient="horizontal" ?

Реагирует. Это я уже понял, спасибо за помощь.
В общем, имеет место изменение реакции на orient="vertical", на этом предлагаю данную тему закрыть. =)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№53811-04-2008 23:10:47

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Custom Buttons

Ок. Просто, сейчас не в силах объять всё в комплексе, из-за этого опасения, что я что-то упустил, вплоть до "а не CB ли "ломает" orient ?".
Найдёшь другую ошибку - пиши )


Ещё одни часы, как у Яна, но на canvas'е:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EDigital%20clock%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bfunction%20CanvasPixelPrinter%20%28canvas%29%0A%7B%0A%09this.%20init%20%28canvas%29%3B%0A%7D%0ACanvasPixelPrinter.%20prototype%20%3D%0A%7B%0A%09canvas%3A%20null%2C%0A%09font%3A%20null%2C%0A%09%0A%09_context%3A%20null%2C%0A%09get%20context%20%28%29%0A%09%7B%0A%09%09if%20%28%21this.%20_context%29%0A%09%09%7B%0A%09%09%09if%20%28this.%20canvas%29%0A%09%09%09%09this.%20_context%20%3D%20this.%20canvas.%20getContext%20%28%222d%22%29%3B%0A%09%09%09else%0A%09%09%09%09throw%20%28%22SimpleCanvas%20error%3A%20no%20canvas%22%29%3B%0A%09%09%7D%0A%09%09return%20this.%20_context%3B%0A%09%7D%2C%0A%09%0A%09init%3A%20function%20%28canvas%2C%20font%29%0A%09%7B%0A%09%09if%20%28typeof%20%28canvas%29%20%3D%3D%20%22string%22%29%0A%09%09%09this.%20canvas%20%3D%20document.%20getElementById%20%28canvas%29%3B%0A%09%09else%0A%09%09%09this.%20canvas%20%3D%20canvas%3B%0A%09%7D%2C%0A%09%0A%09putch%3A%20function%20%28ch%29%0A%09%7B%0A%09%09if%20%28this.%20font%20%26%26%20this.%20font%20%5Bch%5D%29%0A%09%09%7B%0A%09%09%09var%20chr%20%3D%20this.%20font%20%5Bch%5D%3B%0A%09%09%09var%20chw%20%3D%20chr%20%5B0%5D%3B%0A%09%09%09var%20chh%20%3D%20chr%20%5B1%5D%3B%0A%09%09%09var%20i%2C%20j%2C%20k%3B%0A%09%09%09var%20line%2C%20cbit%3B%0A%09%09%09this.%20context.%20save%20%28%29%3B%0A%09%09%09for%20%28i%20%3D%200%3B%20i%20%3C%20chh%3B%20i++%29%0A%09%09%09%7B%0A%09%09%09%09this.%20context.%20save%20%28%29%3B%0A%09%09%09%09this.%20context.%20translate%20%28chw%2C%200%29%3B%0A%09%09%09%09line%20%3D%20chr%20%5Bi%20+%202%5D%3B%0A%09%09%09%09for%20%28j%20%3D%200%3B%20j%20%3C%20chw%3B%20j++%29%0A%09%09%09%09%7B%0A%09%09%09%09%09this.%20context.%20translate%20%28-1%2C%200%29%3B%0A%09%09%09%09%09cbit%20%3D%20line%20%26%201%3B%0A%09%09%09%09%09line%20%3E%3E%3D%201%3B%0A%09%09%09%09%09if%20%28cbit%29%0A%09%09%09%09%09%09this.%20context.%20fillRect%20%280%2C%200%2C%201%2C%201%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09this.%20context.%20restore%20%28%29%3B%0A%09%09%09%09this.%20context.%20translate%20%280%2C%201%29%3B%0A%09%09%09%7D%0A%09%09%09this.%20context.%20restore%20%28%29%3B%0A%09%09%09this.%20context.%20translate%20%28chw%20+%201%2C%200%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09%0A%09print%3A%20function%20%28str%29%0A%09%7B%0A%09%09this.%20context.%20save%20%28%29%3B%0A%09%09for%20%28var%20i%20%3D%200%3B%20i%20%3C%20str.%20length%3B%20i++%29%0A%09%09%09this.%20putch%20%28str.%20charAt%20%28i%29%29%3B%0A%09%09this.%20context.%20restore%20%28%29%3B%0A%09%7D%0A%7D%3B%0A%0Afunction%20DigitalClock%20%28canvas%2C%20showSeconds%29%0A%7B%0A%09this.%20showSeconds%20%3D%20showSeconds%3B%0A%09this.%20init%20%28canvas%29%3B%0A%7D%0ADigitalClock.%20prototype%20%3D%0A%7B%0A%09displayColor%3A%20%22black%22%2C%0A%09displayBackground%3A%20%22white%22%2C%0A%09canvasBackground%3A%20%22white%22%2C%0A%09displayBorderColor%3A%20%22black%22%2C%0A%09width%3A%2033%2C%0A%09height%3A%2016%2C%0A%09%0A%09_showSeconds%3A%20false%2C%0A%09set%20showSeconds%20%28val%29%0A%09%7B%0A%09%09this.%20_showSeconds%20%3D%20val%3B%0A%09%09if%20%28val%29%0A%09%09%09this.%20width%20%3D%2049%3B%0A%09%09else%0A%09%09%09this.%20widht%20%3D%2033%3B%0A%09%7D%2C%0A%09%0A%09get%20showSeconds%20%28%29%0A%09%7B%0A%09%09return%20this.%20_showSeconds%3B%0A%09%7D%2C%0A%09%0A%09font%3A%0A%09%7B%0A%09%09%220%22%3A%20%5B5%2C%208%2C%200x0E%2C%200x11%2C%200x11%2C%200x11%2C%200x11%2C%200x11%2C%200x11%2C%200x0E%5D%2C%0A%09%09%221%22%3A%20%5B5%2C%209%2C%200x02%2C%200x06%2C%200x0A%2C%200x12%2C%200x02%2C%200x02%2C%200x02%2C%200x02%5D%2C%0A%09%09%222%22%3A%20%5B5%2C%209%2C%200x0E%2C%200x11%2C%200x01%2C%200x02%2C%200x04%2C%200x08%2C%200x10%2C%200x1F%5D%2C%0A%09%09%223%22%3A%20%5B5%2C%209%2C%200x0E%2C%200x11%2C%200x01%2C%200x06%2C%200x01%2C%200x01%2C%200x11%2C%200x0E%5D%2C%0A%09%09%224%22%3A%20%5B5%2C%209%2C%200x02%2C%200x06%2C%200x0A%2C%200x12%2C%200x1F%2C%200x02%2C%200x02%2C%200x02%5D%2C%0A%09%09%225%22%3A%20%5B5%2C%209%2C%200x1F%2C%200x10%2C%200x10%2C%200x1E%2C%200x01%2C%200x01%2C%200x11%2C%200x0E%5D%2C%0A%09%09%226%22%3A%20%5B5%2C%209%2C%200x0E%2C%200x11%2C%200x10%2C%200x1E%2C%200x11%2C%200x11%2C%200x11%2C%200x0E%5D%2C%0A%09%09%227%22%3A%20%5B5%2C%209%2C%200x1F%2C%200x01%2C%200x01%2C%200x02%2C%200x04%2C%200x04%2C%200x04%2C%200x04%5D%2C%0A%09%09%228%22%3A%20%5B5%2C%209%2C%200x0E%2C%200x11%2C%200x11%2C%200x0E%2C%200x11%2C%200x11%2C%200x11%2C%200x0E%5D%2C%0A%09%09%229%22%3A%20%5B5%2C%209%2C%200x0E%2C%200x11%2C%200x11%2C%200x11%2C%200x0F%2C%200x01%2C%200x11%2C%200x0E%5D%2C%0A%09%09%22%3A%22%3A%20%5B3%2C%209%2C%200x00%2C%200x02%2C%200x02%2C%200x00%2C%200x00%2C%200x02%2C%200x02%2C%200x00%5D%0A%09%7D%2C%0A%09%0A%09init%3A%20function%20%28canvas%29%0A%09%7B%0A%09%09this.%20__super.%20prototype.%20init.%20apply%20%28this%2C%20%5Bcanvas%5D%29%3B%0A%09%09this.%20context.%20translate%20%2820%2C%2020%29%3B%0A%09%7D%2C%0A%09%0A%09fixmod%3A%20function%20%28str%2C%20len%29%0A%09%7B%0A%09%09while%20%28%28str.%20length%20%25%20len%29%20%21%3D%200%29%0A%09%09%09str%20%3D%20%220%22%20+%20str%3B%0A%09%09return%20str%3B%0A%09%7D%2C%0A%09%0A%09drawBorder%3A%20function%20%28%29%0A%09%7B%0A%09%09this.%20context.%20save%20%28%29%3B%0A%09%09this.%20context.%20fillStyle%20%3D%20this.%20displayBorderColor%3B%0A%09%09this.%20context.%20fillRect%20%280%2C%201%2C%201%2C%20this.%20height%20-%202%29%3B%0A%09%09this.%20context.%20fillRect%20%281%2C%200%2C%20this.%20width%20-%202%2C%201%29%3B%0A%09%09this.%20context.%20fillRect%20%28this.%20width%20-%201%2C%201%2C%201%2C%20this.%20height%20-%202%29%3B%0A%09%09this.%20context.%20fillRect%20%281%2C%20this.%20height%20-%201%2C%20this.%20width%20-%202%2C%201%29%3B%0A%09%09this.%20context.%20restore%20%28%29%3B%0A%09%7D%2C%0A%09%0A%09getTimeString%3A%20function%20%28%29%0A%09%7B%0A%09%09var%20date%20%3D%20new%20Date%20%28%29%3B%0A%09%09var%20h%20%3D%20this.%20fixmod%20%28date.%20getHours%20%28%29.%20toString%20%28%29%2C%202%29%3B%0A%09%09var%20m%20%3D%20this.%20fixmod%20%28date.%20getMinutes%20%28%29.%20toString%20%28%29%2C%202%29%3B%0A%09%09var%20res%20%3D%20h%20+%20%22%3A%22%20+%20m%3B%0A%09%09if%20%28this.%20showSeconds%29%0A%09%09%7B%0A%09%09%09var%20s%20%3D%20this.%20fixmod%20%28date.%20getSeconds%20%28%29.%20toString%20%28%29%2C%202%29%3B%0A%09%09%09res%20+%3D%20%22%3A%22%20+%20s%3B%0A%09%09%7D%0A%09%09return%20res%3B%0A%09%7D%2C%0A%09%0A%09tick%3A%20function%20%28%29%0A%09%7B%0A%09%09this.%20context.%20save%20%28%29%3B%0A%09%09this.%20context.%20scale%20%281%2C%201%29%3B%0A%09%09this.%20context.%20fillStyle%20%3D%20this.%20canvasBackground%3B%0A%09%09this.%20context.%20fillRect%20%280%2C%200%2C%20this.%20width%2C%20this.%20height%29%3B%0A%09%09this.%20context.%20fillStyle%20%3D%20this.%20displayBackground%3B%0A%09%09this.%20context.%20fillRect%20%281%2C%201%2C%20this.%20width%20-%202%2C%20this.%20height%20-%201%29%3B%0A%09%09this.%20drawBorder%20%28%29%3B%0A%09%09this.%20context.%20fillStyle%20%3D%20this.%20displayColor%3B%0A%09%09this.%20context.%20translate%20%283%2C%204%29%3B%0A%09%09var%20date%20%3D%20new%20Date%20%28%29%3B%0A%09%09var%20h%20%3D%20this.%20fixmod%20%28date.%20getHours%20%28%29.%20toString%20%28%29%2C%202%29%3B%0A%09%09var%20m%20%3D%20this.%20fixmod%20%28date.%20getMinutes%20%28%29.%20toString%20%28%29%2C%202%29%3B%0A%09%09var%20s%20%3D%20this.%20fixmod%20%28date.%20getSeconds%20%28%29.%20toString%20%28%29%2C%202%29%3B%0A%09%09this.%20print%20%28this.%20getTimeString%20%28%29%29%3B%0A%09%09this.%20context.%20restore%20%28%29%3B%0A%09%7D%2C%0A%09%0A%09QueryInterface%3A%20function%20%28iid%29%0A%09%7B%0A%09%09if%20%28iid.%20equals%20%28Components.%20interfaces.%20nsISupports%29%20%7C%7C%0A%09%09%09iid.%20equals%20%28Components.%20interfaces.%20nsITimerCallback%29%29%0A%09%09%09return%20this%3B%0A%09%09return%20Components.%20results.%20NS_ERROR_NO_INTERFACE%3B%0A%09%7D%2C%0A%09%0A%09notify%3A%20function%20%28oTimer%29%0A%09%7B%0A%09%09this.%20tick%20%28%29%3B%0A%09%7D%2C%0A%09%0A%09oTimer%3A%20null%2C%0A%09start%3A%20function%20%28%29%0A%09%7B%0A%09%09if%20%28this.%20oTimer%29%0A%09%09%09this.%20stopTimer%20%28%29%3B%0A%09%09this.%20oTimer%20%3D%20Components.%20classes%20%5B%22@mozilla.org/timer%3B1%22%5D.%0A%09%09%09%09%09%20%20%20createInstance%20%28Components.%20interfaces.%20nsITimer%29%3B%0A%09%09this.%20oTimer.%20initWithCallback%20%28this%2C%201000%2C%201%29%3B%09%09%09%0A%09%7D%0A%7D%3B%0ADigitalClock.%20prototype.%20__proto__%20%3D%20CanvasPixelPrinter.%20prototype%3B%0ADigitalClock.%20prototype.%20__super%20%3D%20CanvasPixelPrinter%3B%0Athis.%20htmlNS%20%3D%20%22http%3A//www.w3.org/1999/xhtml%22%3B%0Athis.%20xulNS%20%3D%20%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%3B%0Avar%20canvas%20%3D%20this.%20getElementsByTagNameNS%20%28this.%20htmlNS%2C%20%22canvas%22%29%20%5B0%5D%3B%0Aif%20%28%21canvas%29%0A%7B%0A%09var%20canvas%20%3D%20document.%20createElementNS%20%28this.%20htmlNS%2C%20%22canvas%22%29%3B%0A%09this.%20clock%20%3D%20new%20DigitalClock%20%28canvas%2C%20false%29%3B%0A%09canvas.%20setAttribute%20%28%22width%22%2C%20this.%20clock.%20width%29%3B%0A%09canvas.%20setAttribute%20%28%22height%22%2C%20this.%20clock.%20height%29%3B%0A%09canvas.%20setAttribute%0A%09%28%0A%09%09%22style%22%2C%0A%09%09%22min-width%3A%22%20+%20this.%20clock.%20width%20+%0A%09%09%22px%3Bwidth%3A%22%20+%20this.%20clock.%20width%20+%0A%09%09%22px%3Bmax-width%3A%22%20+%20this.%20clock.%20width%20+%0A%09%09%22px%3Bmin-height%3A%22%20+%20this.%20clock.%20height%20+%0A%09%09%22px%3Bheight%3A%22%20+%20this.%20clock.%20height%20+%0A%09%09%22px%3Bmax-height%3A%22%20+%20this.%20clock.%20height%0A%09%29%3B%0A%09this.%20image%20%3D%20%22data%3A%22%3B%0A%09this.%20disabled%20%3D%20true%3B%0A%09this.%20setAttribute%20%28%22class%22%2C%20%22%22%29%3B%0A%09canvas%20%3D%20this.%20appendChild%20%28canvas%29%3B%0A%09var%20pn%20%3D%20this.%20parentNode%3B%0A%09var%20ns%20%3D%20this.%20nextSibling%3B%0A%09var%20button%20%3D%20pn.%20removeChild%20%28this%29%3B%0A%09if%20%28ns%29%0A%09%09pn.%20insertBefore%20%28button%2C%20ns%29%3B%0A%09else%0A%09%09pn.%20appendChild%20%28button%29%3B%0A%7D%0Athis.%20clock.%20start%20%28%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/***********************************%0A%20*%20Digital%20Clock%20custom%20button%20%20%20%20%20*%0A%20*%20on%20the%20canvas%20element%20base%20%20%20%20%20%20*%0A%20*%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%0A%20*%20Author%3A%20Anton%20Glazatov%20%28c%29%202008%20*%0A%20***********************************/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%3C/custombutton%3E

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№53911-04-2008 23:34:32

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4291
UA: Firefox 2.0

Re: Custom Buttons

[...] из-за этого опасения, что я что-то упустил, вплоть до "а не CB ли "ломает" orient ?".

Нет, Firefox 2.0 действительно перестал реагировать на orient="vertical" (это я еще давно заметил). Примером служит Launchy (content/main.xul):

Выделить код

Код:

<toolbarbutton id="launchy-toolbar-browser" type="menu" orient="vertical" class="launchy-toolbar toolbarbutton-1 chromeclass-toolbar-additional" label="&launchy.label;" tooltiptext="&launchy.label;">
    <menupopup onpopupshowing="launchyContext.doContext(this);">
    </menupopup>
</toolbarbutton>

(в fx 1.5 сейчас не проверить, но, насколько я помню, треугольничек менюшки был справа, а не снизу, как в 2.0.)

Найдёшь другую ошибку - пиши )

Обязательно! =)

Отредактировано Infocatcher (11-04-2008 23:35:29)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№54015-04-2008 00:51:13

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4291
UA: Firefox 2.0

Re: Custom Buttons

Нашел довольно странную фичу.
Если в поле «Инициализация» написать что-нибудь вроде

Выделить код

Код:

this.image = this.parentNode.getAttribute("iconsize") == "large"
    ? "file:///J:/somePath/24.png"
    : "file:///J:/somePath/16.png";

, а поле «Картинка» оставить пустым, то при открытии редактора в этом поле появится текущая картинка.
Я так понимаю, что берется button.image – независимо от того, что было сделано в кнопке.
Т.е. если перед сохранением не очистить поле «Картинка», сохранится совершенно ненужная информация... :usch:

Демонстрация:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u0417%u0430%u043A%u0440%u044B%u0442%u044C%20%u0432%u0441%u0435%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bfile%3A///J%3A/Soft_distrib/Browsers/Firefox/FF_extensions/_ext_temp/Close_All_Tabs/close_all_tabs-1.1-fx/chrome/skin/closeall24.png%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.image%20%3D%20this.parentNode.getAttribute%28%22iconsize%22%29%20%3D%3D%20%22large%22%0A%09%3F%20%22file%3A///J%3A/Soft_distrib/Browsers/Firefox/FF_extensions/_ext_temp/Close_All_Tabs/close_all_tabs-1.1-fx/chrome/skin/closeall24.png%22%0A%09%3A%20%22file%3A///J%3A/Soft_distrib/Browsers/Firefox/FF_extensions/_ext_temp/Close_All_Tabs/close_all_tabs-1.1-fx/chrome/skin/closeall16.png%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20tabs%20%3D%20gBrowser.mTabContainer.childNodes%3B%0Afor%20%28var%20i%20%3D%20tabs.length%20-%201%3B%20i%20%3E%3D%200%3B%20i--%29%0A%09gBrowser.removeTab%28tabs%5Bi%5D%29%3B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%3C/custombutton%3E

P.S. Самое простое, ИМХО, решение, при создании кнопки:

Выделить код

Код:

button.image = img;
button.setAttribute("cbb-image", img);

А при открытии редактора считывать button.getAttribute("cbb-image")
Впрочем, плодить лишних сущностей нехорошо...

Отредактировано Infocatcher (15-04-2008 00:51:49)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№54115-04-2008 01:57:53

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4291
UA: Firefox 2.0

Re: Custom Buttons

Кнопка для закрытия вкладок:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u0417%u0430%u043A%u0440%u044B%u0442%u044C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFCSURBVHjarFE7TsNAEH27ygFwFAkJUcMBDKlD4c5pE8miIyegymGS1hJ1fIoEDkCPkFa2+PgCy8xmbCzvJgLBk55n/PZ5NH4LawFiRJzZCbUWsWiHGNtb55vJd9AAImKCSzxgj0QYyxmkxp0z4Mb5uY8UT8QJCaf0ekY8l8rv97ii55MbsMYjPqkzxFfii9RnzDVUu0EIw171QQtoWMyPDHnrVR8f9H0b6gW1+2CXxEQCjjrBx6IvXbCT73DxH7fDwaJzA0NZ/f3IL3o+RbR9Fw1WSv1cH7Cy225b4Xo8BhurqvJWUGpkQ37NAjeN0DWEEPIPjDEoNhukJHCFMc5Q13VwSMivWUynU6xXK1eNDCnL0mMzpO9XfGssNLhbLFzaRVF4W6Rp6lIN+W1o7TzPPS3LsuAvKjJb/BEHN/kNvgQYAML08vlxNjfkAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.onclick%20%3D%20function%28e%29%20%7B%0A%09var%20br%20%3D%20getBrowser%28%29%3B%0A%09var%20cTab%20%3D%20br.mCurrentTab%3B%0A%09switch%28e.button%29%20%7B%0A%09%09case%200%3A%0A%09%09%09var%20tabs%20%3D%20br.mTabContainer.childNodes%3B%0A%09%09%09var%20left%20%3D%20false%3B%0A%09%09%09for%28var%20i%20%3D%20tabs.length%20-%201%3B%20i%20%3E%3D%200%3B%20--i%29%20%7B%0A%09%09%09%09if%28left%29%0A%09%09%09%09%09br.removeTab%28tabs%5Bi%5D%29%3B%0A%09%09%09%09if%28tabs%5Bi%5D%20%3D%3D%20cTab%29%0A%09%09%09%09%09left%20%3D%20true%3B%0A%09%09%09%7D%0A%09%09break%3B%0A%09%09case%201%3A%0A%09%09%09br.removeAllTabsBut%28br.mCurrentTab%29%3B%0A%09%09break%3B%0A%09%09case%202%3A%0A%09%09%09if%28e.shiftKey%20%7C%7C%20e.ctrlKey%20%7C%7C%20e.altKey%20%7C%7C%20e.metaKey%29%0A%09%09%09%09break%3B%0A%09%09%09e.preventDefault%28%29%3B%0A%09%09%09var%20tabs%20%3D%20br.mTabContainer.childNodes%3B%0A%09%09%09for%28var%20i%20%3D%20tabs.length%20-%201%3B%20i%20%3E%3D%200%3B%20--i%29%20%7B%0A%09%09%09%09if%28tabs%5Bi%5D%20%3D%3D%20cTab%29%0A%09%09%09%09%09break%3B%0A%09%09%09%09br.removeTab%28tabs%5Bi%5D%29%3B%0A%09%09%09%7D%0A%09%7D%0A%7D%0A//%20Hide%20context%20menu%20in%20Linux%3A%0Athis.onmousedown%20%3D%20function%28e%29%20%7B%0A%09if%28e.button%20%3D%3D%202%20%26%26%20%21e.shiftKey%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%29%20%7B%0A%09%09var%20cm%20%3D%20document.getElementById%28this.getAttribute%28%22context%22%29%29%3B%0A%09%09cm.collapsed%20%3D%20true%3B%0A%09%09var%20func%20%3D%20function%28%29%20%7B%0A%09%09%09cm.removeEventListener%28%22popupshowing%22%2C%20func%2C%20false%29%3B%0A%09%09%09setTimeout%28function%28%29%20%7B%20cm.hidePopup%28%29%3B%20cm.collapsed%20%3D%20false%3B%20%7D%2C%200%29%3B%0A%09%09%7D%3B%0A%09%09cm.addEventListener%28%22popupshowing%22%2C%20func%2C%20false%29%3B%0A%09%7D%0A%7D%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%3C/custombutton%3E

ЛКМ: закрыть все вкладки слева от текущей
СКМ: закрыть другие вкладки
ПКМ: закрыть все вкладки справа от текущей

Контекстное меню доступно по (Ctrl, Shift, Alt или Meta)+ПКМ.


Танцы с бубном вокруг this.onmousedown – заради Linux'а, показывающего контекстное меню сразу после нажатия правой кнопки мыши (по идее, должно работать :D).

Заодно вопрос: нельзя ли не показывать контекстное меню с помощью менее извращенных методов?

[upd]
Забыл сконвертировать картинку в base64... – исправил.
В Linux'е работает :)

Отредактировано Infocatcher (15-04-2008 17:03:29)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№54215-04-2008 17:46:17

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Custom Buttons

Нашел довольно странную фичу.

Что касается label, то изменения уже давно в cvs, а насчёт image не знаю, подумаю.

Заодно вопрос: нельзя ли не показывать контекстное меню с помощью менее извращенных методов?

Обычно очищается атрибут context, а обработчик onclick показывает контекстное меню, когда надо.

Пример:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EScroll%20page%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhEAAQAIEAAKPdO4i/JsH5XAAAACH5BAEAAAMALAAAAAAQABAAAQItnD8RyBgAVnNAiDjNsxa3zXXSV13jBHpZepJippUqKrcHGM53+a41HNOtbIMCADs%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bfunction%20Scroller%20%28oDocument%29%0A%7B%0A%09this.%20oDocument%20%3D%20oDocument%3B%0A%09this.%20oDocument.%20defaultView.%20addEventListener%20%28%22keydown%22%2C%20this%2C%20false%29%3B%0A%7D%0AScroller.%20prototype%20%3D%0A%7B%0A%09oDocument%3A%20null%2C%0A%09oTimer%3A%20null%2C%0A%09%0A%09_nSpeed%3A%201%2C%0A%09_nDelay%3A%20150%2C%0A%09%0A%09get%20_window%20%28%29%0A%09%7B%0A%09%09return%20this.%20oDocument.%20defaultView%3B%0A%09%7D%2C%0A%09%0A%09revertScroll%3A%20function%20%28%29%0A%09%7B%0A%09%09if%20%28this.%20_nSpeed%20%3E%200%29%0A%09%09%09this.%20_nSpeed%20%3D%20-this.%20_nSpeed%3B%0A%09%7D%2C%0A%09%0A%09setSpeed%3A%20function%20%28nSpeed%29%0A%09%7B%0A%09%09this.%20_nSpeed%20%3D%20nSpeed%3B%0A%09%7D%2C%0A%09%0A%09setDelay%3A%20function%20%28nDelay%29%0A%09%7B%0A%09%09this.%20stopScroll%20%28%29%3B%0A%09%09this.%20_nDelay%20%3D%20nDelay%3B%0A%09%7D%2C%0A%09%0A%09scroll%3A%20function%20%28%29%0A%09%7B%0A%09%09var%20win%20%3D%20this.%20_window%3B%0A%09%09if%20%28%28%28this.%20_nSpeed%20%3C%200%29%20%26%26%20%28win.%20pageYOffset%20%3E%200%29%29%20%7C%7C%0A%09%09%09%28%28this.%20_nSpeed%20%3E%200%29%20%26%26%20%28win.%20pageYOffset%20%3C%20%28this.%20oDocument.%20height%20-%20win.%20innerHeight%29%29%29%29%0A%09%09%09this.%20_window.%20scrollBy%20%280%2C%20this.%20_nSpeed%29%3B%0A%09%09else%0A%09%09%09this.%20stopScroll%20%28%29%3B%0A%09%7D%2C%0A%09%0A%09stopScroll%3A%20function%20%28%29%0A%09%7B%0A%09%09if%20%28this.%20oTimer%29%0A%09%09%7B%0A%09%09%09this.%20oTimer.%20cancel%20%28%29%3B%0A%09%09%09this.%20oTimer%20%3D%20null%3B%0A%09%09%7D%0A%09%7D%2C%0A%09%0A%09startScroll%3A%20function%20%28%29%0A%09%7B%0A%09%09if%20%28this.%20oTimer%29%0A%09%09%09this.%20stopTimer%20%28%29%3B%0A%09%09this.%20oTimer%20%3D%20Components.%20classes%20%5B%22@mozilla.org/timer%3B1%22%5D.%0A%09%09%09%09%09%20%20%20createInstance%20%28Components.%20interfaces.%20nsITimer%29%3B%0A%09%09this.%20oTimer.%20initWithCallback%20%28this%2C%20this.%20_nDelay%2C%201%29%3B%09%09%09%0A%09%7D%2C%0A%09%0A%09QueryInterface%3A%20function%20%28iid%29%0A%09%7B%0A%09%09if%20%28iid.%20equals%20%28Components.%20interfaces.%20nsISupports%29%20%7C%7C%0A%09%09%09iid.%20equals%20%28Components.%20interfaces.%20nsITimerCallback%29%29%0A%09%09%09return%20this%3B%0A%09%09return%20Components.%20results.%20NS_ERROR_NO_INTERFACE%3B%0A%09%7D%2C%0A%09%0A%09notify%3A%20function%20%28oTimer%29%0A%09%7B%0A%09%09this.%20scroll%20%28%29%3B%0A%09%7D%2C%0A%09%0A%09handleEvent%3A%20function%20%28event%29%0A%09%7B%0A%09%09this.%20stopScroll%20%28%29%3B%0A%09%7D%0A%7D%3B%0A%0Athis.%20doScroll%20%3D%20function%20%28oEvent%29%0A%7B%0A%09var%20scroller%20%3D%20this.%20getScroller%20%28%29%3B%0A%09if%20%28oEvent.%20button%20%3D%3D%201%29%0A%09%7B%0A%09%09scroller.%20stopScroll%20%28%29%3B%0A%09%09return%3B%0A%09%7D%0A%09if%20%28oEvent.%20button%20%3D%3D%202%29%0A%09%09scroller.%20revertScroll%20%28%29%3B%0A%09scroller.%20startScroll%20%28%29%3B%0A%7D%3B%0A%0Athis.%20scrollPage%20%3D%20function%20%28evt%29%0A%7B%0A%09var%20scroller%20%3D%20this.%20getScroller%20%28%29%3B%0A%09scroller.%20setSpeed%20%281%29%3B%0A%09scroller.%20setDelay%20%28150%29%3B%0A%09if%20%28evt.%20button%20%3D%3D%202%20%26%26%20evt.%20shiftKey%29%0A%09%09this.%20showPopup%20%28this%29%3B%0A%09else%0A%09%09this.%20doScroll%20%28evt%29%3B%0A%7D%3B%0Athis.%20scrollPageFast%20%3D%20function%20%28evt%29%0A%7B%0A%09var%20scroller%20%3D%20this.%20getScroller%20%28%29%3B%0A%09scroller.%20setSpeed%20%2810%29%3B%0A%09scroller.%20setDelay%20%2850%29%3B%0A%09this.%20doScroll%20%28evt%29%3B%0A%7D%3B%0Athis.%20getScroller%20%3D%20function%20%28%29%0A%7B%0A%09var%20ct%20%3D%20getBrowser%20%28%29.%20selectedTab%3B%0A%09if%20%28%21ct.%20cbScrollButton%29%0A%09%09ct.%20cbScrollButton%20%3D%20new%20Scroller%20%28getBrowser%20%28%29.%20contentDocument%29%3B%0A%09return%20ct.%20cbScrollButton%3B%0A%7D%3B%0A%0Athis.%20showPopup%20%3D%20function%20%28node%29%0A%7B%0A%09var%20popup%20%3D%20document.%20getElementById%20%28%22custombuttons-contextpopup%22%29%3B%0A%09var%20x%20%3D%20node.%20boxObject.%20x%3B%0A%09var%20y%20%3D%20node.%20boxObject.%20y%20+%20node.%20boxObject.%20height%3B%0A%09document.%20popupNode%20%3D%20node%3B%0A%09popup.%20showPopup%20%28node%2C%20x%2C%20y%2C%20%22popup%22%2C%20null%2C%20null%29%3B%0A%7D%0Athis.%20setAttribute%20%28%22onclick%22%2C%20%22this.scrollPage%28event%29%3B%22%29%3B%0Athis.%20setAttribute%20%28%22ondblclick%22%2C%22this.scrollPageFast%28event%29%22%29%3B%0Athis.%20setAttribute%20%28%22context%22%2C%20%22%22%29%3B%0Athis.%20tooltipText%20%3D%20%27Down/Menu/Up%20%7E%20Fast%20Down//Fast%20Up%27%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/**%0A%20*%20@author%20Anton%20Glazatov%20%28c%29%2003.2008%0A%20*%20Scroll%20page%20button%20based%20on%20existing%20button%20idea%0A%20*%20new%20implementation%0A%20*%0A%20*%20Left%20click%20-%20scroll%20slow%20down%0A%20*%20Middle%20click%20-%20stop%20scroll%0A%20*%20Right%20click%20-%20scroll%20slow%20up%0A%20*%20Left%20double%20click%20-%20scroll%20fast%20down%0A%20*%20Right%20double%20click%20-%20scroll%20fast%20up%0A%20*%20Shift%20+%20Right%20click%20-%20Custom%20Buttons%20context%20menu%0A%20*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5BLeft%20click%20-%20scroll%20slow%20down%0A%0AMiddle%20click%20-%20stop%20scroll%0A%0ARight%20click%20-%20scroll%20slow%20up%0A%0ALeft%20double%20click%20-%20scroll%20fast%20down%0A%0ARight%20double%20click%20-%20scroll%20fast%20up%0A%0AShift%20+%20Right%20click%20-%20Custom%20Buttons%20context%20menu%5D%5D%3E%3C/help%3E%0A%3C/custombutton%3E

Забыл сконвертировать картинку в base64... – исправил.

Себе ?


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№54315-04-2008 18:16:31

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4291
UA: Firefox 2.0

Re: Custom Buttons

Обычно очищается атрибут context, а обработчик onclick показывает контекстное меню, когда надо.

Ага, ясно. А варианты с сохранением способа показа контекстного меню есть? (Т.е. сразу по нажатию / после отпускания кнопки.)

Себе ?

Ммм? Не понял...

Закрытие вкладок №2:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u0417%u0430%u043A%u0440%u044B%u0442%u044C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFCSURBVHjarFE7TsNAEH27ygFwFAkJUcMBDKlD4c5pE8miIyegymGS1hJ1fIoEDkCPkFa2+PgCy8xmbCzvJgLBk55n/PZ5NH4LawFiRJzZCbUWsWiHGNtb55vJd9AAImKCSzxgj0QYyxmkxp0z4Mb5uY8UT8QJCaf0ekY8l8rv97ii55MbsMYjPqkzxFfii9RnzDVUu0EIw171QQtoWMyPDHnrVR8f9H0b6gW1+2CXxEQCjjrBx6IvXbCT73DxH7fDwaJzA0NZ/f3IL3o+RbR9Fw1WSv1cH7Cy225b4Xo8BhurqvJWUGpkQ37NAjeN0DWEEPIPjDEoNhukJHCFMc5Q13VwSMivWUynU6xXK1eNDCnL0mMzpO9XfGssNLhbLFzaRVF4W6Rp6lIN+W1o7TzPPS3LsuAvKjJb/BEHN/kNvgQYAML08vlxNjfkAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.setAttribute%28%22context%22%2C%20%22%22%29%3B%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%09var%20br%20%3D%20getBrowser%28%29%3B%0A%09var%20cTab%20%3D%20br.mCurrentTab%3B%0A%09switch%28e.button%29%20%7B%0A%09%09case%200%3A%0A%09%09%09var%20tabs%20%3D%20br.mTabContainer.childNodes%3B%0A%09%09%09var%20left%20%3D%20false%3B%0A%09%09%09for%28var%20i%20%3D%20tabs.length%20-%201%3B%20i%20%3E%3D%200%3B%20--i%29%20%7B%0A%09%09%09%09if%28left%29%0A%09%09%09%09%09br.removeTab%28tabs%5Bi%5D%29%3B%0A%09%09%09%09if%28tabs%5Bi%5D%20%3D%3D%20cTab%29%0A%09%09%09%09%09left%20%3D%20true%3B%0A%09%09%09%7D%0A%09%09break%3B%0A%09%09case%201%3A%0A%09%09%09br.removeAllTabsBut%28br.mCurrentTab%29%3B%0A%09%09break%3B%0A%09%09case%202%3A%0A%09%09%09if%28e.shiftKey%20%7C%7C%20e.ctrlKey%20%7C%7C%20e.altKey%20%7C%7C%20e.metaKey%29%0A%09%09%09%09this.showPopup%28e%29%3B%0A%09%09%09var%20tabs%20%3D%20br.mTabContainer.childNodes%3B%0A%09%09%09for%28var%20i%20%3D%20tabs.length%20-%201%3B%20i%20%3E%3D%200%3B%20--i%29%20%7B%0A%09%09%09%09if%28tabs%5Bi%5D%20%3D%3D%20cTab%29%0A%09%09%09%09%09break%3B%0A%09%09%09%09br.removeTab%28tabs%5Bi%5D%29%3B%0A%09%09%09%7D%0A%09%7D%0A%7D%3B%0Athis.showPopup%20%3D%20function%28e%29%20%7B%0A%09var%20popup%20%3D%20document.getElementById%28%22custombuttons-contextpopup%22%29%3B%0A%09var%20x%20%3D%20e.clientX%2C%20y%20%3D%20e.clientY%3B%0A%09var%20node%20%3D%20e.target%3B%0A%09document.popupNode%20%3D%20node%3B%0A%09popup.showPopup%28node%2C%20x%2C%20y%2C%20%22popup%22%2C%20null%2C%20null%29%3B%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%3C/custombutton%3E

(вроде, через event.clientX (Y) больше похоже на обычное поведение :))


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№54415-04-2008 18:30:58

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Custom Buttons

А варианты с сохранением способа показа контекстного меню есть? (Т.е. сразу по нажатию / после отпускания кнопки.)

Я проблемой мануального отображения контекстного меню в практике конструирования кнопок не занимался никогда. this.showPopup - это из кнопок LouCypher'а. То есть, готового кода нет у меня и не попадалось.

Ммм? Не понял...

Ну, там было что-то вроде file:///D:/....


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№54515-04-2008 19:10:03

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4291
UA: Firefox 2.0

Re: Custom Buttons

Anton пишет:

Ну, там было что-то вроде file:///D:/....

Было, но текст, который ты процитировал («Забыл сконвертировать картинку в base64... – исправил.»), я добавил вместе с исправлением кода кнопки. Это меня и смутило.

То есть, готового кода нет у меня и не попадалось.

Ясно.
Однако у меня есть подозрение, что способ показа контекстного меню сохраняется где-то в about:config (впрочем, может, расширение какое делает), потому как если мой основной профиль (под Windows) использовать в Linux, контекстное меню будет показываться по нажал-отпустил. Будет время – поковыряюсь... [позже: видимо, это делает Mouse Gestures в включенными жестами вида ПКМ-ЛКМ.]

Отредактировано Infocatcher (16-04-2008 00:45:25)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№54602-05-2008 00:44:03

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4291
UA: Firefox 2.0

Re: Custom Buttons

Написал скрипт для вставки URL (а также времени сохранения) в сохраняемую страницу.
Если текущая страница – about:blank, то открывается диалог «Открыть файл». Во всех остальных случаях – диалог сохранения. Если установлено ILO, будет включена политика «загружать только из кэша».

Выделить код

Код:

if(getBrowser().currentURI.spec == "about:blank")
    BrowserOpenFileWindow();
else {
    try { ILO.indicatorClick(3); } catch(e) {}
    var doc = content.document;
    var html = doc.getElementsByTagName("html");
    if(html.length) {
        html = html[0];
        var loc = doc.location.href;
        var info = " Saved from (" + new Date().toLocaleString() + "): " + loc + " ";
        var comm = doc.createComment(info);
        var fch = html.firstChild;
        html.insertBefore(doc.createTextNode("\n"), fch);
        html.insertBefore(comm, fch);
        html.insertBefore(doc.createTextNode("\n"), fch);
    }
    saveDocument(doc);
}

P.S. Ох уж эта жуткая тавтология с «сохранить» :D

Отредактировано Infocatcher (02-05-2008 00:47:56)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№54710-05-2008 23:40:03

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4291
UA: Firefox 2.0

Re: Custom Buttons

Кнопка для Thunderbird, показывающая меню, аналогичное Настройки – Формат. Как и оригинальное меню, доступно только из HTML-редактора. По клику средней кнопкой мыши переключает на простой текст.
Код: http://pastebin.mozilla-russia.org/91283
Инициализация: http://pastebin.mozilla-russia.org/91284


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№54811-05-2008 01:26:39

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Custom Buttons

Единственная кнопка, которой я регулярно пользуюсь как обычный пользователь

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EsetBackgroundColor%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Btry%0A%7B%0A%09var%20doc%20%3D%20getBrowser%20%28%29.%20contentDocument%3B%0A%09doc.%20body.%20style.%20backgroundColor%20%3D%20%22rgb%28236%2C233%2C216%29%22%3B%0A%09doc.%20body.%20style.%20lineHeight%20%3D%20%222%22%3B%0A%09doc.%20body.%20style.%20textIndent%20%3D%20%223em%22%3B%0A%09doc.%20body.%20style.%20textHeight%20%3D%20%223%25%22%3B%0A%09doc.%20body.%20style.%20textAlign%20%3D%20%22justify%22%3B%0A%7D%0Acatch%20%28e%29%20%7B%7D%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%3C/custombutton%3E

[ul][uli]Делает цвет фона страницы таким же, как у панелей инструментов[/uli][uli]Выравнивает текст по ширине[/uli][uli]Увеличивает отступы первой строки в абзацах[/uli][uli]Увеличивает междустрочный интервал[/uli][/ul]

UPD 26.05.08 - поправил код кнопки, так как первоначальный не выравнивал текст по ширине

Отредактировано Anton (26-05-2008 13:36:22)


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№54911-05-2008 01:49:25

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4291
UA: Firefox 2.0

Re: Custom Buttons

Anton, а не проше ли делать так: http://pastebin.mozilla-russia.org/91285?
Кстати, на тему удобочитаемости: http://forum.mozilla-russia.org/viewtop … 42#p230242 :)
Это я к тому, что можно сделать аналогичную штуку только при помощи закладок, да еще и с выключением.

P.S. Спасибо за апдейт :beer:


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№55011-05-2008 02:17:21

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Custom Buttons

Infocatcher пишет:

Anton, а не проше ли делать так: http://pastebin.mozilla-russia.org/91285?

В данном конкретном и простом случае - конечно проще. Но с некоторых пор я не сторонник использования with, да и не ставил себе целью "заточку" кода этой кнопки. В исходном варианте там была всего одна строка - на background.

Конструкцию with лучше совсем не использовать - поверь моему опыту как разработчика Pastebin Panel.

Кстати, на тему удобочитаемости: http://forum.mozilla-russia.org/viewtop … 42#p230242 :)
Это я к тому, что можно сделать аналогичную штуку только при помощи закладок, да еще и с выключением.

Я не привык к использованию закладурок. Не помню уже точно по какой причине - скорее всего сложность отладки.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2011 Mozilla Russia
Язык отображения форума: [Русский] [English]