1287 lines
54 KiB
JavaScript
1287 lines
54 KiB
JavaScript
|
/*
|
||
|
* ArcMenu - A traditional application menu for GNOME 3
|
||
|
*
|
||
|
* ArcMenu Lead Developer and Maintainer
|
||
|
* Andrew Zaech https://gitlab.com/AndrewZaech
|
||
|
*
|
||
|
* ArcMenu Founder, Former Maintainer, and Former Graphic Designer
|
||
|
* LinxGem33 https://gitlab.com/LinxGem33 - (No Longer Active)
|
||
|
*
|
||
|
* 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 Me = imports.misc.extensionUtils.getCurrentExtension();
|
||
|
const {Gdk, GdkPixbuf, Gio, GLib, GObject, Gtk} = imports.gi;
|
||
|
const Constants = Me.imports.constants;
|
||
|
const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']);
|
||
|
const Prefs = Me.imports.prefs;
|
||
|
const PW = Me.imports.prefsWidgets;
|
||
|
const Utils = Me.imports.utils;
|
||
|
const _ = Gettext.gettext;
|
||
|
|
||
|
var TweaksPage = GObject.registerClass({
|
||
|
Signals: {
|
||
|
'response': { param_types: [GObject.TYPE_INT] },
|
||
|
},
|
||
|
}, class Arc_Menu_TweaksPage extends Gtk.Box {
|
||
|
_init(settings, layoutName) {
|
||
|
this._settings = settings;
|
||
|
this.addResponse = false;
|
||
|
super._init({
|
||
|
orientation: Gtk.Orientation.VERTICAL,
|
||
|
});
|
||
|
|
||
|
this.layoutNameLabel = new Gtk.Label({
|
||
|
label: "<b>" + _(layoutName) + "</b>",
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true,
|
||
|
halign: Gtk.Align.CENTER
|
||
|
})
|
||
|
|
||
|
let backButton = new PW.Button({
|
||
|
icon_name: 'go-previous-symbolic',
|
||
|
title: _("Back"),
|
||
|
icon_first: true,
|
||
|
});
|
||
|
backButton.halign = Gtk.Align.START;
|
||
|
backButton.connect('clicked', ()=> {
|
||
|
this.emit('response', -20);
|
||
|
});
|
||
|
this.headerBox = new Gtk.Grid({
|
||
|
hexpand: true,
|
||
|
halign: Gtk.Align.FILL,
|
||
|
margin_top: 24,
|
||
|
margin_bottom: 24,
|
||
|
margin_start: 24,
|
||
|
margin_end: 24,
|
||
|
});
|
||
|
|
||
|
this.headerBox.attach(backButton, 0, 0, 1, 1);
|
||
|
this.headerBox.attach(this.layoutNameLabel, 0, 0, 1, 1);
|
||
|
this.mainScrollWindow = new Gtk.ScrolledWindow();
|
||
|
this.mainBox = new Gtk.Box({
|
||
|
orientation: Gtk.Orientation.VERTICAL,
|
||
|
margin_bottom: 24,
|
||
|
margin_start: 24,
|
||
|
margin_end: 24,
|
||
|
spacing: 20,
|
||
|
vexpand: true,
|
||
|
valign: Gtk.Align.FILL
|
||
|
});
|
||
|
|
||
|
this.append(this.headerBox);
|
||
|
this.mainScrollWindow.set_child(this.mainBox);
|
||
|
this.mainScrollWindow.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
|
||
|
this.append(this.mainScrollWindow);
|
||
|
this._createLayout();
|
||
|
}
|
||
|
|
||
|
setActiveLayout(menuLayout, layoutName){
|
||
|
if(layoutName)
|
||
|
this.layoutNameLabel.label = "<b>" + _(layoutName) + "</b>";
|
||
|
let children = [...this.mainBox];
|
||
|
for(let child of children){
|
||
|
this.mainBox.remove(child);
|
||
|
}
|
||
|
this._createLayout(menuLayout);
|
||
|
}
|
||
|
|
||
|
_createLayout(menuLayout) {
|
||
|
if(!menuLayout)
|
||
|
menuLayout = this._settings.get_enum('menu-layout');
|
||
|
|
||
|
if(menuLayout == Constants.MenuLayout.ARCMENU)
|
||
|
this._loadArcMenuTweaks();
|
||
|
else if(menuLayout == Constants.MenuLayout.BRISK)
|
||
|
this._loadBriskMenuTweaks();
|
||
|
else if(menuLayout == Constants.MenuLayout.WHISKER)
|
||
|
this._loadWhiskerMenuTweaks();
|
||
|
else if(menuLayout == Constants.MenuLayout.GNOME_MENU)
|
||
|
this._loadGnomeMenuTweaks();
|
||
|
else if(menuLayout == Constants.MenuLayout.MINT)
|
||
|
this._loadMintMenuTweaks();
|
||
|
else if(menuLayout == Constants.MenuLayout.ELEMENTARY)
|
||
|
this._loadElementaryTweaks();
|
||
|
else if(menuLayout == Constants.MenuLayout.GNOME_OVERVIEW)
|
||
|
this._loadGnomeOverviewTweaks();
|
||
|
else if(menuLayout == Constants.MenuLayout.SIMPLE)
|
||
|
this._loadPlaceHolderTweaks();
|
||
|
else if(menuLayout == Constants.MenuLayout.SIMPLE_2)
|
||
|
this._loadPlaceHolderTweaks();
|
||
|
else if(menuLayout == Constants.MenuLayout.REDMOND)
|
||
|
this._loadRedmondMenuTweaks()
|
||
|
else if(menuLayout == Constants.MenuLayout.UNITY)
|
||
|
this._loadUnityTweaks();
|
||
|
else if(menuLayout == Constants.MenuLayout.RAVEN)
|
||
|
this._loadRavenTweaks();
|
||
|
else if(menuLayout == Constants.MenuLayout.BUDGIE)
|
||
|
this._loadBudgieMenuTweaks();
|
||
|
else if(menuLayout == Constants.MenuLayout.INSIDER)
|
||
|
this._loadInsiderMenuTweaks();
|
||
|
else if(menuLayout == Constants.MenuLayout.RUNNER)
|
||
|
this._loadRunnerMenuTweaks();
|
||
|
else if(menuLayout == Constants.MenuLayout.CHROMEBOOK)
|
||
|
this._loadChromebookTweaks();
|
||
|
else if(menuLayout == Constants.MenuLayout.TOGNEE)
|
||
|
this._loadTogneeMenuTweaks();
|
||
|
else if(menuLayout == Constants.MenuLayout.PLASMA)
|
||
|
this._loadPlasmaMenuTweaks();
|
||
|
else if(menuLayout == Constants.MenuLayout.WINDOWS)
|
||
|
this._loadWindowsTweaks();
|
||
|
else if(menuLayout == Constants.MenuLayout.ELEVEN)
|
||
|
this._loadElevenTweaks();
|
||
|
else
|
||
|
this._loadPlaceHolderTweaks();
|
||
|
}
|
||
|
|
||
|
_createActivateOnHoverRow(){
|
||
|
let activateOnHoverRow = new PW.FrameBoxRow();
|
||
|
let activateOnHoverLabel = new Gtk.Label({
|
||
|
label: _("Category Activation"),
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
});
|
||
|
let activateOnHoverCombo = new Gtk.ComboBoxText({ halign: Gtk.Align.END });
|
||
|
activateOnHoverCombo.append_text(_("Mouse Click"));
|
||
|
activateOnHoverCombo.append_text(_("Mouse Hover"));
|
||
|
if(this._settings.get_boolean('activate-on-hover'))
|
||
|
activateOnHoverCombo.set_active(1);
|
||
|
else
|
||
|
activateOnHoverCombo.set_active(0);
|
||
|
activateOnHoverCombo.connect('changed', (widget) => {
|
||
|
if(widget.get_active()==0)
|
||
|
this._settings.set_boolean('activate-on-hover',false);
|
||
|
if(widget.get_active()==1)
|
||
|
this._settings.set_boolean('activate-on-hover',true);
|
||
|
});
|
||
|
|
||
|
activateOnHoverRow.add(activateOnHoverLabel);
|
||
|
activateOnHoverRow.add(activateOnHoverCombo);
|
||
|
return activateOnHoverRow;
|
||
|
}
|
||
|
_createAvatarShapeRow(){
|
||
|
let avatarStyleRow = new PW.FrameBoxRow();
|
||
|
let avatarStyleLabel = new Gtk.Label({
|
||
|
label: _('Avatar Icon Shape'),
|
||
|
xalign:0,
|
||
|
hexpand: true,
|
||
|
});
|
||
|
let avatarStyleCombo = new Gtk.ComboBoxText({ halign: Gtk.Align.END });
|
||
|
avatarStyleCombo.append_text(_("Circular"));
|
||
|
avatarStyleCombo.append_text(_("Square"));
|
||
|
avatarStyleCombo.set_active(this._settings.get_enum('avatar-style'));
|
||
|
avatarStyleCombo.connect('changed', (widget) => {
|
||
|
this._settings.set_enum('avatar-style', widget.get_active());
|
||
|
this._settings.set_boolean('reload-theme', true);
|
||
|
});
|
||
|
avatarStyleRow.add(avatarStyleLabel);
|
||
|
avatarStyleRow.add(avatarStyleCombo);
|
||
|
return avatarStyleRow;
|
||
|
}
|
||
|
_createSearchBarLocationRow(bottomDefault){
|
||
|
let searchBarLocationSetting = bottomDefault ? 'searchbar-default-bottom-location' : 'searchbar-default-top-location';
|
||
|
|
||
|
let searchbarLocationRow = new PW.FrameBoxRow();
|
||
|
let searchbarLocationLabel = new Gtk.Label({
|
||
|
label: _("Searchbar Location"),
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
});
|
||
|
let searchbarLocationCombo = new Gtk.ComboBoxText({ halign: Gtk.Align.END });
|
||
|
searchbarLocationCombo.append_text(_("Bottom"));
|
||
|
searchbarLocationCombo.append_text(_("Top"));
|
||
|
searchbarLocationCombo.set_active(this._settings.get_enum(searchBarLocationSetting ));
|
||
|
searchbarLocationCombo.connect('changed', (widget) => {
|
||
|
this._settings.set_enum(searchBarLocationSetting , widget.get_active());
|
||
|
});
|
||
|
|
||
|
searchbarLocationRow.add(searchbarLocationLabel);
|
||
|
searchbarLocationRow.add(searchbarLocationCombo);
|
||
|
return searchbarLocationRow;
|
||
|
}
|
||
|
_createFlipHorizontalRow(){
|
||
|
let horizontalFlipRow = new PW.FrameBoxRow();
|
||
|
let horizontalFlipLabel = new Gtk.Label({
|
||
|
label: _("Flip Layout Horizontally"),
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
});
|
||
|
let horizontalFlipSwitch = new Gtk.Switch({ halign: Gtk.Align.END });
|
||
|
horizontalFlipSwitch.set_active(this._settings.get_boolean('enable-horizontal-flip'));
|
||
|
horizontalFlipSwitch.connect('notify::active', (widget) => {
|
||
|
this._settings.set_boolean('enable-horizontal-flip', widget.get_active());
|
||
|
});
|
||
|
horizontalFlipRow.add(horizontalFlipLabel);
|
||
|
horizontalFlipRow.add(horizontalFlipSwitch);
|
||
|
return horizontalFlipRow;
|
||
|
}
|
||
|
_disableAvatarRow(){
|
||
|
let disableAvatarRow = new PW.FrameBoxRow();
|
||
|
let disableAvatarLabel = new Gtk.Label({
|
||
|
label: _('Disable User Avatar'),
|
||
|
xalign:0,
|
||
|
hexpand: true,
|
||
|
});
|
||
|
let disableAvatarSwitch = new Gtk.Switch({ halign: Gtk.Align.END });
|
||
|
disableAvatarSwitch.set_active(this._settings.get_boolean('disable-user-avatar'));
|
||
|
disableAvatarSwitch.connect('notify::active', (widget) => {
|
||
|
this._settings.set_boolean('disable-user-avatar', widget.get_active());
|
||
|
});
|
||
|
disableAvatarRow.add(disableAvatarLabel);
|
||
|
disableAvatarRow.add(disableAvatarSwitch);
|
||
|
return disableAvatarRow;
|
||
|
}
|
||
|
|
||
|
_loadElevenTweaks(){
|
||
|
let elevenTweaksFrame = new PW.FrameBox();
|
||
|
let disableFrequentAppsRow = new PW.FrameBoxRow();
|
||
|
let disableFrequentAppsLabel = new Gtk.Label({
|
||
|
label: _("Disable Frequent Apps"),
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
});
|
||
|
let disableFrequentAppsSwitch = new Gtk.Switch({ halign: Gtk.Align.END });
|
||
|
disableFrequentAppsSwitch.set_active(this._settings.get_boolean('eleven-disable-frequent-apps'));
|
||
|
disableFrequentAppsSwitch.connect('notify::active', (widget) => {
|
||
|
this._settings.set_boolean('eleven-disable-frequent-apps', widget.get_active());
|
||
|
});
|
||
|
disableFrequentAppsRow.add(disableFrequentAppsLabel);
|
||
|
disableFrequentAppsRow.add(disableFrequentAppsSwitch);
|
||
|
elevenTweaksFrame.add(disableFrequentAppsRow);
|
||
|
this.mainBox.append(elevenTweaksFrame);
|
||
|
}
|
||
|
|
||
|
_loadGnomeOverviewTweaks(){
|
||
|
let gnomeOverviewTweaksFrame = new PW.FrameBox();
|
||
|
let appsGridRow = new PW.FrameBoxRow();
|
||
|
let appsGridLabel = new Gtk.Label({
|
||
|
label: _("Show Applications Grid"),
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
});
|
||
|
let appsGridSwitch = new Gtk.Switch({ halign: Gtk.Align.END });
|
||
|
appsGridSwitch.set_active(this._settings.get_boolean('gnome-dash-show-applications'));
|
||
|
appsGridSwitch.connect('notify::active', (widget) => {
|
||
|
this._settings.set_boolean('gnome-dash-show-applications', widget.get_active());
|
||
|
});
|
||
|
appsGridRow.add(appsGridLabel);
|
||
|
appsGridRow.add(appsGridSwitch);
|
||
|
gnomeOverviewTweaksFrame.add(appsGridRow);
|
||
|
this.mainBox.append(gnomeOverviewTweaksFrame);
|
||
|
}
|
||
|
|
||
|
_loadWindowsTweaks(){
|
||
|
let windowsTweaksFrame = new PW.FrameBox();
|
||
|
let frequentAppsRow = new PW.FrameBoxRow();
|
||
|
let frequentAppsLabel = new Gtk.Label({
|
||
|
label: _("Disable Frequent Apps"),
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
});
|
||
|
let frequentAppsSwitch = new Gtk.Switch({ halign: Gtk.Align.END });
|
||
|
frequentAppsSwitch.set_active(this._settings.get_boolean('windows-disable-frequent-apps'));
|
||
|
frequentAppsSwitch.connect('notify::active', (widget) => {
|
||
|
this._settings.set_boolean('windows-disable-frequent-apps', widget.get_active());
|
||
|
});
|
||
|
frequentAppsRow.add(frequentAppsLabel);
|
||
|
frequentAppsRow.add(frequentAppsSwitch);
|
||
|
windowsTweaksFrame.add(frequentAppsRow);
|
||
|
|
||
|
let pinnedAppsRow = new PW.FrameBoxRow();
|
||
|
let pinnedAppsLabel = new Gtk.Label({
|
||
|
label: _("Disable Pinned Apps"),
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
});
|
||
|
let pinnedAppsSwitch = new Gtk.Switch({ halign: Gtk.Align.END });
|
||
|
pinnedAppsSwitch.set_active(this._settings.get_boolean('windows-disable-pinned-apps'));
|
||
|
pinnedAppsSwitch.connect('notify::active', (widget) => {
|
||
|
this._settings.set_boolean('windows-disable-pinned-apps', widget.get_active());
|
||
|
});
|
||
|
pinnedAppsRow.add(pinnedAppsLabel);
|
||
|
pinnedAppsRow.add(pinnedAppsSwitch);
|
||
|
windowsTweaksFrame.add(pinnedAppsRow);
|
||
|
|
||
|
this.mainBox.append(windowsTweaksFrame);
|
||
|
}
|
||
|
|
||
|
_loadPlasmaMenuTweaks(){
|
||
|
let plasmaMenuTweaksFrame = new PW.FrameBox();
|
||
|
|
||
|
let searchBarLocationSetting = 'searchbar-default-top-location';
|
||
|
|
||
|
let searchbarLocationRow = new PW.FrameBoxRow();
|
||
|
let searchbarLocationLabel = new Gtk.Label({
|
||
|
label: _("Searchbar Location"),
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
});
|
||
|
let searchbarLocationCombo = new Gtk.ComboBoxText({ halign: Gtk.Align.END });
|
||
|
searchbarLocationCombo.append_text(_("Bottom"));
|
||
|
searchbarLocationCombo.append_text(_("Top"));
|
||
|
searchbarLocationCombo.set_active(this._settings.get_enum(searchBarLocationSetting));
|
||
|
searchbarLocationCombo.connect('changed', (widget) => {
|
||
|
this._settings.set_enum(searchBarLocationSetting , widget.get_active());
|
||
|
});
|
||
|
|
||
|
searchbarLocationRow.add(searchbarLocationLabel);
|
||
|
searchbarLocationRow.add(searchbarLocationCombo);
|
||
|
plasmaMenuTweaksFrame.add(searchbarLocationRow);
|
||
|
|
||
|
let hoverRow = new PW.FrameBoxRow();
|
||
|
let hoverLabel = new Gtk.Label({
|
||
|
label: _("Activate on Hover"),
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
});
|
||
|
let hoverSwitch = new Gtk.Switch({ halign: Gtk.Align.END });
|
||
|
hoverSwitch.set_active(this._settings.get_boolean('plasma-enable-hover'));
|
||
|
hoverSwitch.connect('notify::active', (widget) => {
|
||
|
this._settings.set_boolean('plasma-enable-hover', widget.get_active());
|
||
|
});
|
||
|
hoverRow.add(hoverLabel);
|
||
|
hoverRow.add(hoverSwitch);
|
||
|
plasmaMenuTweaksFrame.add(hoverRow);
|
||
|
|
||
|
let foregroundColorRow = new PW.FrameBoxRow();
|
||
|
let foregroundColorLabel = new Gtk.Label({
|
||
|
label: _('Selected Button Border Color'),
|
||
|
xalign:0,
|
||
|
hexpand: true,
|
||
|
});
|
||
|
let foregroundColorChooser = new Gtk.ColorButton({use_alpha:true});
|
||
|
let color = new Gdk.RGBA();
|
||
|
color.parse(this._settings.get_string('plasma-selected-color'));
|
||
|
foregroundColorChooser.set_rgba(color);
|
||
|
foregroundColorChooser.connect('color-set', ()=>{
|
||
|
this._settings.set_string('plasma-selected-color', foregroundColorChooser.get_rgba().to_string());
|
||
|
this._settings.set_boolean('reload-theme', true);
|
||
|
});
|
||
|
foregroundColorRow.add(foregroundColorLabel);
|
||
|
foregroundColorRow.add(foregroundColorChooser);
|
||
|
plasmaMenuTweaksFrame.add(foregroundColorRow);
|
||
|
|
||
|
let backgroundColorRow = new PW.FrameBoxRow();
|
||
|
let backgroundColorLabel = new Gtk.Label({
|
||
|
label: _('Selected Button Background Color'),
|
||
|
xalign:0,
|
||
|
hexpand: true,
|
||
|
});
|
||
|
let backgroundColorChooser = new Gtk.ColorButton({use_alpha:true});
|
||
|
color = new Gdk.RGBA();
|
||
|
color.parse(this._settings.get_string('plasma-selected-background-color'));
|
||
|
backgroundColorChooser.set_rgba(color);
|
||
|
backgroundColorChooser.connect('color-set', ()=>{
|
||
|
this._settings.set_string('plasma-selected-background-color',backgroundColorChooser.get_rgba().to_string());
|
||
|
this._settings.set_boolean('reload-theme', true);
|
||
|
});
|
||
|
backgroundColorRow.add(backgroundColorLabel);
|
||
|
backgroundColorRow.add(backgroundColorChooser);
|
||
|
plasmaMenuTweaksFrame.add(backgroundColorRow);
|
||
|
|
||
|
this.mainBox.append(plasmaMenuTweaksFrame);
|
||
|
|
||
|
let resetButton = new Gtk.Button({
|
||
|
label: _("Restore Defaults"),
|
||
|
halign: Gtk.Align.START,
|
||
|
hexpand: true
|
||
|
});
|
||
|
resetButton.set_sensitive(true);
|
||
|
resetButton.connect('clicked', ()=> {
|
||
|
let foregroundColor = this._settings.get_default_value('plasma-selected-color').unpack();
|
||
|
let backgroundColor = this._settings.get_default_value('plasma-selected-background-color').unpack();
|
||
|
let hoverEnabled = this._settings.get_default_value('plasma-enable-hover').unpack();
|
||
|
let showDescriptions = this._settings.get_default_value('apps-show-extra-details').unpack();
|
||
|
this._settings.reset('searchbar-default-top-location');
|
||
|
searchbarLocationCombo.set_active(this._settings.get_enum(searchBarLocationSetting));
|
||
|
hoverSwitch.set_active(hoverEnabled);
|
||
|
color.parse(foregroundColor);
|
||
|
foregroundColorChooser.set_rgba(color);
|
||
|
color.parse(backgroundColor);
|
||
|
backgroundColorChooser.set_rgba(color);
|
||
|
descriptionsSwitch.set_active(showDescriptions);
|
||
|
this._settings.reset('plasma-selected-color');
|
||
|
this._settings.reset('plasma-selected-background-color');
|
||
|
this._settings.reset('plasma-enable-hover');
|
||
|
this._settings.reset('apps-show-extra-details');
|
||
|
this._settings.set_boolean('reload-theme', true);
|
||
|
});
|
||
|
this.mainBox.append(resetButton);
|
||
|
}
|
||
|
_loadBriskMenuTweaks(){
|
||
|
let briskMenuTweaksFrame = new PW.FrameBox();
|
||
|
briskMenuTweaksFrame.add(this._createActivateOnHoverRow());
|
||
|
briskMenuTweaksFrame.add(this._createSearchBarLocationRow());
|
||
|
briskMenuTweaksFrame.add(this._createFlipHorizontalRow());
|
||
|
let pinnedAppsFrame = new PW.FrameBox();
|
||
|
let pinnedAppsScrollWindow = new Gtk.ScrolledWindow();
|
||
|
pinnedAppsScrollWindow.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);
|
||
|
pinnedAppsScrollWindow.set_max_content_height(100);
|
||
|
pinnedAppsScrollWindow.set_min_content_height(100);
|
||
|
|
||
|
let savePinnedAppsButton = new Gtk.Button({
|
||
|
label: _("Save"),
|
||
|
});
|
||
|
savePinnedAppsButton.connect('clicked', ()=> {
|
||
|
let array = [];
|
||
|
for(let x = 0;x < pinnedAppsFrame.count; x++) {
|
||
|
array.push(pinnedAppsFrame.get_index(x)._name);
|
||
|
array.push(pinnedAppsFrame.get_index(x)._icon);
|
||
|
array.push(pinnedAppsFrame.get_index(x)._cmd);
|
||
|
}
|
||
|
this._settings.set_strv('brisk-shortcuts-list',array);
|
||
|
savePinnedAppsButton.set_sensitive(false);
|
||
|
});
|
||
|
savePinnedAppsButton.set_halign(Gtk.Align.END);
|
||
|
savePinnedAppsButton.set_sensitive(false);
|
||
|
|
||
|
this._loadPinnedApps(this._settings.get_strv('brisk-shortcuts-list'), pinnedAppsFrame, savePinnedAppsButton, pinnedAppsScrollWindow);
|
||
|
pinnedAppsScrollWindow.set_child(pinnedAppsFrame);
|
||
|
|
||
|
let pinnedAppsHeaderLabel = new Gtk.Label({
|
||
|
label: "<b>" + _("Brisk Menu Shortcuts") + "</b>",
|
||
|
use_markup: true,
|
||
|
xalign: 0
|
||
|
});
|
||
|
|
||
|
this.mainBox.append(briskMenuTweaksFrame);
|
||
|
this.mainBox.append(pinnedAppsHeaderLabel);
|
||
|
this.mainBox.append(pinnedAppsScrollWindow);
|
||
|
this.mainBox.append(savePinnedAppsButton);
|
||
|
}
|
||
|
_loadChromebookTweaks(){
|
||
|
let chromeBookTweaksFrame = new PW.FrameBox();
|
||
|
chromeBookTweaksFrame.add(this._createSearchBarLocationRow());
|
||
|
this.mainBox.append(chromeBookTweaksFrame);
|
||
|
}
|
||
|
_loadElementaryTweaks(){
|
||
|
let elementaryTweaksFrame = new PW.FrameBox();
|
||
|
elementaryTweaksFrame.add(this._createSearchBarLocationRow());
|
||
|
this.mainBox.append(elementaryTweaksFrame);
|
||
|
}
|
||
|
_loadBudgieMenuTweaks(){
|
||
|
let budgieMenuTweaksFrame = new PW.FrameBox();
|
||
|
budgieMenuTweaksFrame.add(this._createActivateOnHoverRow());
|
||
|
budgieMenuTweaksFrame.add(this._createSearchBarLocationRow());
|
||
|
budgieMenuTweaksFrame.add(this._createFlipHorizontalRow());
|
||
|
|
||
|
let enableActivitiesRow = new PW.FrameBoxRow();
|
||
|
let enableActivitiesLabel = new Gtk.Label({
|
||
|
label: _('Enable Activities Overview Shortcut'),
|
||
|
xalign:0,
|
||
|
hexpand: true,
|
||
|
});
|
||
|
let enableActivitiesSwitch = new Gtk.Switch({ halign: Gtk.Align.END });
|
||
|
enableActivitiesSwitch.set_active(this._settings.get_boolean('enable-activities-shortcut'));
|
||
|
enableActivitiesSwitch.connect('notify::active', (widget) => {
|
||
|
this._settings.set_boolean('enable-activities-shortcut', widget.get_active());
|
||
|
});
|
||
|
enableActivitiesRow.add(enableActivitiesLabel);
|
||
|
enableActivitiesRow.add(enableActivitiesSwitch);
|
||
|
budgieMenuTweaksFrame.add(enableActivitiesRow);
|
||
|
|
||
|
this.mainBox.append(budgieMenuTweaksFrame);
|
||
|
}
|
||
|
_loadRunnerMenuTweaks(){
|
||
|
let runnerMenuTweaksFrame = new PW.FrameBox();
|
||
|
let runnerPositionRow = new PW.FrameBoxRow();
|
||
|
let runnerPositionLabel = new Gtk.Label({
|
||
|
label: _('Position'),
|
||
|
xalign:0,
|
||
|
hexpand: true,
|
||
|
});
|
||
|
let runnerPositionCombo = new Gtk.ComboBoxText({ halign: Gtk.Align.END });
|
||
|
runnerPositionCombo.append_text(_("Top"));
|
||
|
runnerPositionCombo.append_text(_("Centered"));
|
||
|
runnerPositionCombo.set_active(this._settings.get_enum('runner-position'));
|
||
|
runnerPositionCombo.connect('changed', (widget) => {
|
||
|
this._settings.set_enum('runner-position', widget.get_active());
|
||
|
});
|
||
|
runnerPositionRow.add(runnerPositionLabel);
|
||
|
runnerPositionRow.add(runnerPositionCombo);
|
||
|
runnerMenuTweaksFrame.add(runnerPositionRow);
|
||
|
|
||
|
let runnerWidthRow = new PW.FrameBoxRow();
|
||
|
let runnerWidthLabel = new Gtk.Label({
|
||
|
label: _("Width"),
|
||
|
use_markup: true,
|
||
|
hexpand: true,
|
||
|
xalign: 0
|
||
|
});
|
||
|
let runnerWidthScale = new Gtk.Scale({
|
||
|
orientation: Gtk.Orientation.HORIZONTAL,
|
||
|
adjustment: new Gtk.Adjustment({
|
||
|
lower: 300,
|
||
|
upper: 1000,
|
||
|
step_increment: 1,
|
||
|
page_increment: 1,
|
||
|
page_size: 0
|
||
|
}),
|
||
|
digits: 0,
|
||
|
round_digits: 0,
|
||
|
hexpand: true,
|
||
|
draw_value: true,
|
||
|
value_pos: Gtk.PositionType.RIGHT
|
||
|
});
|
||
|
runnerWidthScale.add_mark(500, Gtk.PositionType.TOP, _("Default"));
|
||
|
runnerWidthScale.set_value(this._settings.get_int('runner-menu-width'));
|
||
|
runnerWidthScale.connect('value-changed', (widget) => {
|
||
|
this._settings.set_int('runner-menu-width', widget.get_value());
|
||
|
});
|
||
|
runnerWidthRow.add(runnerWidthLabel);
|
||
|
runnerWidthRow.add(runnerWidthScale);
|
||
|
runnerMenuTweaksFrame.add(runnerWidthRow);
|
||
|
|
||
|
let runnerHeightRow = new PW.FrameBoxRow();
|
||
|
let runnerHeightLabel = new Gtk.Label({
|
||
|
label: _("Height"),
|
||
|
use_markup: true,
|
||
|
hexpand: true,
|
||
|
xalign: 0
|
||
|
});
|
||
|
let runnerHeightScale = new Gtk.Scale({
|
||
|
orientation: Gtk.Orientation.HORIZONTAL,
|
||
|
adjustment: new Gtk.Adjustment({
|
||
|
lower: 300,
|
||
|
upper: 1000,
|
||
|
step_increment: 1,
|
||
|
page_increment: 1,
|
||
|
page_size: 0
|
||
|
}),
|
||
|
digits: 0,
|
||
|
round_digits: 0,
|
||
|
hexpand: true,
|
||
|
draw_value: true,
|
||
|
value_pos: Gtk.PositionType.RIGHT
|
||
|
});
|
||
|
runnerHeightScale.add_mark(400, Gtk.PositionType.TOP, _("Default"));
|
||
|
runnerHeightScale.set_value(this._settings.get_int('runner-menu-height'));
|
||
|
runnerHeightScale.connect('value-changed', (widget) => {
|
||
|
this._settings.set_int('runner-menu-height', widget.get_value());
|
||
|
});
|
||
|
|
||
|
runnerHeightRow.add(runnerHeightLabel);
|
||
|
runnerHeightRow.add(runnerHeightScale);
|
||
|
runnerMenuTweaksFrame.add(runnerHeightRow);
|
||
|
|
||
|
let runnerFontSizeRow = new PW.FrameBoxRow();
|
||
|
let runnerFontSizeLabel = new Gtk.Label({
|
||
|
label: _("Font Size"),
|
||
|
hexpand: true,
|
||
|
use_markup: true,
|
||
|
xalign: 0
|
||
|
});
|
||
|
let runnerFontSizeScale = new Gtk.Scale({
|
||
|
orientation: Gtk.Orientation.HORIZONTAL,
|
||
|
adjustment: new Gtk.Adjustment({
|
||
|
lower: 0,
|
||
|
upper: 30,
|
||
|
step_increment: 1,
|
||
|
page_increment: 1,
|
||
|
page_size: 0
|
||
|
}),
|
||
|
digits: 0,
|
||
|
round_digits: 0,
|
||
|
hexpand: true,
|
||
|
draw_value: true,
|
||
|
value_pos: Gtk.PositionType.RIGHT
|
||
|
});
|
||
|
|
||
|
runnerFontSizeScale.add_mark(0, Gtk.PositionType.TOP, _("Default"));
|
||
|
runnerFontSizeScale.set_value(this._settings.get_int('runner-font-size'));
|
||
|
runnerFontSizeScale.connect('value-changed', (widget) => {
|
||
|
this._settings.set_int('runner-font-size', widget.get_value());
|
||
|
});
|
||
|
runnerFontSizeRow.add(runnerFontSizeLabel);
|
||
|
runnerFontSizeRow.add(runnerFontSizeScale);
|
||
|
runnerMenuTweaksFrame.add(runnerFontSizeRow);
|
||
|
|
||
|
let frequentAppsRow = new PW.FrameBoxRow();
|
||
|
let frequentAppsLabel = new Gtk.Label({
|
||
|
label: _("Show Frequent Apps"),
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
});
|
||
|
|
||
|
let frequentAppsSwitch = new Gtk.Switch();
|
||
|
if(this._settings.get_boolean('runner-show-frequent-apps'))
|
||
|
frequentAppsSwitch.set_active(true);
|
||
|
frequentAppsSwitch.connect('notify::active', (widget) => {
|
||
|
this._settings.set_boolean('runner-show-frequent-apps', widget.get_active());
|
||
|
});
|
||
|
frequentAppsRow.add(frequentAppsLabel);
|
||
|
frequentAppsRow.add(frequentAppsSwitch);
|
||
|
runnerMenuTweaksFrame.add(frequentAppsRow);
|
||
|
|
||
|
let inheritThemeGapRow = new PW.FrameBoxRow();
|
||
|
let inheritThemeGapLabel = new Gtk.Label({
|
||
|
label: _("Inherit Shell Theme Popup Gap"),
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
});
|
||
|
|
||
|
let inheritThemeGapSwitch = new Gtk.Switch();
|
||
|
if(this._settings.get_boolean('runner-use-theme-gap'))
|
||
|
inheritThemeGapSwitch.set_active(true);
|
||
|
inheritThemeGapSwitch.connect('notify::active', (widget) => {
|
||
|
this._settings.set_boolean('runner-use-theme-gap', widget.get_active());
|
||
|
});
|
||
|
inheritThemeGapRow.add(inheritThemeGapLabel);
|
||
|
inheritThemeGapRow.add(inheritThemeGapSwitch);
|
||
|
runnerMenuTweaksFrame.add(inheritThemeGapRow);
|
||
|
|
||
|
this.mainBox.append(runnerMenuTweaksFrame);
|
||
|
}
|
||
|
_loadUnityTweaks(){
|
||
|
let pinnedAppsFrame = new PW.FrameBox();
|
||
|
let generalTweaksFrame = new PW.FrameBox();
|
||
|
let homeScreenRow = new PW.FrameBoxRow();
|
||
|
let homeScreenLabel = new Gtk.Label({
|
||
|
label: _('Default View'),
|
||
|
xalign:0,
|
||
|
hexpand: true,
|
||
|
});
|
||
|
let homeScreenCombo = new Gtk.ComboBoxText({ halign: Gtk.Align.END });
|
||
|
homeScreenCombo.append_text(_("Home Screen"));
|
||
|
homeScreenCombo.append_text(_("All Programs"));
|
||
|
let homeScreen = this._settings.get_boolean('enable-unity-homescreen');
|
||
|
homeScreenCombo.set_active(homeScreen ? 0 : 1);
|
||
|
homeScreenCombo.connect('changed', (widget) => {
|
||
|
let enable = widget.get_active() ==0 ? true : false;
|
||
|
this._settings.set_boolean('enable-unity-homescreen', enable);
|
||
|
});
|
||
|
homeScreenRow.add(homeScreenLabel);
|
||
|
homeScreenRow.add(homeScreenCombo);
|
||
|
generalTweaksFrame.add(homeScreenRow);
|
||
|
this.mainBox.append(generalTweaksFrame);
|
||
|
|
||
|
let widgetFrame = this._createWidgetsRows(Constants.MenuLayout.UNITY);
|
||
|
this.mainBox.append(widgetFrame);
|
||
|
|
||
|
let pinnedAppsScrollWindow = new Gtk.ScrolledWindow({
|
||
|
vexpand: true,
|
||
|
valign: Gtk.Align.FILL
|
||
|
});
|
||
|
pinnedAppsScrollWindow.set_min_content_height(400);
|
||
|
pinnedAppsScrollWindow.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);
|
||
|
|
||
|
let savePinnedAppsButton = new Gtk.Button({
|
||
|
label: _("Save"),
|
||
|
});
|
||
|
savePinnedAppsButton.connect('clicked', ()=> {
|
||
|
let array = [];
|
||
|
for(let x = 0;x < pinnedAppsFrame.count; x++) {
|
||
|
array.push(pinnedAppsFrame.get_index(x)._name);
|
||
|
array.push(pinnedAppsFrame.get_index(x)._icon);
|
||
|
array.push(pinnedAppsFrame.get_index(x)._cmd);
|
||
|
}
|
||
|
this._settings.set_strv('unity-pinned-app-list',array);
|
||
|
savePinnedAppsButton.set_sensitive(false);
|
||
|
});
|
||
|
savePinnedAppsButton.set_halign(Gtk.Align.END);
|
||
|
savePinnedAppsButton.set_sensitive(false);
|
||
|
|
||
|
this._loadPinnedApps(this._settings.get_strv('unity-pinned-app-list'), pinnedAppsFrame, savePinnedAppsButton, pinnedAppsScrollWindow);
|
||
|
pinnedAppsScrollWindow.set_child(pinnedAppsFrame);
|
||
|
|
||
|
let pinnedAppsHeaderLabel = new Gtk.Label({
|
||
|
label: "<b>" + _("Unity Layout Buttons") + "</b>",
|
||
|
use_markup: true,
|
||
|
xalign: 0
|
||
|
});
|
||
|
this.mainBox.append(pinnedAppsHeaderLabel);
|
||
|
this.mainBox.append(pinnedAppsScrollWindow);
|
||
|
this.mainBox.append(savePinnedAppsButton);
|
||
|
|
||
|
let pinnedAppsSeparatorHeaderLabel = new Gtk.Label({
|
||
|
label: "<b>" + _("Button Separator Position") + "</b>",
|
||
|
use_markup: true,
|
||
|
xalign: 0
|
||
|
});
|
||
|
this.mainBox.append(pinnedAppsSeparatorHeaderLabel);
|
||
|
|
||
|
let pinnedAppsSeparatorFrame = new PW.FrameBox();
|
||
|
let pinnedAppsSeparatorRow = new PW.FrameBoxRow();
|
||
|
let pinnedAppsSeparatorLabel = new Gtk.Label({
|
||
|
label: _("Separator Position"),
|
||
|
use_markup: true,
|
||
|
xalign: 0
|
||
|
});
|
||
|
let pinnedAppsSeparatorScale = new Gtk.Scale({
|
||
|
orientation: Gtk.Orientation.HORIZONTAL,
|
||
|
adjustment: new Gtk.Adjustment({lower: 0, upper: 7, step_increment: 1, page_increment: 1, page_size: 0}),
|
||
|
digits: 0, round_digits: 0, hexpand: true,
|
||
|
draw_value: true
|
||
|
});
|
||
|
pinnedAppsSeparatorScale.add_mark(0, Gtk.PositionType.BOTTOM, _("None"));
|
||
|
pinnedAppsSeparatorScale.set_value(this._settings.get_int('unity-separator-index'));
|
||
|
pinnedAppsSeparatorScale.connect('value-changed', (widget) => {
|
||
|
this._settings.set_int('unity-separator-index', widget.get_value());
|
||
|
});
|
||
|
|
||
|
let infoButton = new PW.Button({
|
||
|
icon_name: 'info-circle-symbolic'
|
||
|
});
|
||
|
infoButton.connect('clicked', ()=> {
|
||
|
let dialog = new PW.MessageDialog({
|
||
|
text: _('Adjust the position of the separator in the button panel'),
|
||
|
buttons: Gtk.ButtonsType.OK,
|
||
|
transient_for: this.get_root()
|
||
|
});
|
||
|
dialog.connect ('response', ()=> dialog.destroy());
|
||
|
dialog.show();
|
||
|
});
|
||
|
|
||
|
pinnedAppsSeparatorRow.add(pinnedAppsSeparatorLabel);
|
||
|
pinnedAppsSeparatorRow.add(pinnedAppsSeparatorScale);
|
||
|
pinnedAppsSeparatorRow.add(infoButton);
|
||
|
pinnedAppsSeparatorFrame.add(pinnedAppsSeparatorRow);
|
||
|
this.mainBox.append(pinnedAppsSeparatorFrame);
|
||
|
}
|
||
|
_loadRavenTweaks(){
|
||
|
let generalTweaksFrame = new PW.FrameBox();
|
||
|
let homeScreenRow = new PW.FrameBoxRow();
|
||
|
let homeScreenLabel = new Gtk.Label({
|
||
|
label: _('Default View'),
|
||
|
xalign:0,
|
||
|
hexpand: true,
|
||
|
});
|
||
|
let homeScreenCombo = new Gtk.ComboBoxText({ halign: Gtk.Align.END });
|
||
|
homeScreenCombo.append_text(_("Home Screen"));
|
||
|
homeScreenCombo.append_text(_("All Programs"));
|
||
|
let homeScreen = this._settings.get_boolean('enable-unity-homescreen');
|
||
|
homeScreenCombo.set_active(homeScreen ? 0 : 1);
|
||
|
homeScreenCombo.connect('changed', (widget) => {
|
||
|
let enable = widget.get_active() ==0 ? true : false;
|
||
|
this._settings.set_boolean('enable-unity-homescreen', enable);
|
||
|
});
|
||
|
homeScreenRow.add(homeScreenLabel);
|
||
|
homeScreenRow.add(homeScreenCombo);
|
||
|
generalTweaksFrame.add(homeScreenRow);
|
||
|
this.mainBox.append(generalTweaksFrame);
|
||
|
|
||
|
let ravenPositionRow = new PW.FrameBoxRow();
|
||
|
let ravenPositionLabel = new Gtk.Label({
|
||
|
label: _('Position on Monitor'),
|
||
|
xalign:0,
|
||
|
hexpand: true,
|
||
|
});
|
||
|
let ravenPositionCombo = new Gtk.ComboBoxText({ halign: Gtk.Align.END });
|
||
|
ravenPositionCombo.append_text(_("Left"));
|
||
|
ravenPositionCombo.append_text(_("Right"));
|
||
|
let ravenPosition = this._settings.get_enum('raven-position');
|
||
|
ravenPositionCombo.set_active(ravenPosition);
|
||
|
ravenPositionCombo.connect('changed', (widget) => {
|
||
|
this._settings.set_enum('raven-position', widget.get_active());
|
||
|
});
|
||
|
ravenPositionRow.add(ravenPositionLabel);
|
||
|
ravenPositionRow.add(ravenPositionCombo);
|
||
|
generalTweaksFrame.add(ravenPositionRow);
|
||
|
generalTweaksFrame.add(this._createActivateOnHoverRow());
|
||
|
let widgetFrame = this._createWidgetsRows(Constants.MenuLayout.RAVEN);
|
||
|
this.mainBox.append(widgetFrame);
|
||
|
}
|
||
|
_loadMintMenuTweaks(){
|
||
|
let mintMenuTweaksFrame = new PW.FrameBox();
|
||
|
mintMenuTweaksFrame.add(this._createActivateOnHoverRow());
|
||
|
mintMenuTweaksFrame.add(this._createSearchBarLocationRow());
|
||
|
mintMenuTweaksFrame.add(this._createFlipHorizontalRow());
|
||
|
this.mainBox.append(mintMenuTweaksFrame);
|
||
|
|
||
|
let pinnedAppsHeaderLabel = new Gtk.Label({
|
||
|
label: "<b>" + _("Mint Layout Shortcuts") + "</b>",
|
||
|
use_markup: true,
|
||
|
xalign: 0
|
||
|
});
|
||
|
this.mainBox.append(pinnedAppsHeaderLabel);
|
||
|
|
||
|
let pinnedAppsFrame = new PW.FrameBox();
|
||
|
let pinnedAppsScrollWindow = new Gtk.ScrolledWindow();
|
||
|
pinnedAppsScrollWindow.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);
|
||
|
pinnedAppsScrollWindow.set_min_content_height(400);
|
||
|
let savePinnedAppsButton = new Gtk.Button({
|
||
|
label: _("Save"),
|
||
|
});
|
||
|
savePinnedAppsButton.connect('clicked', ()=> {
|
||
|
let array = [];
|
||
|
for(let x = 0;x < pinnedAppsFrame.count; x++) {
|
||
|
array.push(pinnedAppsFrame.get_index(x)._name);
|
||
|
array.push(pinnedAppsFrame.get_index(x)._icon);
|
||
|
array.push(pinnedAppsFrame.get_index(x)._cmd);
|
||
|
}
|
||
|
this._settings.set_strv('mint-pinned-app-list',array);
|
||
|
savePinnedAppsButton.set_sensitive(false);
|
||
|
});
|
||
|
savePinnedAppsButton.set_halign(Gtk.Align.END);
|
||
|
savePinnedAppsButton.set_sensitive(false);
|
||
|
|
||
|
this._loadPinnedApps(this._settings.get_strv('mint-pinned-app-list'), pinnedAppsFrame, savePinnedAppsButton, pinnedAppsScrollWindow);
|
||
|
pinnedAppsScrollWindow.set_child(pinnedAppsFrame);
|
||
|
this.mainBox.append(pinnedAppsScrollWindow);
|
||
|
|
||
|
this.mainBox.append(savePinnedAppsButton);
|
||
|
|
||
|
let pinnedAppsSeparatorHeaderLabel = new Gtk.Label({
|
||
|
label: "<b>" + _("Shortcut Separator Position") + "</b>",
|
||
|
use_markup: true,
|
||
|
xalign: 0
|
||
|
});
|
||
|
this.mainBox.append(pinnedAppsSeparatorHeaderLabel);
|
||
|
|
||
|
let pinnedAppsSeparatorFrame = new PW.FrameBox();
|
||
|
let pinnedAppsSeparatorRow = new PW.FrameBoxRow();
|
||
|
let pinnedAppsSeparatorLabel = new Gtk.Label({
|
||
|
label: _("Separator Position"),
|
||
|
use_markup: true,
|
||
|
xalign: 0
|
||
|
});
|
||
|
let pinnedAppsSeparatorScale = new Gtk.Scale({
|
||
|
orientation: Gtk.Orientation.HORIZONTAL,
|
||
|
adjustment: new Gtk.Adjustment({lower: 0, upper: 7, step_increment: 1, page_increment: 1, page_size: 0}),
|
||
|
digits: 0, round_digits: 0, hexpand: true,
|
||
|
draw_value: true,
|
||
|
});
|
||
|
pinnedAppsSeparatorScale.add_mark(0, Gtk.PositionType.BOTTOM, _("None"));
|
||
|
pinnedAppsSeparatorScale.set_value(this._settings.get_int('mint-separator-index'));
|
||
|
pinnedAppsSeparatorScale.connect('value-changed', (widget) => {
|
||
|
this._settings.set_int('mint-separator-index', widget.get_value());
|
||
|
});
|
||
|
|
||
|
let infoButton = new PW.Button({
|
||
|
icon_name: 'info-circle-symbolic'
|
||
|
});
|
||
|
infoButton.connect('clicked', ()=> {
|
||
|
let dialog = new PW.MessageDialog({
|
||
|
text: _('Adjust the position of the separator in the button panel'),
|
||
|
buttons: Gtk.ButtonsType.OK,
|
||
|
transient_for: this.get_root()
|
||
|
});
|
||
|
dialog.connect ('response', ()=> dialog.destroy());
|
||
|
dialog.show();
|
||
|
});
|
||
|
|
||
|
pinnedAppsSeparatorRow.add(pinnedAppsSeparatorLabel);
|
||
|
pinnedAppsSeparatorRow.add(pinnedAppsSeparatorScale);
|
||
|
pinnedAppsSeparatorRow.add(infoButton);
|
||
|
pinnedAppsSeparatorFrame.add(pinnedAppsSeparatorRow);
|
||
|
this.mainBox.append(pinnedAppsSeparatorFrame);
|
||
|
}
|
||
|
_loadPinnedApps(array,frame, savePinnedAppsButton, scrollWindow) {
|
||
|
for(let i = 0; i < array.length; i += 3) {
|
||
|
let frameRow = new PW.FrameBoxDragRow(scrollWindow);
|
||
|
frameRow._name = array[i];
|
||
|
frameRow._icon = Prefs.getIconPath([array[i], array[i+1], array[i+2]]);
|
||
|
frameRow._cmd = array[i+2];
|
||
|
frameRow.saveButton = savePinnedAppsButton;
|
||
|
frameRow.hasEditButton = true;
|
||
|
let iconString;
|
||
|
if(frameRow._icon === "" && Gio.DesktopAppInfo.new(frameRow._cmd)){
|
||
|
iconString = Gio.DesktopAppInfo.new(frameRow._cmd).get_icon() ? Gio.DesktopAppInfo.new(frameRow._cmd).get_icon().to_string() : "";
|
||
|
}
|
||
|
frameRow._gicon = Gio.icon_new_for_string(iconString ? iconString : frameRow._icon);
|
||
|
let arcMenuImage = new Gtk.Image( {
|
||
|
gicon: frameRow._gicon,
|
||
|
pixel_size: 22
|
||
|
});
|
||
|
|
||
|
let arcMenuImageBox = new Gtk.Box({
|
||
|
margin_start: 0,
|
||
|
hexpand: false,
|
||
|
vexpand: false,
|
||
|
spacing: 5,
|
||
|
});
|
||
|
let dragImage = new Gtk.Image( {
|
||
|
gicon: Gio.icon_new_for_string("drag-symbolic"),
|
||
|
pixel_size: 12
|
||
|
});
|
||
|
arcMenuImageBox.append(dragImage);
|
||
|
arcMenuImageBox.append(arcMenuImage);
|
||
|
frameRow.add(arcMenuImageBox);
|
||
|
|
||
|
let frameLabel = new Gtk.Label({
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
});
|
||
|
|
||
|
frameLabel.label = _(frameRow._name);
|
||
|
frameRow.add(frameLabel);
|
||
|
|
||
|
Prefs.checkIfValidShortcut(frameRow, frameLabel, arcMenuImage);
|
||
|
|
||
|
let buttonBox = new PW.EditEntriesBox({
|
||
|
frameRow: frameRow,
|
||
|
frame: frame,
|
||
|
buttons: [savePinnedAppsButton],
|
||
|
modifyButton: true,
|
||
|
changeButton: true
|
||
|
});
|
||
|
|
||
|
buttonBox.connect('change', ()=> {
|
||
|
let dialog = new Prefs.AddAppsToPinnedListWindow(this._settings, this, Constants.DiaglogType.OTHER);
|
||
|
dialog.show();
|
||
|
dialog.connect('response', ()=> {
|
||
|
if(dialog.get_response()) {
|
||
|
let newPinnedApps = dialog.get_newPinnedAppsArray();
|
||
|
frameRow._name = newPinnedApps[0];
|
||
|
frameRow._icon = newPinnedApps[1];
|
||
|
frameRow._cmd = newPinnedApps[2];
|
||
|
frameLabel.label = _(frameRow._name);
|
||
|
let iconString;
|
||
|
if(frameRow._icon === "" && Gio.DesktopAppInfo.new(frameRow._cmd)){
|
||
|
iconString = Gio.DesktopAppInfo.new(frameRow._cmd).get_icon() ? Gio.DesktopAppInfo.new(frameRow._cmd).get_icon().to_string() : "";
|
||
|
}
|
||
|
let icon = Prefs.getIconPath(newPinnedApps);
|
||
|
arcMenuImage.gicon = Gio.icon_new_for_string(iconString ? iconString : icon);
|
||
|
dialog.destroy();
|
||
|
frame.show();
|
||
|
savePinnedAppsButton.set_sensitive(true);
|
||
|
}
|
||
|
else
|
||
|
dialog.destroy();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
buttonBox.connect('modify', ()=> {
|
||
|
let appArray = [frameRow._name,frameRow._icon,frameRow._cmd];
|
||
|
let dialog = new Prefs.AddCustomLinkDialogWindow(this._settings, this, Constants.DiaglogType.OTHER, true, appArray);
|
||
|
dialog.show();
|
||
|
dialog.connect('response', ()=> {
|
||
|
if(dialog.get_response()) {
|
||
|
let newPinnedApps = dialog.get_newPinnedAppsArray();
|
||
|
frameRow._name = newPinnedApps[0];
|
||
|
frameRow._icon = newPinnedApps[1];
|
||
|
frameRow._cmd = newPinnedApps[2];
|
||
|
frameLabel.label = _(frameRow._name);
|
||
|
let iconString;
|
||
|
if(frameRow._icon === "" && Gio.DesktopAppInfo.new(frameRow._cmd)){
|
||
|
iconString = Gio.DesktopAppInfo.new(frameRow._cmd).get_icon() ? Gio.DesktopAppInfo.new(frameRow._cmd).get_icon().to_string() : "";
|
||
|
}
|
||
|
arcMenuImage.gicon = Gio.icon_new_for_string(iconString ? iconString : frameRow._icon);
|
||
|
dialog.destroy();
|
||
|
frame.show();
|
||
|
savePinnedAppsButton.set_sensitive(true);
|
||
|
}
|
||
|
else
|
||
|
dialog.destroy();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
frameRow.add(buttonBox);
|
||
|
frame.add(frameRow);
|
||
|
}
|
||
|
}
|
||
|
_loadWhiskerMenuTweaks(){
|
||
|
let whiskerMenuTweaksFrame = new PW.FrameBox();
|
||
|
whiskerMenuTweaksFrame.add(this._createActivateOnHoverRow());
|
||
|
whiskerMenuTweaksFrame.add(this._createAvatarShapeRow());
|
||
|
whiskerMenuTweaksFrame.add(this._createSearchBarLocationRow());
|
||
|
whiskerMenuTweaksFrame.add(this._createFlipHorizontalRow());
|
||
|
this.mainBox.append(whiskerMenuTweaksFrame);
|
||
|
}
|
||
|
_loadRedmondMenuTweaks(){
|
||
|
let redmondMenuTweaksFrame = new PW.FrameBox();
|
||
|
redmondMenuTweaksFrame.add(this._createSearchBarLocationRow());
|
||
|
|
||
|
redmondMenuTweaksFrame.add(this._createFlipHorizontalRow());
|
||
|
redmondMenuTweaksFrame.add(this._createAvatarShapeRow());
|
||
|
redmondMenuTweaksFrame.add(this._disableAvatarRow());
|
||
|
|
||
|
let placesFrame = new PW.FrameBox();
|
||
|
let externalDeviceRow = new PW.FrameBoxRow();
|
||
|
let externalDeviceLabel = new Gtk.Label({
|
||
|
label: _("External Devices"),
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
});
|
||
|
|
||
|
let externalDeviceButton = new Gtk.Switch();
|
||
|
if(this._settings.get_boolean('show-external-devices'))
|
||
|
externalDeviceButton.set_active(true);
|
||
|
externalDeviceButton.connect('notify::active', (widget) => {
|
||
|
this._settings.set_boolean('show-external-devices', widget.get_active());
|
||
|
});
|
||
|
externalDeviceRow.add(externalDeviceLabel);
|
||
|
externalDeviceRow.add(externalDeviceButton);
|
||
|
|
||
|
placesFrame.add(externalDeviceRow);
|
||
|
|
||
|
let bookmarksRow = new PW.FrameBoxRow();
|
||
|
let bookmarksLabel = new Gtk.Label({
|
||
|
label: _("Bookmarks"),
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
});
|
||
|
|
||
|
let bookmarksButton = new Gtk.Switch();
|
||
|
if(this._settings.get_boolean('show-bookmarks'))
|
||
|
bookmarksButton.set_active(true);
|
||
|
bookmarksButton.connect('notify::active', (widget) => {
|
||
|
this._settings.set_boolean('show-bookmarks', widget.get_active());
|
||
|
});
|
||
|
bookmarksRow.add(bookmarksLabel);
|
||
|
bookmarksRow.add(bookmarksButton);
|
||
|
|
||
|
placesFrame.add(bookmarksRow);
|
||
|
this.mainBox.append(redmondMenuTweaksFrame);
|
||
|
this.mainBox.append(new Gtk.Label({
|
||
|
label: "<b>" + _("Extra Shortcuts") + "</b>",
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
}));
|
||
|
this.mainBox.append(placesFrame);
|
||
|
|
||
|
}
|
||
|
_loadInsiderMenuTweaks(){
|
||
|
let insiderMenuTweaksFrame = new PW.FrameBox();
|
||
|
insiderMenuTweaksFrame.add(this._createAvatarShapeRow());
|
||
|
this.mainBox.append(insiderMenuTweaksFrame);
|
||
|
}
|
||
|
_loadGnomeMenuTweaks(){
|
||
|
let gnomeMenuTweaksFrame = new PW.FrameBox();
|
||
|
gnomeMenuTweaksFrame.add(this._createActivateOnHoverRow());
|
||
|
gnomeMenuTweaksFrame.add(this._createFlipHorizontalRow());
|
||
|
this.mainBox.append(gnomeMenuTweaksFrame);
|
||
|
}
|
||
|
_loadPlaceHolderTweaks(){
|
||
|
let placeHolderFrame = new PW.FrameBox();
|
||
|
let placeHolderRow = new PW.FrameBoxRow();
|
||
|
let placeHolderLabel = new Gtk.Label({
|
||
|
label: _("Nothing Yet!"),
|
||
|
use_markup: true,
|
||
|
halign: Gtk.Align.CENTER,
|
||
|
hexpand: true
|
||
|
});
|
||
|
placeHolderRow.add(placeHolderLabel);
|
||
|
placeHolderFrame.add(placeHolderRow);
|
||
|
this.mainBox.append(placeHolderFrame);
|
||
|
}
|
||
|
_loadTogneeMenuTweaks(){
|
||
|
let togneeMenuTweaksFrame = new PW.FrameBox();
|
||
|
let searchBarBottomDefault = true;
|
||
|
let defaultLeftBoxRow = new PW.FrameBoxRow();
|
||
|
let defaultLeftBoxLabel = new Gtk.Label({
|
||
|
label: _("Default View"),
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
});
|
||
|
let defaultLeftBoxCombo = new Gtk.ComboBoxText({
|
||
|
halign: Gtk.Align.END
|
||
|
});
|
||
|
defaultLeftBoxCombo.append_text(_("Categories List"));
|
||
|
defaultLeftBoxCombo.append_text(_("All Programs"));
|
||
|
defaultLeftBoxCombo.set_active(this._settings.get_enum('default-menu-view-tognee'));
|
||
|
defaultLeftBoxCombo.connect('changed', (widget) => {
|
||
|
this._settings.set_enum('default-menu-view-tognee', widget.get_active());
|
||
|
});
|
||
|
|
||
|
defaultLeftBoxRow.add(defaultLeftBoxLabel);
|
||
|
defaultLeftBoxRow.add(defaultLeftBoxCombo);
|
||
|
togneeMenuTweaksFrame.add(defaultLeftBoxRow);
|
||
|
togneeMenuTweaksFrame.add(this._createSearchBarLocationRow(searchBarBottomDefault));
|
||
|
togneeMenuTweaksFrame.add(this._createFlipHorizontalRow());
|
||
|
this.mainBox.append(togneeMenuTweaksFrame);
|
||
|
}
|
||
|
_loadArcMenuTweaks(){
|
||
|
let arcMenuTweaksFrame = new PW.FrameBox();
|
||
|
let defaultLeftBoxRow = new PW.FrameBoxRow();
|
||
|
let defaultLeftBoxLabel = new Gtk.Label({
|
||
|
label: _("Default View"),
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
});
|
||
|
let defaultLeftBoxCombo = new Gtk.ComboBoxText({
|
||
|
halign: Gtk.Align.END,
|
||
|
});
|
||
|
defaultLeftBoxCombo.append_text(_("Pinned Apps"));
|
||
|
defaultLeftBoxCombo.append_text(_("Categories List"));
|
||
|
defaultLeftBoxCombo.append_text(_("Frequent Apps"));
|
||
|
defaultLeftBoxCombo.append_text(_("All Programs"));
|
||
|
defaultLeftBoxCombo.set_active(this._settings.get_enum('default-menu-view'));
|
||
|
defaultLeftBoxCombo.connect('changed', (widget) => {
|
||
|
this._settings.set_enum('default-menu-view', widget.get_active());
|
||
|
});
|
||
|
|
||
|
defaultLeftBoxRow.add(defaultLeftBoxLabel);
|
||
|
defaultLeftBoxRow.add(defaultLeftBoxCombo);
|
||
|
arcMenuTweaksFrame.add(defaultLeftBoxRow);
|
||
|
|
||
|
let searchBarBottomDefault = true;
|
||
|
arcMenuTweaksFrame.add(this._createSearchBarLocationRow(searchBarBottomDefault));
|
||
|
arcMenuTweaksFrame.add(this._createFlipHorizontalRow());
|
||
|
arcMenuTweaksFrame.add(this._createAvatarShapeRow());
|
||
|
arcMenuTweaksFrame.add(this._disableAvatarRow());
|
||
|
|
||
|
let placesFrame = new PW.FrameBox();
|
||
|
let externalDeviceRow = new PW.FrameBoxRow();
|
||
|
let externalDeviceLabel = new Gtk.Label({
|
||
|
label: _("External Devices"),
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
});
|
||
|
|
||
|
let externalDeviceButton = new Gtk.Switch();
|
||
|
if(this._settings.get_boolean('show-external-devices'))
|
||
|
externalDeviceButton.set_active(true);
|
||
|
externalDeviceButton.connect('notify::active', (widget) => {
|
||
|
this._settings.set_boolean('show-external-devices', widget.get_active());
|
||
|
});
|
||
|
externalDeviceRow.add(externalDeviceLabel);
|
||
|
externalDeviceRow.add(externalDeviceButton);
|
||
|
|
||
|
placesFrame.add(externalDeviceRow);
|
||
|
|
||
|
let bookmarksRow = new PW.FrameBoxRow();
|
||
|
let bookmarksLabel = new Gtk.Label({
|
||
|
label: _("Bookmarks"),
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
});
|
||
|
|
||
|
let bookmarksButton = new Gtk.Switch();
|
||
|
if(this._settings.get_boolean('show-bookmarks'))
|
||
|
bookmarksButton.set_active(true);
|
||
|
bookmarksButton.connect('notify::active', (widget) => {
|
||
|
this._settings.set_boolean('show-bookmarks', widget.get_active());
|
||
|
});
|
||
|
bookmarksRow.add(bookmarksLabel);
|
||
|
bookmarksRow.add(bookmarksButton);
|
||
|
|
||
|
placesFrame.add(bookmarksRow);
|
||
|
this.mainBox.append(arcMenuTweaksFrame);
|
||
|
|
||
|
let extraCategoriesFrame = new PW.FrameBox();
|
||
|
let extraCategoriesRow = new PW.FrameBoxRow();
|
||
|
let extraCategoriesButtonRow = new PW.FrameBoxRow();
|
||
|
let extraCategoriesLocationRow = new PW.FrameBoxRow();
|
||
|
this.mainBox.append(new Gtk.Label({
|
||
|
label: "<b>" + _("Extra Shortcuts") + "</b>",
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
}));
|
||
|
this.mainBox.append(placesFrame);
|
||
|
this.mainBox.append(new Gtk.Label({
|
||
|
label: "<b>" + _("Extra Categories Quick Links") + "</b>"
|
||
|
+ "\n" + '<span size="small">' + _("Display quick links of extra categories on the home page") + "</span>"
|
||
|
+ "\n" + '<span size="small">' + _("See Customize Menu -> Extra Categories") + "</span>",
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
}));
|
||
|
let extraCategoriesLinksBox = new Prefs.MenuSettingsCategoriesPage(this._settings, "arcmenu-extra-categories-links");
|
||
|
extraCategoriesLinksBox.categoriesFrame.unparent();
|
||
|
extraCategoriesLinksBox.buttonRow.unparent();
|
||
|
extraCategoriesRow.add(extraCategoriesLinksBox.categoriesFrame);
|
||
|
extraCategoriesLinksBox.categoriesFrame.hexpand = true;
|
||
|
extraCategoriesLinksBox.categoriesFrame.halign = Gtk.Align.FILL;
|
||
|
extraCategoriesButtonRow.add(extraCategoriesLinksBox.buttonRow);
|
||
|
extraCategoriesFrame.add(extraCategoriesRow);
|
||
|
extraCategoriesFrame.add(extraCategoriesButtonRow);
|
||
|
|
||
|
this.mainBox.append(extraCategoriesFrame);
|
||
|
|
||
|
let extraCategoriesLocationFrame = new PW.FrameBox();
|
||
|
let extraCategoriesLocationLabel = new Gtk.Label({
|
||
|
label: _("Quick Links Location"),
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
});
|
||
|
|
||
|
let extraCategoriesLocationCombo = new Gtk.ComboBoxText({ halign: Gtk.Align.END });
|
||
|
extraCategoriesLocationCombo.append_text(_("Bottom"));
|
||
|
extraCategoriesLocationCombo.append_text(_("Top"));
|
||
|
extraCategoriesLocationCombo.set_active(this._settings.get_enum('arcmenu-extra-categories-links-location'));
|
||
|
extraCategoriesLocationCombo.connect('changed', (widget) => {
|
||
|
this._settings.set_enum('arcmenu-extra-categories-links-location' , widget.get_active());
|
||
|
});
|
||
|
|
||
|
extraCategoriesLocationRow.add(extraCategoriesLocationLabel);
|
||
|
extraCategoriesLocationRow.add(extraCategoriesLocationCombo);
|
||
|
extraCategoriesLocationFrame.add(extraCategoriesLocationRow);
|
||
|
this.mainBox.append(extraCategoriesLocationFrame);
|
||
|
}
|
||
|
_createWidgetsRows(layout){
|
||
|
let weatherWidgetSetting = 'enable-weather-widget-raven';
|
||
|
let clockWidgetSetting = 'enable-clock-widget-raven';
|
||
|
if(layout == Constants.MenuLayout.RAVEN){
|
||
|
weatherWidgetSetting = 'enable-weather-widget-raven';
|
||
|
clockWidgetSetting = 'enable-clock-widget-raven';
|
||
|
}
|
||
|
else{
|
||
|
weatherWidgetSetting = 'enable-weather-widget-unity';
|
||
|
clockWidgetSetting = 'enable-clock-widget-unity';
|
||
|
}
|
||
|
|
||
|
let widgetFrame = new PW.FrameBox();
|
||
|
let weatherWidgetRow = new PW.FrameBoxRow();
|
||
|
let weatherWidgetLabel = new Gtk.Label({
|
||
|
label: _("Enable Weather Widget"),
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
});
|
||
|
|
||
|
let weatherWidgetSwitch = new Gtk.Switch({ halign: Gtk.Align.END });
|
||
|
weatherWidgetSwitch.set_active(this._settings.get_boolean(weatherWidgetSetting));
|
||
|
weatherWidgetSwitch.connect('notify::active', (widget) => {
|
||
|
this._settings.set_boolean(weatherWidgetSetting, widget.get_active());
|
||
|
});
|
||
|
|
||
|
weatherWidgetRow.add(weatherWidgetLabel);
|
||
|
weatherWidgetRow.add(weatherWidgetSwitch);
|
||
|
widgetFrame.add(weatherWidgetRow);
|
||
|
|
||
|
let clockWidgetRow = new PW.FrameBoxRow();
|
||
|
let clockWidgetLabel = new Gtk.Label({
|
||
|
label: _("Enable Clock Widget"),
|
||
|
use_markup: true,
|
||
|
xalign: 0,
|
||
|
hexpand: true
|
||
|
});
|
||
|
|
||
|
let clockWidgetSwitch = new Gtk.Switch({ halign: Gtk.Align.END });
|
||
|
clockWidgetSwitch.set_active(this._settings.get_boolean(clockWidgetSetting));
|
||
|
clockWidgetSwitch.connect('notify::active', (widget) => {
|
||
|
this._settings.set_boolean(clockWidgetSetting, widget.get_active());
|
||
|
});
|
||
|
|
||
|
clockWidgetRow.add(clockWidgetLabel);
|
||
|
clockWidgetRow.add(clockWidgetSwitch);
|
||
|
widgetFrame.add(clockWidgetRow);
|
||
|
|
||
|
return widgetFrame;
|
||
|
}
|
||
|
});
|