okkamas_knife мммм.... а зачем это - file.initWithPath("C:\\WINDOWS\\system32\\taskkill.exe"); ?
PS Программа то работает просто Console2 ругается... пока не понял на что.
Отредактировано Indomito (24-07-2010 04:39:05)
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
А вот так не проще? Или будет проблема с параметрами?
startProcess("C:\\Program Files\\Mozilla Thunderbird\\thunderbird.exe"," ", "-turbo"); function startProcess(path,sps,args){ if (args.length) path +=(sps)?" "+ args:""+args ; var file = Components .classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath(path.substr (0, (sps)?path.length-++args.length:path.length-args.length)); if(file.exists(path.substr (0,(sps)?path.length-++args.length:path.length-args.length))) file.launch(); else custombuttons. alertBox ("Файл не найден", path); };
а вообще лучше юзай код что я несколько страниц назал приводил
там та же ошибка... странно как то...
Отредактировано Indomito (24-07-2010 08:30:14)
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Ошибка: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsILocalFile.initWithPath]
Источник: custombutton://buttons/Firefox/code/custombuttons-button29
Строка: 6
Надо убрать строку
по моему вопросу ни у кого ни каких идей больше нету?
Там по ссылке, непонятно о чём речь. Нужны подробности.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
okkamas_knife про ошибку... я проверился на.... ну в общем взял пример из MDN / Code snippets ошибка та же и уходит в недра nsIPromptService, что видимо они поменяли, но это не ошибка в глобальном понятии JS, ошибка в типизации (кажется или недостаточность параметров или хз..), чего - я пока не понял, но твой код честно работает, а диагностика из за включённой Console2 . Просто мне так удобнее, те она постоянно у меня работает/включена в AiOS.
А мой код не передаёт параметры, хотя ошибку не вызывает ))))
Anton спасибо за ответ, а я всё голову ломал - зачем это написано
Отредактировано Indomito (24-07-2010 12:21:51)
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
абсолютно верно, пока предполагаю 2 решения:
- Возможно кто-то здесь возьмется разработать данный функционал непосредственно в коде кнопки, т.к. это профильный форум по Custom Buttons. Сделав так, чтоб закладки кнопки хранились не в отдельном файле, а дописывались в стандартный файл закладок лисы, в отдельный раздел (типа своя папочка) и оттуда же забирало и всё благополучно будет синхрониться.
- замарачиваться со скриптами непосредственно в ОС, чтоб при загрузке домашнего компа с виндой скрип шёл на фтп, который на рабочем компе, на котором Линукс, который почти ни когда не выключается, находил там наш файлик, который заблаговременно другой скрипт, например в cron'e, через n-ый промежуток времени сначала анализиров не изменилось ли чего там, а потом кидал обратно на фтп, так вот наш виндовый скрипт его бы тоже анализировал и скачивал, а ещё при выключении проверял... и т.д.
уффф... и чую с моими практически ни какими познаниями в скриптологии, отсутствием свободного времени и двух компов в секундной доступности для тестов - задача весьма и весьма...
Отсутствует
синхронизаторы-аддоны умеют только закладки, список открытых вкладок, историю и сохранённые пароли, какие файлы ХЗ видимо те самые, в которых лиса хранит эти данные, а папки видимо ни какие, я б уже догадался файлик туда кинуть
Отсутствует
вобщем решил я свою задачу - поставил на обе машины DropBox и указал путь для tabbookmarks.xml в папку DropBox'a. Очень порадовало, что Дроп умеет инкрементальную синхронизацию на лету
Отредактировано CowSayMoo (25-07-2010 02:33:37)
Отсутствует
Хочу поиграться со шрифтом и цветом шрифта в кнопке Weather(enter city code in Initialization).
Размер и тип шрифта нашел. Почему не каждый шрифт правильно отображается (например Times New Roman, который в браузере по умолчанию)?
Как поменять цвет шрифта?
Отсутствует
okkamas_knife я тут хотел сделать "финт ушами", но обломался....
ты как то писал код для смены browser.download.dir (с вызовом диалога на Desk) по сути вещь нужная и может полезная, но...
1. При вызове "Save as..." идет проверка browser.download.lastDir и при "" то предлагается директория
из browser.download.dir и она заносится в browser.download.lastDir. (грубо говоря)
2. При последующих вызовах опять проверка на длину и если не ноль, то предлагается записать уже browser.download.lastDir.
3. Отличие browser.download.dir и browser.download.lastDir не рассматривается, всегда предлагается записать в browser.download.lastDir если она не ""
Вопрос:
1. считать из browser.download.dir у меня получается:
var pref = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
var setdir = pref.getCharPref('browser.download.dir');
2. а вот запись в browser.download.lastDir не проходит, естественно в Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch); должен быть другой метод класса, но какой я так и не нашёл.
Задача: просто считать из browser.download.dir и просто записать в browser.download.lastDir
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
2. а вот запись в browser.download.lastDir не проходит, естественно в Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch); должен быть другой метод класса, но какой я так и не нашёл.
http://www.google.ru/search?hl=ru&newwi … =&gs_rfai=
=> https://developer.mozilla.org/en/nsIPre … Pref.28.29
Но для не ASCII-символов надо использовать https://developer.mozilla.org/en/nsIPre … alue%28%29.
Для примера можно посмотреть resource://gre/components/fuelApplication.js:
и chrome://global/content/nsUserSettings.js:
Задача: просто считать из browser.download.dir и просто записать в browser.download.lastDir
Если не нужна поддержка старых версий, то так:
Application.prefs.setValue("browser.download.lastDir", Application.prefs.getValue("browser.download.dir", ""));
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher сразу спрашиваю что бы не порушить about:config
var oAboutCfg = Application.prefs.getValue("browser.download.dir", ""); // Тут проверям и тд... var iAboutCfg = "C:\\Custom Buttons\\"; Application.prefs.setValue("browser.download.lastDir", iAboutCfg,"");
1. За что отвечает второй параметр в Application.prefs.getValue и в Application.prefs.setValue
2. Если данной переменной нет в about:config, то она просто создаётся или есть код возврата? Если он есть то как его считать... я не нашёл ну или плохо искал.
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
1. За что отвечает второй параметр в Application.prefs.getValue и в Application.prefs.setValue
https://developer.mozilla.org/en/Toolki … d_overview
2. Если данной переменной нет в about:config, то она просто создаётся или есть код возврата? Если он есть то как его считать... я не нашёл ну или плохо искал.
https://developer.mozilla.org/en/Toolki … #has.28.29
Если без «оберток», то нужно сравнивать nsIPrefBranch.getPrefType() с PREF_INVALID.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher плз, взгляни на фрагмент кода
/*Initialization Code*/ var menu = <menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:cb="http://xsms.nm.ru/custombuttons/" onclick="this. parentNode. handleClick (event);"> <menuitem label="Set default download dir" class="menuitem-iconic" cb:open="0"/> <menuitem label="Скриншоты" class="menuitem-iconic" cb:open="C:\SCR\"/> <menuitem label="ICO для Custom Buttons" class="menuitem-iconic" cb:open="C:\Custom Buttons\База значков\"/> <menuitem label="Set new default download dir" class="menuitem-iconic" cb:open="1"/> </menupopup>; this.handleClick = function(event) { if(event.button == 0) { // Действие при клике ЛКМ alert (0); } else if(event.button == 1) { // Действие при клике СКМ //******************************************* this. appendChild (custombuttonsUtils. makeXML (menu)); this. type = "menu"; this. orient = "horizontal"; var menuitem = event. target; var open = menuitem. getAttributeNS ("http://xsms.nm.ru/custombuttons/", "open"); //**************************************************** this. open = false; mbMouse (open); } else if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) { // Действие при клике ПКМ без модификаторов } }; this.oncontextmenu = function(event) { if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) { // Блокируем контекстное меню при клике ПКМ без модификаторов this. open = false; event.preventDefault(); event.stopPropagation(); } };
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Indomito
Нигде в коде нет обработки кликов по самой кнопке.
А добавление меню реализовано в функции, которая никогда не будет вызвана, пока... не будет добавлено меню.
И нет кода для показа меню.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
сори за тупой вопрос, а в чём отличие http://custombuttons2.com/ Custom Buttons² от сабжа?
и можно ли прикрутить эту http://custombuttons2.com/ru/forum/buttons/buttons-database/clear-cache-no-prompt.html кнопку через сабж?
короче нужно прикрутить к seamonkey кнопку для очистки кеша памяти (RAM)
помогите, впервые столкнулся с custom buttons
заранее благодарен
Отсутствует
можно ли прикрутить эту http://custombuttons2.com/ru/forum/buttons/buttons-database/clear-cache-no-prompt.html кнопку через сабж
Можно. После установки надо добавить в начало раздела инициализации такие строки:
Добавлено 29-07-2010 18:53:57
ps:
короче нужно прикрутить к seamonkey кнопку для очистки кеша памяти (RAM)
Если надо очистить только кэш памяти, надо будет ещё убрать строку
Или просто в раздел "Код" новой кнопки
var cs = Components. classes ["@mozilla.org/network/cache-service;1"]. getService (Components. interfaces. nsICacheService); cs. evictEntries (Components. interfaces. nsICache. STORE_IN_MEMORY);
Отредактировано Anton (29-07-2010 18:54:38)
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Infocatcher сорри от жары совсем отупел естественно работать не будет Я про то что писал выше... так теперь постараюсь чётко сформулировать вопрос.
Код
/*Initialization Code*/ // *************Start DEF******************* //******Secion #1 **************** var menu = <menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:cb="http://xsms.nm.ru/custombuttons/" onclick="this. parentNode. handleClick (event);"> <menuitem label="Set default download dir" class="menuitem-iconic" cb:open="0"/> <menuitem label="Скриншоты" class="menuitem-iconic" cb:open="C:\SCR\"/> <menuitem label="ICO для Custom Buttons" class="menuitem-iconic" cb:open="C:\Custom Buttons\База значков\"/> <menuitem label="Set new default download dir" class="menuitem-iconic" cb:open="1"/> </menupopup>; //**************END seciom**************** //******Secion #2 **************** this. appendChild (custombuttonsUtils. makeXML (menu)); this. type = "menu"; this. orient = "horizontal"; //**************END seciom**************** //******Secion #3 **************** this.handleClick = function(event) { if(event.button == 0) { // Действие при клике ЛКМ alert (0); //this. open = false; } else if(event.button == 1) { // Действие при клике СКМ var menuitem = event. target; var open = menuitem. getAttributeNS ("http://xsms.nm.ru/custombuttons/", "open"); alert (1); this. open = false; } else if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) { // Действие при клике ПКМ без модификаторов alert (2); //this. open = false; } }; this.oncontextmenu = function(event) { if(event.button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) { // Блокируем контекстное меню при клике ПКМ без модификаторов //this. open = false; event.preventDefault(); event.stopPropagation(); } }; //**************END seciom**************** // *************END DEF*******************
Я попытался это реализовать через this. leftclick = function (event) {}; this. midclick = function (event) {}; this. rightclick = function (event) {} в контексте this.setAttribute('onclick', 'gQuot(event, this)'); получилось ещё хуже, точнее тоже самое - меню упорно выпадает по ЛКМ.
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
okkamas_knife поясни зачем ты используешь конструкцию try/catch/finally в
//Открыть установленные дополнения try{ BrowserOpenAddonsMgr(); } catch(e) { BrowserOpenExtensions('extensions'); }
если ошибка (исключение) возникает то в catch, а не в try
Ошибка: BrowserOpenExtensions is not defined
Источник: chrome://custombuttons/content/cbbutton.js
Строка: 297
или это для совместимости с старыми версиями мозиллы или судя по коду версиями Custom Buttons?
Может следует написать try{ BrowserOpenExtensions('extensions'); } catch(e) { BrowserOpenAddonsMgr();} или иную более сложную конструкцию, хотя тут TRY всегда отработает, даже без наличия дополнений.
Хотя можно поставить проверку, ну как говорится мало ли.... try{ BrowserOpenExtensions('extensions'); } catch(e) { if (error(e)) alert ("Ошибка='+e)} catch(e) { BrowserOpenAddonsMgr();}
Проясни плз.
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Господа, мне вот кажется, что кастомные кнопки часто используются просто как средство внедрения своего кода. То есть на них не требуется нажимать, всё необходимое сказано в коде инициализации.
Может быть, стоит добавить в расширение возможность создавать (а потом удалять) невидимые кнопки, не занимающие места в интерфейсе?
Отредактировано luitzen (30-07-2010 17:51:39)
Отсутствует
Может быть, стоит добавить в расширение возможность создавать (а потом удалять) невидимые кнопки, не занимающие места в интерфейсе?
Есть же userChromeJS.
Плюс версия для Firefox 4.0, правда, не от автора.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
luitzen ну по сути почти не кликабельная кнопка пока одна, которую мне помог сделать Infocatcher это сканирование буфера обмена и создание стека, который я потом использую для вставки BB - кода. Я про список Готовые кнопки для Custom Buttons, ибо что делают другие не понятно, тк они их не публикуют на форуме.
По сути у меня была идея про подобное предложение, но подумав я понял что такое не нужно.
Если нужна инициализация чего либо, то это (весь совокупный код) можно вместить в одну кнопку и добавив интерфейс для выбора что с этим потом делать.... ИМХО
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
luitzen
В TODO есть, но на очень далекую перспективу. На далекую - потому, что надо делать интерфейс для редактирования этих кодов, и модель выполнения придумать, а идей по их реализации у меня пока нет.
К тому же вот и userChromeJS есть, и keyconfig, в оверлее CustomButtons тоже можно размещать какой-нибудь код (скрипты/xul, вручную, естественно).
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
1. Меню появлялось на заданное мной событие, те одна из кнопок мыши, а не по ЛКМ.
Тогда не нужно делать кнопку-меню (this. type = "menu";) и показывать меню по нужному событию «вручную».
2. После появления меню работал второй обработчик, тоже желательно что бы он был зависим от разных событий.
Вообще, для меню рекомендуется использовать oncommand, а он работает только по левой кнопке мыши и нажатию Enter, а также по клику правой кнопкой мыши для контекстного меню.
var menu = this._menu = custombuttonsUtils.makeXML( <menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" onclick="this.parentNode.handleMenuClick(event);" onmouseup="this.parentNode.handleMenuMouseup(event);" oncommand="this.parentNode.handleMenuCommand(event);"> <menuitem label="Item 0" /> <menuitem label="Item 1" /> <menuitem label="Item 2" /> </menupopup> ); this.appendChild(menu); this.showMenu = function(menu, e, isContext) { document.popupNode = this.ownerDocument.popupNode = this; if("openPopupAtScreen" in menu) menu.openPopupAtScreen(e.screenX, e.screenY, isContext); else menu.showPopup(this, e.screenX, e.screenY, isContext ? "context" : "popup", null, null); }; this.removeAttribute("context"); this.onclick = function(e) { if(e.target != this) return; if(e.button == 0) { // Some left-click action... alert("Button left-click"); } if(e.button == 1) { // Some middle-click action... //this.showMenu(this._menu, e, false); } else if(e.button == 2) { if(e.ctrlKey || e.shiftKey || e.altKey || e.metaKey) { this.showMenu(document.getElementById("custombuttons-contextpopup"), e, true); return; } // Some right-click action... alert("Button right-click"); } }; this.onmousedown = function(e) { if(e.button == 1) { this._menuOpenerButton = e.button; this.showMenu(this._menu, e, false); } }; this.handleMenuClick = function(e) { alert("Menu click\n" + e.target.getAttribute("label") + "\nButton: " + e.button); closeMenus(e.target); // chrome://browser/content/utilityOverlay.js }; this.handleMenuMouseup = function(e) { if(e.target.localName != "menupopup" && e.button == this._menuOpenerButton) { alert("Menu mouseup\n" + e.target.getAttribute("label")); closeMenus(e.target); } }; this.handleMenuCommand = function(e) { alert("Menu command\n" + e.target.getAttribute("label")); };
или это для совместимости с старыми версиями мозиллы или судя по коду версиями Custom Buttons?
В старых версиях Firefox нужно вызывать
Скорее всего – в Firefox 1.5.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher
Вообще, для меню рекомендуется использовать oncommand, а он работает только по левой кнопке мыши и нажатию Enter, а также по клику правой кнопкой мыши для контекстного меню.
да я понимаю, но уж больно много кнопок, те их раньше было намного больше 4-е панели и три панели закладок. Вот я и борюсь объединяя функционал при помощи разных кликов мыши, ну а СКМ это обычно установочная функция.
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует