Так кнопку то я сделал, но что делать вот с этим диалогом, те что выбрать что бы кнопки попали в Mozilla Thunderbird?
Добавлено 16-01-2011 17:54:47
Обновил Attributes Inspector, теперь DOM Inspector ищется во всех окнах. Нужно при запуске из произвольного окна (важно для Mouse Gestures).
спасибо,удобный инструмент, а я то мучался.... блин
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Anton те без диалога, как у меня? Если, да, то дело в настройках почтовика ИМХО
А если диалог есть, то что надо выбрать то?
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Anton те без диалога, как у меня?
Да, без диалога.
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.13pre) Gecko/20101104 Lanikai/3.1.7pre
ps. Диалог появляется, если указан не путь к файлу, а путь к каталогу с файлом.
Отредактировано Anton (16-01-2011 18:06:19)
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton "ps. Диалог появляется, если указан не путь к файлу, а путь к каталогу с файлом." - сенкс, исправил на
всё заработало.
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
А мы продолжаем.
Attributes Inspector теперь корректно завершает работу при закрытии вызвавшего окна (для Custom Buttons не актуально, там должен срабатывать onDestroy()).
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher может отдельную тему создать, а то можно новый патч пропустить
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
MySh После подгонке по ширине нужно реализовать сброс, а то надо обновлять страницу, а так всё нормально. Я про Fit to Width (Подогнать по ширине) (Firefox)
PS Вносить поправок не стал прочитав обсуждение выше
Отредактировано Indomito (17-01-2011 02:35:40)
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Osetr,
var dir = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("Home", Components.interfaces.nsIFile); dir.append("Application Data"); dir.append("Macromedia"); dir.remove(true);
Способ брутальный, как по-другому — не знаю.
Отсутствует
Osetr
Есть дополнение BetterPrivacy (https://addons.mozilla.org/en-US/firefo … erprivacy/), которое вроде бы удаляет flash cookies.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Osetr,Код:var dir = Components.classes["@mozilla.org/file/directory_service;1"]
.getService(Components.interfaces.nsIProperties)
.get("Home", Components.interfaces.nsIFile);dir.append("Application Data");
dir.append("Macromedia");dir.remove(true);Способ брутальный, как по-другому — не знаю.
Вроде работает, спасибо большое! А почему брутальный, он кроме куков ещё что-то подчищает?
Отсутствует
Вроде работает, спасибо большое! А почему брутальный, он кроме куков ещё что-то подчищает?
Я не знаю, что ещё в этой папке может храниться. Вроде бы разные запомненные настройки (можно ли такому-то сайту использовать микрофон, например) там же хранятся.
И в этой же папке хранятся «flash cookies» других браузеров. А при другой ОС и другом flash-плагине всё это будет храниться в другом месте.
Утешает, что в Better Privacy всё примерно так же брутально .
Отредактировано luitzen (18-01-2011 19:09:18)
Отсутствует
okkamas_knife можешь немного дополнить/поправить кнопку Экспорт всех кнопок в HTML(Firefox)
1. При открытии "Сохранить как..." открывалася заданный путь, те типа С:\Custom Buttons\Сохранение кнопок\Mozilla Thunderbird\ , а некий последний (так и не нашёл где он хранится, те нашёл, но модификация не помогает, видимо кривой код я сваял)
2. Если прошло успешно, те код выполнился до конца, те файл записан
if(fp.show() == fp.returnCancel) return; var stream = Components.classes['@mozilla.org/network/file-output-stream;1'] .createInstance(Components.interfaces.nsIFileOutputStream); stream.init(fp.file, 0x02|0x20|0x08, 0666, 0); stream.write(htmlSource, htmlSource.length); stream.close();
в какую либо переменную заносился путь в том же формате, что и в пункте №1 + имя файла (хотя имя файла то есть)
Я попытался задать путь, но у меня не вышло или ошибка в JS или... ну вообщем то ерунда получается.
С превеликим уважением.
PS Код можешь отправить мне в ЛС, а не править в теме про готовые кнопки.
Отредактировано Indomito (20-01-2011 02:02:12)
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Я опять про кнопку Экспорт всех кнопок в HTML(Firefox). При помощи okkamas_knife мне удалось достигнуть желаемого, те почти удалось, но возникла проблема с кодировкой, те при Меню - Файл - Открыть файл.
Я вижу вот что:
var mydir="C:\\Custom Buttons\\Сохранение кнопок\\"; var name, image, uri; var bu = ""; var buts = document. getElementsByTagName ("toolbarbutton"); for (var i = 0; i < buts. length; i++) { if (buts [i]. getAttribute ("id"). indexOf ("custombuttons-button") == 0) { name = buts [i]. name; image = buts [i]. image || buts [i]. cbStdIcon; uri = buts [i]. URI; butmp = bu; urltmp ="<img src=" + image + "> <a href=" + uri + ">" + name +"</a><br>\n"; bu = butmp + urltmp; //alert(name); } }; butmp = bu; bu = butmp + "<hr>"; function setText (doc, nodeName, text, make_CDATASection) { var node = doc. getElementsByTagName (nodeName) [0], cds; if (!node) return; if (make_CDATASection) { try { cds = doc. createCDATASection (text || ""); } catch (e) { cds = doc. createTextNode (text || ""); } node. appendChild (cds); } else { node. textContent = text; } } var buts, doc, name, image, uri, mode, code, initCode, accelkey, help; buts = custombuttons. palette. getElementsByTagName ("toolbarbutton"); for (var i = 0; i < buts. length; i++) { if (buts [i]. getAttribute ("id"). indexOf ("custombuttons-button") == 0) { name = buts [i]. getAttribute ("label"); image = buts [i]. getAttribute ("image") || buts [i]. getAttribute ("cb-stdicon"); mode = buts [i]. getAttribute ("cb-mode"); code = buts [i]. getAttribute ("cb-oncommand"); initCode = buts [i]. getAttribute ("cb-init"); accelkey = buts [i]. getAttribute ("cb-accelkey"); help = buts [i]. getAttribute ("Help") || buts [i]. getAttribute ("help") || ""; doc = document. implementation. createDocument ("", "", null); doc. async = false; doc. load ("chrome://custombuttons/content/nbftemplate.xml"); setText (doc, "name", name, false); setText (doc, "mode", mode, false); setText (doc, "image", image, true); setText (doc, "code", code, true); setText (doc, "initcode", initCode, true); setText (doc, "accelkey", accelkey, true); setText (doc, "help", help, true); var ser = new XMLSerializer (); var data = ser. serializeToString (doc); uri = "custombutton://" + escape (data); //alert (uri); butmp = bu; urltmp ="<img src=" + image + "> <a href=" + uri + ">" + name +"</a><br>\n"; bu = butmp + urltmp; } } var uc = Components. classes ["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance (Components. interfaces. nsIScriptableUnicodeConverter); uc. charset = "utf-8"; bu = uc. ConvertFromUnicode (bu); var head = "<html>\n<head>\n<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>\n</head>\n<body>\n"; var fileend = "\n</body>\n</html>" var htmlSource = head + bu + fileend; var t=new Date(); var y=1900+t.getYear(); var min=t.getMinutes(); if (min<10){min="0"+min}; var h=t.getHours(); var m=t.getMonth();switch(m){case 0: m="Jan";break;case 1: m="Feb";break;case 2: m="Mar";break;case 3: m="Apr";break;case 4: m="May";break;case 5: m="Jun";break;case 6: m="Jul";break;case 7: m="Aug";break;case 8: m="Sep";break;case 9: m="Oct";break;case 10: m="Nov";break;default: m="Dec";} var d=t.getDate(); var curdate=y+"-"+d+"-"+m+"_"+h+"-"+min; var myfilename="my_cbuttons_"+curdate+".html"; var filedata=htmlSource; var fullfilepath=mydir+myfilename; var file = Components.classes["@mozilla.org/file/local;1"]. createInstance(Components.interfaces.nsILocalFile); file.initWithPath(fullfilepath); var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"]. createInstance(Components.interfaces.nsIFileOutputStream); foStream.init(file, 0x02 | 0x08 | 0x20, 0666, 0); var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"]. createInstance(Components.interfaces.nsIConverterOutputStream); converter.init(foStream, "UTF-8", 0, 0); converter.writeString(filedata); converter.close(); alert("файл сохранён - "+ fullfilepath );
var uc = Components. classes ["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance (Components. interfaces. nsIScriptableUnicodeConverter);
uc. charset = "utf-8";
bu = uc. ConvertFromUnicode (bu);
А где не понял...
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Помогите найти ошибку, где то надо прописать приблизительно это:
var uc = Components. classes ["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance (Components. interfaces. nsIScriptableUnicodeConverter);
uc. charset = "utf-8";
bu = uc. ConvertFromUnicode (bu);
Это надо выкинуть.
После
надо записать
var uc = Components. classes ["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance (Components. interfaces. nsIScriptableUnicodeConverter); uc. charset = "utf-8"; name = uc. ConvertFromUnicode (name);
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton поправил код вот так (фрагменты модификации выделены //*****):
var mydir="C:\\Custom Buttons\\Сохранение кнопок\\"; var name, image, uri; var bu = ""; var buts = document. getElementsByTagName ("toolbarbutton"); for (var i = 0; i < buts. length; i++) { if (buts [i]. getAttribute ("id"). indexOf ("custombuttons-button") == 0) { name = buts [i]. name; image = buts [i]. image || buts [i]. cbStdIcon; uri = buts [i]. URI; butmp = bu; urltmp ="<img src=" + image + "> <a href=" + uri + ">" + name +"</a><br>\n"; bu = butmp + urltmp; //alert(name); } }; butmp = bu; bu = butmp + "<hr>"; function setText (doc, nodeName, text, make_CDATASection) { var node = doc. getElementsByTagName (nodeName) [0], cds; if (!node) return; if (make_CDATASection) { try { cds = doc. createCDATASection (text || ""); } catch (e) { cds = doc. createTextNode (text || ""); } node. appendChild (cds); } else { node. textContent = text; } } var buts, doc, name, image, uri, mode, code, initCode, accelkey, help; buts = custombuttons. palette. getElementsByTagName ("toolbarbutton"); for (var i = 0; i < buts. length; i++) { if (buts [i]. getAttribute ("id"). indexOf ("custombuttons-button") == 0) { name = buts [i]. getAttribute ("label"); //******************************************************* //----------- Дописал var uc = Components. classes ["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance (Components. interfaces. nsIScriptableUnicodeConverter); uc. charset = "utf-8"; name = uc. ConvertFromUnicode (name); //******************************************** image = buts [i]. getAttribute ("image") || buts [i]. getAttribute ("cb-stdicon"); mode = buts [i]. getAttribute ("cb-mode"); code = buts [i]. getAttribute ("cb-oncommand"); initCode = buts [i]. getAttribute ("cb-init"); accelkey = buts [i]. getAttribute ("cb-accelkey"); help = buts [i]. getAttribute ("Help") || buts [i]. getAttribute ("help") || ""; doc = document. implementation. createDocument ("", "", null); doc. async = false; doc. load ("chrome://custombuttons/content/nbftemplate.xml"); setText (doc, "name", name, false); setText (doc, "mode", mode, false); setText (doc, "image", image, true); setText (doc, "code", code, true); setText (doc, "initcode", initCode, true); setText (doc, "accelkey", accelkey, true); setText (doc, "help", help, true); var ser = new XMLSerializer (); var data = ser. serializeToString (doc); uri = "custombutton://" + escape (data); //alert (uri); butmp = bu; urltmp ="<img src=" + image + "> <a href=" + uri + ">" + name +"</a><br>\n"; bu = butmp + urltmp; } } //****************************** // -----------Убрал три сроки //var uc = Components. classes ["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance (Components. interfaces. nsIScriptableUnicodeConverter); //uc. charset = "utf-8"; //bu = uc. ConvertFromUnicode (bu); //************************************** var head = "<html>\n<head>\n<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>\n</head>\n<body>\n"; var fileend = "\n</body>\n</html>" var htmlSource = head + bu + fileend; var t=new Date(); var y=1900+t.getYear(); var min=t.getMinutes(); if (min<10){min="0"+min}; var h=t.getHours(); var m=t.getMonth();switch(m){case 0: m="Jan";break;case 1: m="Feb";break;case 2: m="Mar";break;case 3: m="Apr";break;case 4: m="May";break;case 5: m="Jun";break;case 6: m="Jul";break;case 7: m="Aug";break;case 8: m="Sep";break;case 9: m="Oct";break;case 10: m="Nov";break;default: m="Dec";} var d=t.getDate(); var curdate=y+"-"+d+"-"+m+"_"+h+"-"+min; var myfilename="my_cbuttons_"+curdate+".html"; var filedata=htmlSource; var fullfilepath=mydir+myfilename; var file = Components.classes["@mozilla.org/file/local;1"]. createInstance(Components.interfaces.nsILocalFile); file.initWithPath(fullfilepath); var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"]. createInstance(Components.interfaces.nsIFileOutputStream); foStream.init(file, 0x02 | 0x08 | 0x20, 0666, 0); var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"]. createInstance(Components.interfaces.nsIConverterOutputStream); converter.init(foStream, "UTF-8", 0, 0); converter.writeString(filedata); converter.close(); alert("файл сохранён - "+ fullfilepath );
Отредактировано Indomito (23-01-2011 03:35:35)
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
теперь те кнопки что активные, которые находились на панели, отображаются верно, при считывании, а те которые были в ПКМ - Настроить - Настройка панелей инструментов отображаются не верно:
Ну, тогда и
var uc = Components. classes ["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance (Components. interfaces. nsIScriptableUnicodeConverter); uc. charset = "utf-8"; name = uc. ConvertFromUnicode (name);
надо выкинуть.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton да, помогло... а для чего перекодировали в UTF-8? И в каких случаях будет ошибка с кодировкой?
Это я не только для самообразования, но и для того что бы было понятно где искать проблему если такая возникнет. В мозилле установлена кодировка utf-8, почтовик, те Mozilla Thunderbird, не проверял ещё.
Добавлено 23-01-2011 08:23:05
Anton И ещё что надо сделать, те написать, перед BrowserOpenFileWindow(); что бы открылся нужный каталог. Я попытался написать:
, но первая строка помогает/срабатывает, если перезапустить браузер. А
Application.prefs.setValue("browser.download.lastDir", "C:\\Custom Buttons\\"); saveDocument(window.content.document);
срабатывает верно, я разницу вижу, но не могу понять что я делаю не так.
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
а для чего перекодировали в UTF-8?
Там в html устанавливается charset=utf-8.
И в каких случаях будет ошибка с кодировкой?
Например, при перекодировке из utf-8 в utf-8 считая исходную кодировку юникодом.
И ещё что надо сделать, те написать, перед BrowserOpenFileWindow(); что бы открылся нужный каталог.
Не знаю. У меня вот так работает:
var file = Components. classes ["@mozilla.org/file/local;1"]. createInstance (Components. interfaces. nsILocalFile); file. initWithPath ("/"); gLastOpenDirectory. path = file; BrowserOpenFileWindow ();
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Подскажите пожалуйста как реализовать с помощью CB такую тему:
При открытии окна создания сообщения (создаю сообщение с помощью командной строки) моя кнопка проверяет наличие определённого файла в определённом месте (например 'c:\bober.txt'), если такой файл имеется - открывает его и читает первую строчку, если она = 'yes' происходит отправка сообщения. Если строка иная, либо такого файла не существует - ничего не происходит... ось - винда. Очень жду помощи...
Отредактировано doob (25-01-2011 00:17:39)
Отсутствует
doob а можно код привести, а то так сложно понять про что речь и в чём проблема.
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Проблема в том, что стороннему приложению нужно наладить автоматическую отправку сообщений через Буревестник, но т.к. изначально у него такого функционала нет - приходится извращаться. Перед генерацией письма, приложение создаёт в определённом месте определённый файл. Громоптиц, создав письмо проверяет наличие файла в определённом месте, если находит его - отправляет письмо. После отправки (или неотправки) письма Громоптиц записывает в файл результат операции и время. Приложение считывает необходимую информацию и удаляет файл...
Вот такие лисапеды...
Отредактировано doob (25-01-2011 08:08:35)
Отсутствует
Вобщем, одну проблему своими силами и с помощью данного форума решил! особая благодарность luitzen
Сгенерированные сообщения автоматически отправляются, правда с небольшой задержкой (адресат через командную строку не моментально вставляется). Реализовал при помощи кнопки в окне создания сообщения. Вот код инициализации:
var dir = Cc ["@mozilla.org/file/local;1"].
createInstance (Ci. nsILocalFile);
dir. initWithPath (pathToDirectory);
var file = dir. clone ();
file. append (filename);
if (file. exists ()) setTimeout("goDoCommand('cmd_sendButton')", 1000);
Жду вашей помощи. Заранее благодарен.
Отсутствует
iDev.Pi
iDev.Pi пишетА как насчёт того, чтобы сделать удобную интеграцию с новым менеджером дополнений?
Вот стайлиш и скриптиш (ну или гризманки) - оба этих дополнения интегрировались в новый АОМ и теперь управлять стилями и скриптами можно из одного места, что удобно.
Может возможно сделать такое и для КБ?Возможно, но не во всех поддерживаемых CB приложениях новый менеджер дополнений, а делать две разные ветки кода мне бы не хотелось.
А нельзя как-то в 1 дополнении объединить оба варианта, чтобы в зависимости от приложения - использовался бы либо старый способ, либо подцеплялся новый АОМ?
mzfx
Отсутствует