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

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

Разработка » Добавить кнопку в menu bar » 14-03-2013 19:07:02

Infocatcher пишет

shatalov
Документацию надо было читать. :)

Выделить код

Код:

.createInstance(Components.interfaces.nsILocalFile || Components.interfaces.nsIFile);

да, работает, спасибо) не нашёл этого в документации =(

Разработка » Добавить кнопку в menu bar » 14-03-2013 18:02:27

okkamas_knife пишет

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 не поддерживает, и я так пон

Разработка » Добавить кнопку в menu bar » 14-03-2013 16:31:43

Пришлось перенести скрипт на 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

Разработка » Добавить кнопку в menu bar » 10-03-2013 19:50:13

okkamas_knife пишет

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

А если скрипт запишет данные файл, с него можно будет считать?

Разработка » Добавить кнопку в menu bar » 10-03-2013 18:09:32

Infocatcher пишет
shatalov пишет

вызывать внешние программы

https://developer.mozilla.org/en-US/doc … nsIProcess

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

Разработка » Добавить кнопку в menu bar » 10-03-2013 00:11:23

И ещё один вопросец: возможно вызывать внешние программы из xul? или js заменить на другой скрипт, который сможет вызвать внешнюю программу/терминал etc? Все под linux

Разработка » Добавить кнопку в menu bar » 09-03-2013 01:41:31

Infocatcher пишет
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:

Выделить код

Код:

function ishCommand() {
    alert("Hello!");
}

Спасибо большое, всё отлично работает и за мануалы отдельное!

okkamas_knife пишет

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

Разработка » Добавить кнопку в menu bar » 08-03-2013 22:55:42

Infocatcher пишет

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.

Разработка » Добавить кнопку в menu bar » 08-03-2013 20:55:47

okkamas_knife пишет

shatalov
выложи расширение целиком Загрузки
да и на какой версии [thunderbird] пробуешь? в последних они там много поменяли и возможно в примерах это упущено.

Залил http://forum.mozilla-russia.org/uploaded/ish.zip .
Нужно для начала просто кнопочку вывести в меню - уже радость будет. А затем по клику диалоговое окно.
Версия 17.0.3

Разработка » Добавить кнопку в menu bar » 08-03-2013 17:29:03

Спасибо, на английском тяжело вникнуть так что ещё остались вопросы.

Выделить код

Код:

<?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.

Разработка » Добавить кнопку в menu bar » 08-03-2013 13:49:55

Добрый день!
Нужно написать небольшое расширение, которое добавит кнопочку в меню бар (напр. Tools->MyButton).
В гайде нашёл информацию о добавлении времени в статус бар, который в xul файле именуется statusbar. Как именуется меню-бар, и как внести нужную кнопку именно в Tools или File?

Board footer

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