|
@@ -20,80 +20,54 @@ export default class GjsOskPreferences extends ExtensionPreferences {
|
|
|
icon_name: "general-symbolic"
|
|
|
});
|
|
|
|
|
|
- const group0 = new Adw.PreferencesGroup();
|
|
|
- page1.add(group0)
|
|
|
-
|
|
|
- const apply = Gtk.Button.new_with_label(_("Apply Changes"));
|
|
|
- apply.connect("clicked", () => {
|
|
|
- settings.set_int("lang", langDrop.selected);
|
|
|
- settings.set_boolean("enable-drag", dragToggle.active);
|
|
|
- settings.set_int("enable-tap-gesture", dragOpt.selected);
|
|
|
- settings.set_boolean("indicator-enabled", indEnabled.active);
|
|
|
- settings.set_int("portrait-width-percent", numChanger_pW.value);
|
|
|
- settings.set_int("portrait-height-percent", numChanger_pH.value);
|
|
|
- settings.set_int("landscape-width-percent", numChanger_lW.value);
|
|
|
- settings.set_int("landscape-height-percent", numChanger_lH.value);
|
|
|
- let [r, g, b] = colorButton.get_rgba().to_string().replace("rgb(", "").replace(")", "").split(",")
|
|
|
- settings.set_double("background-r", r);
|
|
|
- settings.set_double("background-g", g);
|
|
|
- settings.set_double("background-b", b);
|
|
|
- settings.set_int("font-size-px", numChanger_font.value);
|
|
|
- settings.set_int("border-spacing-px", numChanger_bord.value);
|
|
|
- settings.set_int("snap-spacing-px", numChanger_snap.value)
|
|
|
- settings.set_boolean("round-key-corners", dragToggle2.active);
|
|
|
- settings.set_boolean("play-sound", dragToggle3.active);
|
|
|
- settings.set_int("default-snap", dropDown.selected);
|
|
|
- });
|
|
|
- group0.add(apply)
|
|
|
-
|
|
|
- const group1 = new Adw.PreferencesGroup({
|
|
|
+ const behaviorGroup = new Adw.PreferencesGroup({
|
|
|
title: _("Behavior")
|
|
|
});
|
|
|
- page1.add(group1);
|
|
|
+ page1.add(behaviorGroup);
|
|
|
|
|
|
- const row0 = new Adw.ActionRow({
|
|
|
+ const layoutRow = new Adw.ActionRow({
|
|
|
title: _('Layout')
|
|
|
});
|
|
|
- group1.add(row0);
|
|
|
+ behaviorGroup.add(layoutRow);
|
|
|
|
|
|
- let langList = ["QWERTY", "AZERTY", "Dvorak", "QWERTZ"];
|
|
|
- let langDrop = Gtk.DropDown.new_from_strings(langList);
|
|
|
- langDrop.valign = Gtk.Align.CENTER;
|
|
|
- langDrop.selected = settings.get_int("lang");
|
|
|
+ let layoutList = ["Full Sized International", "Full Sized US", "Tenkeyless International", "Tenkeyless US", "Compact International", "Compact US", "Split International", "Split US"];
|
|
|
+ let layoutDrop = Gtk.DropDown.new_from_strings(layoutList);
|
|
|
+ layoutDrop.valign = Gtk.Align.CENTER;
|
|
|
+ layoutDrop.selected = settings.get_int("layout");
|
|
|
|
|
|
- row0.add_suffix(langDrop);
|
|
|
- row0.activatable_widget = langDrop;
|
|
|
+ layoutRow.add_suffix(layoutDrop);
|
|
|
+ layoutRow.activatable_widget = layoutDrop;
|
|
|
|
|
|
- const row1 = new Adw.ActionRow({
|
|
|
+ const enableDragRow = new Adw.ActionRow({
|
|
|
title: _('Enable Dragging')
|
|
|
});
|
|
|
- group1.add(row1);
|
|
|
+ behaviorGroup.add(enableDragRow);
|
|
|
|
|
|
- const dragToggle = new Gtk.Switch({
|
|
|
+ const dragEnableDT = new Gtk.Switch({
|
|
|
active: settings.get_boolean('enable-drag'),
|
|
|
valign: Gtk.Align.CENTER,
|
|
|
});
|
|
|
|
|
|
- row1.add_suffix(dragToggle);
|
|
|
- row1.activatable_widget = dragToggle;
|
|
|
+ enableDragRow.add_suffix(dragEnableDT);
|
|
|
+ enableDragRow.activatable_widget = dragEnableDT;
|
|
|
|
|
|
- const row1t3 = new Adw.ActionRow({
|
|
|
+ const indEnabledRow = new Adw.ActionRow({
|
|
|
title: _('Enable Panel Indicator')
|
|
|
});
|
|
|
- group1.add(row1t3);
|
|
|
+ behaviorGroup.add(indEnabledRow);
|
|
|
|
|
|
const indEnabled = new Gtk.Switch({
|
|
|
active: settings.get_boolean("indicator-enabled"),
|
|
|
valign: Gtk.Align.CENTER,
|
|
|
});
|
|
|
|
|
|
- row1t3.add_suffix(indEnabled);
|
|
|
- row1t3.activatable_widget = indEnabled;
|
|
|
+ indEnabledRow.add_suffix(indEnabled);
|
|
|
+ indEnabledRow.activatable_widget = indEnabled;
|
|
|
|
|
|
const row1t5 = new Adw.ActionRow({
|
|
|
title: _('Open upon clicking in a text field')
|
|
|
});
|
|
|
- group1.add(row1t5);
|
|
|
+ behaviorGroup.add(row1t5);
|
|
|
|
|
|
|
|
|
let dragOptList = [_("Never"), _("Only on Touch"), _("Always")];
|
|
@@ -104,10 +78,10 @@ export default class GjsOskPreferences extends ExtensionPreferences {
|
|
|
row1t5.add_suffix(dragOpt);
|
|
|
row1t5.activatable_widget = dragOpt;
|
|
|
|
|
|
- const row2 = new Adw.ExpanderRow({
|
|
|
+ const portraitSizing = new Adw.ExpanderRow({
|
|
|
title: _('Portrait Sizing')
|
|
|
});
|
|
|
- group1.add(row2);
|
|
|
+ behaviorGroup.add(portraitSizing);
|
|
|
|
|
|
let pW = new Adw.ActionRow({
|
|
|
title: _('Width (%)')
|
|
@@ -128,13 +102,13 @@ export default class GjsOskPreferences extends ExtensionPreferences {
|
|
|
pH.add_suffix(numChanger_pH);
|
|
|
pH.activatable_widget = numChanger_pH;
|
|
|
|
|
|
- row2.add_row(pW);
|
|
|
- row2.add_row(pH);
|
|
|
+ portraitSizing.add_row(pW);
|
|
|
+ portraitSizing.add_row(pH);
|
|
|
|
|
|
- const row3 = new Adw.ExpanderRow({
|
|
|
+ const landscapeSizing = new Adw.ExpanderRow({
|
|
|
title: _('Landscape Sizing')
|
|
|
});
|
|
|
- group1.add(row3);
|
|
|
+ behaviorGroup.add(landscapeSizing);
|
|
|
|
|
|
let lW = new Adw.ActionRow({
|
|
|
title: _('Width (%)')
|
|
@@ -155,104 +129,152 @@ export default class GjsOskPreferences extends ExtensionPreferences {
|
|
|
lH.add_suffix(numChanger_lH);
|
|
|
lH.activatable_widget = numChanger_lH;
|
|
|
|
|
|
- row3.add_row(lW);
|
|
|
- row3.add_row(lH);
|
|
|
+ landscapeSizing.add_row(lW);
|
|
|
+ landscapeSizing.add_row(lH);
|
|
|
|
|
|
- const row4 = new Adw.ActionRow({
|
|
|
+ const defaultPosition = new Adw.ActionRow({
|
|
|
title: _('Default Position')
|
|
|
});
|
|
|
- group1.add(row4);
|
|
|
+ behaviorGroup.add(defaultPosition);
|
|
|
|
|
|
let posList = [
|
|
|
_("Top Left"), _("Top Center"), _("Top Right"),
|
|
|
_("Center Left"), _("Center"), _("Center Right"),
|
|
|
_("Bottom Left"), _("Bottom Center"), _("Bottom Right")
|
|
|
];
|
|
|
- let dropDown = Gtk.DropDown.new_from_strings(posList);
|
|
|
- dropDown.valign = Gtk.Align.CENTER;
|
|
|
- dropDown.selected = settings.get_int("default-snap");
|
|
|
+ let snapDrop = Gtk.DropDown.new_from_strings(posList);
|
|
|
+ snapDrop.valign = Gtk.Align.CENTER;
|
|
|
+ snapDrop.selected = settings.get_int("default-snap");
|
|
|
|
|
|
- row4.add_suffix(dropDown);
|
|
|
- row4.activatable_widget = dropDown;
|
|
|
+ defaultPosition.add_suffix(snapDrop);
|
|
|
+ defaultPosition.activatable_widget = snapDrop;
|
|
|
|
|
|
- const row9 = new Adw.ActionRow({
|
|
|
+ const soundPlayRow = new Adw.ActionRow({
|
|
|
title: _('Play sound')
|
|
|
});
|
|
|
- group1.add(row9);
|
|
|
+ behaviorGroup.add(soundPlayRow);
|
|
|
|
|
|
- const dragToggle3 = new Gtk.Switch({
|
|
|
+ const soundPlayDT = new Gtk.Switch({
|
|
|
active: settings.get_boolean('play-sound'),
|
|
|
valign: Gtk.Align.CENTER,
|
|
|
});
|
|
|
|
|
|
- row9.add_suffix(dragToggle3);
|
|
|
- row9.activatable_widget = dragToggle3;
|
|
|
+ soundPlayRow.add_suffix(soundPlayDT);
|
|
|
+ soundPlayRow.activatable_widget = soundPlayDT;
|
|
|
|
|
|
- const group2 = new Adw.PreferencesGroup({
|
|
|
+ const appearanceGroup = new Adw.PreferencesGroup({
|
|
|
title: _("Appearance")
|
|
|
});
|
|
|
- page1.add(group2);
|
|
|
+ page1.add(appearanceGroup);
|
|
|
+
|
|
|
+ const colorRow = new Adw.ExpanderRow({
|
|
|
+ title: _("Color")
|
|
|
+ })
|
|
|
+ appearanceGroup.add(colorRow);
|
|
|
+
|
|
|
|
|
|
- const row5 = new Adw.ActionRow({
|
|
|
- title: _('Color')
|
|
|
+ const lightCol = new Adw.ActionRow({
|
|
|
+ title: _('Light Mode')
|
|
|
});
|
|
|
- group2.add(row5); settings.set_boolean("enable-tap-gesture", dragOpt.selected);
|
|
|
+ colorRow.add_row(lightCol)
|
|
|
|
|
|
let rgba = new Gdk.RGBA();
|
|
|
- rgba.parse("rgba(" + settings.get_double("background-r") + ", " + settings.get_double("background-g") + ", " + settings.get_double("background-b") + ", 1)");
|
|
|
+ rgba.parse("rgba(" + settings.get_double("background-r") + ", " + settings.get_double("background-g") + ", " + settings.get_double("background-b") + ", " + settings.get_double("background-a") + ")");
|
|
|
let colorButton = new Gtk.ColorButton({
|
|
|
- rgba,
|
|
|
- use_alpha: false,
|
|
|
+ rgba: rgba,
|
|
|
+ use_alpha: true,
|
|
|
valign: Gtk.Align.CENTER
|
|
|
});
|
|
|
- row5.add_suffix(colorButton);
|
|
|
- row5.activatable_widget = colorButton;
|
|
|
+ lightCol.add_suffix(colorButton);
|
|
|
+ lightCol.activatable_widget = colorButton;
|
|
|
|
|
|
- let row6 = new Adw.ActionRow({
|
|
|
+ const darkCol = new Adw.ActionRow({
|
|
|
+ title: _('Dark Mode')
|
|
|
+ });
|
|
|
+ colorRow.add_row(darkCol)
|
|
|
+
|
|
|
+ let rgba_d = new Gdk.RGBA();
|
|
|
+ rgba_d.parse("rgba(" + settings.get_double("background-r-dark") + ", " + settings.get_double("background-g-dark") + ", " + settings.get_double("background-b-dark") + ", " + settings.get_double("background-a-dark") + ")");
|
|
|
+ let colorButton_d = new Gtk.ColorButton({
|
|
|
+ rgba: rgba_d,
|
|
|
+ use_alpha: true,
|
|
|
+ valign: Gtk.Align.CENTER
|
|
|
+ });
|
|
|
+ darkCol.add_suffix(colorButton_d);
|
|
|
+ darkCol.activatable_widget = colorButton_d;
|
|
|
+
|
|
|
+ let fontSize = new Adw.ActionRow({
|
|
|
title: _('Font Size (px)')
|
|
|
});
|
|
|
- group2.add(row6);
|
|
|
+ appearanceGroup.add(fontSize);
|
|
|
|
|
|
let numChanger_font = Gtk.SpinButton.new_with_range(0, 100, 1);
|
|
|
numChanger_font.value = settings.get_int('font-size-px');
|
|
|
numChanger_font.valign = Gtk.Align.CENTER;
|
|
|
- row6.add_suffix(numChanger_font);
|
|
|
- row6.activatable_widget = numChanger_font;
|
|
|
+
|
|
|
+ fontSize.add_suffix(numChanger_font);
|
|
|
+ fontSize.activatable_widget = numChanger_font;
|
|
|
+
|
|
|
+ const fontBoldRow = new Adw.ActionRow({
|
|
|
+ title: _("Bold Font")
|
|
|
+ })
|
|
|
+ appearanceGroup.add(fontBoldRow)
|
|
|
|
|
|
- let row7 = new Adw.ActionRow({
|
|
|
+ const fontBoldEnabled = new Gtk.Switch({
|
|
|
+ active: settings.get_boolean("font-bold"),
|
|
|
+ valign: Gtk.Align.CENTER
|
|
|
+ })
|
|
|
+
|
|
|
+ fontBoldRow.add_suffix(fontBoldEnabled)
|
|
|
+ fontBoldRow.activatable_widget = fontBoldEnabled
|
|
|
+
|
|
|
+ let borderSpacing = new Adw.ActionRow({
|
|
|
title: _('Border Spacing (px)')
|
|
|
});
|
|
|
- group2.add(row7);
|
|
|
+ appearanceGroup.add(borderSpacing);
|
|
|
|
|
|
let numChanger_bord = Gtk.SpinButton.new_with_range(0, 10, 1);
|
|
|
numChanger_bord.value = settings.get_int('border-spacing-px');
|
|
|
numChanger_bord.valign = Gtk.Align.CENTER;
|
|
|
- row7.add_suffix(numChanger_bord);
|
|
|
- row7.activatable_widget = numChanger_bord;
|
|
|
+ borderSpacing.add_suffix(numChanger_bord);
|
|
|
+ borderSpacing.activatable_widget = numChanger_bord;
|
|
|
|
|
|
- let row1t2 = new Adw.ActionRow({
|
|
|
+ let snapSpacing = new Adw.ActionRow({
|
|
|
title: _('Drag snap spacing (px)')
|
|
|
});
|
|
|
- group2.add(row1t2);
|
|
|
+ appearanceGroup.add(snapSpacing);
|
|
|
|
|
|
let numChanger_snap = Gtk.SpinButton.new_with_range(0, 50, 5);
|
|
|
numChanger_snap.value = settings.get_int('snap-spacing-px');
|
|
|
numChanger_snap.valign = Gtk.Align.CENTER;
|
|
|
- row1t2.add_suffix(numChanger_snap);
|
|
|
- row1t2.activatable_widget = numChanger_snap;
|
|
|
+ snapSpacing.add_suffix(numChanger_snap);
|
|
|
+ snapSpacing.activatable_widget = numChanger_snap;
|
|
|
|
|
|
- const row8 = new Adw.ActionRow({
|
|
|
+ const roundCorners = new Adw.ActionRow({
|
|
|
title: _('Round Corners')
|
|
|
});
|
|
|
- group2.add(row8);
|
|
|
+ appearanceGroup.add(roundCorners);
|
|
|
|
|
|
- const dragToggle2 = new Gtk.Switch({
|
|
|
+ const roundKeyCDT = new Gtk.Switch({
|
|
|
active: settings.get_boolean('round-key-corners'),
|
|
|
valign: Gtk.Align.CENTER,
|
|
|
});
|
|
|
|
|
|
- row8.add_suffix(dragToggle2);
|
|
|
- row8.activatable_widget = dragToggle2;
|
|
|
+ roundCorners.add_suffix(roundKeyCDT);
|
|
|
+ roundCorners.activatable_widget = roundKeyCDT;
|
|
|
+
|
|
|
+ const showIcon = new Adw.ActionRow({
|
|
|
+ title: _('Show Special Key Icons')
|
|
|
+ });
|
|
|
+ appearanceGroup.add(showIcon);
|
|
|
+
|
|
|
+ const showIconDT = new Gtk.Switch({
|
|
|
+ active: settings.get_boolean('show-icons'),
|
|
|
+ valign: Gtk.Align.CENTER,
|
|
|
+ });
|
|
|
+
|
|
|
+ showIcon.add_suffix(showIconDT);
|
|
|
+ showIcon.activatable_widget = showIconDT;
|
|
|
|
|
|
window.add(page1);
|
|
|
|
|
@@ -287,7 +309,7 @@ export default class GjsOskPreferences extends ExtensionPreferences {
|
|
|
context.add_class("title-1");
|
|
|
|
|
|
let another_label = new Gtk.Label({
|
|
|
- label: _("Version ") + this.metadata.version
|
|
|
+ label: _("Autorelease ") + `fab8e97`
|
|
|
});
|
|
|
|
|
|
let links_pref_group = new Adw.PreferencesGroup();
|
|
@@ -326,25 +348,61 @@ export default class GjsOskPreferences extends ExtensionPreferences {
|
|
|
page2.add(links_pref_group);
|
|
|
|
|
|
window.add(page2);
|
|
|
+
|
|
|
+ settings.bind("layout", layoutDrop, "selected", 0);
|
|
|
+ settings.bind("enable-drag", dragEnableDT, "active", 0);
|
|
|
+ settings.bind("enable-tap-gesture", dragOpt, "selected", 0);
|
|
|
+ settings.bind("indicator-enabled", indEnabled, "active", 0);
|
|
|
+ settings.bind("portrait-width-percent", numChanger_pW, "value", 0);
|
|
|
+ settings.bind("portrait-height-percent", numChanger_pH, "value", 0);
|
|
|
+ settings.bind("landscape-width-percent", numChanger_lW, "value", 0);
|
|
|
+ settings.bind("landscape-height-percent", numChanger_lH, "value", 0);
|
|
|
+ colorButton.connect("color-set", () => {
|
|
|
+ settings.set_double("background-r", Math.round(colorButton.get_rgba().red * 255));
|
|
|
+ settings.set_double("background-g", Math.round(colorButton.get_rgba().green * 255));
|
|
|
+ settings.set_double("background-b", Math.round(colorButton.get_rgba().blue * 255));
|
|
|
+ settings.set_double("background-a", colorButton.get_rgba().alpha);
|
|
|
+ })
|
|
|
+ colorButton_d.connect("color-set", () => {
|
|
|
+ settings.set_double("background-r-dark", Math.round(colorButton_d.get_rgba().red * 255));
|
|
|
+ settings.set_double("background-g-dark", Math.round(colorButton_d.get_rgba().green * 255));
|
|
|
+ settings.set_double("background-b-dark", Math.round(colorButton_d.get_rgba().blue * 255));
|
|
|
+ settings.set_double("background-a-dark", colorButton_d.get_rgba().alpha);
|
|
|
+ })
|
|
|
+ settings.bind("font-size-px", numChanger_font, "value", 0);
|
|
|
+ settings.bind("font-bold", fontBoldEnabled, "active", 0)
|
|
|
+ settings.bind("border-spacing-px", numChanger_bord, "value", 0);
|
|
|
+ settings.bind("snap-spacing-px", numChanger_snap, "value", 0)
|
|
|
+ settings.bind("round-key-corners", roundKeyCDT, "active", 0);
|
|
|
+ settings.bind("play-sound", soundPlayDT, "active", 0);
|
|
|
+ settings.bind("show-icons", showIconDT, "active", 0)
|
|
|
+ settings.bind("default-snap", snapDrop, "selected", 0);
|
|
|
+
|
|
|
window.connect("close-request", () => {
|
|
|
- settings.set_int("lang", langDrop.selected);
|
|
|
- settings.set_boolean("enable-drag", dragToggle.active);
|
|
|
+ settings.set_int("layout", layoutDrop.selected);
|
|
|
+ settings.set_boolean("enable-drag", dragEnableDT.active);
|
|
|
settings.set_int("enable-tap-gesture", dragOpt.selected);
|
|
|
settings.set_boolean("indicator-enabled", indEnabled.active);
|
|
|
settings.set_int("portrait-width-percent", numChanger_pW.value);
|
|
|
settings.set_int("portrait-height-percent", numChanger_pH.value);
|
|
|
settings.set_int("landscape-width-percent", numChanger_lW.value);
|
|
|
settings.set_int("landscape-height-percent", numChanger_lH.value);
|
|
|
- let [r, g, b] = colorButton.get_rgba().to_string().replace("rgb(", "").replace(")", "").split(",")
|
|
|
- settings.set_double("background-r", r);
|
|
|
- settings.set_double("background-g", g);
|
|
|
- settings.set_double("background-b", b);
|
|
|
+ settings.set_double("background-r", Math.round(colorButton.get_rgba().red * 255));
|
|
|
+ settings.set_double("background-g", Math.round(colorButton.get_rgba().green * 255));
|
|
|
+ settings.set_double("background-b", Math.round(colorButton.get_rgba().blue * 255));
|
|
|
+ settings.set_double("background-a", colorButton.get_rgba().alpha);
|
|
|
+ settings.set_double("background-r-dark", Math.round(colorButton_d.get_rgba().red * 255));
|
|
|
+ settings.set_double("background-g-dark", Math.round(colorButton_d.get_rgba().green * 255));
|
|
|
+ settings.set_double("background-b-dark", Math.round(colorButton_d.get_rgba().blue * 255));
|
|
|
+ settings.set_double("background-a-dark", colorButton_d.get_rgba().alpha);
|
|
|
settings.set_int("font-size-px", numChanger_font.value);
|
|
|
+ settings.set_boolean("font-bold", fontBoldEnabled.active)
|
|
|
settings.set_int("border-spacing-px", numChanger_bord.value);
|
|
|
settings.set_int("snap-spacing-px", numChanger_snap.value)
|
|
|
- settings.set_boolean("round-key-corners", dragToggle2.active);
|
|
|
- settings.set_boolean("play-sound", dragToggle3.active);
|
|
|
- settings.set_int("default-snap", dropDown.selected);
|
|
|
- });
|
|
|
+ settings.set_boolean("round-key-corners", roundKeyCDT.active);
|
|
|
+ settings.set_boolean("play-sound", soundPlayDT.active);
|
|
|
+ settings.set_boolean("show-icons", showIconDT.active)
|
|
|
+ settings.set_int("default-snap", snapDrop.selected);
|
|
|
+ })
|
|
|
}
|
|
|
};
|