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

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

№1500118-08-2020 10:21:32

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 1432
UA: Firefox 52.0

Re: Custom Buttons

Dobrov пишет

Общий вопрос - нужна кнопка, которая откроет html-файл, расположенный например, в profile/chrome
Нужно открыть справку в новой вкладке, а по повторному клику закрыть (если во вкладке открыта именно htm-справка)

Звучит как-то так

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

Выделить код

Код:

this._handleClick = () => {

	var fileName = "help.html";
	var params = {
		inBackground: false,
		relatedToCurrent: true
	};

	var file = Services.dirsvc.get("UChrm", Ci.nsIFile);
	file.append(fileName);
	var uri = Services.io.newFileURI(file);
	var open = window.openTrustedLinkIn || openUILinkIn;
	(this._handleClick = () => uri.equals(gBrowser.currentURI)
		? gBrowser.removeCurrentTab() : open(uri.spec, "tab", params)
	)();
}

Отсутствует

 

№1500218-08-2020 10:53:21

Duche
Участник
 
Группа: Members
Зарегистрирован: 07-02-2016
Сообщений: 198
UA: unknown 0.0

Re: Custom Buttons

Добрый день. Есть код ,приведённый ниже, работает исправно, но не работает на SSD. Работает на 3 ноутбуках с HDD а на SSD нет. Сборка везде одна  FF71 , Win7 , все FF лежат на диск С , все пути к открываемым папкам одинаковые и не работает, код пытается   запустить  "Выбор программы для открытия этого файла", а надо просто открыть папку, по прописанному пути.

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

Выделить код

Код:

/*Initialization Code*/


    this.onclick =e=> {
       e.button == 0 && runApp();   // ЛКМ
    };       
    function runApp() {
       var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
       file.initWithPath( getPath() );
       file.launch();
    };
    function getPath() {
       try { return Services.prefs.getComplexValue(s, Ci.nsIPrefLocalizedString).data; }
       catch(e) { return "C:\\Мои документы\\"; };
    };


P.S. Такой же эффект, если эта же FF71 запускается с usb Флешки . Почему не любит "камни" не пойму.

Отредактировано Duche (18-08-2020 17:52:55)

Отсутствует

 

№1500325-08-2020 10:52:06

solombala
Забанен
 
Группа: Members
Зарегистрирован: 20-07-2019
Сообщений: 652
UA: Firefox 80.0

Re: Custom Buttons

Что-то СВ в 80 не того ...Код изменять или версия новая?

Отсутствует

 

№1500425-08-2020 14:15:16

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 1432
UA: Firefox 52.0

Re: Custom Buttons

solombala пишет

или версия новая?

Ну как новая, месяц скоро будет. Новее пока нет (не требуется).

Отсутствует

 

№1500525-08-2020 14:55:39

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 760
UA: Firefox 78.0

Re: Custom Buttons

Dumby
А вы универсальную кнопочку не делали для включения/выключения любого расширения, например, по uuid. C иконкой (а если с двумя, по статусу, то вообще шикарно будет), что бы еще и в ucf работала.
   
Хотел примеры привести, да и так понятно, что некоторые аддоны легче включить жмякнув по кнопке, чем лезть в меню, да и тех что иногда требуется отключить, а авторами это не предусмотрено (нет значка), не мало.
   
Если не делали, то большая просьба сделать, как время будет.

Отсутствует

 

№1500625-08-2020 15:26:14

solombala
Забанен
 
Группа: Members
Зарегистрирован: 20-07-2019
Сообщений: 652
UA: Firefox 80.0

Re: Custom Buttons

Dumby
вроде последняя 15 , самих кнопок не видать...

Отсутствует

 

№1500725-08-2020 15:40:28

kokoss
Участник
 
Группа: Members
Зарегистрирован: 15-02-2018
Сообщений: 1024
UA: Firefox 52.0

Re: Custom Buttons

solombala пишет

вроде последняя 15

16


Win7

Отсутствует

 

№1500826-08-2020 09:09:00

rubel
Участник
 
Группа: Members
Откуда: г.Самара
Зарегистрирован: 10-05-2005
Сообщений: 480
UA: Firefox 79.0

Re: Custom Buttons

Dumby
У Vitaliy V. была кнопка в боковой панели закладок Открыть все папки, Закрыть все папки. Но биндинг больше не работает, а очень не хватает этой удобной кнопочки в FF79 . Может поможете с этой кнопкой для user_chrome_files или для Custom Buttons.

Отсутствует

 

№1500926-08-2020 13:57:29

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 807
UA: Firefox 79.0

Re: Custom Buttons

rubel
Там была ещё одна не-кнопка, а ПКМ. Когда ищешь в закладках, можно было по ПКМ перейти в папку. Я как-то спрашивал Виталия, он ответил - будет настроение, посмотрю. Наверное, этот вопрос лучше адресовать Виталию.

Отсутствует

 

№1501026-08-2020 14:45:01

Garalf
Участник
 
Группа: Members
Зарегистрирован: 19-09-2017
Сообщений: 292
UA: Firefox 81.0

Re: Custom Buttons

А что, в FF81 отключили однопроссорный режим? Можно ли его включить?

Отсутствует

 

№1501126-08-2020 18:07:44

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 760
UA: Firefox 78.0

Re: Custom Buttons

Question

https://github.com/Infocatcher/Custom_Buttons/tree/master/Toggle_Restartless_Add-ons
https://forum.mozilla-russia.org/viewtopic.php?pid=780415#p780415

У меня https://forum.mozilla-russia.org/viewtopic.php?pid=776221#p776221, не о том речь.
   

https://forum.mozilla-russia.org/viewtopic.php?pid=776221#p776221

Не смог прикрутить к ucf.
   

https://github.com/dartraiden/Linkification/raw/master/linkification.user.js

Вы к тому как ваши ссылки смотреть?  ) Иначе я ничего полезного там не увидел.

Отредактировано _zt (26-08-2020 18:19:06)

Отсутствует

 

№1501226-08-2020 19:24:10

solombala
Забанен
 
Группа: Members
Зарегистрирован: 20-07-2019
Сообщений: 652
UA: Firefox 80.0

Re: Custom Buttons

Dumby
А шо там с проксями начудили? Через DNS даже не Socks ? Плюс ютуб сходу запускается , реально парит...

Отсутствует

 

№1501327-08-2020 00:22:15

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 1432
UA: Firefox 68.0

Re: Custom Buttons

_zt пишет

А вы универсальную кнопочку не делали для включения/выключения любого расширения, например, по uuid. C иконкой (а если с двумя, по статусу, то вообще шикарно будет), что бы еще и в ucf работала.
   
Хотел примеры привести, да и так понятно, что некоторые аддоны легче включить жмякнув по кнопке, чем лезть в меню, да и тех что иногда требуется отключить, а авторами это не предусмотрено (нет значка), не мало.
   
Если не делали, то большая просьба сделать, как время будет.

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


Статусов, вообще-то, больше двух. Важный статус — «не установлено/удалено», плюс ещё парочка неважных.
Вобщем, задумано так: иконка берётся из статуса рядом с id'шником, если нет — из статуса defaultImages,
если и там нет, тогда стандартная лисья extension.svg, покрашенная, соответственно статусу, цветом из colors.
Специальный код, чтоб сохранять состояние в(ы)ключенности Firefox Screenshots, не предусмотрен (надеюсь не надо).

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

Выделить код

Код:

try {(async (id, func, g) => ChromeUtils.getClassName(this) == "Sandbox" && !func(id).initialize(CustomizableUI) || (g = Cu.getGlobalForObject(Cu)) && (await (g[id] || (g[id] =
	new Promise(async resolve => resolve((await ChromeUtils.compileScript("data:;charset=utf-8," + encodeURIComponent(`(${func})("${id}")`))).executeInGlobal(g) || g[id]))
))).init(globalThis.XULElement?.isInstance(this) && addDestructor))("ToggleAddonWidgetsGenerator", (id, am, cui, sym) => this[id] = {

	addons: {
		"treestyletab@piro.sakura.ne.jp": {
			Enabled: "chrome://browser/skin/preferences/face-smile.svg",
			Disabled: "chrome://browser/skin/preferences/face-sad.svg",
		},
		"uBlock0@raymondhill.net": {
			
		},
		"firefox-compact-dark@mozilla.org": {
			
		},
		/*
		"{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}": {
			Enabled: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AMgA/wDIAP8AyAD/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ==",
			Disabled: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ==",
			Installing: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ==",
			Uninstalled: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ==",
			Uninstalling: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ=="
		},
		*/
	},
	defaultImages: {
		Enabled: "",
		Disabled: "",
		Installing: "",
		Uninstalled: "",
		Uninstalling: "chrome://pocket/content/panels/img/pocketerror@1x.png"
	},
	colors: {
		Enabled: "#00c800",
		Disabled: "red",
		Installing: "white",
		Uninstalled: "blue",
		Uninstalling: "yellow"
	},
	tooltips: {
		Enabled: "Enabled",
		Disabled: "Disabled",
		Installing: "Installing",
		Uninstalled: "Not installed",
		Uninstalling: "Uninstalling"
	},

	//==================================================================

	noop() {},
	init(adtor) {
		this.initialize();
		(this.init = adtor ? d => d(this.destructor, this) : this.noop)(adtor);
	},
	destructor(reason) {
		reason[5] == "e" && this.destroy();
	},
	destroy() {
		this.destroy = this.noop;
		delete globalThis[id];
		am.removeAddonListener(this);
		this.unregStyle?.();
		for(let [, id] of this.widgets) cui.destroyWidget(id);
	},
	initialize(cst) {
		sym = Symbol(id);
		cui = cst || ChromeUtils.import("resource:///modules/CustomizableUI.jsm").CustomizableUI;
		for(let id in this.addons) {
			var a = this.addons[id];
			a.Installed = a.OperationCancelled = sym;
			this.createWidget(id);
		}
	},

	labelPrefix: "Toggle ",
	svg: "chrome://mozapps/skin/extensions/extension.svg",

	widgets: new Map(),
	idPrefix: "wdgt_toggle_addon_",
	createWidget(id) {
		var onCreated = async btn => {
			btn._handleClick = this.click;
			this.upd(btn, null, await am.getAddonByID(btn.addonId = btn.tooltipText));
			var pn = btn.parentNode;
			if (pn.nodeName == "toolbarpaletteitem")
				pn.setAttribute("title", btn.getAttribute("label")),
				pn.tooltipText = btn.tooltipText;
		}
		var re = /[^a-z0-9_-]/g;
		(this.createWidget = id => this.widgets.set(id, cui.createWidget({
			localized: false, tooltiptext: id, onCreated,
			id: this.idPrefix + id.toLowerCase().replace(re, "_")
		}).id))(id);
	},
	get click() {
		am = ChromeUtils.import("resource://gre/modules/AddonManager.jsm").AddonManager;
		for(var key of "Enabled Disabled Installing Uninstalled Uninstalling Installed OperationCancelled".split(" "))
			this["on" + key] = this.onAddon.bind(this, key);
		am.addAddonListener(this);

		var tbb = `\ttoolbarbutton[id^=${this.idPrefix}]`;
		var fill = (state, color) => `${tbb}:not([image])[state=${state}] {\n\t\tfill: ${color} !important;\n\t}\n`;
		var css = "@-moz-document url(chrome://browser/content/browser.xhtml) {\n\n"
			+ tbb + ` {\n\t\tlist-style-image: url(${this.svg}) !important;\n\t}\n`
			+ tbb + " > .toolbarbutton-icon {\n\t\tmin-height: 16px !important;\n\t}\n\n";
		for(var args of Object.entries(this.colors)) css += fill(...args);

		var subst = id + "-style";
		var io = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
		var setSubst = io.getProtocolHandler("resource")
			.QueryInterface(Ci.nsIResProtocolHandler).setSubstitution.bind(null, subst);
		setSubst(io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(css + "}")));

		var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
		var uri = io.newURI("resource://" + subst), type = sss.USER_SHEET;
		sss.loadAndRegisterSheet(uri, type);
		this.unregStyle = () => setSubst(null, sss.unregisterSheet(uri, type));

		var arg = {allowSystemAddons: true};
		delete this.click;
		return this.click = async function() {
			var addon = await am.getAddonByID(this.addonId);
			addon?.[addon.userDisabled ? "enable" : "disable"](arg);
		}
	},
	onAddon(key, addon) {
		var id = this.widgets.get(addon.id);
		if (id) for(var {node} of cui.getWidget(id).instances) this.upd(node, key, addon);
	},
	upd(btn, key, addon) {
		var data = this.addons[btn.addonId];
		if (!key || data[key] == sym) {
			if (!addon) key = "Uninstalled";
			else if (addon.pendingOperations & am.PENDING_UNINSTALL) key = "Uninstalling"
			else if (addon.pendingOperations & am.PENDING_INSTALL) key = "Installing";
			else key = addon.isActive ? "Enabled" : "Disabled";
		}
		btn.setAttribute("state", key);
		var img = data[key] || this.defaultImages[key];
		img ? btn.setAttribute("image", img) : btn.removeAttribute("image");

		var name = key == "Uninstalled" ? btn.addonId : addon.name;
		btn.setAttribute("label", this.labelPrefix + name);
		btn.tooltipText = name + "\n" + this.tooltips[key];
	}
});} catch(ex) {Cu.reportError(ex);}

rubel пишет

У Vitaliy V. была кнопка в боковой панели закладок Открыть все папки, Закрыть все папки. Но биндинг больше не работает, а очень не хватает этой удобной кнопочки в FF79 . Может поможете с этой кнопкой для user_chrome_files

Я так понимаю больше не нужно. А переложить пробовал так

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

Выделить код

Код:

try {(lst => {
	var type = "MozBeforeInitialXULLayout", sidebar = document.getElementById("sidebar");
	sidebar.addEventListener(type, lst, true);
	addEventListener("unload", () => sidebar.removeEventListener(type, lst, true), {once: true});
})({
	handleEvent(e) {
		var parent = e.target.querySelector(":root:is(#bookmarksPanel,#history-panel) > #sidebar-search-container");
		parent && this.insert(parent);
	},
	insert(parent) {
		var df = parent.ownerGlobal.MozXULElement.parseXULToFragment(`
			<hbox>
				<toolbarbutton 
					onclick="toggleState(event)"
					id="sidebar-button-toggle-state"
					tooltiptext="ЛКМ: Закрыть все папки верхнего уровня&#xA;((Ctrl или Shift) и ЛКМ) или СКМ: Закрыть все папки&#xA;ПКМ: Открыть все папки"
				/>
				<html:style><![CDATA[

					#sidebar-button-toggle-state {
						list-style-image: url('data:image/svg+xml,<?xml version="1.0" encoding="UTF-8"?>%0A<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewBox="0 0 48 48">%0A%09<g>%0A%09%09<path d="M 2.438,0 C 1.087,0 0,1.088 0,2.438 V 45.56 C 0,46.91 1.087,48 2.438,48 H 45.56 C 46.91,48 48,46.91 48,45.56 V 2.438 C 48,1.088 46.91,0 45.56,0 Z" style="fill:%230078ad;fill-opacity:1;" />%0A%09%09<path style="opacity:0.25;fill:%23000000;" d="M 5,11 V 39.5 L 13.5,48 H 45.5 C 47,47.9 47.9,47 48,45.5 V 13.6 L 43.4,9 10,8 Z"/>%0A%09%09<path style="fill:%23ffffff;" d="M 10.9,6 H 37.1 C 41.6,6 45,9.48 45,13.7 V 34.3 C 45,38.7 41.6,42 37.1,42 H 10.9 C 6.51,42 3,38.7 3,34.3 V 13.7 C 3.03,9.48 6.54,6.03 10.9,6 Z M 39.7,34.3 V 13.7 C 39.7,12.3 38.7,11.1 37.1,11.1 H 24 V 36.8 H 37.1 C 38.7,36.8 39.7,35.8 39.7,34.3 Z M 8.25,34.3 C 8.25,35.8 9.42,36.8 10.9,36.8 H 21.4 V 11.1 H 10.9 C 9.42,11.1 8.25,12.3 8.25,13.7 Z" />%0A%09%09<path style="fill:%23ffffff;" d="M 12,16.3 H 17.7 C 18.4,16.3 19,15.7 19,15 19,14 18.4,13.4 17.7,13.4 H 12 C 11.2,13.4 10.6,14 10.6,15 10.6,15.7 11.2,16.3 12,16.3 Z M 12,21.8 H 17.7 C 18.4,21.8 19,21.3 19,20.5 19,19.6 18.4,19 17.7,19 H 12 C 11.2,19 10.6,19.6 10.6,20.5 10.6,21.3 11.2,21.8 12,21.8 Z M 14.9,27.4 H 17.7 C 18.4,27.4 19,26.8 19,26.1 19,25.1 18.4,24.6 17.7,24.6 H 14.9 C 14,24.6 13.4,25.1 13.4,26.1 13.4,26.8 14,27.4 14.9,27.4 Z" />%0A%09</g>%0A</svg>') !important;
						min-width: 0 !important;
						-moz-appearance: none !important;
						border: none !important;
						background: none !important;
						margin: 1px !important;
						padding: 4px !important;
					}
					#sidebar-button-toggle-state:hover {
						background: hsla(240, 5%, 5%, .1) !important;
					}
					#sidebar-button-toggle-state:hover:active {
						background: hsla(240, 5%, 5%, .15) !important;
					}
				]]></html:style>
			</hbox>
		`);
		(this.insert = pn => {
			pn.prepend(pn.ownerDocument.importNode(df, true));
			var btn = pn.firstChild.firstChild;
			btn.toggleState = this.toggleState;
			btn.tree = pn.nextSibling;
		})(parent);
	},
	toggleState(e) {
		if (this.start) return;
		this.start = true;

		var {view} = this.tree;
		var close = e.button < 2;
		var closeAll = e.button == 1 || e.button == 0 && (e.ctrlKey || e.shiftKey);

		var index = view.rowCount, i;

		if (closeAll) for(i = index; i >= 0; i--)
			view.isContainer(i) && view.isContainerOpen(i) && view.toggleOpenState(i);

		else for(i = 0; i < index; i++) {
			if (!view.isContainer(i) || view.isContainerOpen(i) != close) continue;

			view.toggleOpenState(i);
			index = view.rowCount;
			if (close) continue;

			var node = view._rows[i];
			if (node.type == node.RESULT_TYPE_QUERY) i += node.childCount;
		}
		this.start = false;
	}
});} catch(ex) {Cu.reportError(ex);}

Garalf пишет

А что, в FF81 отключили однопроссорный режим? Можно ли его включить?

Да и да.

Отредактировано Dumby (27-08-2020 02:16:01)

Отсутствует

 

№1501427-08-2020 02:50:01

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 807
UA: Firefox 80.0

Re: Custom Buttons

Dumby пишет

Я так понимаю больше не нужно. А переложить пробовал так

Нужно, нужно!:P Спасибо.

Отсутствует

 

№1501527-08-2020 05:58:14

rubel
Участник
 
Группа: Members
Откуда: г.Самара
Зарегистрирован: 10-05-2005
Сообщений: 480
UA: Firefox 79.0

Re: Custom Buttons

Dumby пишет

Я так понимаю больше не нужно..

Очень даже нужно, спасибо Вам огромное! Правда я сменил иконку этой кнопки, а то она какая-то убогая. :)

Отсутствует

 

№1501627-08-2020 11:23:09

Garalf
Участник
 
Группа: Members
Зарегистрирован: 19-09-2017
Сообщений: 292
UA: Firefox 80.0

Re: Custom Buttons

Dumby пишет

Garalf пишет

    А что, в FF81 отключили однопроссорный режим? Можно ли его включить?

Да и да.

Dumby, а где править надо?

Отсутствует

 

№1501727-08-2020 13:19:01

solombala
Забанен
 
Группа: Members
Зарегистрирован: 20-07-2019
Сообщений: 652
UA: Firefox 80.0

Re: Custom Buttons

rubel

rubel пишет

Очень даже нужно, спасибо Вам огромное! Правда я сменил иконку этой кнопки, а то она какая-то убогая.

Это не совсем кнопка ...код в custom_script_win.js и все дела...

Отсутствует

 

№1501827-08-2020 16:54:27

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 760
UA: Firefox 78.0

Re: Custom Buttons

Dumby
Шикарно, даже лучше чем просил. Спасибо.
   
ps^ Firefox Screenshots не нужен.
   
ps2^

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

Да и так хорошо.

Отредактировано _zt (27-08-2020 17:02:08)

Отсутствует

 

№1501927-08-2020 17:30:45

rubel
Участник
 
Группа: Members
Откуда: г.Самара
Зарегистрирован: 10-05-2005
Сообщений: 480
UA: Firefox 79.0

Re: Custom Buttons

solombala пишет

Это не совсем кнопка ...код в custom_script_win.js и все дела...

Именно так я и сделал. В итоге все таки получилась кнопка. :)

Отсутствует

 

№1502027-08-2020 19:39:08

solombala
Забанен
 
Группа: Members
Зарегистрирован: 20-07-2019
Сообщений: 652
UA: Firefox 80.0

Re: Custom Buttons

rubel
Все так. в 77 тоже вставил (:is - поменяь на :-moz-any)...В 77 нет проблем с ютубом.

Отсутствует

 

№1502128-08-2020 09:16:06

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 1432
UA: Firefox 68.0

Re: Custom Buttons

Garalf пишет

Dumby, а где править надо?

Ну я же не телепат, а ты не рассказал как отключаешь.
Править надо там, где устанавливается значение переменной среды.
Вместо единицы — номер версии Firefox.

Отсутствует

 

№1502228-08-2020 10:18:23

Garalf
Участник
 
Группа: Members
Зарегистрирован: 19-09-2017
Сообщений: 292
UA: Firefox 81.0

Re: Custom Buttons

Dumby
Отключаю в config.js:
try {
    Components.interfaces.nsIUDPSocketChild ||
    Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment).set(
        "MOZ_FORCE_DISABLE_E10S",
        Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch)
            .getBoolPref("browser.tabs.remote.autostart", true) ? "" : "1"
    );
} catch(ex) {}

и portable.ini
MOZ_FORCE_DISABLE_E10S=1

Отредактировано Garalf (28-08-2020 11:39:18)

Отсутствует

 

№1502328-08-2020 11:21:04

solombala
Забанен
 
Группа: Members
Зарегистрирован: 20-07-2019
Сообщений: 652
UA: Firefox 80.0

Re: Custom Buttons

Garalf

Garalf пишет

try {
    Components.interfaces.nsIUDPSocketChild ||
    Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment).set(
        "MOZ_FORCE_DISABLE_E10S",
        Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch)
            .getBoolPref("browser.tabs.remote.autostart", true) ? "" : "1"
    );
} catch(ex) {}

MOZ_NO_REMOTE=1 ? Это на профиль , а не на мультирежим!
Верхний код - на...
В код это lockPref("browser.tabs.remote.autostart", false); А это в ini  MOZ_FORCE_DISABLE_E10S=1
Если портабл еще и от Dll портабла зависит...Хотя и это не катит...Править надо.Это к специалисту.

Отредактировано solombala (28-08-2020 11:50:37)

Отсутствует

 

№1502428-08-2020 17:16:08

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 1432
UA: Firefox 68.0

Re: Custom Buttons

Garalf пишет

Отключаю в config.js:
try {
    Components.interfaces.nsIUDPSocketChild ||
    Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment).set(
        "MOZ_FORCE_DISABLE_E10S",
        Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch)
            .getBoolPref("browser.tabs.remote.autostart", true) ? "" : "1"
    );
} catch(ex) {}

Не-не, это (псевдо)девелоперский код, рефлексирующий pref —> env
Как установщик для «холодного старта» устарел (убит, неэффективен) сто лет назад.
Но, при замене "1" на версию, наверно, будет работать в цепочке рестартов.


Garalf пишет

и portable.ini
MOZ_FORCE_DISABLE_E10S=1

Вот здесь пробуй
MOZ_FORCE_DISABLE_E10S=81.0
и отпишись о результате.

Отсутствует

 

№1502528-08-2020 17:44:09

Garalf
Участник
 
Группа: Members
Зарегистрирован: 19-09-2017
Сообщений: 292
UA: Firefox 80.0

Re: Custom Buttons

Dumby
MOZ_FORCE_DISABLE_E10S=81.0 работает.

Отсутствует

 

Board footer

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