>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Добавить кнопку в menu bar http://forum.mozilla-russia.org/viewtopic.php?id=58321 |
shatalov > 08-03-2013 13:49:55 |
Добрый день! |
banbot > 08-03-2013 15:46:39 |
Тема перенесена из форума «Thunderbird» в форум «Разработка». |
shatalov > 08-03-2013 17:29:03 |
okkamas_knife пишет Спасибо, на английском тяжело вникнуть так что ещё остались вопросы. Выделить код Код:<?xml version="1.0"?> <overlay id="sample" mlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <menu label="Mymenu"> <menupopup> <menuitem label="M1"/> <menuitem label="M2"/> </menupopup> </menu> </overlay> Вот такой xul ломает окно Thunderbird'а и ничего не делает. Хотя всё как в примере xul school. |
shatalov > 08-03-2013 20:55:47 |
okkamas_knife пишет
Залил http://forum.mozilla-russia.org/uploaded/ish.zip . |
Infocatcher > 08-03-2013 21:43:57 |
shatalov https://developer.mozilla.org/en-US/docs/XUL_Overlays И там опечатка: вместо «xmlns» написано «mlns». Вот пример: Выделить код Код:<?xml version="1.0"?> <overlay id="sample" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <menubar id="mail-menubar"> <menu label="Mymenu" insertafter="tasksMenu"> <menupopup> <menuitem label="M1"/> <menuitem label="M2"/> </menupopup> </menu> </menubar> </overlay> А дальше можно в DOM Inspector'е посмотреть и заменить «<menubar id="mail-menubar"> ... </menubar>» и «insertafter="tasksMenu"» на нужное. |
shatalov > 08-03-2013 22:55:42 |
Infocatcher пишет
Ага, работает, спасибо. Инспектора поставил, как в него мой xul файл залить? Есть по нему похожий мануал? Вообще в меню tools надо и на клик перевод на js скрипт overlay.js. |
Infocatcher > 09-03-2013 00:36:47 |
shatalov пишет
https://developer.mozilla.org/en-US/doc … _Inspector shatalov пишет
Тогда что-нибудь вроде Выделить код Код:<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <script type="application/javascript" src="overlay.js" /> <menupopup id="taskPopup"> <menuitem label="Label" insertafter="addonsManager" oncommand="ishCommand();" /> </menupopup> </overlay> shatalov пишет
И overlay.js: |
shatalov > 09-03-2013 01:41:31 |
Infocatcher пишет
Спасибо большое, всё отлично работает и за мануалы отдельное! okkamas_knife пишет
Ок, спасибо, гляну! |
shatalov > 10-03-2013 00:11:23 |
И ещё один вопросец: возможно вызывать внешние программы из xul? или js заменить на другой скрипт, который сможет вызвать внешнюю программу/терминал etc? Все под linux |
Infocatcher > 10-03-2013 00:45:53 |
shatalov пишет
|
shatalov > 10-03-2013 18:09:32 |
Infocatcher пишет
Ага, спасибо, программу вызывает если использовать последний пример по ссылке. А если это будет bash скрипт, который возвращает значение - можно его прочитать и занести в переменную? |
shatalov > 10-03-2013 19:50:13 |
okkamas_knife пишет
А если скрипт запишет данные файл, с него можно будет считать? |
Infocatcher > 10-03-2013 21:16:35 |
shatalov пишет
Есть какой-то nsIPipe, но не факт, что он тут вообще может помочь. shatalov пишет
|
shatalov > 14-03-2013 16:31:43 |
Пришлось перенести скрипт на TB 3.1, вышла ошибка
Выделить код Код:function runsh(){ // create an nsIFile for the executable var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsIFile); file.initWithPath("/usr/local/bin/change_ad_passwd.sh"); // create an nsIProcess var process = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); process.init(file); Чем можно исправить? Выделить код Код:Components.utils.import("resource://gre/modules/FileUtils.jsm"); var file = new FileUtils.File("/usr/local/bin/change_ad_passwd.sh"); Ошибка
|
shatalov > 14-03-2013 18:02:27 |
okkamas_knife пишет
Потыкал, но не помогло. Так первоначально делалось всё на линухе, только TB был 17. Следовательно проблема явно в верссии TB. Что-то TB3 не поддерживает, и я так понимаю должна быть замена? |
Infocatcher > 14-03-2013 18:26:42 |
shatalov Выделить код Код:.createInstance(Components.interfaces.nsILocalFile || Components.interfaces.nsIFile); |
shatalov > 14-03-2013 19:07:02 |
Infocatcher пишет
да, работает, спасибо) не нашёл этого в документации |
Infocatcher > 14-03-2013 22:53:19 |
shatalov пишет
Выделить код Код:var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsIFile); // Создается экземпляр nsIFile file.initWithPath("/usr/local/bin/change_ad_passwd.sh"); // Но "file.initWithPath is not a function" Можно проверить "initWithPath" in file и убедиться, что такого свойства вообще нет. |