iso-profiles-settings/tromjaro/gnome/live-overlay/etc/skel/.local/share/gnome-shell/extensions/zorin-screen-keyboard-button@zorinos.com/extension.js

85 lines
2.5 KiB
JavaScript

/*
* Zorin Screen Keyboard Button: Show a button to open the Screen
* Keyboard in the panel if a touchscreen is present.
*
* Copyright (C) 2019 Zorin OS Technologies Ltd.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
const St = imports.gi.St;
const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
const Clutter = imports.gi.Clutter;
const Lang = imports.lang;
let _screenKeyboardButton = null;
const ScreenKeyboardButton = new Lang.Class({
Name: 'ScreenKeyboardButton',
Extends: PanelMenu.Button,
_init: function() {
this.parent(null, "Screen Keyboard Button");
let hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
let icon = new St.Icon({ icon_name: 'input-keyboard-symbolic',
style_class: 'system-status-icon' });
hbox.add_child(icon);
this.actor.add_child(hbox);
this.actor.connect('button-press-event', this._toggleKeyboard);
},
_toggleKeyboard: function() {
if (Main.keyboard._keyboardVisible) {
Main.layoutManager.hideKeyboard();
} else {
Main.layoutManager.showKeyboard();
}
}
});
function init() {
}
function _isTouchscreenPresent() {
let deviceManager = Clutter.DeviceManager.get_default();
let result = false;
deviceManager.list_devices().forEach(device => {
if (device.get_device_type() == Clutter.InputDeviceType.TOUCHSCREEN_DEVICE)
result = true;
});
return result;
}
function enable() {
if (_isTouchscreenPresent() && _screenKeyboardButton == null) {
_screenKeyboardButton = new ScreenKeyboardButton();
Main.panel.addToStatusArea('screen-keyboard-button', _screenKeyboardButton, 0);
}
}
function disable() {
if (_screenKeyboardButton) {
_screenKeyboardButton.destroy();
_screenKeyboardButton = null;
}
}