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; }
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";
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Спасибо большое!
Как я понял, дополнительную подсветку болдом и курсивом осуществить даже проще, чем включён/выключен, поскольку включён/выключен - вещь динамическая, а наличие опций и безрестартность - статическая.
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
Как я понял, дополнительную подсветку болдом и курсивом осуществить даже проще, чем включён/выключен, поскольку включён/выключен - вещь динамическая, а наличие опций и безрестартность - статическая.
Там все проще сделано: список обновляется при каждом открытии (пересоздается заново).
mp.setAttribute("onpopupshowing", "this.updateMenu();"); ... mp.updateMenu = function() { ... };
Все равно отслеживать что-то пока меню закрыто нет смысла (да и вредно для производительности.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
difabor пишетКак я понял, дополнительную подсветку болдом и курсивом осуществить даже проще, чем включён/выключен, поскольку включён/выключен - вещь динамическая, а наличие опций и безрестартность - статическая.
Там все проще сделано: список обновляется при каждом открытии (пересоздается заново).
Выделить кодКод:
mp.setAttribute("onpopupshowing", "this.updateMenu();"); ... mp.updateMenu = function() { ... };Все равно отслеживать что-то пока меню закрыто нет смысла (да и вредно для производительности.
Спасибо!
Но я обратил внимание на следующее (после того, как "раскрасил" меню болдом и курсивом):
Отключение Restartless аддона с опциями (т.е. который болдом) без закрытия меню меняет его прозрачность (он становится бледнее), но остаётся болдом.
И только, когда снова открываешь меню - он уже без болда.
Из этого я и сделал такой вывод.
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
difabor
Странно, что информация насчет наличия настроек пропадает...
А так – да, я забыл, там после включения/выключения специально вызывается
, как и при построении меню.
В принципе, можно в эту же функцию и перенести дополнительный код для раскрашивания (только надо будет еще и ссылку на addon в нее передавать).
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
difabor
Странно, что информация насчет наличия настроек пропадает...
Информация насчёт наличия настроек пропадает и в about:addons и это имхо правильно - нельзя вызывать настройки отключённого аддона и не надо даже провоцировать на это.
А так – да, я забыл, там после включения/выключения специально вызывается
, как и при построении меню.
В принципе, можно в эту же функцию и перенести дополнительный код для раскрашивания (только надо будет еще и ссылку на addon в нее передавать).
В данном конкретном случае имхо нет такой необходимости, но знать как в эту же функцию перенести дополнительный код для раскрашивания и передать в нее ссылку на addon было бы очень желательно.
Отредактировано difabor (31-01-2016 03:32:41)
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
В данном конкретном случае имхо нет такой необходимости, но знать как в эту же функцию перенести дополнительный код для раскрашивания и передать в нее ссылку на addon было бы очень желательно.
Примерно так (там в двух местах вызывается setDisabled() + лучше переименовать для соответствия):
->
->
И саму функцию:
->
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"; ...
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Столько интересного понаписали, а готовую кнопку выкладывать будете?
Так ведь эта кнопка Infocatcherа выложена и прекрасно работает.
Добавлено 01-02-2016 02:38:26
Примерно так (там в двух местах вызывается setDisabled() + лучше переименовать для соответствия)
Огромнейшее спасибо!
Отредактировано difabor (01-02-2016 02:38:26)
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
какая функция делает в Вашей кнопке быстрый поиск по меню?
Эээ... о каком быстром поиске речь? Там ничего такого не реализовано.
Если речь о выделении/открытии по первой букве названия (если не задано особо, а тут не задано), то это так себя все меню ведут.
Впрочем, я еще вот такую штуку делал для фильтрации:
https://github.com/Infocatcher/Bookmarks_Menu_Filter
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
difabor пишеткакая функция делает в Вашей кнопке быстрый поиск по меню?
Эээ... о каком быстром поиске речь? Там ничего такого не реализовано.
Если речь о выделении/открытии по первой букве названия (если не задано особо, а тут не задано), то это так себя все меню ведут.Впрочем, я еще вот такую штуку делал для фильтрации:
https://github.com/Infocatcher/Bookmarks_Menu_Filter
Спасибо!
Извините, что докучаю
Я не знал об этом свойстве меню и искал функцию поиска, чтобы подправить - указывать не первый, а последний менюитем с этой начальной буквой (или 20-й - что раньше)
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
А как можно менять фон самого меню (не менюитема, а меню в целом)? Я имею в виду цвет фона?
Куда надо вписать что-то типа:
Отредактировано difabor (06-02-2016 07:55:31)
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
Куда надо вписать что-то типа
Тут два варианта: или в 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».
Или можно по идентификатору кнопки:
Но здесь надо вручную номер вписывать: button99.
А если в коде, то надо найти место, где создается menupopup, в данном случае это
var mp = document.createElement("menupopup"); // Добавить для раскраски: mp.style.cssText = "-moz-appearance: none; background-color: rgba(0,255,0,0.8);";
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Тут два варианта: или в userChrome.css, или в код кнопки.
Огромное спасибо!
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
Уважаемый Infocatcher,
когда я устанавливаю showVersions: 2, (//show as "acceltext" (in place for hotkey text)),
то все версии у меня показываются в "бледном" виде независимо от того, включён аддон или нет.
Это так задумано?
P.S. Bold и italic сохраняются как и для названия.
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
Ох, помню, что читал, но забыл ответить.
Бледность некоторое время назад добавили в Firefox ко всем таким полям для вывода сочетаний клавиш.
Это из-за chrome://browser/skin/browser.css
Обесцвечивается вот так (в userChrome.css):
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Спасибо большое!
Действиельно, я поменял цвет в Stylish и всё изменилось.
Но у меня вопрос не конкретно по этому меню, а в целом по меню:
Есть ли возможность задавать стили/цвета и пр. для accel текста "персонально" для менюитема/подменю и т.п.?
Иными словами есть ли какой-то путь одну часть менюитема выдавать одним стилем, а другую - другим и управлять этим?
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
difabor
Во-первых, можно применить стили только к конкретным пунктам, например, так:
Вместо #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";
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
А как сделать чтобы меню не закрывалось после каждого клика.
Или Shift+клик, или поменять там в самом начале:
var options = { ... closeMenu: true, // Close menu after left-click (use Shift+click to invert this behavior)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher
Установил closeMenuClickToPlay: 1
// 1 - always don't close menu всё равно закрывается.
А если closeMenu: false, то не закрывается при переключение дополнений и закрывается, если переключать плагины. А сами плагины не переключаются при любых настройках, это я понял из-за .
Отсутствует
voqabuhe
А что получить требуется? Изначально меню закрывалось, а для «включать по запросу» у плагинов стало неинтуитивно, в какой режим перешло, поэтому там появилась особая настройка.
closeMenu – общая настройка, closeMenuClickToPlay – особое поведение для плагинов (и только если plugins.click_to_play = true).
Можно задать
closeMenu: false, // не закрывать меню
closeMenuClickToPlay: 0 // обрабатывать плагины как дополнения, то есть тоже не закрывать
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует