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

Mozilla Россия — свежие версии программ Mozilla, а также масса полезной информации по каждому продукту.

№103-02-2014 15:48:42

ganzales
Участник
 
Группа: Members
Зарегистрирован: 01-12-2008
Сообщений: 87
UA: Firefox 26.0

Вывод сообщения в строку состояния

Всем привет, сразу скажу что не силен в дополнениях и в разработке в целом, но хочу переделать одно дополнение, так вот нужно выводить сообщения в строку состояния, как это можно реализовать? window.status не подходит.

Отсутствует

 

№203-02-2014 16:16:37

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

Re: Вывод сообщения в строку состояния

Можно использовать

Выделить код

Код:

XULBrowserWindow.setOverLink("что-то там");

из chrome://browser/content/browser.js.


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

Отсутствует

 

№303-02-2014 16:36:37

ganzales
Участник
 
Группа: Members
Зарегистрирован: 01-12-2008
Сообщений: 87
UA: Firefox 26.0

Re: Вывод сообщения в строку состояния

Так с ходу XULBrowserWindow.setOverLink("что-то там"); не заработало, может надо еще что-то подключать?

Отсутствует

 

№403-02-2014 17:23:05

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

Re: Вывод сообщения в строку состояния

Откуда вызывается код?
XULBrowserWindow – свойство объекта window браузера.


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

Отсутствует

 

№503-02-2014 17:35:54

ganzales
Участник
 
Группа: Members
Зарегистрирован: 01-12-2008
Сообщений: 87
UA: Firefox 26.0

Re: Вывод сообщения в строку состояния

вот в этом аддоне https://addons.mozilla.org/ru/firefox/addon/Y-Translate/
правлю этот файл resources/y-translate/data/inline02.js

Отсутствует

 

№603-02-2014 18:05:02

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

Re: Вывод сообщения в строку состояния

А, это на Add-on SDK штука (и нужно изучать соответствующую документацию), там из этого скрипта надо сначала сообщение наверх отправить...
По аналогии с

Выделить код

Код:

self.port.emit('scoped', sentence, $('html').attr('lang'));

и

Выделить код

Код:

worker.port.on("scoped", function(sentence, lng){translate(worker, sentence, lng)});

в lib/main.js

Причем внизу окно браузера недоступно, а наверху доступны все окна, но нужно понять, из какого пришло сообщение (или использовать активное).


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

Отсутствует

 

№706-02-2014 13:16:21

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

Re: Вывод сообщения в строку состояния

Видимо, что-то вроде

Выделить код

Код:

self.port.emit("status", "Some text");

в inline02.js

И примерно такое

Выделить код

Код:

worker.port.on("status", function(msg) {
    var utils = require("sdk/window/utils");
    var active = utils.getMostRecentBrowserWindow();
    active.XULBrowserWindow.setOverLink(msg);
});

в lib/main.js.


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

Отсутствует

 

№806-02-2014 14:51:22

ganzales
Участник
 
Группа: Members
Зарегистрирован: 01-12-2008
Сообщений: 87
UA: Firefox 26.0

Re: Вывод сообщения в строку состояния

Выделить код

Код:

function injected(worker)
    {
        // push parameters
      worker.port.emit("Prefs", prefHandle.Prefs());
      worker.port.emit("Urls", { ajax_loader: self.data.url("ajax-loader.gif") });
      prefs.setChanged(function(){ worker.port.emit("Prefs", prefHandle.Prefs())})

      worker.port.on("scoped", function(sentence, lng){translate(worker, sentence, lng)});
      worker.port.on("status", function(msg) {
        var utils = require("sdk/window/utils");
        var active = utils.getMostRecentBrowserWindow();
        active.XULBrowserWindow.setOverLink('test');
    });

      addWorker(worker);
      var isin = exclusionList.findHost(getHostName(worker.url));
      if(!isin)
        worker.port.emit("enable", {});
    }

сделал так, но результата почему то нет

Отсутствует

 

№906-02-2014 21:12:08

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

Re: Вывод сообщения в строку состояния

Там вот такое выдает:

Module: y-translate/main has no authority to load: sdk/window/utils

Я добавил в harness-options.json

  "y-translate/main": {
   ...
   "requirements": {
    ...
    "sdk/widget": "sdk/widget",
    "sdk/window/utils": "sdk/window/utils"

   },

И потом в resources\y-translate\lib\main.js

      worker.port.on("scoped", function(sentence, lng){translate(worker, sentence, lng)});
      worker.port.on("status", function(msg) {
        var utils = require("sdk/window/utils");
        var active = utils.getMostRecentBrowserWindow();
        active.XULBrowserWindow.setOverLink(msg);
      });

И в resources\y-translate\data\inline02.js

    function translated(sentence, result, also1, also2)
    {
        mode.isTranslating = false;
        showLoader(false);
        showWithAll(sentence, result, also1, also2);
        self.port.emit("status", "Translated: " + result);

    }

Вроде, работает.

Добавлено 06-02-2014 21:13:35

Infocatcher пишет

выдает

Но почему-то только для

Выделить код

Код:

worker.port.on("status", function(msg) {
        try {
          var utils = require("sdk/window/utils");
          var active = utils.getMostRecentBrowserWindow();
          active.XULBrowserWindow.setOverLink(msg);
        }
        catch(e) {
          throw new Error("worker.port.on error: " + e);
        }
      });

Отредактировано Infocatcher (06-02-2014 21:13:35)


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

Отсутствует

 

№1006-02-2014 22:26:14

ganzales
Участник
 
Группа: Members
Зарегистрирован: 01-12-2008
Сообщений: 87
UA: Firefox 26.0

Re: Вывод сообщения в строку состояния

Супер!

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

альфа: https://drive.google.com/file/d/0B7pYmUnFHoXpbGpnaThzSVJLZW8/edit?usp=sharing

Отредактировано ganzales (06-02-2014 22:35:08)

Отсутствует

 

Board footer

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