gnome-shell-extension-planets/extension.js

71 lines
1.9 KiB
JavaScript

const Main = imports.ui.main;
const MainLoop = imports.mainloop;
const Lang = imports.lang;
const PanelMenu = imports.ui.panelMenu;
const St = imports.gi.St;
const Clutter = imports.gi.Clutter;
function PlanetsExtension(extensionMeta) {
this._init(extensionMeta);
}
PlanetsExtension.prototype = {
__proto__: PanelMenu.Button.prototype,
_init: function(extensionMeta) {
PanelMenu.Button.prototype._init.call(this, 0.0);
this.extensionMeta = extensionMeta;
this._settings = Convenience.getSettings();
this.panelContainer = new St.BoxLayout({style_class: "panel-box"});
this.actor.add_actor(this.panelContainer);
this.actor.add_style_class_name('panel-status-button');
this.panelLabel = new St.Label({
text: 'Planets init…',
y_align: Clutter.ActorAlign.CENTER
});
this.panelContainer.add(this.panelLabel);
this.last_update = 0;
MainLoop.timeout_add(this._settings.get_int("refresh-interval"),
Lang.bind(this, function() {
this.last_update++;
this.panelLabel.set_text("Update count: " + this.last_update);
}));
}
};
function ExtensionController(extensionMeta) {
return {
extensionMeta: extensionMeta,
extension: null,
enable: function() {
this.extension = new PlanetsExtension(this.extensionMeta);
Main.panel.addToStatusArea("planets", this.extension, 0, "right");
},
disable: function() {
this.extension.actor.destroy();
this.extension.destroy();
this.extension = null;
}
};
}
function init(extensionMeta) {
// Do whatever it takes to initialize your extension, like
// initializing the translations. However, never do any widget
// magic here.
// Then return the controller object
return new ExtensionController(extensionMeta);
}