77 lines
1.6 KiB
JavaScript
77 lines
1.6 KiB
JavaScript
const GObject = imports.gi.GObject;
|
|
const Unite = imports.misc.extensionUtils.getCurrentExtension();
|
|
const Signals = Unite.imports.handlers.SignalsHandler;
|
|
const Settings = Unite.imports.handlers.SettingsHandler;
|
|
|
|
var BaseModule = new GObject.Class({
|
|
Name: 'UniteBaseModule',
|
|
|
|
_enableKey: null,
|
|
_enableValue: null,
|
|
_disableValue: null,
|
|
|
|
_init() {
|
|
this._signals = new Signals(this);
|
|
this._settings = new Settings(this);
|
|
this._setting = this._settings.get(this._enableKey);
|
|
|
|
this._runCallback('_onInitialize');
|
|
this._activate();
|
|
|
|
this._settings.enable(this._enableKey, 'reload');
|
|
},
|
|
|
|
get _enabled() {
|
|
if (this._enableKey == null)
|
|
return true;
|
|
|
|
if (this._enableValue != null)
|
|
return this._setting == this._enableValue;
|
|
|
|
if (this._disableValue != null)
|
|
return this._setting != this._disableValue;
|
|
},
|
|
|
|
_hasCallback(name) {
|
|
return typeof(this[name]) === 'function';
|
|
},
|
|
|
|
_runCallback(name) {
|
|
if (this._hasCallback(name))
|
|
this[name]();
|
|
},
|
|
|
|
_activate() {
|
|
if (this._enabled)
|
|
this._runCallback('_onActivate');
|
|
},
|
|
|
|
_deactivate() {
|
|
this._runCallback('_onDeactivate');
|
|
|
|
this._settings.disconnectAll();
|
|
this._signals.disconnectAll();
|
|
},
|
|
|
|
_reload() {
|
|
let prevState = this._enabled;
|
|
this._setting = this._settings.get(this._enableKey);
|
|
|
|
if (prevState == this._enabled) {
|
|
this._runCallback('_onReset');
|
|
} else {
|
|
this._deactivate();
|
|
this._activate();
|
|
|
|
this._runCallback('_onReload');
|
|
}
|
|
},
|
|
|
|
destroy() {
|
|
this._deactivate();
|
|
this._runCallback('_onDestroy');
|
|
|
|
this._settings.disable();
|
|
}
|
|
});
|