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

Заказывай стафф с атрибутикой Mozilla и... пусть все вокруг завидуют тебе! Быть уникальным - быть с Mozilla!

№185121-12-2017 09:33:22

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 484
UA: Firefox 57.0

Re: Обсуждение кнопок CB

Может, кто подскажет, что изменилось, в FF57 по сравнению с FF56, что все кнопки связанные с сохранением в HTML (а также сохранение в PNG (кнопка Save))  перестали работать? Единственное что здесь узнал, что nsILocalFile заменен на nsIFile.

Отсутствует

 

№185221-12-2017 09:54:49

Viatcheslav
Участник
 
Группа: Members
Откуда: г. Бобруйск, Беларусь
Зарегистрирован: 23-11-2016
Сообщений: 323
UA: Firefox 57.0

Re: Обсуждение кнопок CB

Помогите, пожалуйста. Есть кнопка, добавляющая прогресс-бар в адресной строке (код от Andrey_Krropotkin):

скрытый текст

Выделить код

Код:

//Полоса загрузки в адресной строке
 
(function(){
//Location Bar Enhancer5.1;Loading Bar0.3.0
    var cssStr = (function(){/*
            #urlbar {
                background-image: -moz-repeating-linear-gradient(top -45deg, rgba(255,255,255,0), rgba(255,255,255,0) 6px, rgba(255,255,255,0) 6px, rgba(255,255,255,0) 12px), -moz-linear-gradient(left, #33FF66 0%, #33FF66 100%);
                background-size:0 0;
             background-repeat:repeat-x, no-repeat;
           //  transition: background-size 350ms ease 0s !important;
            }
            #urlbar:not([connecting])::after {
                        display:none;
                    }
            @-moz-keyframes progress-bar-stripes {
                from {
                    background-position: 0, 0;
                }
                to {
                    background-position: 51px 0, 0;
                }
            }
    */}).toString().replace(/^.+\s|.+$/,"");
    
    var style = document.createProcessingInstruction("xml-stylesheet", "type=\"text/css\"" + " href=\"data:text/css;base64," + btoa(cssStr) + "\"");
    var mainW = document.getElementById("main-window");
    document.insertBefore(style, mainW);

    function main(window) {
      var {document, gBrowser} = window;
      function $(id) document.getElementById(id);
      var urlbar = $("urlbar");
      let pageProgress = 0;
      let async = makeWindowHelpers(window).async;
      var LoadingBar = {
        listener: {
          onChangeTab: function(e) {
            urlbar.style.backgroundSize = '0% 100%';
            pageProgress = 0;
          },
          
          onProgressChange: function(aBrowser,webProgress,request,curSelfProgress,maxSelfProgress,curTotalProgress,maxTotalProgress) {
            if (gBrowser.contentDocument === aBrowser.contentDocument) {
                var val = (curTotalProgress-1)/(maxTotalProgress-1);
                pageProgress = val;
                urlbar.style.backgroundSize = (100*val) + '% 100%';
                if (val > 0.9)
                  async(function() {
                    if (pageProgress > 0.95)
                        urlbar.style.backgroundSize = '100% 100%';
                }, 1000);
            }
          },
          
          onStateChange: function() {
            if (pageProgress > 0.95){
                async(function() {
                    urlbar.style.backgroundSize = '0% 100%';
                    pageProgress = 0;
                }, 1000);
            }else{
                urlbar.style.backgroundSize = '0% 100%';
            }
          }
        }
      };

      gBrowser.tabContainer.addEventListener('TabSelect',LoadingBar.listener.onChangeTab,false);
      gBrowser.addTabsProgressListener(LoadingBar.listener);

      unload(function() {
        gBrowser.tabContainer.removeEventListener('TabSelect',LoadingBar.listener.onChangeTab,false);

        gBrowser.removeTabsProgressListener(LoadingBar.listener);
      }, window);
    }

    watchWindows(main, "navigator:browser");

    function runOnLoad(window, callback, winType) {
      window.addEventListener("load", function() {
        window.removeEventListener("load", arguments.callee, false);

        if (window.document.documentElement.getAttribute("windowtype") == winType)
          callback(window);
      }, false);
    }

    function runOnWindows(callback, winType) {
      function watcher(window) {
        try {
          callback(window);
        }
        catch(ex) {}
      }

      let browserWindows = Services.wm.getEnumerator(winType);
      while (browserWindows.hasMoreElements()) {
        let browserWindow = browserWindows.getNext();
        if (browserWindow.document.readyState == "complete")
          watcher(browserWindow);
        else
          runOnLoad(browserWindow, watcher, winType);
      }
    }

    function watchWindows(callback, winType) {
      function watcher(window) {
        try {
          callback(window);
        }
        catch(ex) {}
      }

      runOnWindows(callback, winType);

      function windowWatcher(subject, topic) {
        if (topic == "domwindowopened")
          runOnLoad(subject, watcher, winType);
      }
      Services.ww.registerNotification(windowWatcher);

      unload(function() Services.ww.unregisterNotification(windowWatcher));
    }

    function unload(callback, container) {
      let unloaders = unload.unloaders;
      if (unloaders == null)
        unloaders = unload.unloaders = [];

      if (callback == null) {
        unloaders.slice().forEach(function(unloader) unloader());
        unloaders.length = 0;
        return null;
      }

      if (container != null) {
        container.addEventListener("unload", removeUnloader, false);

        let origCallback = callback;
        callback = function() {
          container.removeEventListener("unload", removeUnloader, false);
          origCallback();
        }
      }

      function unloader() {
        try {
          callback();
        }
        catch(ex) {}
      }
      unloaders.push(unloader);


    function removeUnloader() {
        let index = unloaders.indexOf(unloader);
        if (index != -1)
          unloaders.splice(index, 1);
      }
      return removeUnloader;
    }
    
    function makeWindowHelpers(window) {
      let {clearTimeout, setTimeout} = window;

      function async(callback, delay) {
        delay = delay || 0;
        let timer = setTimeout(function() {
          stopTimer();
          callback();
        }, delay);

        function stopTimer() {
          if (timer == null)
            return;
          clearTimeout(timer);
          timer = null;
        }
      }

      return {
        async: async,
      };
    }

})();


Для полного счастья не хватает отображения степени загрузки страницы в %, как здесь - https://www.w3schools.com/howto/tryit.a … r_label_js. Для удобства метка должна пропадать по окончании загрузки страницы вместе с прогресс-баром. Если такое возможно - сделайте, пожалуйста :blush: Спасибо

Отсутствует

 

№185321-12-2017 10:30:50

mssign
Участник
 
Группа: Members
Зарегистрирован: 04-11-2009
Сообщений: 21
UA: Firefox 57.0

Re: Обсуждение кнопок CB

difabor пишет

mssign, замените "style: "-moz-appeara...

Спасибо.  Все бы хорошо, но значки не по центру панели.
скрин.

скрытый текст
e0b60f3ac7fe38352875290712ba069b.png

Отредактировано mssign (21-12-2017 10:32:20)

Отсутствует

 

№185421-12-2017 13:17:01

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 484
UA: Firefox 57.0

Re: Обсуждение кнопок CB

Заметил случайно на FF57 ели параметр - security.data_uri.unique_opaque_origin поставить в false, то работают кнопки с XUL интерфейсом

Отсутствует

 

№185521-12-2017 22:32:07

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 484
UA: Firefox 57.0

Re: Обсуждение кнопок CB

Infocatcher Скажите пожалуйста, какие из  кнопок,  которые   у Вас опубликованы на github.com совместимы с FF57 ( в частности интересует Custom Buttons Editor: Toggle on Top и Custom Buttons: Source Editor). С уважением к вашему труду.

Отсутствует

 

№185621-12-2017 23:41:13

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 56.0

Re: Обсуждение кнопок CB

Andrey_Krropotkin пишет

Скажите пожалуйста, какие из  кнопок,  которые   у Вас опубликованы на github.com совместимы с FF57 ( в частности интересует Custom Buttons Editor: Toggle on Top и Custom Buttons: Source Editor).

Надо проверять.
Часть кнопок подправлена, часть, возможно, нет.
Custom Buttons Editor: Toggle on Top – работает вплоть до текущей Nightly 59.0a1 (2017-12-21)
Custom Buttons: Source Editor – возможно, работает, отвалится в Firefox 58 (хотя это и легко починить, но, увы, обратно-несовместимо).
В Extensions Developer Tools на Firefox 59+ не работает переключение локалей. И успел пропасть Scratchpad (и код на тему интеграции там дико упороли, генерируют XUL из JavaScript, я поизучал и бросил).
Из того, про что мне писали писал Dumby, я все подправил (распорки от security.data_uri.unique_opaque_origin внедрять не стал, лень).

Добавлено 22-12-2017 00:00:30
Custom Buttons: Source Editor – местами не работает контекстное меню, генераторы в Firefox 58+ починил.

Отредактировано Infocatcher (22-12-2017 00:00:30)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№185722-12-2017 00:52:23

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 484
UA: Firefox 57.0

Re: Обсуждение кнопок CB

Infocatcher Спасибо Вам за информацию. У меня стоит Custom Buttons 0.0.5.8.9.6pre и FF57.02 . Source Editor  по вашей ссылке у меня заработал, а вот Toggle on Top  - кнопка не хочет инилизироваться, постоянно в полутусклом состоянии. Вроде профиль ставил  с нуля. Когда открываю и переинизилирую, значек кнопки становится нормальным, но в в редакторе значек не появляется.  Кстати такая ситуация  бывает и в других кнопках, но там получается так, что инициализация срабатывает, а кнопка в полутусклом состоянии, но далее при открытии  и закрытии окна редактора иконка кнопок становится нормальной. Может я в не курсе, что не так не делаю, или что еще? И ту т я ранее задавал вопрос, может Вы покажите мне путь, где искать ответ , который я задал, несколько постов выше. Еще один вопрос -как изменить цвет фона редактора ( у меня после включения копки становится черным).  Заранее спасибо.

Отсутствует

 

№185822-12-2017 01:09:41

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2253
UA: Firefox 52.0

Re: Обсуждение кнопок CB

Infocatcher пишет

легко починить, но, увы, обратно-несовместимо

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

скрытый текст

Выделить код

Код:

get loadOverlaysGen() {
            var str = "fround" in Math ? "*" : ""; // Firefox 26+
            var arr = [
                '(function' + str + ' loadOverlaysGen(window, callback/*, overlayData1, ...*/) {',
                '    var gen = loadOverlaysGen.__generator;',
                '    for(var i = 2, l = arguments.length; i < l; ++i) {',
                '        var overlayData = arguments[i];',
                '        this.loadOverlay(window, overlayData[0], overlayData[1], function() {',
                '            gen.next();',
                '        });',
                '        yield 0;',
                '    }',
                '    callback();',
                '    yield 0;',
                '});'
            ];
            delete this.loadOverlaysGen;
            return this.loadOverlaysGen = eval(arr.join("\n"));
        },

Отсутствует

 

№185922-12-2017 05:48:34

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 52.0
Веб-сайт

Re: Обсуждение кнопок CB

mssign пишет
difabor пишет

mssign, замените "style: "-moz-appeara...

Спасибо.  Все бы хорошо, но значки не по центру панели.
скрин.

Попробуйте поиграться с шириной, сделайте 30px, например. У значков есть маргины и поэтому они могут не влезть.

Отредактировано difabor (22-12-2017 05:51:21)


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№186022-12-2017 07:09:08

mssign
Участник
 
Группа: Members
Зарегистрирован: 04-11-2009
Сообщений: 21
UA: Firefox 57.0

Re: Обсуждение кнопок CB

difabor пишет

Попробуйте поиграться с шириной, сделайте 30px, например. У значков есть маргины и поэтому они могут не влезть.

Тогда теряется весь смысл..  Ширина панели раздувается как раз до прежнего состояния. За исключением padding в первых строчках кода, поставил равным 0 - на пару пикселей стало уже. padding  отрицательным пробовал сделать :) , ну не знаю я CSS. Значки стоят как привязанные и не важно им какая  у панели ширина. Отступы от края всегда одни и те же. Если панель уже - значки уезжают за правый край панели.
Вот отступы  по вертикали от края панели для значков понятия не имею как поправить.
скрин

скрытый текст
04543933546ddef8ebbb281bdfcd833b.png

Отредактировано mssign (22-12-2017 07:36:20)

Отсутствует

 

№186122-12-2017 07:30:57

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 505
UA: Firefox 52.0

Re: Обсуждение кнопок CB

Как открыть файл в Scratchpad ? Нигде не найду ни примеров, ни описаний :(
типа такого чтоб:

Выделить код

Код:

var prof = Services.dirsvc.get('ProfD', Ci.nsIFile);
 var f1 = prof.path + "\\chrome\\userChrome.css";
 var f2 = prof.path + "\\chrome\\userContent.css";

    Scratchpad.openScratchpad(f1);  // не правильно, запускает, но пустым.

GM для PM это как-то делает - все скрипты открываются по ПКМ в Scratchpad-e . Но там столько всего, я понять не могу КАК?!


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№186222-12-2017 07:49:08

difabor
Участник
 
Группа: Members
Зарегистрирован: 21-09-2013
Сообщений: 539
UA: Firefox 52.0
Веб-сайт

Re: Обсуждение кнопок CB

mssign пишет
difabor пишет

Попробуйте поиграться с шириной, сделайте 30px, например. У значков есть маргины и поэтому они могут не влезть.

Тогда теряется весь смысл..  Ширина панели раздувается как раз до прежнего состояния. За исключением padding в первых строчках кода, поставил равным 0 - на пару пикселей стало уже. padding  отрицательным пробовал сделать :) , ну не знаю я CSS. Значки стоят как привязанные и не важно им какая  у панели ширина. Отступы от края всегда одни и те же. Если панель уже - значки уезжают за правый край панели.
Вот отступы  по вертикали от края панели для значков понятия не имею как поправить.

1. 30px всё-таки будет имхо у́же.
2. Надо маргинам иконок присвоить отрицательные значения.
Но это надо указывать не в этой кнопке, а в  CSS, например, в Classic Theme Restorer.
#ButtonID {margin-left: -6px !important;margin-right: -4px !important;}

ButtonID  - ИД значка
Особенно это важно для значков с дропмаркерами, например:
#tileview-buttonmenu>dropmarker,#textareaCacheButton>dropmarker,#printedit-buttonmenu>dropmarker,#s3gt-toolbar-button>dropmarker{margin-left: -9px !important;margin-right: -9px !important;}
Видите, можно сразу перечислить несколько ИД через запятую и с # перед ИД.

Вот как у меня выглядит кусок VT:

кусочек VT в натуральную величину
mSyOPpi.jpg

Отредактировано difabor (22-12-2017 07:49:39)


Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©

Отсутствует

 

№186322-12-2017 08:51:04

Ultima2m
Участник
 
Группа: Members
Откуда: Россия
Зарегистрирован: 28-11-2013
Сообщений: 608
UA: Firefox 52.0

Re: Обсуждение кнопок CB

del

Отредактировано Ultima2m (27-05-2020 08:50:36)

Отсутствует

 

№186422-12-2017 09:17:33

okkamas_knife
We are the Borg.       Resistance is futile.
 
Группа: Members
Зарегистрирован: 21-10-2009
Сообщений: 9558
UA: Seamonkey 2.14

Re: Обсуждение кнопок CB

mokujin пишет: var prof = Services.dirsvc.get('ProfD', Ci.nsIFile); var f1 = prof.path + "\\chrome\\userChrome.css"; var f2 = prof.path + "\\chrome\\userContent.css"; Scratchpad.openScratchpad(f1); // не правильно, запускает, но пустым.

скорее всего там нужен сам файл а не путь
т.е после получения пути надо сделать file init with path
точнее глянь в кодах открывающих папку или запускающих файл
(да я ленивый зато найдя сам лучше запомнишь)


я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3

Отсутствует

 

№186522-12-2017 10:42:11

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 56.0

Re: Обсуждение кнопок CB

Andrey_Krropotkin пишет

а вот Toggle on Top  - кнопка не хочет инилизироваться, постоянно в полутусклом состоянии.

В консоли ошибок по Ctrl+Shift+J должно чего-нибудь на тему выводить.

Andrey_Krropotkin пишет

как изменить цвет фона редактора ( у меня после включения копки становится черным).

F12 – шестеренка – темы
Или в about:config:
devtools.theme = light
devtools.theme = dark

Dumby пишет

Значит, получается, так нельзя? (в смысле eval)

Ну да... строковые портянки. Я в другой своей штуке в итоге сделал подргузку нужного кода через loadSubScript().
Вот так чуть поприятнее смотрится: https://github.com/Infocatcher/Custom_B … 7b574412ec

Добавлено 22-12-2017 10:43:47

Andrey_Krropotkin пишет

что изменилось, в FF57 по сравнению с FF56, что все кнопки связанные с сохранением в HTML (а также сохранение в PNG (кнопка Save))  перестали работать? Единственное что здесь узнал, что nsILocalFile заменен на nsIFile.

Тут, опять же, должна быть ругань в консоли ошибок.

Отредактировано Infocatcher (22-12-2017 10:43:47)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№186622-12-2017 11:53:24

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 484
UA: Firefox 57.0

Re: Обсуждение кнопок CB

Infocatcher спасибо за ответы. Я разобрался. Все работает.
В консоли, при включенном Source Editor на редактирование любой кнопки (даже если просто открыл и закрыл) пишет

скрытый текст
[Custom Buttons :: Source Editor] 47:46:479 initWindow(): isFrame: false
TypeError: self._init is not a function[Подробнее]                                                                                                                                       toolbar.xml:145:15
skip getScripts
load chrome://custombuttons/content/editor.xul
[Custom Buttons :: Source Editor] 47:47:092 loadOverlay(): chrome://global/content/editMenuOverlay.xul
[Custom Buttons :: Source Editor] 47:47:204 loadOverlay(): chrome://browser/content/devtools/source-editor-overlay.xul
Не удалось загрузить overlay из chrome://browser/content/devtools/source-editor-overlay.xul.                                                                            button.js:737:6
[Custom Buttons :: Source Editor] 47:50:595 destroyWindow(): isFrame: undefined

Отредактировано Andrey_Krropotkin (22-12-2017 12:07:03)

Отсутствует

 

№186722-12-2017 13:38:53

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 505
UA: Firefox 52.0

Re: Обсуждение кнопок CB

okkamas_knife пишет

скорее всего там нужен сам файл а не путь

мда... ЕЯПП то чтоб открыть файл, ему надо передать содержимое файла, имя и какое-то состоянияния, чтоле... Нашел такой кусок в GM(for PM)

openInEditor.js

Выделить код

Код:

function openInEditor(aScript) {
  let editor = GM_util.getEditor();
  if (!editor) {
    // Without DevTools.
    try {
      ScratchpadManager.openScratchpad({
        "filename": aScript.file.path,
        "text": aScript.textContent,
        "saved": true,
      });
    } catch (e) {
      if (GM_util.setEditor(0)) {
        openInEditor(aScript);
      }
    }
    return undefined;
  }

...... ну и дальше for MacOS проверки


и в другом месте и другом скрипте ЕЯПП  ;-)  собсно , читается скрипт для передачи в Scratchpad :rolleyes:

getScriptSource.js

Выделить код

Код:

const EXPORTED_SYMBOLS = ["getScriptSource"];


// Given a script, return its entire source as a plain string.
function getScriptSource(aScript) {
  let parts = [];
  let offsets = [];
  let offset = 0;

  aScript.requires.forEach(function (aReq) {
    let contents = aReq.textContent;
    let lineCount = contents.split("\n").length;
    parts.push(contents);
    offset += lineCount;
    offsets.push(offset);
  });
  aScript.offsets = offsets;

  // These newlines are critical for error line calculation.
  // The last handles a script whose final line is a line comment,
  // to not break the wrapper function.
  // See #1491.
  // The semicolons after requires fix a failure of javascript's semicolon
  // insertion rules.
  parts.push(aScript.textContent);
  let scriptSrc = parts.join(";\n") + "\n";

  return scriptSrc;
}


я ниасилю понять что ита и как. Думал будет просто. буду мутить с AkelPad дальше.
Смысл, хотелка, была простейшая: так же как и GM for PM открывать кнопки на редактирование в Scratchpad , т.к. он уже есть, подсветка есть - а путя к "внешнему редактору" в CB не относительные. Никаких переменных, для переносной не катит.
блин, неудобно всё как.


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№186822-12-2017 14:39:08

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 56.0

Re: Обсуждение кнопок CB

mokujin пишет

открывать кнопки на редактирование в Scratchpad , т.к. он уже есть, подсветка есть

Это как подсветку синтаксиса можно встроить... через 10 костылей, 15 распорок и ломаться буде раз в две версии.

Содержимое файла надо читать вручную...

Выделить код

Код:

var path = "c:\\autoexec.bat";
OS.File.read(path).then(function(arr) {
    var {ScratchpadManager} = Components.utils.import("resource://devtools/client/scratchpad/scratchpad-manager.jsm", {});
    ScratchpadManager.openScratchpad({
        filename: path,
        text: new TextDecoder().decode(arr),
        saved: true
    });
});

А еще scratchpad-manager.jsm уже как минимум один раз переезжал, раньше он был в resource:///modules/devtools/scratchpad-manager.jsm :sick:


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№186922-12-2017 16:38:26

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 505
UA: Firefox 52.0

Re: Обсуждение кнопок CB

Ага, точно так. нашел в GM файлах, аж четыре проверки на четыре разных пути к scratchpad-manager.jsm  В моём случае подошел путь под нумером 1 (PM жеж не сильно меняли) :lol:
Теперь всё пойдёт веселей.

открыть userChrome.css во встроенном редакторе Scratchpad

Выделить код

Код:

/*CODE*/
// открыть userChrome.css во встроенном редакторе Scratchpad
function spUChrom() {

    const prof = Services.dirsvc.get('ProfD', Ci.nsIFile);
    var path = prof.path + "\\chrome\\userChrome.css";
 
      OS.File.read(path).then(function(arr) {

// Firefox путь  до Scratchpad, подставить нужное
// resource://devtools/client/scratchpad/scratchpad-manager.jsm
//
// Moved in Firefox 44
// http://hg.mozilla.org/mozilla-central/rev/397c69fa1677
// resource:///modules/devtools/client/scratchpad/scratchpad-manager.jsm
//
// Moved in Firefox 44
// http://hg.mozilla.org/mozilla-central/rev/3b90d45a2bbc
// resource:///modules/devtools/scratchpad-manager.jsm

// PaleMoon 27 путь до Scratchpad
          var {ScratchpadManager} = Components.utils.import("resource://gre/modules/devtools/scratchpad-manager.jsm", {});
              ScratchpadManager.openScratchpad({
                     filename: path,
                     text: new TextDecoder().decode(arr),
                     saved: true
                     });
          });
  };

spUChrom();


Запатчу(попробую) CB и будет отлично. Идея такая: добавить ключевое слово, типа если настройки в prefs.js  extensions.custombuttons.external_editor == scratchpad - то открывать файл этим способом. Если нет - стандартное поведение CB (открыть или указать путь к редактору) и пропишу настройку в user.js
Но это я уже сам.
Благодарю за помощь! рукужму.


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№187023-12-2017 00:07:50

usalex
Участник
 
Группа: Members
Зарегистрирован: 17-05-2016
Сообщений: 82
UA: Firefox 57.0

Re: Обсуждение кнопок CB

Можно ли "виртуально" увеличить площадь кнопки?
Вот, например, есть классная кнопка Изменить масштаб.
Если на нее навести курсор и крутить колесико, то происходит изменение масштаба.
Но площадь "действия" кнопки маловата для меня и приходится тратить внимание на прицеливание курсором.
Нельзя ли расширить область срабатывания так, чтоб она, например, распространялась на всю верхнюю панель (там где названия вкладок)?
Тогда было бы гораздо проще -- махнул не глядя курсором к верхней границе окна и крути себе масштаб.

Отсутствует

 

№187123-12-2017 06:01:15

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 42.0

Re: Обсуждение кнопок CB

usalex
Поставьте кнопку и не мучайтесь. Масштаб изменяется колёсиком при нажатой ПКМ, и никуда целиться не нужно.
https://forum.mozilla-russia.org/viewtopic.php?pid=733919#p733919


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№187223-12-2017 07:45:37

oleg.sgh
Участник
 
Группа: Members
Зарегистрирован: 19-04-2014
Сообщений: 3157
UA: Firefox 57.0

Отсутствует

 

№187323-12-2017 19:00:11

usalex
Участник
 
Группа: Members
Зарегистрирован: 17-05-2016
Сообщений: 82
UA: Firefox 57.0

Re: Обсуждение кнопок CB

oleg.sgh
Спасибо.
Там в коде адресная строка обозначена, как "gURLBar"
А, может, есть аналогичное обозначение для самой верхней панели - той, в которой вкладки с их названиями отображаются?

villa7
Да! Спасибо! Поставил эту кнопку и теперь намного удобней крутить масштаб.
Старую кнопку изменения масштаба удалил, но вместе с ней исчезла индикация процентов масштаба из строки адреса.
Можно её как-то вернуть?

Отредактировано usalex (23-12-2017 19:05:13)

Отсутствует

 

№187423-12-2017 22:12:08

Andrey_Krropotkin
Участник
 
Группа: Members
Зарегистрирован: 11-11-2011
Сообщений: 484
UA: Firefox 57.0

Re: Обсуждение кнопок CB

Помогите пожайлуста разобраться, что-то запутался в коде

скрытый текст

Выделить код

Код:

//  Пукт меню - ["В другом профиле", "menuitem-iconic", icon3, "ucjs_Cop.Debug();"],     
 
 var profileDir = Components.classes["@mozilla.org/file/directory_service;1"]
    .getService(Components.interfaces.nsIProperties)
    .get("GreD", Components.interfaces.nsIFile)
    .path;    

 var fpath = profileDir + "\\firefox.exe";   
 
  window.ucjs_Cop = {
  clipboard: Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper),

  Debug: function() {
       
  var urllink=window._content.document.location.href;
  startProcess(fpath,["-no-remote","-P","Debug",urllink]);
  function startProcess(path, args){
  file.initWithPath(path);
  if(file.exists()){
  var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
  process.init(file);
  process.run(false, args, args.length);} 
  };
        }, 
};


Раньше на старых версиях FF работало, на FF57 не хочет
В консоли пишет "window._content is undefined" и ссылается на строчку "function startProcess(path, args)"

Отсутствует

 

№187524-12-2017 00:31:24

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2253
UA: Firefox 52.0

Re: Обсуждение кнопок CB

Andrey_Krropotkin пишет

ссылается на строчку

Это сломали где-то с Firefox 54. Из консоли ошибка передаётся
на пару строк дальше, чем на самом деле. Думалось, что само пройдёт, но нет.

В консоли пишет "window._content is undefined"

Ничего удивительного.

что-то запутался в коде

Ну, наверно, следует отталкиваться от чего-нибудь менее запутанного.
А запутать и доработать всегда успеется.

скрытый текст

Выделить код

Код:

function openInProfile(profileName, url = gBrowser.currentURI.spec) {
    var firefox = Services.dirsvc.get("XREExeF", Ci.nsIFile);
    var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
    var args = ["-no-remote", "-p", profileName, url];
    process.init(firefox);
    process.run(false, args, args.length);
}
openInProfile("Debug");

Отсутствует

 

Board footer

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