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

Общайтесь со знакомыми и друзьями в нашем сообществе в Facebook.

№167604-06-2010 23:22:37

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

Пожалуйста люди дайте-
1)простую кнопку которая бы добавляла открытую страницу в папку закладок (по лкм, папка указана коде кнопки),
2)простую кнопку которая бы удаляла все закладки из папки закладок(по лкм, папка указана коде кнопки)

Отсутствует

 

№167704-06-2010 23:56:28

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

Re: Custom Buttons

okkamas_knife пишет

кстати заметил то что иногда на новой версии кнопки не отрабатывает скрытие основного кнопочного меню по пкм

Тогда оно и на старой версии могло происходить – эту часть я не трогал.
Подправил. Должно помочь.


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

Отсутствует

 

№167805-06-2010 05:53:22

iDev.Pi
баг-репортёр
 
Группа: Extensions
Зарегистрирован: 31-01-2010
Сообщений: 2718
UA: Minefield 3.7

Re: Custom Buttons

okkamas_knife
у меня меняется при наведении, как и должно. Но там картинки оч похожие, это я их выдирал из Undo Closed Tabs button дополнения.
Если всё же совсем не меняются - значит у тя такой же как и у меня глюк с каритнками для некоторых КБ кнопок, я вот думаю себе профиль новый сделать, уже проверил - на нём всё чётко.


mzfx

Отсутствует

 

№167905-06-2010 13:03:52

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

Re: Custom Buttons

Infocatcher пишет

P.S. Вообще, хорошо бы или другой метод (onRebuild, например) или аргументом в onDestroy передавать.

А почему просто не перекрыть стиль новым ?

Добавлено 05-06-2010 13:28:00

dragon2010 пишет

Вопрос такого плана. А почему Custom Buttons не хочет работать в CometBird? Остальные (за все не скажу), которые скачал работают.
Версия CometBird 3.6.3

Потому что Custom Buttons использует имя приложения для создания оверлеев и инициализации при загрузке, а в CometBird компонент nsIXULAppInfo возвращает "CometBird", а не "Firefox".
Я попробую это как-нибудь исправить, и, возможно, расширение будет работать в CometBird.

Добавлено 05-06-2010 13:33:23

rupor пишет

Подскажите примерный код кнопки для выполнения таких действий:
анализ исходника на ключевую фразу вида "Найди здесь %s мышь", где %s - переменная цифра, а затем ввод слова из заранее имеющегося массива за номером %s, то есть my_array[%s] в поле единственной формы и submit.

Нужен исходник для тестирования.


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

Отсутствует

 

№168005-06-2010 13:35:31

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

Re: Custom Buttons

bunda1 пишет

Пожалуйста люди дайте-
1)простую кнопку которая бы добавляла открытую страницу в папку закладок (по лкм, папка указана коде кнопки),
2)простую кнопку которая бы удаляла все закладки из папки закладок(по лкм, папка указана коде кнопки)

Добавление закладки

Выделить код

Код:

var folderName = "myFolder";

var bmsvc = Components. classes ["@mozilla.org/browser/nav-bookmarks-service;1"].
        getService (Components. interfaces. nsINavBookmarksService);
var menuFolder = bmsvc. bookmarksMenuFolder;
var f = bmsvc. getChildFolder (menuFolder, folderName);
if (f == 0)
{
    bmsvc. createFolder (menuFolder, folderName, bmsvc. DEFAULT_INDEX);
    f = bmsvc. getChildFolder (menuFolder, folderName);
}
PlacesCommandHook. bookmarkCurrentPage (false, f);

Удаление закладок

Выделить код

Код:

var folderName = "myFolder";

var bmsvc = Components. classes ["@mozilla.org/browser/nav-bookmarks-service;1"].
        getService (Components. interfaces. nsINavBookmarksService);
var menuFolder = bmsvc. bookmarksMenuFolder;
var f = bmsvc. getChildFolder (menuFolder, folderName);
if (f != 0)
    bmsvc. removeFolderChildren (f);


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

Отсутствует

 

№168105-06-2010 20:25:47

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.5

Re: Custom Buttons

Anton
1)кнопка "Добавление закладки" не всегда добавляет в папку закладок  закладки , кнопка некоторие открытие страници  добавляет,  некоторие нет (пример -главную страницу http://www.softodrom.ru/) не хочет добавлять,  что делать?
2)как изменить код чтобы кнопки работали если папка закладок находится на панеле закладок?

Отредактировано bunda1 (05-06-2010 21:10:48)

Отсутствует

 

№168205-06-2010 21:00:08

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

Re: Custom Buttons

Anton пишет

А почему просто не перекрыть стиль новым ?

Убирание старого стиля нужно только для удобства редактирования. Если старый не убран, нужно все время помнить, что там было сделано раньше, чтобы вовремя понять, что наблюдаемые глюки – наследство от прошлых экспериментов.
А старый стиль, чтобы можно было его убрать, должен где-то запоминаться – или исходная строка, или URI.


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

Отсутствует

 

№168305-06-2010 21:21:22

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

Re: Custom Buttons

bunda1

1)кнопка "Добавление закладки" не всегда добавляет в папку закладок  закладки , кнопка некоторие открытие страници  добавляет,  некоторие нет (пример -главную страницу http://www.softodrom.ru/) не хочет добавлять,  что делать?

У меня главную страницу http://www.softodrom.ru/ - добавляет, что я делаю не так ?

2)как изменить код чтобы кнопки работали если папка закладок находится на панеле закладок?

Заменить

Выделить код

Код:

var menuFolder = bmsvc. bookmarksMenuFolder;

на

Выделить код

Код:

var menuFolder = bmsvc. toolbarFolder;

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

Отсутствует

 

№168405-06-2010 21:52:41

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.5

Re: Custom Buttons

Anton
Разобрался сам не добавляется те страницы которые уже есть в закладках. :)

За помощь спасибо.

Отсутствует

 

№168505-06-2010 22:19:25

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

Re: Custom Buttons

bunda1 пишет

Разобрался сам не добавляется те страницы которые уже есть в закладках.

Да, функция Firefox PlacesCommandHook. bookmarkCurrentPage не делает дубликаты закладок.


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

Отсутствует

 

№168606-06-2010 21:57:56

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

Re: Custom Buttons

rupor

Код примерно такой:

скрытый текст

Выделить код

Код:

var searchTemplate = "Найди здесь %s мышь";
var wordArray = ["слово1", "слово2", "слово3", "слово3", "слово4", "слово5", "слово6", "слово7", "слово8", "слово9"];

searchTemplate = searchTemplate. replace (/%s/, "(\\d+)");
var doc = getBrowser (). contentDocument;
var elts = doc. evaluate
(
    "//text()",
    doc, null, XPathResult. ORDERED_NODE_SNAPSHOT_TYPE, null
);
var elt, data, m, res;
for (var i = 0; i < elts. snapshotLength; i++)
{
    elt = elts. snapshotItem (i);
    var data = elt. data;
    var m = data. match (new RegExp (searchTemplate));
    if (m)
    {
        res = wordArray [parseInt (m [1])];
        break;
    }
}
if (res)
{
    var form = doc. forms [0];
    var inpf = doc. evaluate
    (
        "//input[@type='text']",
        form, null, XPathResult. ORDERED_NODE_SNAPSHOT_TYPE, null
    );
    inpf. snapshotItem (0). value = res;
    form. submit ();
}


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

Отсутствует

 

№168710-06-2010 20:32:15

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

Re: Custom Buttons

Ну вот, в кнопке для отмены закрытия вкладок тоже использовалась функция navigator.preference().
Тестовая версия, код для секции «инициализация»: undoCloseTabsList-0.2.0b1.js.
Основная плюшка – шаблон, задающий порядок пунктов в меню:

скрытый текст

Выделить код

Код:

this.settings = {
    menuTemplate: [
        "closedWindows",
        "separator",
        "restoreClosedWindows",
        "clearClosedWindows",
        "separator",
        "closedTabs",
        "separator",
        "restoreClosedTabs",
        "clearClosedTabs",
        "separator",
        "clearAll"
    ],
    openMenuOnMouseover: false
};


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

Отсутствует

 

№168811-06-2010 20:44:13

imyax
пользователь FF c 2010года
 
Группа: Members
Откуда: Сейчас здесь
Зарегистрирован: 13-04-2010
Сообщений: 209
UA: Namoroka 3.6

Re: Custom Buttons

Infocatcher
Отсутствует контекстное меню кнопки(ПКМ). Удалять и править кнопку через редактирование buttonsoverlay.xul не очень удобно.

Отсутствует

 

№168911-06-2010 21:58:50

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

Re: Custom Buttons

okkamas_knife пишет

1 сделал чтоб при выбранной картинке иконки менялись(тупо this.image="" в начале добавил)) чтоб при сохранении картинка была

Можно и добавить... А при распространении через custombutton-ссылку эта проблема должна отпадать. Мне же удобнее в виде кода хранить. =)

okkamas_knife пишет

2 заменил английские сообщения на русские (оригинальные в той же строчке после комментариев)

Accesskeys обычно тоже переводят (правда, это очень занудно, чтобы ничего не пересекалось, и была хоть какая-то логика). Сделал поддержку мультиязычности. Пусть будет. :D

undoCloseTabsList-0.2.0b2.js (все еще тестовая)


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

Отсутствует

 

№169011-06-2010 21:59:20

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

Anton

глючит кнопка "Добавление закладки"
дабавил в userChrome такой код #star-button{display:   none !important;}
теперь если нажать кнопу -  открытая страница добавляется в папку закладок но выскакивает окошко с запросом на
"Редактирование этой закладки
Удалить 1  закладку"

как это исправить?

Отредактировано bunda1 (11-06-2010 22:00:17)

Отсутствует

 

№169111-06-2010 23:29:56

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

Re: Custom Buttons

Accesskeys – это такие подчеркнутые буквы в менюшках и прочих местах. Для менюшек работают только при открытой менюшке и только для текущего «уровня». Но если нужного символа в названии нет, то будет что-то вроде «Название (F)», что как-то не смотрится.
Например, Alt+И, Д откроет окно дополнений.
А вот неработоспособность этого дела при использовании не ASCII-символов – баг Firefox (точнее, наверное, движка).
И то, что они не скрываются в соответствии с системными настройками, – тоже баг. А по умолчанию в Windows все accesskeys скрываются до нажатия Alt.

Ctrl+Shift+N и Ctrl+Shift+T – стандартные клавиши, я их просто показываю.

Можно добавить в секцию «код»

Выделить код

Код:

var mp = this._mp;
if("openPopup" in mp)
    mp.openPopup(this, "after_start");
else
    mp.showPopup(this, -1, -1, "popup", "bottomleft", "topleft");

и назначить встроенными средствами какой-нибудь Ctrl+Shift+Z.


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

Отсутствует

 

№169212-06-2010 00:21:33

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

Re: Custom Buttons

okkamas_knife пишет

а стандартную контрол+шифт+Т сменить както можно?

Или Keyconfig (+ куча страниц на буржуйском форуме), или примерно так (в инициализацию):

Выделить код

Код:

var keyElt = document.getElementById("key_undoCloseTab");
keyElt.setAttribute("key", "D");
keyElt.setAttribute("modifiers", "control,shift");

https://developer.mozilla.org/en/XUL_Tu … ey_element

Отредактировано Infocatcher (12-06-2010 00:24:55)


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

Отсутствует

 

№169312-06-2010 01:33:43

imyax
пользователь FF c 2010года
 
Группа: Members
Откуда: Сейчас здесь
Зарегистрирован: 13-04-2010
Сообщений: 209
UA: Namoroka 3.6

Re: Custom Buttons

Взято с сайта cb² Custom Buttons² Context Menu Demo

Выделить код

Код:

var Cb = custombuttons;

// Two functions for testing, this.one() and this.two()
this.one = function() {
  var Msg = createMsg(this.label);
  Msg.aMsg("Function 1");
}

this.two = function() {
  custombuttons.alertSlide("Function 2", "It throws up a different alert");
}

// Our menu items
this.ss = [
  { label: 'MenuItem 1', cmd: 'document.popupNode.one()', sItemId: '' },
  { label: 'MenuItem 2'  , cmd: 'document.popupNode.two()', sItemId: '' }];

// Our Initialization function for creating the context menu, setting up menuitems and telling
// custombuttons2 extension to put cb context in a submenu
this.mObj = Cb.getCbContextObj(this);
this.init = function(x) {
  x.mObj.setSub();
  var nItem = {}, mItem = {};
  document.getElementById(CB2const.sCBCtxtMenu).setAttribute("oncommand", "event.stopPropagation()");
  for(var i in x.ss) {
    nItem = new x.mObj.getItem();
    nItem.id = 'Note';
    nItem.label = x.ss[i].label;
    nItem.value = String(i);
    mItem = x.mObj.insertBefore(nItem , x.mObj.oMenu.lastChild);
    this.ss[i].sItemId = mItem.id;
    mItem.setAttribute('oncommand',x.ss[i].cmd)
  }
  x.mObj.getItem();
  nItem = x.mObj.getItem();
  nItem.id = 'Note';
  this.separator = x.mObj.insertBefore( nItem , x.mObj.oMenu.lastChild);
}
this.init(this);


this.setAttribute('onclick', 'custombuttons.gQuot.mHandler(event, this)');
this.setAttribute('ondblclick', 'custombuttons.gQuot.gShowPopup(this);');

this.style.opacity = '.65';
this.setAttribute("onmouseover", "if (custombuttons) custombuttons.ButtonBrt(event);" );
this.setAttribute("onmouseout", "if (custombuttons) custombuttons.ButtonDim(event);" );

this.setAttribute('author','nicholas');
this.setAttribute('version','20081119.00');
this.setAttribute('homepage', 'http://custombuttons2.com/forum/buttons/buttons-database/custom-buttons2-context-menu-demo.html');
this.setAttribute('dependency','FF3.0*, FL2.0*, TB2.0*, CB2 2.0.5*');
this.setAttribute('status','Complete');
this.setAttribute('public',true);

this.setAttribute('homepage', 'http://custombuttons2.com/forum/buttons/buttons-database/custom-buttons2-context-menu-demo.html');

Отсутствует

 

№169412-06-2010 11:49:38

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

Re: Custom Buttons

bunda1 пишет

Anton

глючит кнопка "Добавление закладки"
дабавил в userChrome такой код #star-button{display:   none !important;}
теперь если нажать кнопу -  открытая страница добавляется в папку закладок но выскакивает окошко с запросом на
"Редактирование этой закладки
Удалить 1  закладку"

как это исправить?

Можно заменить

Выделить код

Код:

PlacesCommandHook. bookmarkCurrentPage (false, f);

на

Выделить код

Код:

var sebp = StarUI. showEditBookmarkPopup;
StarUI. showEditBookmarkPopup = function () {};
PlacesCommandHook. bookmarkCurrentPage (false, f);
StarUI. showEditBookmarkPopup = sebp;

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

Отсутствует

 

№169512-06-2010 15:09:35

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

Anton

спасибo!!!

Отсутствует

 

№169613-06-2010 17:37:30

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

Re: Custom Buttons

Infocatcher пишет

Можно добавить в секцию «код»

Выделить код

Код:

var mp = this._mp;
if("openPopup" in mp)
    mp.openPopup(this, "after_start");
else
    mp.showPopup(this, -1, -1, "popup", "bottomleft", "topleft");

и назначить встроенными средствами какой-нибудь Ctrl+Shift+Z.

И заменить в инициализации

скрытый текст

Выделить код

Код:

else if(e.button == 0) {
        if(this.closedTabCount)
            undoCloseTab();
        else
            this.showMenu(e, this);
    }

на

Выделить код

Код:

else if(e.button == 0) {
        if(this.closedTabCount)
            undoCloseTab();
        else
            this.showMenu(e, this);
        // Allow use "command" section only from hotkey:
        e.preventDefault();
        e.stopPropagation();
    }

Заодно исправил контекстное меню – теперь пункты можно нажимай правой кнопкой мыши: undoCloseTabsList-0.2.0b3.js (пожалуй, все еще тестовая)
И странности с подавлением стандартного меню мне поднадоели, так что теперь оно полностью удаляется, а показом управляет уже сама кнопка.


Кнопка для настройки исключений cookies (по умолчанию / блокировать / разрешить на сессию / разрешить)
cookiesPermissions.js (тоже пока тестовая :P)

ЛКМ – переключить разрешение
СКМ или ЛКМ с любым модификатором – показать список исключений
ПКМ – показать меню разрешений

ПКМ с любым модификатором – показать стандартное меню кнопки

cookiesPermissions.png

Отредактировано Infocatcher (14-06-2010 00:44:24)


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

Отсутствует

 

№169713-06-2010 19:11:10

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

Re: Custom Buttons

Обновил кнопку для настройки исключений cookies, ссылка та же (см. предыдущее сообщение) – обновление состояния сделано через оповещения от nsIObserverService.

Отредактировано Infocatcher (13-06-2010 19:11:35)


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

Отсутствует

 

№169813-06-2010 19:33:34

MySh
Кактусогрыз
 
Группа: Extensions
Зарегистрирован: 17-12-2006
Сообщений: 4623
UA: Firefox 3.6

Re: Custom Buttons

Нужна кнопка для вставки текста в текстовые поля в положение курсора либо вместо выделенного текста. Похожая кнопка есть вот тут, но хотелось бы, чтобы у этой кнопки было выпадающее меню (примерно как у кнопки Stop all tabs). При щелчке по этому меню выбирался бы текст для вставки. При этом чтобы на кнопке вместо иконки отображался бы этот текст. По умолчанию текст для вставки берётся из первого пункта списка.
Нужно для вставки всяких хитрых спецсимволов.
Возможно такое сделать?

Отсутствует

 

№169913-06-2010 22:00:28

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

Re: Custom Buttons

MySh пишет

Нужна кнопка для вставки текста в текстовые поля в положение курсора либо вместо выделенного текста.

В первом приближении как-то так (в инициализацию):

Выделить код

Код:

this.appendChild(parseFromXML(
    <menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
        oncommand="this.parentNode.insertText(event.target.getAttribute('cb_text'));">
        <menuitem cb_text="≥" label="≥" />
        <menuitem cb_text="≤" label="≤" />
        <menuseparator />
        <menuitem cb_text="©" label="©" />
    </menupopup>
));
this.type = "menu";
this.orient = "horizontal";
this.insertText = function(str) {
    var command = "cmd_insertText";
    var controller = document.commandDispatcher.getControllerForCommand(command);
    if(controller && controller.isCommandEnabled(command)) {
        controller = controller.QueryInterface(Components.interfaces.nsICommandController);
        var params = Components.classes["@mozilla.org/embedcomp/command-params;1"]
            .createInstance(Components.interfaces.nsICommandParams);
        params.setStringValue("state_data", str);
        controller.doCommandWithParams(command, params);
    }
};
function parseFromXML(xml) {
    var pp = XML.prettyPrinting;
    XML.prettyPrinting = false;
    var elt = new DOMParser().parseFromString(xml.toXMLString(), "application/xml").documentElement;
    XML.prettyPrinting = pp;
    return elt;
}

С иконками сложнее. И не совсем понятно, что требуется получить.


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

Отсутствует

 

№170014-06-2010 02:17:31

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

Re: Custom Buttons

MySh

http://forum.mozilla-russia.org/viewtop … 95#p421795
+
http://forum.mozilla-russia.org/viewtop … 57#p428857
+ canvas

Код

Выделить код

Код:

this. insertText (this. value);


Инициализация

Выделить код

Код:

var menu = <menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
              oncommand="this.parentNode.handleMenuCommand(event)">
    <toolbarbutton value="¤"/>
    <toolbarbutton value="¦"/>
    <toolbarbutton value="§"/>
    <toolbarbutton value="©"/>
    <toolbarbutton value="«"/>
    <toolbarbutton value="»"/>
    <toolbarbutton value="¬"/>
    <toolbarbutton value="®"/>
    <toolbarbutton value="°"/>
    <toolbarbutton value="±"/>
    <toolbarbutton value="µ"/>
    <toolbarbutton value="¶"/>
    <toolbarbutton value="—"/>
    <toolbarbutton value="‘"/>
    <toolbarbutton value="’"/>
    <toolbarbutton value="“"/>
    <toolbarbutton value="”"/>
    <toolbarbutton value="•"/>
    <toolbarbutton value="‰"/>
    <toolbarbutton value="‹"/>
    <toolbarbutton value="›"/>
    <toolbarbutton value="™"/>
</menupopup>;

menu = custombuttonsUtils. makeXML (menu);
this. appendChild (menu);
this. value = menu. firstChild. getAttribute ("value");

this. makePNG = function (text, height)
{
    var h = height;
    var cw = 24, ch = 24;
    var canvas = <canvas xmlns="http://www.w3.org/1999/xhtml" width={cw} height={ch} style="display:none;"></canvas>;
    cw -= 2;
    ch -= 2;
    canvas = custombuttonsUtils. makeXML (canvas);
    this. appendChild (canvas);
    var ctxt = canvas. getContext ("2d");
    ctxt. clearRect (0, 0, cw, ch);
    ctxt. font = h + "pt times bold"
    var m = ctxt. measureText (text);
    m = (cw - m. width) / 2.0;
    h = ch - (ch - h) / 2.0;
    ctxt. fillText (text, m, h);
    var uri = canvas. toDataURL ("image/png", "");
    this. removeChild (canvas);
    return uri;
};

this. image = this. makePNG (this. value, 16);

var mi, val;
for (var i = 0; i < menu. childNodes. length; i++)
{
    mi = menu. childNodes [i];
    val = mi. getAttribute ("value");
    val = this. makePNG (val, 12);
    mi. setAttribute ("image", val);
}

this. insertText = function (text)
{
    var command = "cmd_insertText";
    var controller = document. commandDispatcher. getControllerForCommand (command);
    if (controller && controller. isCommandEnabled (command))
    {
            controller = controller. QueryInterface (Components. interfaces. nsICommandController);
        var params = Components. classes ["@mozilla.org/embedcomp/command-params;1"].
                 createInstance (Components. interfaces. nsICommandParams);
        params. setStringValue ("state_data", text);
        controller. doCommandWithParams (command, params);
    }
};

this. handleMenuCommand = function (event)
{
    event. stopPropagation ();
    var mi = event. originalTarget;
    var text = mi. getAttribute ("value");
    this. image = this. makePNG (text, 16);
    this. value = text;
    this. insertText (text);
};

this. type = "menu-button";


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

Отсутствует

 

Board footer

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