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

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

№95127-07-2009 23:50:53

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

Re: Custom Buttons

razoo пишет

Я честно просмотрел все 38 страниц темы форума, но не нашел, как делать отработчик(?) shift+click или ctrl+click.

В инициализацию:

Выделить код

Код:

this.onclick = function(e) {
    if(e.button == 0 && e.shiftKey) { ... }
};

В наличии свойства:
button = 0, 1 или 2 – кнопки мыши (левая, средняя или правая)
ctrlKey, shiftKey, altKey (ну, и metaKey, которая, вроде бы, на Маках) – модификаторы


Как кнопке задавать условия, при которой кнопка будет неактивной (выглядеть неактивной)?

Выделить код

Код:

this.disabled = true;

Только стилевого оформления почему-то нету.

как и стандартные лисовские стрелки, показывая что дальше «мотать некуда»?

Применительно к стрелкам – нужен обработчик изменения адреса в адресной строке, вроде бы достаточно добавить атрибут command, потому как это «встроенная команда».
Кнопка «назад», инициализация:

Выделить код

Код:

this. setAttribute ("command", "Browser:BackOrBackDuplicate");
this. setAttribute ("oncommand", "BrowserBack(event)");
this. setAttribute ("onclick", "checkForMiddleClick(this,event)");

(но это все копировалось из Firefox 3.5)

К слову, визуализацией еще userChrome.css заправляет.

P.S. Я подозреваю, что в теме CB это может быть оффтопом, но как принудительно открывать в табах те окна, которые запускаются различными плагинами?

Если только сделать «обертку» для оригинальной функции открытия. И то потом может выясниться, что нужно еще и код в самом окне как-то корректировать.

Добавлено 28-07-2009 00:16:48
P.S. Итого: кнопкам навигации есть смысл добавить атрибут command (и вообще скопировать все как есть – command, oncommand и onclick), а также добавить стилизацию отключенного состояния (хотя с этим и не совсем ясно).

Отредактировано Infocatcher (28-07-2009 00:06:01)


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

Отсутствует

 

№95228-07-2009 00:55:13

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

Re: Custom Buttons

добавить стилизацию отключенного состояния (хотя с этим и не совсем ясно).

В том плане, что хотелось бы, чтобы все CB-кнопки визуализировали [disabled="true"] через стили.
Но для начала сойдут и дополнительные картинки, конечно.


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

Отсутствует

 

№95328-07-2009 06:13:26

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

Re: Custom Buttons

Кстати, автор Firediff одумался. =)

Выделить код

Код:

var JsDiff = (function() {
  // ...
  function escapeHTML(s) {
    var n = s;
    n = n.replace(/&/g, "&");
    n = n.replace(/</g, "&lt;");
    n = n.replace(/>/g, "&gt;");
    n = n.replace(/"/g, "&quot;");

    return n;
  }

Примерно через 5 дней, однако. При этом я ему не писал.

Добавлено 28-07-2009 06:15:24
P.S. Впрочем, «var n = s;» мне видится довольно странным присваиванием в данном случае. =)

Отредактировано Infocatcher (28-07-2009 06:24:29)


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

Отсутствует

 

№95428-07-2009 12:20:48

Najlus
Рррррррррррь!
 
Группа: Extensions
Откуда: Город N
Зарегистрирован: 11-01-2009
Сообщений: 1988
UA: Firefox 3.5

Re: Custom Buttons

А можно как нить через CSS скрыть в кнопке менеджера дополнений пункты: "Загрузить сессию", "Восстановить сессию", "переименовать сессию", "группировать сессию(ии)", "открыть папку сессий" и "Настройки менеджера сессий" =)


Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями

Отсутствует

 

№95528-07-2009 15:43:41

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508
UA: Shiretoko 3.5

Re: Custom Buttons

Anton пишет

Al_H
Сделал кнопку для CustomButtons "по мотивам" ТЗ из № 906

Спасибо!

Пока что посмотрел на окошки. Сразу не хватает двух вещей. Кнопка добавляет в список сразу все стили, имеющиеся в Stylish. Это противоестественно, их может быть много, и даже к хрому относятся не все, не говоря уж конкретно о темах, а не об аддонах. Я бы предложил по умолчанию включить в список стили с определенным комментарием где-то или с частью заголовка, например, themeheal- или themecustomize-. Далее, при прокрутке таблички, сразу скрывается ее заголовок (названия стилей). Хочется сделать его непрокручиваемым, что-то вроде position: fixed;
Если у имен стилей будет префикс, в таблице его не надо отображать. Сокращение ширины столбца будет полезным. При добавлении нового стиля с таким названием из встроенных в тело комментариев можно узнавать список тем, для которых предлагается его активировать по умолчанию, имея в виду, что для всех остальных он выключен. Но это перспективы.
И еще замечания. Не может быть кнопки Disable All. Может быть флажок. Он фактически не снимает все другие флажки строки, он только блокирует их применение более сильным состоянием off. И полностью аналогичен отключению стиля в Stylish - это для столбцов, то есть стилей. Для стилей этого ещё не сделано. Для тем тоже должен быть флажок, а не кнопка. Флажки и строк, и столбцов, относящиеся, соответственно, к запрещению данного стиля или всех стилей для данной темы, никаких других флажков не снимают, все запоминается, но в состоянии disable all (помеченном) имеют приоритет перед, соответственно, флажками внутри строки и столбца. Естественно, все вышесказанное относится только к стилям-модификтором тем. Все остальные стили не должны показываться в таблице и на них не должно быть влияния ни одной настройки кнопки.
Сверху и снизу хотелось бы по флажку [_] temporary disable all theme modifications
Ну в общем вот так.

Отсутствует

 

№95628-07-2009 19:11:10

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

Re: Custom Buttons

Najlus пишет

А можно как нить через CSS скрыть в кнопке менеджера дополнений пункты: "Загрузить сессию", "Восстановить сессию", "переименовать сессию", "группировать сессию(ии)", "открыть папку сессий" и "Настройки менеджера сессий" =)

В общем случае вот так:

Выделить код

Код:

menuitem[label="Загрузить сессию..."],
menu[label="Восстановить сессию"],
menuitem[label="Переименовать сессию"],
menuitem[label="Группировать сессию(ии)"],
menuitem[label="Открыть папку сессий"],
menuitem[label="Настройки Менеджера сессий"] {
	display: none !important;
}

Чтобы скрыть разделители, можно заменить
display: none !important;
на
opacity: 0.2 !important;
и добавить (в зависимости от расположения разделителей)

Выделить код

Код:

menuitem[label="Загрузить сессию..."],
menu[label="Восстановить сессию"],
menu[label="Восстановить сессию"] + menuseparator,
menuitem[label="Переименовать сессию"],
menuitem[label="Группировать сессию(ии)"],
menuitem[label="Открыть папку сессий"],
menuitem[label="Открыть папку сессий"] + menuseparator,
menuitem[label="Настройки Менеджера сессий"] {
	display: none !important;
}

А вообще, лучше смотреть в DOM Inspector'е (а то в меню Инструменты тоже скроет, ну, и лучше, когда без привязки к локали):

Выделить код

Код:

#sessionmanager-toolbar [oncommand="gSessionManager.load();"],
#sessionmanager-toolbar [_id="backup-separator"],
#sessionmanager-toolbar [_id="backup-menu"],
#sessionmanager-toolbar [oncommand="gSessionManager.rename();"],
#sessionmanager-toolbar [oncommand="gSessionManager.group();"],
#sessionmanager-toolbar [oncommand="gSessionManager.openFolder();"],
#sessionmanager-toolbar [_id="options-separator"],
#sessionmanager-toolbar [oncommand="gSessionManager.openOptions();"] {
	display: none !important;
}

Отредактировано Infocatcher (28-07-2009 19:13:15)


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

Отсутствует

 

№95728-07-2009 19:33:08

Najlus
Рррррррррррь!
 
Группа: Extensions
Откуда: Город N
Зарегистрирован: 11-01-2009
Сообщений: 1988
UA: Firefox 3.5

Re: Custom Buttons

СПАСИБО!!! =)

Infocatcher пишет

А вообще, лучше смотреть в DOM Inspector'е (а то в меню Инструменты тоже скроет, ну, и лучше, когда без привязки к локали):

Меню я вообще убрал, так что ничего страшного =)


Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями

Отсутствует

 

№95829-07-2009 02:21:55

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508
UA: Shiretoko 3.5

Re: Custom Buttons

Anton
P.S. Вот и первые глюки. Каким-то образом задублировались стили, большая часть, причем они шли парами включенный-отключенный, в итоге включились часть стилей, которые я не предполагал. При переключении тем и перезагрузке, самопроизвольно включались стили, которые я отключал через Stylish. Вообще очень странно оно себя вело. Дублирующие удалил, и Custom Buttons временно отключил.

Отсутствует

 

№95929-07-2009 15:45:50

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

Re: Custom Buttons

razoo

неплохо бы было получить кнопку, которая по нажатию загружает последнюю сессию, сохраненную “Tab Mix Plus”, а рядом стрелка с выпадающим меню, в котором всё то же, что в меню и сейчас.

Не получилось. Если делать меню, как оно прописано в оверлее TMP, то почему-то не отображается список сессий в основном меню и в меню "Rename", отображается в меню "Delete".
Кажется, надо "разгребать" много кода, чтобы выяснить почему это так.
В общем, браться я за это не буду.

для плагина Screengrab!
Хотел, чтобы при нажатии он делал скриншот всей страницы,
при ctrl+click видимую часть,
при shift+click предлагал выделить нужную часть.

Примерно так:

this. onclick = function (event)
{
    if (event. button > 0)
        return;
    if (event. ctrlKey)
        sg.Grab(new sg.FrameTarget(), sg.CaptureViewPort, new sg.SaveAction());;
    else if (event. shiftKey)
        sg.Grab(new sg.SelectionTarget(), sg.CaptureViewPort, new sg.SaveAction());;
    else
        sg.Grab(new sg.VisibleTarget(), sg.CaptureViewPort, new sg.SaveAction());
};

Еще хотел избавиться от плагина Uppity, заменив его кастом-кнопкой с простеньким кодом upOneFolder();

Не понял. В FF, кажется, нет функции upOneFolder.

razoo пишет

кнопку для “Block Site” можно ещё усовершенствовать. Мог бы ты сделать так, чтобы нижней строкой в выпадающем меню можно было вызвать окно настроек самого плагина (там блэк лист)?

В коде той кнопки, что уже есть, перед строкой

Выделить код

Код:

menu = new DOMParser (). parseFromString (menu. toXMLString (), "application/xml"). documentElement;

надо добавить строки

Выделить код

Код:

menu. appendChild (<menuseparator/>);
menu. appendChild (<menuitem label="Black List" oncommand="event.stopPropagation();window.open('chrome://blocksite/content/BlockSitePrefs.xul', '', 'chrome,centerscreen');"/>);

Infocatcher

Итого: кнопкам навигации есть смысл добавить атрибут command (и вообще скопировать все как есть – command, oncommand и onclick)

Ок, посмотрю.

Al_H

Каким-то образом задублировались стили, большая часть, причем они шли парами включенный-отключенный, в итоге включились часть стилей, которые я не предполагал. При переключении тем и перезагрузке, самопроизвольно включались стили, которые я отключал через Stylish.

Не могу воспроизвести. На какой минимальной конфигурации это происходит и после выполнения каких действий ?


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

Отсутствует

 

№96029-07-2009 16:29:07

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508
UA: Shiretoko 3.5

Re: Custom Buttons

Будем считать, Stylish+Stylish Custom. Мне тоже не удалось воспроизвести. У Вас самопроизвольно стили не включаются?
А что по моим просьбам насчет интерфейса?

Отсутствует

 

№96129-07-2009 16:36:28

3Jlou
Участник
 
Группа: Members
Зарегистрирован: 14-08-2008
Сообщений: 211
UA: Firefox 3.5

Re: Custom Buttons

Anton, приспособил написанную тобой кнопку под Download Master Portable, папку которого кинул в папку с профилем лисы:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0D%0A%20%20%3Cname%3EDownload%20Master%3C/name%3E%0D%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%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%5D%5D%3E%3C/image%3E%0D%0A%20%20%3Cmode%3E0%3C/mode%3E%0D%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20profileDir%20%3D%20Components.classes%5B%22@mozilla.org/file/directory_service%3B1%22%5D%0A%20%20%20%20.getService%28Components.interfaces.nsIProperties%29%0A%20%20%20%20.get%28%22ProfD%22%2C%20Components.interfaces.nsILocalFile%29%0A%20%20%20%20.path%3B%0Avar%20path%20%3D%20profileDir%20+%20%22%5C%5CDmaster%5C%5Cdmaster.exe%22%3B%0A%0Athis.%20runDM%20%3D%20function%20%28url%29%0A%7B%0A%20%20%20%20var%20file%20%3D%20Components.%20classes%5B%22@mozilla.org/file/local%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20%20createInstance%20%28Components.interfaces.nsILocalFile%29%3B%0A%20%20%20%20var%20process%20%3D%20Components.%20classes%20%5B%22@mozilla.org/process/util%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20createInstance%20%28Components.%20interfaces.%20nsIProcess%29%3B%0A%20%20%20%20file.%20initWithPath%20%28path%29%3B%0A%20%20%20%20process.%20init%20%28file%29%3B%0A%20%20%20%20if%20%28%21this.%20pid%29%0A%20%20%20%20%20%20%20%20this.%20pid%20%3D%20%5B%5D%3B%0A%20%20%20%20this.%20pid.%20push%20%28process.%20run%20%28false%2C%20url%20%26%26%20%5Burl%5D%7C%7C%20null%2C%20url%20%26%26%201%20%7C%7C%200%29%29%3B%0A%7D%3B%0A%0Athis.%20handleDragOver%20%3D%20function%20%28event%29%0A%7B%0A%20%20%20%20var%20dt%20%3D%20event.%20dataTransfer%3B%0A%20%20%20%20var%20url%20%3D%20dt.%20mozGetDataAt%20%28%22text/plain%22%2C%200%29%3B%0A%20%20%20%20if%20%28%21url%29%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20event.%20preventDefault%20%28%29%3B%0A%20%20%20%20event.%20stopPropagation%20%28%29%3B%0A%20%20%20%20return%20dt.%20effectAllowed%20%3D%20dt.%20dropEffect%20%3D%20%22link%22%3B%0A%7D%0A%0Athis.%20handleDrop%20%3D%20function%20%28event%29%0A%7B%0A%20%20%20%20var%20dt%20%3D%20event.%20dataTransfer%3B%0A%20%20%20%20var%20url%20%3D%20dt.%20mozGetDataAt%20%28%22text/plain%22%2C%200%29%3B%0A%20%20%20%20if%20%28url%29%0A%20%20%20%20%20%20%20%20this.%20runDM%20%28url%29%3B%0A%7D%3B%0A%0Athis.%20setAttribute%20%28%22ondragdrop%22%2C%20%22return%20this.%20handleDrop%20%28event%29%3B%22%29%3B%0Athis.%20setAttribute%20%28%22ondragover%22%2C%20%22return%20this.%20handleDragOver%20%28event%29%3B%22%29%3B%5D%5D%3E%3C/initcode%3E%0D%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bthis.%20runDM%20%28%22%22%29%3B%5D%5D%3E%3C/code%3E%0D%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0D%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0D%0A%20%20%3Cattributes/%3E%0D%0A%3C/custombutton%3E

Напомню: при нажатии на кнопку ЛКМ запускается DMaster, при перетаскивании ссылки на кнопку - ссылка передается для закачки DMaster`у.

Прошу "прикрутить" к этой кнопке ещё 1 функцию - передача DMaster'у ссылки из буфера обмена по нажатию средней кнопки мыши (либо по нажатию левой кнопки, отменив тем самым назначенный на эту кнопку запуск приложения)

Отредактировано 3Jlou (29-07-2009 16:38:54)

Отсутствует

 

№96229-07-2009 16:44:18

Najlus
Рррррррррррь!
 
Группа: Extensions
Откуда: Город N
Зарегистрирован: 11-01-2009
Сообщений: 1988
UA: Firefox 3.5

Re: Custom Buttons

Пытался сделать кнопку для открытия\закрытия тулбара дополнения TextFormattingToolbar.
Но кнопка не работает. вот код:

var a = document.getElementById("Text Formatting toolbar");
a.collapsed = !a.collapsed;


Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями

Отсутствует

 

№96329-07-2009 16:49:20

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

Re: Custom Buttons

Al_H пишет

У Вас самопроизвольно стили не включаются?

При переключении на тему в строке которой для стиля установлен флажок - включаются.
Других самопроизвольных включений пока не замечал.

Al_H пишет

А что по моим просьбам насчет интерфейса?

Al_H пишет

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

Al_H пишет

Если у имен стилей будет префикс, в таблице его не надо отображать.

Не понятно: надо отображать стили с определённым префиксом или не отображать стили с определённым префиксом ?

Al_H пишет

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

Фильтрацию по коду стиля делать не буду.

Al_H пишет

Он фактически не снимает все другие флажки строки, он только блокирует их применение более сильным состоянием off. И полностью аналогичен отключению стиля в Stylish - это для столбцов, то есть стилей. Для стилей этого ещё не сделано. Для тем тоже должен быть флажок, а не кнопка. Флажки и строк, и столбцов, относящиеся, соответственно, к запрещению данного стиля или всех стилей для данной темы, никаких других флажков не снимают, все запоминается, но в состоянии disable all (помеченном) имеют приоритет перед, соответственно, флажками внутри строки и столбца.

Попробую.

Естественно, все вышесказанное относится только к стилям-модификтором тем. Все остальные стили не должны показываться в таблице и на них не должно быть влияния ни одной настройки кнопки.
Сверху и снизу хотелось бы по флажку [_] temporary disable all theme modifications

Здесь не понятно.
1. Что есть "стили-модификаторы"
2. Какие всё-таки стили должны отображаться в таблице.
3. Назначение "temporary disable all theme modifications"

Добавлено 29-07-2009 17:02:22
3Jlou

3Jlou пишет

Прошу "прикрутить" к этой кнопке ещё 1 функцию - передача DMaster'у ссылки из буфера обмена по нажатию средней кнопки мыши (либо по нажатию левой кнопки, отменив тем самым назначенный на эту кнопку запуск приложения)

Если по средней кнопке - надо добавить в раздел "Инициализация"

Выделить код

Код:

this. handleClick = function (event)
{
	if (event. button == 1)
		this. runDM (custombuttonsUtils. gClipboard. read ());
};

this. setAttribute ("onclick", "this. handleClick (event);");

Если по левой кнопке - в раздел "Код" поместить строку

Выделить код

Код:

this. runDM (custombuttonsUtils. gClipboard. read ());

Добавлено 29-07-2009 17:04:23
Najlus

Выделить код

Код:

getElementById("Text Formatting toolbar");

Таких id вроде бы не бывает. Сможешь выяснить с помощью DOM Inspector'а её (панели инструментов) id ?

Отредактировано Anton (29-07-2009 17:06:29)


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

Отсутствует

 

№96429-07-2009 17:40:08

Najlus
Рррррррррррь!
 
Группа: Extensions
Откуда: Город N
Зарегистрирован: 11-01-2009
Сообщений: 1988
UA: Firefox 3.5

Re: Custom Buttons

Anton пишет

Сможешь выяснить с помощью DOM Inspector'а её (панели инструментов) id

Если с ним поразбираться, то наверное


Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями

Отсутствует

 

№96529-07-2009 17:40:54

3Jlou
Участник
 
Группа: Members
Зарегистрирован: 14-08-2008
Сообщений: 211
UA: Firefox 3.5

Re: Custom Buttons

Najlus пишет

Пытался сделать кнопку для открытия\закрытия тулбара дополнения TextFormattingToolbar.
Но кнопка не работает. вот код:

     var a = document.getElementById("Text Formatting toolbar");
     a.collapsed = !a.collapsed;

Так работает:

Выделить код

Код:

var a = document.getElementById("toolbar-format");
a.collapsed = !a.collapsed;

Добавлено 29-07-2009 17:47:26
Anton, сердечно благодарю, работает как хотелось :cool:

Отсутствует

 

№96629-07-2009 18:47:25

Najlus
Рррррррррррь!
 
Группа: Extensions
Откуда: Город N
Зарегистрирован: 11-01-2009
Сообщений: 1988
UA: Firefox 3.5

Re: Custom Buttons

3Jlou спасибо =)


Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями

Отсутствует

 

№96729-07-2009 19:08:17

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

Re: Custom Buttons

Anton пишет

Таких id вроде бы не бывает.

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

Выделить код

Код:

var clone = this.cloneNode(true);
var id = "Кириллица, однако!";
clone.id = id;
this.parentNode.insertBefore(clone, this.nextSibling);
alert(document.getElementById(id).id);

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

Отсутствует

 

№96829-07-2009 20:50:58

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

Re: Custom Buttons

Al_H

При переключении тем и перезагрузке, самопроизвольно включались стили, которые я отключал через Stylish.

При переключении тем удалось "поймать" самопроизвольное включение. Попробую исправить.


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

Отсутствует

 

№96929-07-2009 21:11:25

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508
UA: Shiretoko 3.5

Re: Custom Buttons

Anton пишет

Не понятно: надо отображать стили с определённым префиксом или не отображать стили с определённым префиксом ?

Я предложил скрыть часть стилей из таблицы, оставив только те, что относятся к темам. Как это сделать? Либо с помощью части имени стиля themecustomization- (themecustomization-defaultscrollbars, themecustomization-outlinedscrollbars, themecustomization-searchfavicon), либо уже делать отдельное окошко с перечнем стилей и флажком [_]Показать в таблице. В любом случае, так как сейчас – неразумно. Большая часть стилей в Stylish у меня не для тем, а для сайтов. И в них даже задано, что они относятся не к хрому. Как минимум, их можно сразу не выводить. И из остальных много лишних, только таблицу забивают.
Что я имел в виду. Если Вы выберете вариант с префиксом, то в таблице из названия стиля нужно префикс удалять, а точнее, скрывать. То есть, стили themecustomization-defaultscrollbars, themecustomization-outlinedscrollbars, themecustomization-searchfavicon будут в таблице высвечиваться как defaultscrollbars, outlinedscrollbars, searchfavicon.

Anton пишет

Фильтрацию по коду стиля делать не буду.

ок

Anton пишет

Других самопроизвольных включений пока не замечал.

Допустим, у Вас включен стиль при добавлении этой кнопки. Значит, он будет включен для всех тем. Логично? Теперь Вы открываете Stylish-Custom, и там его отключаете. Затем выбираете другую тему или ставите новую. Что произойдет?

Anton пишет

Здесь не понятно.
1. Что есть "стили-модификаторы"
2. Какие всё-таки стили должны отображаться в таблице.
3. Назначение "temporary disable all theme modifications"

1. Стили, относящиеся именно к исправлению ошибок тем, то есть, те, которые нас с Вами интересуют. В отличие от тех, которые перекрашивают Яндекс в зеленый цвет, или увеличивают в 4 раза кнопку с плюсиком на сайте, посвященном физике тотализаторов.
2. См. выше. Не все.
3. Мы с Вами говорили про флажок отключения стиля для всех тем скопом. А этот будет отключать вообще все стили, упомянутые в таблице.
То и другое осуществляется без сброса других флажков, которые корректно запоминаются.

Отсутствует

 

№97029-07-2009 21:39:18

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

Re: Custom Buttons

Al_H

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

этот будет отключать вообще все стили, упомянутые в таблице.

Понятно.

Допустим, у Вас включен стиль при добавлении этой кнопки. Значит, он будет включен для всех тем. Логично? Теперь Вы открываете Stylish-Custom, и там его отключаете. Затем выбираете другую тему или ставите новую. Что произойдет?

Самопроизвольное включение я уже видел. Предполагаю, что код кнопки срабатывает раньше кода Stylish.
Но на всякий случай, вдруг я что-то не понял: если стиль будет отключен только для строки активной темы, он отключится сразу, а при переключении на другую тему он должен включиться.
При установке новой темы без переключения на неё, состояние стиля для этой новой темы будет определяться текущим состоянием стиля. Если стиль сейчас включен - в таблице он будет для новой темы, если он сейчас выключен - будет считаться отключенным. А после того, как диалоговое окно будет закрыто, то состояние стиля для новой темы, которое было в таблице, должно сохраниться.

1. Стили, относящиеся именно к исправлению ошибок тем, то есть, те, которые нас с Вами интересуют.

Понятно, т. е., стили с заданными префиксами.


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

Отсутствует

 

№97130-07-2009 04:47:43

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508
UA: Shiretoko 3.5

Re: Custom Buttons

Anton пишет

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

    1. Стили, относящиеся именно к исправлению ошибок тем, то есть, те, которые нас с Вами интересуют.

Понятно, т. е., стили с заданными префиксами.

Тут путаница. При установке новой темы как раз происходит переключение на нее.
Далее, про дефолтные настройки.
По идее, эти стили - костыли. То есть, если у нас есть тема iPox, адаптированная под Фокс 3.5, то к ней вообще не должны коррекции применяться. Это значит, что, в общем виде, все эти стили для всех должны быть выключены. Мне может понадобиться включить какой-нибудь из них для какой-нибудь темы в том и только в том случае, если я обнаружу явно, что у этой темы в этом месте проблема. Пример: полоски прокрутки. Только темы, сделанные на основе определенных виндовых, в том числе дефолтной, без кроссплатформенного кода, теряют полоски прокрутки под Мак, и к ним нужно применять мой стиль обводки полосок прокрутки, для всех остальных он вреден.
То есть, при активации кнопки, все темы, про которые она ничего не знает, а в начале это вообще все темы, должны по умолчанию иметь целую строку снятых флажков. Даже если соответствующие стили включены.

Отсутствует

 

№97230-07-2009 17:01:55

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

Re: Custom Buttons

Al_H
Ок. Пока разобрался только с природой самопроизвольного включения, здесь исправленный код в раздел "Код": http://pastebin.mozilla-russia.org/100445.


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

Отсутствует

 

№97301-08-2009 09:23:49

razoo
Участник
 
Группа: Members
Зарегистрирован: 23-07-2009
Сообщений: 48
UA: Foxware 0.0

Re: Custom Buttons

Антон.
1. Спасибо за “Block Site”. Кнопка получилась очень прикладистой.

2.

Anton пишет

Не понял. В FF, кажется, нет функции upOneFolder.

Точно. Это была команда одной из кнопок расширения “Toolbar Buttons”. Самодельная кнопка работала, но после того как расширение было удалено – перестала. Как, кстати, и Рестарт Лисы. Какой код теперь нужно ставить в кнопку для перезагрузки? Или только с расширением?

3. Предложенный тобой код отработки модификаторов

Выделить код

Код:

this. onclick = function (event)
{
    if (event. button > 0)
        return;
    if (event. ctrlKey)
        sg.Grab(new sg.FrameTarget(), sg.CaptureViewPort, new sg.SaveAction());;
    else if (event. shiftKey)
        sg.Grab(new sg.SelectionTarget(), sg.CaptureViewPort, new sg.SaveAction());;
    else
        sg.Grab(new sg.VisibleTarget(), sg.CaptureViewPort, new sg.SaveAction());
};

не работает
Вот такой:

Выделить код

Код:

{
if (e.button > 0)
        return;
    if(e.button == 0)
    sg.Grab(new sg.VisibleTarget(), sg.CaptureViewPort, new sg.SaveAction());;
    if(e.button == 0 && e.ctrlKey)
    sg.Grab(new sg.FrameTarget(), sg.CaptureViewPort, new sg.SaveAction());;
    if(e.button == 0 && e.shiftKey)
    sg.Grab(new sg.SelectionTarget(), sg.CaptureViewPort, new sg.SaveAction());   
};

работает, но косо: если щелкнуть ctrl – клик или shift – клик, предлагает сначала сохранить как на просто клик, а только потом то, что прописано на ctrl или shift, соответственно.
Что я там накосячил? Я совершенно не знаю ни скриптов, ни зула :(

4. Еще :)
Возможно ли сделать так, чтобы картинка кнопки на onmouseover менялась в зависимости от того какой модификатор в это время нажат? Т.е. ctrl + onmouseover – одна картинка, просто onmouseover – другая. Это было бы наглядней, если все-таки получится применить варианты нажатий с модификаторами

5. Переделал кнопки All-in-One Sidebar - Page Info и Multipanel. Они работают. Но как и задумано в AiOS – открываются в боковой панели. У родных кнопок AiOS есть возможность открывать в новом табе – но только на ctrl +click. Как сделать, чтобы они открывались в табе по умолчанию?

6.

Infocatcher пишет

Если только сделать «обертку» для оригинальной функции открытия

можно узнать, что значит "обертка"? )
Вообще, кто-нибудь когданибудь открывал в табе менеджер скрапбука?

ДА, всегда - спасибо за науку.

Отсутствует

 

№97401-08-2009 13:20:30

3Jlou
Участник
 
Группа: Members
Зарегистрирован: 14-08-2008
Сообщений: 211
UA: Firefox 3.5

Re: Custom Buttons

razoo, есть кнопки рестарта:

1. С диалогом подтверждения (Alt + Left click - без подтверждения):

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0D%0A%20%20%3Cname%3ERestart%20%28with%20confirmation%29%3C/name%3E%0D%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjM2qefiJQAAA5xJREFUOE9Vk3tMW1Ucx09ZfMznFMTAH8rciNlGtomSGZOpy0xo0JXpomS/y+2ljw1oqdCxDRQ6oERhTKakQHSsgKUrfRAJpmPLVoogYwErQ8iUR2+5XSc0Osk2jWwp9OdpiW7e5JN7cnK+n3N+v5MjIvd/2e51RBSTFpfwWNYTInxbRDB+KRQOL4VRuB1C98pfoQ4SxkmyRnSbrGAS/X91Lw7uhCcLhtvEp2b+yLQJKP02gEpnALMcc5jeMYsvN/+C6yvHFohi8EvC9L/ysOZyz5oDQ6FVAbgTE4pGe7Wu35YP9l7H9+0+3Gvl8d37eM/G414Ljy8ZrobW5g1dy+ycW97ysQcJ2d8X+5TmsqW47/fwwbPXUUIXRcL7bD6UdPJRIuPIXHSeyt8yzeJnnkVM1Y1RgWwg/Z1W7y3NxSCKO7yYYfbSI3sxqeYnTCwZjbKxbgLFVJxBBRlUtoeWpR9ZxO26H5HEFw059zsX8E0zjztaZ3GHcQYfLRq8RTJaW8jmbDHZxIhFEkv32uLhUErLDKaZfPiazY+FlxZxS8kIkiz1AEqcwdUwJbIzeaPRQDsTR4khu4wvkD12J8kdXCYl9MiVE/hMkxclF2/gBs139wRJzdP4fNM0Pn5kGElyQUq0ua+3P0h2n7lAmPMhcojudpQ2rYwe+9g4JrfNYTzbi0RW4cEDLUGEWh+CfhpBPbAEinOJUUHaFx+Q1Dor2faJmWylbK42k036VV6sMpPtx22EKxy4I2+mgmoeQXcVQTOEwDnzo7cL8AgllvI0MPUpoDKmQqExBTSNyZB3Yj2wZc8RNtc5KjX4kdFTQekkQjlFcf4aQDfHQle8FOxxdLyT+9BVUNwh5Hx0RsiscPh3ag1XtkGOJZGwYMxXVI/dVRmEVYHuZ1rK1Apoh2+CyjWerXJ9L9eNXKBhk87qr6nqErSVdh5Ux1y7OWiIJVI4voGRdfVVWgJhZV2kjCmET/kVqOP/hJP8gqLZN6H9OuAutwesVQ7/Sb1DKD3U4MkBpu3VHKh6iNbJxMigfpdc2TNZ2u4P5zcKyJzgw1Av3GEM/htqY2C6rGv+UnX3/DdU0HS46UqFVGbK4qBk3X8PiTbpARnUpnNye39hjeeusoHHvJZfl1XtwZtHOoO8zjH/w+FTU+fUuv7T2VJTLgdHn6UZ0f9eckTCQvlWFhpKOWWPR65xLVH+pgQV6rPjrNz6OQe1YhbKEujamH/D/wBqNRb8pCuFJAAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0D%0A%20%20%3Cmode%3E0%3C/mode%3E%0D%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20*****%20VARS%20*****%20//%0A%0Avar%20prompts%20%3D%20Components.classes%5B%22@mozilla.org/embedcomp/prompt-service%3B1%22%5D%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.getService%28Components.interfaces.nsIPromptService%29%3B%0A%0A%0A%0A%0A//%20*****%20FUNCTIONS%20*****%20//%0A%0Afunction%20createBrandingBundle%28%29%20%7B%0A%20%20%20%20var%20myBrandingPath%20%3D%20null%3B%0A%20%20%20%20var%20myStringBundleService%20%3D%20Components.classes%5B%22@mozilla.org/intl/stringbundle%3B1%22%5D%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.getService%28Components.interfaces.nsIStringBundleService%29%3B%0A%20%20%20%20%0A%20%20%20%20myBrandingPath%20%3D%20%22chrome%3A//branding/locale/brand.properties%22%0A%20%20%20%20return%20myStringBundleService.createBundle%28myBrandingPath%29%3B%0A%7D%0A%0A%0Afunction%20getWindowType%28%29%20%7B%0A%20%20%20%20//%20Relies%20on%20Branding%20Code%20so%20can%20not%20be%20run%20on%20startup%0A%20%20%20%20var%20myBrandStrings%20%3D%20createBrandingBundle%28%29%3B%0A%20%20%20%20var%20thisBrandShortName%20%3D%20myBrandStrings.GetStringFromName%28%22brandShortName%22%29%0A%20%20%20%20switch%20%28thisBrandShortName%29%20%7B%0A%20%20%20%20%20%20case%20%22Mozilla%20Thunderbird%22%3A%0A%20%20%20%20%20%20case%20%22Shredder%22%3A%0A%20%20%20%20%20%20case%20%22Thunderbird%22%3A%0A%20%20%20%20%20%20%20%20return%20%22mail%3A3pane%22%3B%0A%20%20%20%20%20%20case%20%22Nvu%22%3A%0A%20%20%20%20%20%20%20%20return%20%22composer%3Ahtml%22%3B%0A%20%20%20%20%20%20case%20%22Calendar%22%3A%0A%20%20%20%20%20%20case%20%22Sunbird%22%3A%0A%20%20%20%20%20%20%20%20return%20%22calendarMainWindow%22%3B%0A%20%20%20%20%20%20case%20%22eMusic%20Download%20Manager%22%3A%0A%20%20%20%20%20%20case%20%22eMusic%20Remote%22%3A%0A%20%20%20%20%20%20%20%20return%20%22emusic%3Awindow%22%3B%0A%20%20%20%20%20%20case%20%22Songbird%22%3A%0A%20%20%20%20%20%20%20%20return%20%22Songbird%3AMain%22%3B%0A%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20return%20%22navigator%3Abrowser%22%3B%0A%20%20%20%20%7D%0A%7D%0A%0A%0Afunction%20Restart%28%29%0A%7B%0A%20%20%20%20//%20Notify%20all%20windows%20that%20an%20application%20quit%20has%20been%20requested.%0A%20%20%20%20var%20os%20%3D%20Components.classes%5B%22@mozilla.org/observer-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIObserverService%29%3B%0A%20%20%20%20var%20cancelQuit%20%3D%20Components.classes%5B%22@mozilla.org/supports-PRBool%3B1%22%5D%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.createInstance%28Components.interfaces.nsISupportsPRBool%29%3B%0A%20%20%20%20os.notifyObservers%28cancelQuit%2C%20%22quit-application-requested%22%2C%20%22restart%22%29%3B%0A%0A%20%20%20%20//%20Something%20aborted%20the%20quit%20process.%0A%20%20%20%20if%20%28cancelQuit.data%29%0A%20%20%20%20%20return%20false%3B%0A%0A%20%20%20%20var%20wm%20%3D%20Components.classes%5B%22@mozilla.org/appshell/window-mediator%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIWindowMediator%29%3B%0A%20%20%20%20var%20windows%20%3D%20wm.getEnumerator%28%22%22%29%3B%0A%0A%20%20%20%20var%20windowType%20%3D%20getWindowType%28%29%3B%0A%0A%20%20%20%20while%20%28windows.hasMoreElements%28%29%29%20%7B%0A%20%20%20%20%20%20var%20myConfigWindow%20%3D%20windows.getNext%28%29.QueryInterface%28Components.interfaces.nsIDOMWindowInternal%29%3B%0A%20%20%20%20%20%20if%20%28myConfigWindow.document.documentElement.getAttribute%28%22windowtype%22%29%20%21%3D%20windowType%29%20%7B%0A%20%20%20%20%20%20%20%20%20myConfigWindow.close%28%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28%22@zeniko/crashrecoveryservice%3B1%22%20in%20Components.classes%29%20%7B%0A%20%20%20%20%20%20nsPreferences.setBoolPref%28%22extensions.crashrecovery.resume_session_once%22%2C%20true%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20appStartup%20%3D%20Components.interfaces.nsIAppStartup%3B%0A%20%20%20%20Components.classes%5B%22@mozilla.org/toolkit/app-startup%3B1%22%5D%0A%20%20%20%20%20%20.getService%28appStartup%29.quit%28appStartup.eRestart%20%7C%20appStartup.eAttemptQuit%29%3B%0A%0A%20%20%20%20return%20true%3B%0A%7D%0A%0A%0A%0A%0A//%20*****%20MOUSE%20HANDLING%20*****%20//%0A%0Athis.leftclick%20%3D%20function%28evt%29%20%7B%0A%20%20var%20RestartProceed%20%3D%20prompts.confirm%28null%2C%20%22Restart%20Firefox%22%2C%20%22Restart%20now%3F%22%29%3B%0A%20%20if%20%28RestartProceed%29%20%7B%0A%20%20%20%20Restart%28%29%3B%0A%20%20%7D%0A%7D%0A%0Athis.aleftclick%20%3D%20function%28evt%29%20%7B%0A%20%20Restart%28%29%3B%0A%7D%0A%0A%0A%0A%0A//%20*****%20INITIALISATION%20*****%20//%0A%0A%0A//%20%u0415%u0441%u043B%u0438%20%u0436%u0435%20%u043D%u0430%u0434%u043E%20%u0438%u0437%u043C%u0435%u043D%u0438%u0442%u044C%20%u0437%u0430%u0434%u0435%u0440%u0436%u043A%u0443%20%u0434%u043B%u044F%20%u043E%u0442%u0434%u0435%u043B%u044C%u043D%u043E%u0439%20%u043A%u043D%u043E%u043F%u043A%u0438%2C%20%u043C%u043E%u0436%u043D%u043E%20%u043D%u0430%u043F%u0438%u0441%u0430%u0442%u044C%0A%0Athis.%20gQuot%20%3D%20%7B%7D%3B%0Athis.%20gQuot.%20__proto__%20%3D%20custombuttons.%20gQuot%3B%0Athis.%20gQuot.%20dcDelay%20%3D%200%3B%0Athis.%20setAttribute%20%28%27onclick%27%2C%20%27this.gQuot.mHandler%28event%2C%20this%29%27%29%3B%0A%5D%5D%3E%3C/initcode%3E%0D%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*%0A%0A%20%20Left%20%20%20%20%20%3D%20Restart%20application%20with%20confirmation%20dialogue%0A%20%20Alt+Left%20%3D%20Restart%20application%0A%0A%20%20Rawny%20%5E%5E%0A%0A*/%0A%5D%5D%3E%3C/code%3E%0D%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0D%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0D%0A%20%20%3Cattributes/%3E%0D%0A%3C/custombutton%3E

2. Restart Tabbed:

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0D%0A%20%20%3Cname%3ERestart%20Tabbed%3C/name%3E%0D%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACwUlEQVQ4y42T20tUURTGv7PPPuds5+ZcdDyOY44z4yUsGbuZSHQxCqOCiiJ6iqAXX3vqLwiKDIkeo3+geg4KEoMQLwhSXiqyJphxjmPizDijc87ZuwctyQu4X9ZefHy/xVqLJWMv7zZz4KCsYNI2t0pkL/6qisCZkEvvww0326rRnQx19+rCsWA87mXekMQlBFjgfFei4+bQxGjXdO3co7GBoeHdAXeg97Sdfry/JXaIs6IfAlCJxiw9rR71Ri4qYI6xs1+u4918YRug+X5z6/GmzoH64+5zGfMbaImVISRQiZJfC8twWwEqy6oflmAAtgMa/Y0JV7Uz8TWVRKVRPVVYLL0ggloOSTkZb2m/+Hl6bmT2S/IBBjPZHVvIZ1f0/M9SQbWqspPfvz6Zmp95s0otIyRi2Q8jk8WFpexT3acXIle6mrWCSM2+HS7If829vRcSh8Idd91lF2FFVuKWtU9UkFOeomvmAGJtbf7Y/mBDzdWeE523PMR7Sc3Z9U0N0ffSuvmyo6kp/qi//2FfqVzCy9GXWJINmBlSHp+YeB12hU/VhHTdjPyGO25i4ZUPuTkDs5+nGygAKAojmsZo2Srj/dQg0vIPpDwz8GkhNeR3XuV8maboEkhVEcrPFmSSBjxEBiGqSgGgstIfrKurbycSgUpUrOYtZMwcqBWAuUpUCAIqNOjz7SimyjgSD0MIAY878JwCgNPpIdFolChUQXdrN9KLBtYMICCC0Ct1uCs8kISEQMiHqg4vmKIBEBgeHndQAGDMCUoVAABTNNzovoZPc9N4N/4Rx1oPo9rjA+ccnHPYtg3btgEIyLKCvzOALG9uVCYEbZEW1Ppq4NAqdr0RQuR1gKY5sLZmW+l0tiwE/6/aaiEHzu2NnP/7CyFgmsKiG6RsMmk8W1lZ04UQ4BwAODgXEEIAWI/r2maez5eMP+y1LNBcwVPrAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0D%0A%20%20%3Cmode%3E0%3C/mode%3E%0D%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20code*/%0A%20%20%0A%0A%0A//this.style.opacity%20%3D%20%27.65%27%3B%0A//this.setAttribute%28%22onmouseover%22%2C%20%22if%20%28custombuttons%29%20custombuttons.ButtonBrt%28event%29%3B%22%20%29%3B%0A//this.setAttribute%28%22onmouseout%22%2C%20%22if%20%28custombuttons%29%20custombuttons.ButtonDim%28event%29%3B%22%20%29%3B%0A%5D%5D%3E%3C/initcode%3E%0D%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*Code*/%0A%0A//%20Code%20from%20codefisher.org%20button%0Avar%20restart_tabbed_g%20%3D%20function%20%28%29%20%7B%0A%20%20var%20Cc%20%3D%20Components.classes%3B%0A%20%20var%20Ci%20%3D%20Components.interfaces%3B%0A%20%20var%20wm%20%3D%20Cc%5B%22@mozilla.org/appshell/window-mediator%3B1%22%5D.getService%28Ci.nsIWindowMediator%29%3B%0A%20%20var%20prefs%20%3D%20Cc%5B%22@mozilla.org/preferences-service%3B1%22%5D.getService%28Ci.nsIPrefBranch%29%3B%0A%20%20var%20startup%20%3D%20Ci.nsIAppStartup%3B%0A%20%20var%20home%20%3D%20%22browser.startup.homepage%22%3B%0A%20%20var%20old_home%20%3D%20%22extension_buttons.old_home%22%3B%0A%20%20var%20others%20%3D%20%22extension_buttons.others%22%3B%0A%20%20var%20lock%20%3D%20%22extension_buttons.lock%22%3B%0A%20%20var%20browser_window%20%3D%20%22navigator%3Abrowser%22%3B%0A%20%20var%20do_quit%20%3D%20function%20%28flag%29%20%7B%0A%20%20%20%20prefs.setBoolPref%28lock%2C%20false%29%3B%0A%20%20%20%20Cc%5B%22@mozilla.org/toolkit/app-startup%3B1%22%5D.getService%28startup%29%0A%20%20%20%20%20%20%20.quit%28startup.eAttemptQuit%20%7C%20%28flag%20%3F%20startup.eRestart%20%3A%200%29%29%3B%0A%20%20%7D%3B%0A%20%20var%20do_restart%20%3D%20function%20%28%29%20%7B%0A%20%20%20%20do_quit%28true%29%3B%0A%20%20%7D%3B%0A%20%20var%20do_exit%20%3D%20function%20%28%29%20%7B%0A%20%20%20%20do_quit%28false%29%3B%0A%20%20%7D%3B%0A%20%20var%20collect_urls%20%3D%20function%20%28win%29%20%7B%0A%20%20%20%20var%20url%20%3D%20%22%22%3B%0A%20%20%20%20var%20ntabs%20%3D%20win.gBrowser.mPanelContainer.childNodes.length%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20ntabs%3B%20++i%29%20%7B%0A%20%20%20%20%20%20var%20b%20%3D%20win.gBrowser.getBrowserAtIndex%28i%29%3B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20url%20+%3D%20b.currentURI.spec%20+%20%22%7C%22%3B%0A%20%20%20%20%20%20%7D%20catch%20%28e%29%20%7B%0A%20%20%20%20%20%20//%20ignore%20e%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20url%20%3D%20url.replace%28/%5C%7C%24/%2C%20%22%22%29%3B%0A%20%20%20%20return%20url%3B%0A%20%20%7D%3B%0A%20%20var%20collect_other_windows%20%3D%20function%20%28%29%20%7B%0A%20%20%20%20var%20enumvar%20%3D%20wm.getEnumerator%28browser_window%29%3B%0A%20%20%20%20var%20out%20%3D%20%5B%5D%3B%0A%20%20%20%20while%20%28enumvar.hasMoreElements%28%29%29%20%7B%0A%20%20%20%20%20%20var%20win%20%3D%20enumvar.getNext%28%29%3B%0A%20%20%20%20%20%20if%20%28win%20%21%3D%20window%29%20%7B%0A%20%20%20%20%20%20%20%20out.push%28win%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20out%3B%0A%20%20%7D%3B%0A%20%20var%20x_escape%20%3D%20function%20%28s%29%20%7B%0A%20%20%20%20return%20s.replace%28/%5B%3E%5C%5C%5D/g%2C%20function%20%28x%29%20%7B%20return%20%22%5C%5C%22%20+%20%28x%20%3D%3D%20%22%3E%22%20%3F%20%22%7E%22%20%3A%20x%29%3B%20%7D%29%3B%0A%20%20%7D%3B%0A%20%20var%20x_unescape%20%3D%20function%20%28s%29%20%7B%0A%20%20%20%20return%20s.replace%28/%5C%5C%28.%29/g%2C%20function%20%28_%2C%20x%29%20%7B%20return%20x%20%3D%3D%20%22%7E%22%20%3F%20%22%3E%22%20%3A%20x%3B%20%7D%29%3B%0A%20%20%7D%3B%0A%20%20var%20save_state%20%3D%20function%20%28%29%20%7B%0A%20%20%20%20prefs.setBoolPref%28%27extension.tbutton.restart.do.load%27%2Ctrue%29%3B%0A%20%20%20%20prefs.setCharPref%28others%2C%20collect_other_windows%28%29.map%28%0A%20%20%20%20%20%20function%20%28w%29%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%3E%22%20+%20x_escape%28collect_urls%28w%29%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%29.join%28%22%22%29%29%3B%0A%20%20%20%20var%20prev%20%3D%20prefs.getCharPref%28home%29%3B%0A%20%20%20%20var%20cur%20%3D%20collect_urls%28window%29%3B%0A%20%20%20%20prefs.setCharPref%28home%2C%20cur%20%3D%3D%20%22%22%20%3F%20%22about%3Ablank%22%20%3A%20cur%29%3B%0A%20%20%20%20prefs.setCharPref%28old_home%2C%20prev%29%3B%0A%20%20%7D%3B%0A%20%20return%20%7B%0A%20%20%20%20exec%3A%20function%20%28%29%20%7B%0A%20%20%20%20%20%20save_state%28%29%3B%0A%20%20%20%20%20%20%20%20do_restart%28%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20exit%3A%20function%20%28%29%20%7B%0A%20%20%20%20%20%20save_state%28%29%3B%0A%20%20%20%20%20%20do_exit%28%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20restore_state%3A%20function%20%28%29%20%7B%0A%20%20%20%20%20%20prefs.setBoolPref%28%27extension.tbutton.restart.do.load%27%2Cfalse%29%3B%0A%20%20%20%20%20%20try%20%7B%20%0A%20%20%20%20%20%20%20%20prefs.getBoolPref%28lock%29%3B%0A%20%20%20%20%20%20%7D%20catch%28e%29%20%7B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20prefs.setBoolPref%28lock%2C%20true%29%3B%0A%20%20%20%20%20%20var%20orig%20%3D%20prefs.getCharPref%28old_home%29%3B%0A%20%20%20%20%20%20if%20%28orig%20%21%3D%20%27%27%29%20%7B%0A%20%20%20%20%20%20%20%20prefs.setCharPref%28home%2C%20orig%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20prefs.setCharPref%28old_home%2C%20%22%22%29%3B%0A%20%20%20%20%20%20var%20saved%20%3D%20prefs.getCharPref%28others%29%3B%0A%20%20%20%20%20%20var%20chunks%20%3D%20saved.match%28/%3E%5B%5E%3E%5D*/g%29%3B%0A%20%20%20%20%20%20if%20%28chunks%20%26%26%20chunks%20%21%3D%20%27%27%20%26%26%20chunks.length%20%21%3D%200%29%20%7B%0A%20%20%20%20%20%20%20%20var%20wins%20%3D%20chunks.map%28%0A%20%20%20%20%20%20%20%20function%20%28p%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20return%20x_unescape%28p.substr%281%29%29.split%28%22%7C%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20wins.forEach%28%0A%20%20%20%20%20%20%20%20function%20%28w%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20window.open%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28w.lenth%20%21%3D%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20tb%20%3D%20wm.getMostRecentWindow%28browser_window%29.getBrowser%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20first%20%3D%20w.shift%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20tb.loadURI%28first%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20w.forEach%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20function%20%28url%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tb.addTab%28url%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20prefs.setCharPref%28others%2C%20%22%22%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%7D%28%29%3B%0A%0Avar%20prefs%20%3D%20Components.classes%5B%22@mozilla.org/preferences-service%3B1%22%5D%0A%20%20%20%20%20%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Aif%20%28prefs.getBoolPref%28%27extension.tbutton.restart.do.load%27%29%20%3D%3D%20true%29%20%7B%0A%20%20%20%20addEventListener%28%22load%22%2C%20restart_tabbed_g.restore_state%2C%20false%29%3B%0A%7D%0A%0Arestart_tabbed_g.exec%28%29%3B%0A%5D%5D%3E%3C/code%3E%0D%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0D%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0D%0A%20%20%3Cattributes/%3E%0D%0A%3C/custombutton%3E

P.S. Предлагаю потестить свою сборку Firefox Portable 3.5.1, которая существует благодаря данной теме.

Отредактировано 3Jlou (01-08-2009 13:22:53)

Отсутствует

 

№97501-08-2009 14:03:28

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

Re: Custom Buttons

razoo

3. Предложенный тобой код отработки модификаторов

Выделить код

Код:

this. onclick = function (event)
{
    if (event. button > 0)
        return;
    if (event. ctrlKey)
        sg.Grab(new sg.FrameTarget(), sg.CaptureViewPort, new sg.SaveAction());;
    else if (event. shiftKey)
        sg.Grab(new sg.SelectionTarget(), sg.CaptureViewPort, new sg.SaveAction());;
    else
        sg.Grab(new sg.VisibleTarget(), sg.CaptureViewPort, new sg.SaveAction());
};

не работает

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

Добавлено 01-08-2009 14:30:45
razoo

2.

Anton пишет

Не понял. В FF, кажется, нет функции upOneFolder.

Точно. Это была команда одной из кнопок расширения “Toolbar Buttons”. Самодельная кнопка работала, но после того как расширение было удалено – перестала. Как, кстати, и Рестарт Лисы. Какой код теперь нужно ставить в кнопку для перезагрузки? Или только с расширением?

Выделить код

Код:

var href = window.content.document.location.href;
if (href.indexOf("index") != -1) {
    href = href.substring(0, href.indexOf("index"));
}
href = href.substring(0, href.substring(0, href.length - 1).lastIndexOf("/") + 1);
if (!href.match(/:\/\/$/)) {
    window.content.document.location = href;
}

Что касается неактивности кнопки «когда выше подняться некуда» - сделать можно, но неактивное состояние кнопки при переключении на вкладку где «есть куда подняться» так и останется неактивным.

upd.:Прошу прощения, выше был вопрос о кнопке для перезагрузки, а я поместил код для upOneFolder
Кнопка для рестарта - в сообщении 3Jlou (1-й код): http://forum.mozilla-russia.org/viewtop … 54#p359754

Отредактировано Anton (01-08-2009 17:03:46)


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

Отсутствует

 

Board footer

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