LINUX.ORG.RU

История изменений

Исправление Noob_Linux, (текущая версия) :

const Cinnamon = imports.gi.Cinnamon;
const Applet = imports.ui.applet;
const Main = imports.ui.main;
const Lang = imports.lang;
const St = imports.gi.St;
const PopupMenu = imports.ui.popupMenu;
const Util = imports.misc.util;
const GLib = imports.gi.GLib;
const ModalDialog = imports.ui.modalDialog;
var pict = "r-button";

// что за дичь? где сам _init()? ты ни как не наследуешься что бы иметь его
function ConfirmDialog(){
    this._init();
}

function MyApplet(orientation) {
    this._init(orientation);
}

MyApplet.prototype = {
    __proto__: Applet.IconApplet.prototype,

    _init: function(orientation) {
        Applet.IconApplet.prototype._init.call(this, orientation);
        const self = this; // <-- сюда смотри и читай про области видимости в JS

        try {
            if (GLib.file_test("/usr/share/cinnamon/applets/FireWallApplet@antares127/marker", GLib.FileTest.EXISTS))
            {pict = "g-button";}
            else
            {pict = "r-button";}
            this.set_applet_icon_name(pict);
            this.set_applet_tooltip(_("Кнопка управления Файерволом."));
            this.menuManager = new PopupMenu.PopupMenuManager(this);
            this.menu = new Applet.AppletPopupMenu(this, orientation);
            this.menuManager.addMenu(this.menu);
            this._contentSection = new PopupMenu.PopupMenuSection();
            this.menu.addMenuItem(this._contentSection);

            this.menu.addAction(_("Отключить файервол"), function(event) {
                Util.spawnCommandLine("sudo /usr/share/cinnamon/applets/FireWallApplet@antares127/fw_off.sh");
                pict = "r-button";
                self.set_applet_icon_name(pict); // fix 1
            });

            this.menu.addAction(_("Включить файервол"), function(event) {
                Util.spawnCommandLine("sudo /usr/share/cinnamon/applets/FireWallApplet@antares127/fw_on.sh");
                pict = "g-button";
                self.set_applet_icon_name(pict); // fix 2
            });

            this.menu.addAction(_("Включить файервол и ICMP"), function(event) {
                Util.spawnCommandLine("sudo /usr/share/cinnamon/applets/FireWallApplet@antares127/fw_icmp_all.sh");
                pict = "g-button";
                self.set_applet_icon_name(pict); // fix 3
            });
        }
        catch (e) {
            global.logError(e);
        }
    },
    on_applet_clicked: function(event) {
        this.set_applet_icon_name(pict);
        this.menu.toggle();
    },
};
function main(metadata, orientation) {
    let myApplet = new MyApplet(orientation);
    return myApplet;
}

Исходная версия Noob_Linux, :

Мнение дилетанта

const Cinnamon = imports.gi.Cinnamon;
const Applet = imports.ui.applet;
const Main = imports.ui.main;
const Lang = imports.lang;
const St = imports.gi.St;
const PopupMenu = imports.ui.popupMenu;
const Util = imports.misc.util;
const GLib = imports.gi.GLib;
const ModalDialog = imports.ui.modalDialog;
var pict = "r-button";

// что за дичь? где сам _init()? ты ни как не наследуешься что бы иметь его
function ConfirmDialog(){
    this._init();
}

function MyApplet(orientation) {
    this._init(orientation);
}

MyApplet.prototype = {
    __proto__: Applet.IconApplet.prototype,

    _init: function(orientation) {
        Applet.IconApplet.prototype._init.call(this, orientation);
        const self = this; // <-- сюда смотри и читай про области видимости в JS

        try {
            if (GLib.file_test("/usr/share/cinnamon/applets/FireWallApplet@antares127/marker", GLib.FileTest.EXISTS))
            {pict = "g-button";}
            else
            {pict = "r-button";}
            this.set_applet_icon_name(pict);
            this.set_applet_tooltip(_("Кнопка управления Файерволом."));
            this.menuManager = new PopupMenu.PopupMenuManager(this);
            this.menu = new Applet.AppletPopupMenu(this, orientation);
            this.menuManager.addMenu(this.menu);
            this._contentSection = new PopupMenu.PopupMenuSection();
            this.menu.addMenuItem(this._contentSection);

            this.menu.addAction(_("Отключить файервол"), function(event) {
                Util.spawnCommandLine("sudo /usr/share/cinnamon/applets/FireWallApplet@antares127/fw_off.sh");
                pict = "r-button";
                self.set_applet_icon_name(pict);
            });

            this.menu.addAction(_("Включить файервол"), function(event) {
                Util.spawnCommandLine("sudo /usr/share/cinnamon/applets/FireWallApplet@antares127/fw_on.sh");
                pict = "g-button";
                self.set_applet_icon_name(pict);
            });

            this.menu.addAction(_("Включить файервол и ICMP"), function(event) {
                Util.spawnCommandLine("sudo /usr/share/cinnamon/applets/FireWallApplet@antares127/fw_icmp_all.sh");
                pict = "g-button";
                self.set_applet_icon_name(pict);
            });
        }
        catch (e) {
            global.logError(e);
        }
    },
    on_applet_clicked: function(event) {
        this.set_applet_icon_name(pict);
        this.menu.toggle();
    },
};
function main(metadata, orientation) {
    let myApplet = new MyApplet(orientation);
    return myApplet;
}