use an Extension class
This commit is contained in:
parent
1d95fac3bf
commit
89067a8dd9
3
area.js
3
area.js
|
|
@ -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);
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
|||
61
extension.js
61
extension.js
|
|
@ -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]);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
7
menu.js
7
menu.js
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Reference in New Issue