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

Mozilla Россия — свежие версии программ Mozilla, а также масса полезной информации по каждому продукту.

№1690108-06-2023 20:23:05

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

Re: Custom Buttons

Dobrov пишет

Не получается после сохранения сайта изменить стиль имени текущей вкладки.
gBrowser.selectedTab.style.…

Так может лучше использовать сам <label>, а не <tab>.
gBrowser.selectedTab.textLabel.style.textDecoration = "underline overline";

Отсутствует

 

№1690208-06-2023 23:39:02

leex
Участник
 
Группа: Members
Зарегистрирован: 24-03-2011
Сообщений: 319
UA: Firefox 113.0

Re: Custom Buttons

Добрый день.

Перестала работать кнопка переводчика (вызывает гугловский виджет на текущей странице).
Не посмотрите ли, что с ним сейчас не так?

Выделить код

Код:

var vert = ` javascript:{var d, b, o, v, p; b = (d = document).body; o = d.createElement('script'); o.setAttribute('src', 'https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit'); o.setAttribute('type', 'text/javascript'); b.appendChild(o); v = b.insertBefore(d.createElement('div'), b.firstChild); v.id = 'google_translate_element'; v.style.display = 'none'; p = d.createElement('script'); p.text = 'function googleTranslateElementInit(){new google.translate.TranslateElement({pageLanguage:""},"google_translate_element");}'; p.setAttribute('type', 'text/javascript'); b.appendChild(p)};void(0);` ;
gBrowser. loadURI(vert, { triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal() });

Отсутствует

 

№1690309-06-2023 11:28:59

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 479
UA: Firefox 114.0

Re: Custom Buttons

leex посмотри этот пост

Отсутствует

 

№1690410-06-2023 05:00:09

Dobrov
Участник
 
Группа: Members
Зарегистрирован: 04-10-2011
Сообщений: 411
UA: Firefox 97.0

Re: Custom Buttons

Dumby пишет

Так может лучше использовать сам <label>, а не <tab>.

А как найти «textLabel»? Выбрал в Attributes Inspector метку вкладки, но…
DomInspector – объекты JavaScript такого элемента не показывет !
2023-06-10-09-55-03.png

Отсутствует

 

№1690510-06-2023 18:18:05

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

Re: Custom Buttons

Dobrov пишет

DomInspector – объекты JavaScript такого элемента не показывет

Значит это for-in не перечисляемое свойство, я же говорил.
Вот в консоли его видно, в прототипе.


Хотел уже querySelector() написать, но подумал, дай-ка загляну в кустомэлементщину
chrome://browser/content/tabbrowser-tab.js


вдруг там что-то подобное уже имеется, и точно, такой геттер есть

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

Выделить код

Код:

....
    get textLabel() {
      return this.querySelector(".tab-label");
    }

Отсутствует

 

№1690610-06-2023 20:16:05

leex
Участник
 
Группа: Members
Зарегистрирован: 24-03-2011
Сообщений: 319
UA: Firefox 114.0

Re: Custom Buttons

Andrey_Krropotkin пишет

leex посмотри этот пост

Благодарю, поправил код, теперь все работает :beer:

Выделить код

Код:

var vert = ` javascript:{var d, b, o, v, p; b = (d = document).body; o = d.createElement('script'); o.setAttribute('src', 'https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit'); o.setAttribute('type', 'text/javascript'); b.appendChild(o); v = b.insertBefore(d.createElement('div'), b.firstChild); v.id = 'google_translate_element'; v.style.display = 'none'; p = d.createElement('script'); p.text = 'function googleTranslateElementInit(){new google.translate.TranslateElement({pageLanguage:""},"google_translate_element");}'; p.setAttribute('type', 'text/javascript'); b.appendChild(p)};void(0);` ;
gBrowser.loadURI(Services.io.newURI(vert), { triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal() });


А еще вопрос по этой теме. Есть ли у кого код для кнопки, чтоб открывался гугл транслит, а из буфера обмена подгружался в переводчик текст?

Отсутствует

 

№1690711-06-2023 11:30:54

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

Re: Custom Buttons

Кстати, этот код

Выделить код

Код:

javascript:{var d, b, o, v, p; b = (d = document).body; o = d.createElement('script'); o.setAttribute('src', 'https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit'); o.setAttribute('type', 'text/javascript'); b.appendChild(o); v = b.insertBefore(d.createElement('div'), b.firstChild); v.id = 'google_translate_element'; v.style.display = 'none'; p = d.createElement('script'); p.text = 'function googleTranslateElementInit(){new google.translate.TranslateElement({pageLanguage:""},"google_translate_element");}'; p.setAttribute('type', 'text/javascript'); b.appendChild(p)};void(0);

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

Отсутствует

 

№1690813-06-2023 08:33:28

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

Re: Custom Buttons

Вопрос не по теме, но по месту.
А меня с какой-то версии [firefox] перестали работать в браузере букмарклеты. Есть какая-то настройка в about:config разрешающая/включающая их?

Отсутствует

 

№1690913-06-2023 18:54:04

b0ttle
Участник
 
Группа: Members
Зарегистрирован: 22-10-2020
Сообщений: 177
UA: Firefox 113.0

Re: Custom Buttons

leex пишет

Andrey_Krropotkin пишет leex посмотри этот пост Благодарю, поправил код...

Есть способ без `?

Отредактировано b0ttle (13-06-2023 18:56:29)

Отсутствует

 

№1691021-06-2023 20:12:58

Yan
Участник
 
Группа: Extensions
Откуда: Москва
Зарегистрирован: 27-02-2005
Сообщений: 1019
UA: Chrome 114.0

Re: Custom Buttons

Всем привет! Это Ян, автор первых версий расширения.
Не заходил в тему 15 лет, а она за это время разрослась аж в целый раздел форума. :)
Большое спасибо всем причастным, кто все эти годы выпускал новые версии, создавал кнопки, прежде всего Anton'у, подхватившего у меня разработку.
Получилась славная история. :heart:

Отсутствует

 

№1691121-06-2023 20:30:11

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

Re: Custom Buttons

Yan пишет

прежде всего Anton'у, подхватившего у меня разработку.
Получилась славная история. :heart:

Он то подхватил, а продолжил Dumby за что ему БОЛЬШОЕ СПАСИБО!!!


Win7

Отсутствует

 

№1691221-06-2023 21:19:37

sonyas75
Участник
 
Группа: Members
Откуда: Ставрополь
Зарегистрирован: 22-03-2011
Сообщений: 557
UA: Yandex 23

Re: Custom Buttons

про bunda1 https://forum.mozilla-russia.org/profile.php?id=48303 не забывайте. дофигища сделал в своё время. спасибо и ему. и вообще всем причастным :beer:

Отредактировано sonyas75 (21-06-2023 21:20:18)

Отсутствует

 

№1691321-06-2023 21:37:24

Farby
Участник
 
Группа: Members
Зарегистрирован: 21-11-2012
Сообщений: 245
UA: Google 2.1

Re: Custom Buttons

Yan ну наконец-то Вы с ново с нами, надеюсь Вы сможете поддержать высокий уровень функционала, как  это делает Dumby!!!


Жизнь иногда такое выкидывает, что хочется подобрать...

Отсутствует

 

№1691423-06-2023 20:10:20

brake
Участник
 
Группа: Members
Зарегистрирован: 05-05-2022
Сообщений: 12
UA: Firefox 115.0

Re: Custom Buttons

Dumby, I need your help. I want to add a button to make firefox always on top.

Отсутствует

 

№1691524-06-2023 08:57:30

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

Re: Custom Buttons

brake пишет

Dumby, I need your help. I want to add a button to make firefox always on top.

We have nsIAppWindow.zLevel setter (raisedZ), but bit glitch, and inside-app.
And absolute "alwaysontop" chrome-feature flag, but not toggleble dynamically, see bug 1788946.

Отсутствует

 

№1691624-06-2023 10:41:07

egorsemenov06
Участник
 
Группа: Members
Зарегистрирован: 12-06-2018
Сообщений: 381
UA: Firefox 114.0

Re: Custom Buttons

Dumby возможноли вот эту кнопку адаптировать под UCF

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

Выделить код

Код:

// Запустить QTranslate и жмакнуть(программно) дважды CTRL(код Dumby)
// - стандартн. комбин. для захвата текста из окна в QTranslate.
// интервал можно увеличить или уменьшить, зависит от железа  
 setTimeout(dblCtrlSend, 100);
 quickTranslate();

 // ----------------------------------- =  QuickTranslate  = ----------------------------------------------
   function quickTranslate() {
//  скопировать выделенный текст в буфер. 
//       gClipboard.write(document.commandDispatcher.focusedWindow.getSelection().toString());
     var profile = Services.dirsvc.get('ProfD', Ci.nsIFile);
     profile.initWithPath(profile.path + "\\_QTranslate\\QTranslate.exe");
      var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
      var arg = [];
   process.init(profile);
   process.run(false, [arg], 1);
//   setTimeout(function() window.content.focus(), 500);
   };


function dblCtrlSend() {

// See https://gist.github.com/Noitidart/0de3be2442a0295eb386
// vk codes: https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731%28v=vs.85%29.aspx

// Double Ctrl [Ctrl-Down, Ctrl-Up, Ctrl-Down, Ctrl-Up]
var data = [[0x11, false], [0x11, true], [0x11, false], [0x11, true]];

// Ctrl+Q [Ctrl-Down, Q-Down, Q-Up, Ctrl-Up]
//var data = [[0x11, false], [0x51, false], [0x51, true], [0x11, true]];

var {ctypes} = Cu.import("resource://gre/modules/ctypes.jsm", {});
var KEYBDINPUT = ctypes.StructType("tagKEYBDINPUT", [
    {wVk: ctypes.unsigned_short},
    {wScan: ctypes.unsigned_short},
    {dwFlags: ctypes.unsigned_long},
    {time: ctypes.unsigned_long},
    {dwExtraInfo: ctypes.voidptr_t.size == 8 ? ctypes.uint64_t : ctypes.unsigned_long},
    {padding0: ctypes.uint8_t.array(8)}
]);
var INPUT = ctypes.StructType("tagINPUT", [{type: ctypes.unsigned_long}, {ki: KEYBDINPUT}]);
var pInputs = INPUT.array()(data.map(([vkCode, keyup]) => 
    INPUT(1, KEYBDINPUT(vkCode, 0, keyup ? 2 : 0, 0, 0, ctypes.uint8_t.array(8)()))
));
var user32 = ctypes.open("user32"); try {
    var SendInput = user32.declare("SendInput", ctypes.winapi_abi, ctypes.unsigned_int, ctypes.unsigned_int, INPUT.ptr, ctypes.int);
    SendInput(pInputs.length, pInputs, INPUT.size);
 } finally {
    user32.close();
 }
};

Отсутствует

 

№1691724-06-2023 15:06:47

b0ttle
Участник
 
Группа: Members
Зарегистрирован: 22-10-2020
Сообщений: 177
UA: Firefox 114.0

Re: Custom Buttons

egorsemenov06
Хорошая прога, только google переводит не так как в simple-translate. Не знаю с чем связанно, там в скрипте что-то менять нужно. Тут была кнопка translate, там про это обсуждали. Кстати, у вас все переводит? У меня после обновления все сервисы отвалились, кроме google, babylon.

Отредактировано b0ttle (25-06-2023 19:03:23)

Отсутствует

 

№1691824-06-2023 16:15:33

egorsemenov06
Участник
 
Группа: Members
Зарегистрирован: 12-06-2018
Сообщений: 381
UA: Firefox 114.0

Re: Custom Buttons

b0ttle пишет

egorsemenov06
Хорошая прога, только google переводит не так как в simple-translate. Не знаю с чем связанно, там в скрипте что-то менять нужно. Тут была кнопка translate, там про это обсуждали, что именно менять.
Кстати, у вас все переводит? У меня после обновления все сервисы отвалились, кроме google, babylon.

у меня гугл и deepl только переводят

Отсутствует

 

№1691924-06-2023 23:50:25

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

Re: Custom Buttons

egorsemenov06 пишет

возможноли вот эту кнопку адаптировать под UCF

Типа из пустого в порожнее?
Как-то так, наверно. Проверить особо неначем.

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

Выделить код

Код:

(async () => CustomizableUI.createWidget({

	path: ["_QTranslate", "QTranslate.exe"],

	id: "805678",
	label: "label",
	tooltiptext: "tooltiptext",

	localized: false,
	onCreated(btn) {
		btn._handleClick = () => this.click();
		btn.image = "chrome://browser/content/robot.ico";
	},
	click() {
		var file = Services.dirsvc.get("ProfD", Ci.nsIFile);
		this.path.forEach(file.append);

		// See https://gist.github.com/Noitidart/0de3be2442a0295eb386
		// vk codes: https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes

		// Double Ctrl [Ctrl-Down, Ctrl-Up, Ctrl-Down, Ctrl-Up]
		var data = [[0x11, false], [0x11, true], [0x11, false], [0x11, true]];

		var {ctypes} = ChromeUtils.importESModule("resource://gre/modules/ctypes.sys.mjs");
		var KEYBDINPUT = ctypes.StructType("tagKEYBDINPUT", [
			{wVk: ctypes.unsigned_short},
			{wScan: ctypes.unsigned_short},
			{dwFlags: ctypes.unsigned_long},
			{time: ctypes.unsigned_long},
			{dwExtraInfo: ctypes.voidptr_t.size == 8 ? ctypes.uint64_t : ctypes.unsigned_long},
			{padding0: ctypes.uint8_t.array(8)}
		]);
		var INPUT = ctypes.StructType("tagINPUT", [{type: ctypes.unsigned_long}, {ki: KEYBDINPUT}]);
		var pInputs = INPUT.array()(data.map(([vkCode, keyup]) => 
			INPUT(1, KEYBDINPUT(vkCode, 0, keyup ? 2 : 0, 0, 0, ctypes.uint8_t.array(8)()))
		));
		var declareArgs = ["SendInput", ctypes.winapi_abi, ctypes.unsigned_int, ctypes.unsigned_int, INPUT.ptr, ctypes.int];
		var sendArgs = [pInputs.length, pInputs, INPUT.size];
		var send = () => {
			var user32 = ctypes.open("user32");
			try {user32.declare(...declareArgs)(...sendArgs);}
			finally {user32?.close();}
		}
		(this.click = () => {
			var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
			process.init(file);
			process.runwAsync(null, 0);
			setTimeout(send, 100);
		})();
	}
}))();

Отсутствует

 

№1692025-06-2023 01:19:16

egorsemenov06
Участник
 
Группа: Members
Зарегистрирован: 12-06-2018
Сообщений: 381
UA: Firefox 114.0

Re: Custom Buttons

Dumby пишет
egorsemenov06 пишет

возможноли вот эту кнопку адаптировать под UCF

Типа из пустого в порожнее?
Как-то так, наверно. Проверить особо неначем.

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

Выделить код

Код:

(async () => CustomizableUI.createWidget({

	path: ["_QTranslate", "QTranslate.exe"],

	id: "805678",
	label: "label",
	tooltiptext: "tooltiptext",

	localized: false,
	onCreated(btn) {
		btn._handleClick = () => this.click();
		btn.image = "chrome://browser/content/robot.ico";
	},
	click() {
		var file = Services.dirsvc.get("ProfD", Ci.nsIFile);
		this.path.forEach(file.append);

		// See https://gist.github.com/Noitidart/0de3be2442a0295eb386
		// vk codes: https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes

		// Double Ctrl [Ctrl-Down, Ctrl-Up, Ctrl-Down, Ctrl-Up]
		var data = [[0x11, false], [0x11, true], [0x11, false], [0x11, true]];

		var {ctypes} = ChromeUtils.importESModule("resource://gre/modules/ctypes.sys.mjs");
		var KEYBDINPUT = ctypes.StructType("tagKEYBDINPUT", [
			{wVk: ctypes.unsigned_short},
			{wScan: ctypes.unsigned_short},
			{dwFlags: ctypes.unsigned_long},
			{time: ctypes.unsigned_long},
			{dwExtraInfo: ctypes.voidptr_t.size == 8 ? ctypes.uint64_t : ctypes.unsigned_long},
			{padding0: ctypes.uint8_t.array(8)}
		]);
		var INPUT = ctypes.StructType("tagINPUT", [{type: ctypes.unsigned_long}, {ki: KEYBDINPUT}]);
		var pInputs = INPUT.array()(data.map(([vkCode, keyup]) => 
			INPUT(1, KEYBDINPUT(vkCode, 0, keyup ? 2 : 0, 0, 0, ctypes.uint8_t.array(8)()))
		));
		var declareArgs = ["SendInput", ctypes.winapi_abi, ctypes.unsigned_int, ctypes.unsigned_int, INPUT.ptr, ctypes.int];
		var sendArgs = [pInputs.length, pInputs, INPUT.size];
		var send = () => {
			var user32 = ctypes.open("user32");
			try {user32.declare(...declareArgs)(...sendArgs);}
			finally {user32?.close();}
		}
		(this.click = () => {
			var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
			process.init(file);
			process.runwAsync(null, 0);
			setTimeout(send, 100);
		})();
	}
}))();

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

Отсутствует

 

№1692125-06-2023 19:58:59

b0ttle
Участник
 
Группа: Members
Зарегистрирован: 22-10-2020
Сообщений: 177
UA: Firefox 114.0

Re: Custom Buttons

egorsemenov06
А как работает код? Нужно сперва запустить саму программу, потом дважды Ctrl по выделенному тексту?
Если так, то легче через хоткей. Ctrl+Q запуск программы, тоже самое действие по выделенному тексту переводит, и окно намного круче. Ну и понятное дело, можно сделать значок программы зеленым и также переводить через выделение.

В файле бардак, но работает.

ucf_hkeys.js

Выделить код

Код:

/* https://forum.mozilla-russia.org/viewtopic.php?pid=786917#p786917 ||000|001Alt|101Ctrl+Alt|100Ctrl|110Ctrl+Shift
   <Vit.V. https://forum.mozilla-russia.org/viewtopic.php?pid=786906#p786906 786926#p786926
   https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code/code_values 
   https://forum.mozilla-russia.org/viewtopic.php?pid=787019#p78701>
   https://support.mozilla.org/ru/kb/sochetaniya-klavish#w_okna-i-vkladki || https://support.mozilla.org/en-US/kb/keyboard-shortcuts-perform-firefox-tasks-quickly
============================================================ */
(this.keyboardshortcuts={
get skip(){return docShell.isCommandEnabled("cmd_insertText");},
get ch(){delete this.ch;return this.ch=Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper);},
init(that){var keydown={

"Backquote":{"false_false_false":(e)=>{this.skip||PlacesCommandHook.showPlacesOrganizer("BookmarksMenu");}},
"Digit1":{"false_false_false":(e)=>{this.skip||window.document.getElementById("unified-extensions-button").click();}},
"Digit2":{"false_false_false":(e)=>{this.skip||BrowserOpenAddonsMgr();}},
"Digit3":{"false_false_false":(e)=>{this.skip||openPreferences();}},
"Digit4":{"false_false_false":(e)=>{this.skip||duplicateTabIn(gBrowser.selectedTab,'tab');}},
"Digit5":{"false_false_false":(e)=>{if(this.skip)return;var s=prompt('Google_ site:.. ..','');if(s.length>0)gBrowser.addTrustedTab('https://www.google.com/search?q=site:'+encodeURIComponent(gBrowser.currentURI.host)+' '+encodeURIComponent(s));}},
"Digit6":{"false_false_false":(e)=>{if(this.skip)return;var p=Services.dirsvc.get('GreD',Ci.nsIFile);p.initWithPath(p.path+"\\..\\..\\..\\_Photo\\ShareX\\ShareX.exe");p.launch();}},
"Digit7":{"false_false_false":(e)=>{if(this.skip)return;gBrowser.fixupAndLoadURIString("javascript:(function(){var EnRuT=[['щ','shh'],['Щ','Shh'],['Щ','SHH'],['х','hh'],['Х','Hh'],['Х','HH'],['ж','zh'],['Ж','Zh'],['Ж','ZH'],['ц','cz'],['Ц','Cz'],['Ц','CZ'],['ю','yu'],['Ю','Yu'],['Ю','YU'],['ё','yo'],['Ё','Yo'],['Ё','YO'],['я','ya'],['Я','Ya'],['Я','YA'],['ч','ch'],['Ч','Ch'],['Ч','CH'],['ш','sh'],['Ш','Sh'],['Ш','SH'],['э','e`'],['Э','E`'],['ы','y'],['Ы','Y'],['ъ','``'],['ь','`'],['р','r'],['т','t'],['у','u'],['и','i'],['о','o'],['п','p'],['а','a'],['с','s'],['д','d'],['ф','f'],['г','g'],['й','j'],['к','k'],['л','l'],['з','z'],['х','x'],['ц','c'],['в','v'],['б','b'],['н','n'],['м','m'],['Р','R'],['Т','T'],['У','U'],['И','I'],['О','O'],['П','P'],['А','A'],['С','S'],['Д','D'],['Ф','F'],['Г','G'],['Й','J'],['К','K'],['Л','L'],['З','Z'],['Х','X'],['Ц','C'],['В','V'],['Б','B'],['Н','N'],['М','M'],['е','e'],['Е','E']],A=document.activeElement;A.onkeyup=function ftr(){for(var s=A.value,i=0;i<EnRuT.length;i++){s=s.replace(RegExp(EnRuT[i][1],'g'),EnRuT[i][0])};A.value=s}})()",{triggeringPrincipal:gBrowser.contentPrincipal});
									}},//AutoTranslit- https://forum.ru-board.com/topic.cgi?forum=5&topic=46779&start=320#15
    "F1":{"false_false_false":(e)=>{FileUtils.getFile('SysD',['sndvol.exe']).launch();}},
    "F2":{"false_false_false":(e)=>{gBrowser.fixupAndLoadURIString("javascript:{d=document;b=d.body;o=d.createElement('scri'+'pt');o.setAttribute('src','https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit');o.setAttribute('type','text/javascript');b.appendChild(o);v=b.insertBefore(d.createElement('div'),b.firstChild);v.id='google_translate_element';v.style.display='none';p=d.createElement('scri'+'pt');p.text='function googleTranslateElementInit(){new google.translate.TranslateElement({pageLanguage:%22%22},%22google_translate_element%22);}';p.setAttribute('type','text/javascript');b.appendChild(p);}void 0",{triggeringPrincipal:gBrowser.contentPrincipal});
									}},//Enable translation(https://forum.mozilla-russia.org/viewtopic.php?pid=805422#p805422 ||805427#p805427)
    "F3":{"false_false_false":(e)=>{e.preventDefault();gBrowser.fixupAndLoadURIString("javascript:(function(){var night=function(w){(function(d){var css='html{opacity:0.6!important;background:black!important;}body{background:white!important;}';var s=d.getElementsByTagName('style');for(var i=0,si;si=s[i];i++){if(si.innerHTML==css){si.parentNode.removeChild(si);return}};var heads=d.getElementsByTagName('head');if(heads.length){var node=d.createElement('style');node.type='text/css';node.appendChild(d.createTextNode(css));heads[0].appendChild(node)}})(w.document);for(var i=0,f;f=w.frames[i];i++){try{arguments.callee(f)}catch(e){}}};night(window)})();",{triggeringPrincipal:gBrowser.contentPrincipal});
									}},//Night mode(Focus mode)
    "F4":{"false_false_false":(e)=>{e.preventDefault();var vert=`javascript:{const o=["contextmenu","selectstart","select","mousedown","mouseup","cut","copy"],t=["-webkit","-moz","-ms","-khtml",""],e=window.jQuery;[document,document.body,document.documentElement].forEach(n=>{for(const t of o)n["on"+t]=null,e&&e(n).off(t);if(n.style)for(const o of t){const t=[o,"user-select"].join("-");n.style[t]="initial"}})
									};void(0);`;gBrowser.loadURI(Services.io.newURI(vert),{triggeringPrincipal:Services.scriptSecurityManager.getSystemPrincipal()});
									}},//Re-enable selecting & copying text [maple3142] (Bookmarklet)
  "KeyG":{"true_false_false" :(e)=>{e.preventDefault();var bar=document.getElementById("ucf-additional-vertical-bar");setToolbarVisibility(bar,bar.collapsed);}},
  "KeyW":{"false_true_false" :(e)=>{gBrowser.removeAllTabsBut(gBrowser.selectedTab);}},
  "KeyV":{"false_false_false":(e)=>{if(this.skip)return;gClipboard.write(gURLBar.value);glob.flash_bg_text('urlbar-input-container',0,'rgba(240,176,0,0.5)',300);},//300,"CopyURL: "+gURLBar.value.slice(0,80)) 
		  "false_true_false" :(e)=>{e.preventDefault();let url=readFromClipboard();try{switchToTabHavingURI(url,true);}catch(ex){
									var reg=/[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?/;
									if(!reg.test(url)){url='https://www.google.com/search?q='+encodeURIComponent(url);
									}else{if(url.substring(4,0).toLowerCase()=="http"){url=encodeURIComponent(url);
									}else{url='http://'+encodeURIComponent(url);}}switchToTabHavingURI(url,true);}
									}},//Open clipboard address
  "KeyU":{"true_true_false"  :(e)=>{FileUtils.getFile('UChrm',['user_chrome_files','_','u.exe']).launch();}},
  "KeyA":{"true_true_false"  :(e)=>{FileUtils.getFile('UChrm',['user_chrome_files','_','.Ev','Everything.exe']).launch();}},
  "KeyQ":{"true_false_false" :(e)=>{FileUtils.getFile('UChrm',['user_chrome_files','_','.QT','QTranslate.exe']).launch();}},

handleEvent(e){if(AppConstants.platform !="macosx"){
 (this.handleEvent=e=>{this[e.code]?.[`${e.ctrlKey}_${e.altKey}_${e.shiftKey}`]?.(e);})(e);return;}
 (this.handleEvent=e=>{this[e.code]?.[`${e.metaKey}_${e.altKey}_${e.shiftKey}`]?.(e);})(e);},};
					   document.addEventListener("keydown",keydown,true);
this.destructor=()=>document.removeEventListener("keydown",keydown,true);
that.unloadlisteners.push("keyboardshortcuts");},
}).init(this);

Добавлено 24-06-2023 16:29:20
А, это хоткей самой прогаммы, там как раз Ctrl+Q вызывает то мини-окно. А двойной Ctrl вызывает окно программы. По Ctrl, можно настроить автоперевод в мини-окне. Тогда не ясно, что делает код. По описанию не совсем понятно.

Отредактировано b0ttle (15-07-2023 18:51:08)

Отсутствует

 

№1692225-06-2023 20:53:58

egorsemenov06
Участник
 
Группа: Members
Зарегистрирован: 12-06-2018
Сообщений: 381
UA: Firefox 114.0

Re: Custom Buttons

b0ttle пишет

egorsemenov06А как работает код? Нужно сперва запустить саму программу, потом дважды Ctrl по выделенному тексту?Если так, то легче через хоткей. Ctrl+Q запуск программы, тоже самое действие по выделенному тексту переводит, и окно намного круче.

каждый запускает как хочет как удобней.мне нужна кнопка в основном для запуска QTranslate

Отсутствует

 

№1692325-06-2023 21:09:06

b0ttle
Участник
 
Группа: Members
Зарегистрирован: 22-10-2020
Сообщений: 177
UA: Firefox 114.0

Re: Custom Buttons

Можете просто описать действия, чтобы понять, нужен он мне или нет. Пытался проверить, но не пойму куда вставлять в CustomStylesScripts.jsm, или его нужно в custom_script_win.js? И как проверить код, если непонятно что она делает. Я не программист, чтобы понять по самому коду, хоть он и небольшой. Там что-то с хоткеем на Ctrl?

Добавлено 25-06-2023 21:26:35
Да.. почему простой вопрос превратился в фарс, у кого больше. Ладно, не важно.
Добавлено 07-07-2023 11:13:15
Понятно, мне казалось по другому. Про кнопку даже не подозревал. Казалось что там что-то другое, тот же хоткей. Для простого запуска код как-то великоват, что тоже запутало. Действительно CustomizableUI.createWidget, как не заметил. И построение похоже на другие кнопки. Мда. Сейчас все прояснилось. Моя невнимательность. А описание действий что делает код, было лишь предположением.

Отредактировано b0ttle (26-06-2023 02:02:02)

Отсутствует

 

№1692426-06-2023 00:06:18

egorsemenov06
Участник
 
Группа: Members
Зарегистрирован: 12-06-2018
Сообщений: 381
UA: Firefox 114.0

Re: Custom Buttons

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

Выделить код

Код:

(async () => CustomizableUI.createWidget({

	path: ["_QTranslate", "QTranslate.exe"],

	id: "805678",
	label: "label",
	tooltiptext: "QTranslate",

	localized: false,
	onCreated(btn) {
		btn._handleClick = () => this.click();
		btn.image = "data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAEMUlEQVR42rWXx0o1SxDH51l8CBUD5oQ55xwXgiBu1J2CC3HhwldxpQsDuhEDYgJzzukJ6vLrSw09feacM993uYs/naordXV1tXd3d+cpbm9vQ1vw9PTkfXx8eN/f397r66tZOz09lZOTE7m5uZGXlxfv6+vL0Dw+Pno230QwjFyB9/f3PsHz87P38/PjXVxcyMLCgrS1tUlRUZFkZGRIVlaWQWZmphQUFEhLS4vMzs7K0dGRoChKKS9tHx4eArJirFdigEWHh4cyODgoaWlp0tzcbPrDw8MyMjISAHOstbe3G+VQdHt7W1BehYZ6IGySDVgwNzdnrOvt7TVChoaGjJBEgAba/v5+o8j4+Li8v78bT9pGqqExwjk/XNfU1CTV1dXGMlfwwMBAoLX70GqfvfApLi4WjhC+6u2YI9BAg6iiosK4EkZYAujbY3veXrfpVBE8mJeXJ+fn54InYo4AbXAHbieQOjo6zOa+vr6EQEiUMby6u7ulpKTEeMGOCb9DwM3Pzxu3qwXJFIgK9QZBPDY2JsgKKIDrifacnJyA5bhOoWO3ddfjQT2Rn58vKysrQi7xFUCj0dFR6ezsDGzq6emJ6dutve7Sx9sHuKIkLHMLiHoiNDc3N8CYMwPajzfn9m2E0eMJvECOICA97ujS0pLU19cbDyi6uroije35MJqwdQJ9enraxIJxP3eXa2dv/j/BLSM/vL29eSZD1dTUJN3kWvc3sL3G28EjZnIAA9XMBl5x59z5eDSJ1pGFzP39ffHOzs7MQIkVjIlWe+5P4fK0QVJaX18X86aTJhHW2trqt1HwJ7TuvtLSUllbWxOPc+BasEB0JoPSufRR9ystMvf29sQEYXl5uYlKQLp0wSZ7HEanc24bxoM+eef6+lq8z89PjxRJHrCV0L4Ley0RXSL6xsZGaWhoMOnY1HCLi4vCE8xCFCjDqPQuuPaTk5P/JiJSMYUltR1M0SwK1ApttW+PAZ7Vtbq6OjPOzs6W1dVV8zT7jxHVC5rpJiX+L1AeeLewsNB/EVGGJ8AvyXiOd3Z2TP3HJkVtbW3MOGzObbWPcARPTEzI1dWVEcq543UtSvzCgGCcmZkxCSJMmI7jIYwGyylAfn9/jZFhf5BAhYp2HAEbYcCRKP5mTFVMorOFIzi0JNNPCK4qKysTckNVVZVhRpkG7H4ysBe4NWDSfwEbLi8vDRPOL6pQlw7hGBKmgP0/CHzHtI/LeKunpqYkPT3deAMBapWisrIydA4FaFNSUuTg4EAIOvdTopV44B/o/o5IUrxYlFOpqanmg6FHA1yLiR0eGZQmpywvLwt89KvnykAJX5N4GuJCrs/u7q5wS0inJBL+ilxbEhgC9QrjtY2NDf/KqWDlZ39UjQJhmtkEOuZYuKocDXPHx8eytbUlm5ubQkkPLQKhsc89zDBboX8A8OEINcfkLqQAAAAASUVORK5CYII=";
	},
	click() {
		var file = Services.dirsvc.get("ProfD", Ci.nsIFile);
		this.path.forEach(file.append);

		// See https://gist.github.com/Noitidart/0de3be2442a0295eb386
		// vk codes: https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes

		// Double Ctrl [Ctrl-Down, Ctrl-Up, Ctrl-Down, Ctrl-Up]
		var data = [[0x11, false], [0x11, true], [0x11, false], [0x11, true]];

		var {ctypes} = ChromeUtils.importESModule("resource://gre/modules/ctypes.sys.mjs");
		var KEYBDINPUT = ctypes.StructType("tagKEYBDINPUT", [
			{wVk: ctypes.unsigned_short},
			{wScan: ctypes.unsigned_short},
			{dwFlags: ctypes.unsigned_long},
			{time: ctypes.unsigned_long},
			{dwExtraInfo: ctypes.voidptr_t.size == 8 ? ctypes.uint64_t : ctypes.unsigned_long},
			{padding0: ctypes.uint8_t.array(8)}
		]);
		var INPUT = ctypes.StructType("tagINPUT", [{type: ctypes.unsigned_long}, {ki: KEYBDINPUT}]);
		var pInputs = INPUT.array()(data.map(([vkCode, keyup]) => 
			INPUT(1, KEYBDINPUT(vkCode, 0, keyup ? 2 : 0, 0, 0, ctypes.uint8_t.array(8)()))
		));
		var declareArgs = ["SendInput", ctypes.winapi_abi, ctypes.unsigned_int, ctypes.unsigned_int, INPUT.ptr, ctypes.int];
		var sendArgs = [pInputs.length, pInputs, INPUT.size];
		var send = () => {
			var user32 = ctypes.open("user32");
			try {user32.declare(...declareArgs)(...sendArgs);}
			finally {user32?.close();}
		}
		(this.click = () => {
			var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
			process.init(file);
			process.runwAsync(null, 0);
			setTimeout(send, 100);
		})();
	}
}))();

в custom_script.js

Отсутствует

 

№1692526-06-2023 10:33:49

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

Re: Custom Buttons

b0ttle пишет

Добавлено 07-07-2023 11:13:15

Колдун! :cool:

Отсутствует

 

Board footer

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