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

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№2628-01-2016 16:48:45

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

Re: [CB]Toggle Restartless Add-ons

difabor пишет:

1. Как сортировать аддоны не по имени, а по времени последнего обновления?

Надо внести правки в

Выделить код

Код:

        function sortPosition(addon) {
            if("STATE_ASK_TO_ACTIVATE" in AddonManager && addon.userDisabled == AddonManager.STATE_ASK_TO_ACTIVATE)
                return options.sort.clickToPlay;
            if(addon.isActive)
                return options.sort.enabled;
            return options.sort.disabled;
        }
        function key(addon) {
            return options.addonTypes.indexOf(addon.type)
                + "\n" + sortPosition(addon)
                + "\n" + addon.name.toLowerCase();
        }
        addons.sort(function(a, b) { // Вот тут собственно сортировка, остальное – вспомогательные функции
            var ka = key(a);
            var kb = key(b);
            return ka == kb ? 0 : ka < kb ? -1 : 1;
        })

Только там специальные штуки, чтобы работал настроечный объект и группировка по типам.
Можно заменить

Выделить код

Код:

        function sortPosition(addon) {
            if("STATE_ASK_TO_ACTIVATE" in AddonManager && addon.userDisabled == AddonManager.STATE_ASK_TO_ACTIVATE)
                return options.sort.clickToPlay;
            if(addon.isActive)
                return options.sort.enabled;
            return options.sort.disabled;
        }

на что-нибудь вроде

Выделить код

Код:

        function sortPosition(addon) {
            var time = new Date(addon.updateDate).getTime() || 0;
            return "0".repeat(13 - String(time).length) + time;
        }

difabor пишет:

2. Как (болдом) выделять аддоны, имеющие настройки от не имеющих и (курсивом)  не Restartless от Restartless?
Как я понимаю, что-то надо добавить в

Не совсем. Потом можно и туда, но сначала нужно добавить какие-нибудь отличительные признаки, за которые можно стилями цепляться.

В простейшем случае надо к уже имеющемуся дописать

Выделить код

Код:

            mi.setAttribute("label", label);
            mi.setAttribute("image", icon);
            // Для дополнительной подсветки
            if(addon.optionsURL)
                mi.style.fontWeight = "bold";
            var ops = addon.operationsRequiringRestart;
            if(!(ops & AddonManager.OP_NEEDS_RESTART_ENABLE || ops & AddonManager.OP_NEEDS_RESTART_DISABLE))
                mi.style.fontStyle = "italic";

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

Отсутствует

 

№2728-01-2016 17:19:59

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 522
UA: Firefox 36.0
Веб-сайт

Re: [CB]Toggle Restartless Add-ons

Спасибо большое!
Как я понял, дополнительную подсветку болдом и курсивом осуществить даже проще, чем включён/выключен, поскольку включён/выключен - вещь динамическая, а наличие опций и безрестартность - статическая.


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№2829-01-2016 12:55:19

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

Re: [CB]Toggle Restartless Add-ons

difabor пишет:

Как я понял, дополнительную подсветку болдом и курсивом осуществить даже проще, чем включён/выключен, поскольку включён/выключен - вещь динамическая, а наличие опций и безрестартность - статическая.

Там все проще сделано: список обновляется при каждом открытии (пересоздается заново).

Выделить код

Код:

mp.setAttribute("onpopupshowing", "this.updateMenu();");
...
mp.updateMenu = function() { ... };

Все равно отслеживать что-то пока меню закрыто нет смысла (да и вредно для производительности.


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

Отсутствует

 

№2930-01-2016 00:29:24

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 522
UA: Firefox 36.0
Веб-сайт

Re: [CB]Toggle Restartless Add-ons

Infocatcher пишет:

difabor пишет:

Как я понял, дополнительную подсветку болдом и курсивом осуществить даже проще, чем включён/выключен, поскольку включён/выключен - вещь динамическая, а наличие опций и безрестартность - статическая.

Там все проще сделано: список обновляется при каждом открытии (пересоздается заново).

Выделить код

Код:

mp.setAttribute("onpopupshowing", "this.updateMenu();");
...
mp.updateMenu = function() { ... };

Все равно отслеживать что-то пока меню закрыто нет смысла (да и вредно для производительности.

Спасибо!
Но я обратил внимание на следующее (после того, как "раскрасил" меню болдом и курсивом):
Отключение Restartless аддона с опциями (т.е. который болдом) без закрытия меню меняет его прозрачность (он становится бледнее), но остаётся болдом.
И только, когда снова открываешь меню - он уже без болда.
Из этого я и сделал такой вывод. :)


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№3030-01-2016 22:03:48

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

Re: [CB]Toggle Restartless Add-ons

difabor
Странно, что информация насчет наличия настроек пропадает...
А так – да, я забыл, там после включения/выключения специально вызывается

Выделить код

Код:

function setDisabled(mi, disabled) { ... }

, как и при построении меню.
В принципе, можно в эту же функцию и перенести дополнительный код для раскрашивания (только надо будет еще и ссылку на addon в нее передавать).


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

Отсутствует

 

№3131-01-2016 03:23:21

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 522
UA: Firefox 36.0
Веб-сайт

Re: [CB]Toggle Restartless Add-ons

Infocatcher пишет:

difabor
Странно, что информация насчет наличия настроек пропадает...

Информация насчёт наличия настроек пропадает и в about:addons и это имхо правильно - нельзя вызывать настройки отключённого аддона и не надо даже провоцировать на это.

Infocatcher пишет:

А так – да, я забыл, там после включения/выключения специально вызывается

Выделить код

Код:

function setDisabled(mi, disabled) { ... }

, как и при построении меню.
В принципе, можно в эту же функцию и перенести дополнительный код для раскрашивания (только надо будет еще и ссылку на addon в нее передавать).

В данном конкретном случае имхо нет такой необходимости, но знать как в эту же функцию перенести дополнительный код для раскрашивания и передать  в нее ссылку на addon было бы очень желательно.

Отредактировано difabor (31-01-2016 03:32:41)


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№3231-01-2016 17:15:49

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

Re: [CB]Toggle Restartless Add-ons

difabor пишет:

В данном конкретном случае имхо нет такой необходимости, но знать как в эту же функцию перенести дополнительный код для раскрашивания и передать  в нее ссылку на addon было бы очень желательно.

Примерно так (там в двух местах вызывается setDisabled() + лучше переименовать для соответствия):

Выделить код

Код:

setDisabled(mi, newDis);

->

Выделить код

Код:

highlightFeatures(mi, addon, newDis);
Выделить код

Код:

setDisabled(mi, addon.userDisabled);

->

Выделить код

Код:

highlightFeatures(mi, addon, addon.userDisabled);

И саму функцию:

Выделить код

Код:

function setDisabled(mi, disabled) {

->

Выделить код

Код:

function highlightFeatures(mi, addon, disabled) {
    // Для дополнительной подсветки
    if(addon.optionsURL)
        mi.style.fontWeight = "bold";
    var ops = addon.operationsRequiringRestart;
    if(!(ops & AddonManager.OP_NEEDS_RESTART_ENABLE || ops & AddonManager.OP_NEEDS_RESTART_DISABLE))
        mi.style.fontStyle = "italic";
    ...

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

Отсутствует

 

№3331-01-2016 18:57:26

Mishania
Участник
 
Группа: Members
Зарегистрирован: 22-10-2011
Сообщений: 342
UA: Firefox 44.0

Re: [CB]Toggle Restartless Add-ons

Столько интересного понаписали, а готовую кнопку выкладывать будете?

Отредактировано Mishania (31-01-2016 18:57:39)

Отсутствует

 

№3401-02-2016 02:34:32

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 522
UA: Firefox 36.0
Веб-сайт

Re: [CB]Toggle Restartless Add-ons

Mishania пишет:

Столько интересного понаписали, а готовую кнопку выкладывать будете?

Так ведь эта кнопка Infocatcherа выложена и прекрасно работает.

Добавлено 01-02-2016 02:38:26

Infocatcher пишет:

Примерно так (там в двух местах вызывается setDisabled() + лучше переименовать для соответствия)

Огромнейшее спасибо!

Отредактировано difabor (01-02-2016 02:38:26)


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№3504-02-2016 12:27:12

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 522
UA: Firefox 36.0
Веб-сайт

Re: [CB]Toggle Restartless Add-ons

Уважаемый Infocatcher,
какая функция делает  в Вашей кнопке быстрый поиск по меню?


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№3605-02-2016 20:07:29

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

Re: [CB]Toggle Restartless Add-ons

difabor пишет:

какая функция делает  в Вашей кнопке быстрый поиск по меню?

Эээ... о каком быстром поиске речь? Там ничего такого не реализовано.
Если речь о выделении/открытии по первой букве названия (если не задано особо, а тут не задано), то это так себя все меню ведут.

Впрочем, я еще вот такую штуку делал для фильтрации:
https://github.com/Infocatcher/Bookmarks_Menu_Filter


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

Отсутствует

 

№3706-02-2016 00:57:28

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 522
UA: Firefox 36.0
Веб-сайт

Re: [CB]Toggle Restartless Add-ons

Infocatcher пишет:

difabor пишет:

какая функция делает  в Вашей кнопке быстрый поиск по меню?

Эээ... о каком быстром поиске речь? Там ничего такого не реализовано.
Если речь о выделении/открытии по первой букве названия (если не задано особо, а тут не задано), то это так себя все меню ведут.

Впрочем, я еще вот такую штуку делал для фильтрации:
https://github.com/Infocatcher/Bookmarks_Menu_Filter

Спасибо!
Извините, что докучаю :)
Я не знал об этом свойстве меню и искал функцию поиска, чтобы подправить - указывать не первый, а последний менюитем с этой начальной буквой (или 20-й - что раньше)


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№3806-02-2016 07:54:05

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 522
UA: Firefox 28.0
Веб-сайт

Re: [CB]Toggle Restartless Add-ons

А как можно менять фон самого меню (не менюитема, а меню в целом)? Я имею в виду цвет фона?
Куда надо вписать что-то типа:

Выделить код

Код:

style: "-moz-appearance: none; background-color: rgba(0,255,0,0.8);"

Отредактировано difabor (06-02-2016 07:55:31)


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№3906-02-2016 15:57:52

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

Re: [CB]Toggle Restartless Add-ons

difabor пишет:

Куда надо вписать что-то типа

Тут два варианта: или в userChrome.css, или в код кнопки.
В userChrome.css можно что-то такое воткнуть:

Выделить код

Код:

toolbarbutton[id^="custombuttons-button"][label="Search"] > menupopup {
    -moz-appearance: none;
    background-color: rgba(0,255,0,0.8);
}

Это для menupopup внутри CB-кнопки с названием «Search».
Или можно по идентификатору кнопки:

Выделить код

Код:

#custombuttons-button99 > menupopup { ... }

Но здесь надо вручную номер вписывать: button99.

А если в коде, то надо найти место, где создается menupopup, в данном случае это

Выделить код

Код:

var mp = document.createElement("menupopup");
// Добавить для раскраски:
mp.style.cssText = "-moz-appearance: none; background-color: rgba(0,255,0,0.8);";

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

Отсутствует

 

№4007-02-2016 10:39:58

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 522
UA: Firefox 28.0
Веб-сайт

Re: [CB]Toggle Restartless Add-ons

Infocatcher пишет:

Тут два варианта: или в userChrome.css, или в код кнопки.

Огромное спасибо!


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№4114-02-2016 17:02:04

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 522
UA: Firefox 28.0
Веб-сайт

Re: [CB]Toggle Restartless Add-ons

Уважаемый Infocatcher,
когда я устанавливаю showVersions: 2, (//show as "acceltext" (in place for hotkey text)),
то все версии у меня показываются в "бледном" виде независимо от того, включён аддон или нет.
Это так задумано?
P.S. Bold и italic сохраняются как и для названия.


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№4205-03-2016 23:17:55

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

Re: [CB]Toggle Restartless Add-ons

Ох, помню, что читал, но забыл ответить.
Бледность некоторое время назад добавили в Firefox ко всем таким полям для вывода сочетаний клавиш.

Это из-за chrome://browser/skin/browser.css

Выделить код

Код:

  .menu-accel,
  .menu-iconic-accel {
    color: graytext;
  }

Обесцвечивается вот так (в userChrome.css):

Выделить код

Код:

  .menu-accel,
.menu-iconic-accel {
    color: inherit !important;
}

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

Отсутствует

 

№4305-03-2016 23:55:01

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 522
UA: Firefox 28.0
Веб-сайт

Re: [CB]Toggle Restartless Add-ons

Спасибо большое!
Действиельно, я поменял цвет в Stylish и всё изменилось. :)
Но у меня вопрос не конкретно по этому меню, а в целом по меню:
Есть ли возможность задавать стили/цвета и пр. для accel текста "персонально" для менюитема/подменю и т.п.?
Иными словами есть ли какой-то путь одну часть менюитема выдавать одним стилем, а другую - другим и управлять этим?


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№4406-03-2016 23:14:58

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

Re: [CB]Toggle Restartless Add-ons

difabor
Во-первых, можно применить стили только к конкретным пунктам, например, так:

Выделить код

Код:

#tools-menu .menu-accel,
#tools-menu .menu-iconic-accel {
    color: red !important;
}

Вместо #tools-menu (меню Инструменты) можно задавать штуки типа menu[label="Инструменты"] для определения по названию.

А во-вторых, можно получить ссылку на сам этот узел, в котором находится текст сочетания клавиш, и перекрасить только его:

Выделить код

Код:

var mi = document.getElementById("menu_openDownloads"); // Для примера пункт Инструменты – Загрузки
var accel = document.getAnonymousElementByAttribute(mi, "class", "menu-accel"); // У пунктов с иконками тут будет "menu-iconic-accel"
accel.style.color = "green";

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

Отсутствует

 

№4506-03-2016 23:23:47

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 522
UA: Firefox 28.0
Веб-сайт

Re: [CB]Toggle Restartless Add-ons

Большое спасибо!


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№4630-03-2016 16:40:51

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 2447
UA: Firefox 48.0

Re: [CB]Toggle Restartless Add-ons

Infocatcher
А как сделать чтобы меню не закрывалось после каждого клика.

Отсутствует

 

№4730-03-2016 19:55:59

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

Re: [CB]Toggle Restartless Add-ons

voqabuhe пишет:

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

Или Shift+клик, или поменять там в самом начале:

Выделить код

Код:

var options = {
    ...
    closeMenu: true,
    // Close menu after left-click (use Shift+click to invert this behavior)

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

Отсутствует

 

№4830-03-2016 23:39:54

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 2447
UA: Firefox 48.0

Re: [CB]Toggle Restartless Add-ons

Infocatcher
Установил closeMenuClickToPlay: 1
    // 1  - always don't close menu  всё равно закрывается.
А если closeMenu: false, то не закрывается при переключение дополнений и закрывается, если переключать плагины. А сами плагины не переключаются при любых настройках, это я понял из-за [nightly].

Отсутствует

 

№4931-03-2016 00:39:20

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

Re: [CB]Toggle Restartless Add-ons

voqabuhe
А что получить требуется? Изначально меню закрывалось, а для «включать по запросу» у плагинов стало неинтуитивно, в какой режим перешло, поэтому там появилась особая настройка.
closeMenu – общая настройка, closeMenuClickToPlay – особое поведение для плагинов (и только если plugins.click_to_play = true).
Можно задать
closeMenu: false, // не закрывать меню
closeMenuClickToPlay: 0 // обрабатывать плагины как дополнения, то есть тоже не закрывать


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

Отсутствует

 

№5031-03-2016 01:05:29

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 2447
UA: Firefox 48.0

Re: [CB]Toggle Restartless Add-ons

Infocatcher
Теперь меню не закрывается, как и хотел. Но плагины не переключаются.

Отсутствует

 

Board footer

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