use an Extension class

This commit is contained in:
abakkk 2020-08-31 13:05:41 +02:00
parent 1d95fac3bf
commit 89067a8dd9
3 changed files with 37 additions and 34 deletions

View File

@ -37,7 +37,6 @@ const Main = imports.ui.main;
const Screenshot = imports.ui.screenshot;
const Me = ExtensionUtils.getCurrentExtension();
const Extension = Me.imports.extension;
const Elements = Me.imports.elements;
const Files = Me.imports.files;
const Menu = Me.imports.menu;
@ -759,7 +758,7 @@ var DrawingArea = new Lang.Class({
setPointerCursor: function(pointerCursorName) {
if (!this.currentPointerCursorName || this.currentPointerCursorName != pointerCursorName) {
this.currentPointerCursorName = pointerCursorName;
Extension.setCursor(pointerCursorName);
Me.stateObj.areaManager.setCursor(pointerCursorName);
}
},

View File

@ -1,5 +1,5 @@
/* jslint esversion: 6 */
/* exported manager, init, enable, disable, setCursor */
/* exported init */
/*
* Copyright 2019 Abakkk
@ -48,28 +48,34 @@ const WRITING_ACTION_MODE = Math.pow(2,15);
// use 'login-dialog-message-warning' class in order to get GS theme warning color (default: #f57900)
const WARNING_COLOR_STYLE_CLASS_NAME = 'login-dialog-message-warning';
var manager;
function init() {
Convenience.initTranslations();
return new Extension();
}
function enable() {
if (ExtensionUtils.isOutOfDate(Me))
log(`${Me.metadata.uuid}: GNOME Shell ${Number.parseFloat(GS_VERSION)} is not supported.`);
const Extension = new Lang.Class({
Name: 'DrawOnYourScreenExtension',
Me.settings = Convenience.getSettings();
Me.internalShortcutSettings = Convenience.getSettings(Me.metadata['settings-schema'] + '.internal-shortcuts');
Me.drawingSettings = Convenience.getSettings(Me.metadata['settings-schema'] + '.drawing');
manager = new AreaManager();
}
_init: function() {
Convenience.initTranslations();
},
function disable() {
manager.disable();
manager = null;
delete Me.settings;
delete Me.internalShortcutSettings;
}
enable() {
if (ExtensionUtils.isOutOfDate(Me))
log(`${Me.metadata.uuid}: GNOME Shell ${Number.parseFloat(GS_VERSION)} is not supported.`);
Me.settings = Convenience.getSettings();
Me.internalShortcutSettings = Convenience.getSettings(Me.metadata['settings-schema'] + '.internal-shortcuts');
Me.drawingSettings = Convenience.getSettings(Me.metadata['settings-schema'] + '.drawing');
this.areaManager = new AreaManager();
},
disable() {
this.areaManager.disable();
delete this.areaManager;
delete Me.settings;
delete Me.internalShortcutSettings;
}
});
// AreaManager assigns one DrawingArea per monitor (updateAreas()),
// distributes keybinding callbacks to the active area
@ -337,7 +343,7 @@ const AreaManager = new Lang.Class({
Main.popModal(this.activeArea);
if (source && source == global.display)
this.showOsd(null, 'touchpad-disabled-symbolic', _("Keyboard and pointer released"), null, null, false);
setCursor('DEFAULT');
this.setCursor('DEFAULT');
this.activeArea.reactive = false;
this.removeInternalKeybindings();
} else {
@ -474,6 +480,14 @@ const AreaManager = new Lang.Class({
OsdWindow.HIDE_TIMEOUT = hideTimeoutSave;
},
setCursor: function(cursorName) {
// check display or screen (API changes)
if (global.display.set_cursor)
global.display.set_cursor(Meta.Cursor[cursorName]);
else if (global.screen && global.screen.set_cursor)
global.screen.set_cursor(Meta.Cursor[cursorName]);
},
removeAreas: function() {
for (let i = 0; i < this.areas.length; i++) {
let area = this.areas[i];
@ -564,12 +578,3 @@ const DrawingIndicator = new Lang.Class({
}
});
function setCursor(cursorName) {
// check display or screen (API changes)
if (global.display.set_cursor)
global.display.set_cursor(Meta.Cursor[cursorName]);
else if (global.screen && global.screen.set_cursor)
global.screen.set_cursor(Meta.Cursor[cursorName]);
}

View File

@ -39,7 +39,6 @@ const ExtensionUtils = imports.misc.extensionUtils;
const Me = ExtensionUtils.getCurrentExtension();
const Area = Me.imports.area;
const Elements = Me.imports.elements;
const Extension = Me.imports.extension;
const Files = Me.imports.files;
const _ = imports.gettext.domain(Me.metadata['gettext-domain']).gettext;
@ -210,8 +209,8 @@ var DrawingMenu = new Lang.Class({
imageSection.itemActivated = () => {};
this.imageSection = imageSection;
let manager = Extension.manager;
this._addSimpleSwitchItem(this.menu, _("Hide panel and dock"), manager.hiddenList ? true : false, manager.togglePanelAndDockOpacity.bind(manager));
let areaManager = Me.stateObj.areaManager;
this._addSimpleSwitchItem(this.menu, _("Hide panel and dock"), areaManager.hiddenList ? true : false, areaManager.togglePanelAndDockOpacity.bind(areaManager));
this._addSimpleSwitchItem(this.menu, _("Add a drawing background"), this.area.hasBackground, this.area.toggleBackground.bind(this.area));
this._addSimpleSwitchItem(this.menu, _("Add a grid overlay"), this.area.hasGrid, this.area.toggleGrid.bind(this.area));
this._addSimpleSwitchItem(this.menu, _("Square drawing area"), this.area.isSquareArea, this.area.toggleSquareArea.bind(this.area));
@ -222,7 +221,7 @@ var DrawingMenu = new Lang.Class({
this._addSaveDrawingSubMenuItem(this.menu);
this.menu.addAction(_("Save drawing as a SVG file"), this.area.saveAsSvg.bind(this.area), 'image-x-generic-symbolic');
this.menu.addAction(_("Open preferences"), manager.openPreferences.bind(manager), 'document-page-setup-symbolic');
this.menu.addAction(_("Open preferences"), areaManager.openPreferences.bind(areaManager), 'document-page-setup-symbolic');
this.menu.addAction(_("Show help"), () => { this.close(); this.area.toggleHelp(); }, 'preferences-desktop-keyboard-shortcuts-symbolic');
this._updateActionSensitivity();