Страницы: 1
shatalov
Документацию надо было читать. :)Выделить кодКод:
.createInstance(Components.interfaces.nsILocalFile || Components.interfaces.nsIFile);
да, работает, спасибо) не нашёл этого в документации =(
shatalov
попробуй проделать
var file = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsIFile);
file.initWithPath("/usr/local/bin/change_ad_passwd.sh");
сменив путь для начала на проверенное место где не нужны косые в пути возможно в линухе своя фишка с путями
поиграй с
("/file.txt")
("\file.txt")
("//file.txt")
("\\file.txt")
("file.txt")
лучше кинуть 2 файла один в рут другой в usr с разным содержимым чтоб понять к какому именно обращается
после того как найден рабочий вариант добавь папку и перекинув файл туда и также вычисли какой вариант косых используется в пути.
зы также вполне может быть что тебе надо запускать не change_ad_passwd.sh а саму интерпретирующую оболочку которой передавать этот файл в качестве аргумента.
Потыкал, но не помогло. Так первоначально делалось всё на линухе, только TB был 17. Следовательно проблема явно в верссии TB. Что-то TB3 не поддерживает, и я так пон
…Пришлось перенести скрипт на TB 3.1, вышла ошибка
Ошибка: file.initWithPath is not a function
Источник: chrome://ish/content/overlay.js
Строка: 17
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");
Ошибка
Ошибка: FileUtils.File is not a constructor
Источник: chrome://ish/content/overlay.js
Строка: 20
только извращённым способом либо через буфер обмена либо через файл,это если обходиться голым жабаскриптом.
другие варианты требуют написания и компиляции бинарных компонентов.
А если скрипт запишет данные файл, с него можно будет считать?
shatalov пишетвызывать внешние программы
Ага, спасибо, программу вызывает если использовать последний пример по ссылке. А если это будет bash скрипт, который возвращает значение - можно его прочитать и занести в переменную?
И ещё один вопросец: возможно вызывать внешние программы из xul? или js заменить на другой скрипт, который сможет вызвать внешнюю программу/терминал etc? Все под linux
shatalov пишетИнспектора поставил, как в него мой xul файл залить? Есть по нему похожий мануал?
Выделить кодКод:
<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 пишети на клик перевод на js скрипт overlay.js.
И overlay.js:
Спасибо большое, всё отлично работает и за мануалы отдельное!
попробовал, помучался плюнул, почитал мануалы разобрал примеры, (до этого расширения только чуток правил так что считай с нуля),
…
короче вот расширение-пример
добавляет пункт меню в меню файл, добавляет менюшку,добавляет кнопку для тулбара.
практически шаблон. зы менюшка с
shatalov
Куда должно добавляться меню?https://developer.mozilla.org/en-US/docs/XUL_Overlays
https://developer.mozilla.org/en-US/doc … l/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"» на нужное.
Ага, работает, спасибо. Инспектора поставил, как в него мой xul файл залить? Есть по нему похожий мануал? Вообще в меню tools надо и на клик перевод на js скрипт overlay.js.
…shatalov
выложи расширение целиком Загрузки
да и на какой версии [thunderbird] пробуешь? в последних они там много поменяли и возможно в примерах это упущено.
Залил http://forum.mozilla-russia.org/uploaded/ish.zip .
Нужно для начала просто кнопочку вывести в меню - уже радость будет. А затем по клику диалоговое окно.
Версия 17.0.3
Спасибо, на английском тяжело вникнуть так что ещё остались вопросы.
<?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.
Добрый день!
Нужно написать небольшое расширение, которое добавит кнопочку в меню бар (напр. Tools->MyButton).
В гайде нашёл информацию о добавлении времени в статус бар, который в xul файле именуется statusbar. Как именуется меню-бар, и как внести нужную кнопку именно в Tools или File?
Страницы: 1