diff --git a/Makefile b/Makefile
index 627f2ab..b0aee53 100644
--- a/Makefile
+++ b/Makefile
@@ -32,6 +32,7 @@ build: build-clean
--extra-source=./config.js \
--extra-source=./convenience.js \
--extra-source=./utils.js \
+ --extra-source=./icons/ \
--extra-source=./modules/ \
--extra-source=./preferences/ \
--extra-source=./schemas/ \
diff --git a/res/screenshot.png b/res/screenshot.png
index 292d273..c760727 100644
Binary files a/res/screenshot.png and b/res/screenshot.png differ
diff --git a/src/icons/hicolor/scalable/categories/preferences-backgrounds-symbolic.svg b/src/icons/hicolor/scalable/categories/preferences-backgrounds-symbolic.svg
new file mode 100644
index 0000000..722353f
--- /dev/null
+++ b/src/icons/hicolor/scalable/categories/preferences-backgrounds-symbolic.svg
@@ -0,0 +1 @@
+
diff --git a/src/icons/hicolor/scalable/categories/preferences-commands-symbolic.svg b/src/icons/hicolor/scalable/categories/preferences-commands-symbolic.svg
new file mode 100644
index 0000000..ffec3b8
--- /dev/null
+++ b/src/icons/hicolor/scalable/categories/preferences-commands-symbolic.svg
@@ -0,0 +1 @@
+
diff --git a/src/icons/hicolor/scalable/categories/preferences-cursortheme-symbolic.svg b/src/icons/hicolor/scalable/categories/preferences-cursortheme-symbolic.svg
new file mode 100644
index 0000000..0b8ebeb
--- /dev/null
+++ b/src/icons/hicolor/scalable/categories/preferences-cursortheme-symbolic.svg
@@ -0,0 +1 @@
+
diff --git a/src/icons/hicolor/scalable/categories/preferences-gtktheme-symbolic.svg b/src/icons/hicolor/scalable/categories/preferences-gtktheme-symbolic.svg
new file mode 100644
index 0000000..bfc88f0
--- /dev/null
+++ b/src/icons/hicolor/scalable/categories/preferences-gtktheme-symbolic.svg
@@ -0,0 +1 @@
+
diff --git a/src/icons/hicolor/scalable/categories/preferences-icontheme-symbolic.svg b/src/icons/hicolor/scalable/categories/preferences-icontheme-symbolic.svg
new file mode 100644
index 0000000..94234b9
--- /dev/null
+++ b/src/icons/hicolor/scalable/categories/preferences-icontheme-symbolic.svg
@@ -0,0 +1 @@
+
diff --git a/src/icons/hicolor/scalable/categories/preferences-schedule-symbolic.svg b/src/icons/hicolor/scalable/categories/preferences-schedule-symbolic.svg
new file mode 100644
index 0000000..6751113
--- /dev/null
+++ b/src/icons/hicolor/scalable/categories/preferences-schedule-symbolic.svg
@@ -0,0 +1 @@
+
diff --git a/src/icons/hicolor/scalable/categories/preferences-shelltheme-symbolic.svg b/src/icons/hicolor/scalable/categories/preferences-shelltheme-symbolic.svg
new file mode 100644
index 0000000..991a8e7
--- /dev/null
+++ b/src/icons/hicolor/scalable/categories/preferences-shelltheme-symbolic.svg
@@ -0,0 +1 @@
+
diff --git a/src/po/fr.po b/src/po/fr.po
index c48a033..25d4c69 100644
--- a/src/po/fr.po
+++ b/src/po/fr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Night Theme Switcher 7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-09-23 20:13+0200\n"
+"POT-Creation-Date: 2020-09-24 13:12+0200\n"
"PO-Revision-Date: 2020-09-23 20:13+0200\n"
"Last-Translator: Romain Vigier \n"
"Language-Team: French - France \n"
@@ -48,26 +48,28 @@ msgid "Switch to day theme"
msgstr "Passer au thème diurne"
#: src/preferences/Backgrounds.js:36 src/preferences/ui/backgrounds.ui:145
+#: src/preferences/ui/headerbar.ui:338
msgid "Backgrounds"
msgstr "Arrière-plans"
#: src/preferences/Commands.js:36 src/preferences/ui/commands.ui:132
+#: src/preferences/ui/headerbar.ui:391
msgid "Commands"
msgstr "Commandes"
-#: src/preferences/CursorTheme.js:38
+#: src/preferences/CursorTheme.js:38 src/preferences/ui/headerbar.ui:285
msgid "Cursor theme"
msgstr "Thème de curseur"
-#: src/preferences/GtkTheme.js:38
+#: src/preferences/GtkTheme.js:38 src/preferences/ui/headerbar.ui:126
msgid "GTK theme"
msgstr "Thème GTK"
-#: src/preferences/IconTheme.js:38
+#: src/preferences/IconTheme.js:38 src/preferences/ui/headerbar.ui:232
msgid "Icon theme"
msgstr "Thème d’icônes"
-#: src/preferences/Schedule.js:38
+#: src/preferences/Schedule.js:38 src/preferences/ui/headerbar.ui:73
msgid "Schedule"
msgstr "Horaires"
@@ -75,7 +77,7 @@ msgstr "Horaires"
msgid "Choose"
msgstr "Choisir"
-#: src/preferences/ShellTheme.js:38
+#: src/preferences/ShellTheme.js:38 src/preferences/ui/headerbar.ui:179
msgid "Shell theme"
msgstr "Thème du shell"
diff --git a/src/po/nightthemeswitcher@romainvigier.fr.pot b/src/po/nightthemeswitcher@romainvigier.fr.pot
index df0b3e9..28a47eb 100644
--- a/src/po/nightthemeswitcher@romainvigier.fr.pot
+++ b/src/po/nightthemeswitcher@romainvigier.fr.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Night Theme Switcher 37\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-09-23 20:13+0200\n"
+"POT-Creation-Date: 2020-09-24 13:12+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -41,26 +41,28 @@ msgid "Switch to day theme"
msgstr ""
#: src/preferences/Backgrounds.js:36 src/preferences/ui/backgrounds.ui:145
+#: src/preferences/ui/headerbar.ui:338
msgid "Backgrounds"
msgstr ""
#: src/preferences/Commands.js:36 src/preferences/ui/commands.ui:132
+#: src/preferences/ui/headerbar.ui:391
msgid "Commands"
msgstr ""
-#: src/preferences/CursorTheme.js:38
+#: src/preferences/CursorTheme.js:38 src/preferences/ui/headerbar.ui:285
msgid "Cursor theme"
msgstr ""
-#: src/preferences/GtkTheme.js:38
+#: src/preferences/GtkTheme.js:38 src/preferences/ui/headerbar.ui:126
msgid "GTK theme"
msgstr ""
-#: src/preferences/IconTheme.js:38
+#: src/preferences/IconTheme.js:38 src/preferences/ui/headerbar.ui:232
msgid "Icon theme"
msgstr ""
-#: src/preferences/Schedule.js:38
+#: src/preferences/Schedule.js:38 src/preferences/ui/headerbar.ui:73
msgid "Schedule"
msgstr ""
@@ -68,7 +70,7 @@ msgstr ""
msgid "Choose"
msgstr ""
-#: src/preferences/ShellTheme.js:38
+#: src/preferences/ShellTheme.js:38 src/preferences/ui/headerbar.ui:179
msgid "Shell theme"
msgstr ""
diff --git a/src/preferences/Headerbar.js b/src/preferences/Headerbar.js
new file mode 100644
index 0000000..c6c1cec
--- /dev/null
+++ b/src/preferences/Headerbar.js
@@ -0,0 +1,66 @@
+/*
+Night Theme Switcher Gnome Shell extension
+
+Copyright (C) 2020 Romain Vigier
+
+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 3 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 .
+*/
+
+const { GLib, Gtk } = imports.gi;
+const { extensionUtils } = imports.misc;
+
+const Me = extensionUtils.getCurrentExtension();
+
+const Gettext = imports.gettext.domain(Me.metadata.uuid);
+const _ = Gettext.gettext;
+
+const utils = Me.imports.utils;
+
+
+var Headerbar = class {
+
+ constructor(stack) {
+ this._builder = new Gtk.Builder();
+ this._builder.add_from_file(GLib.build_filenamev([Me.path, 'preferences', 'ui', 'headerbar.ui']));
+
+ this.widget = this._builder.get_object('headerbar');
+
+ this._connect(stack);
+
+ return this.widget;
+ }
+
+ _connect(stack) {
+ const scheduleRadio = this._builder.get_object('schedule_radio');
+ scheduleRadio.connect('clicked', () => stack.set_visible_child_name('schedule'));
+
+ const gtkThemeRadio = this._builder.get_object('gtk_theme_radio');
+ gtkThemeRadio.connect('clicked', () => stack.set_visible_child_name('gtk-theme'));
+
+ const shellThemeRadio = this._builder.get_object('shell_theme_radio');
+ shellThemeRadio.connect('clicked', () => stack.set_visible_child_name('shell-theme'));
+
+ const iconThemeRadio = this._builder.get_object('icon_theme_radio');
+ iconThemeRadio.connect('clicked', () => stack.set_visible_child_name('icon-theme'));
+
+ const cursorThemeRadio = this._builder.get_object('cursor_theme_radio');
+ cursorThemeRadio.connect('clicked', () => stack.set_visible_child_name('cursor-theme'));
+
+ const backgroundsRadio = this._builder.get_object('backgrounds_radio');
+ backgroundsRadio.connect('clicked', () => stack.set_visible_child_name('backgrounds'));
+
+ const commandsRadio = this._builder.get_object('commands_radio');
+ commandsRadio.connect('clicked', () => stack.set_visible_child_name('commands'));
+ }
+
+};
diff --git a/src/preferences/Preferences.js b/src/preferences/Preferences.js
index 0c8a8cf..9a945ac 100644
--- a/src/preferences/Preferences.js
+++ b/src/preferences/Preferences.js
@@ -31,6 +31,8 @@ const { IconThemePreferences } = Me.imports.preferences.IconTheme;
const { SchedulePreferences } = Me.imports.preferences.Schedule;
const { ShellThemePreferences } = Me.imports.preferences.ShellTheme;
+const { Headerbar } = Me.imports.preferences.Headerbar;
+
var Preferences = class {
@@ -66,10 +68,7 @@ var Preferences = class {
const commandsPreferences = new CommandsPreferences(this.settings);
this.widget.add_titled(commandsPreferences.widget, commandsPreferences.name, commandsPreferences.title);
- this.titlebar = new Gtk.StackSwitcher({
- stack: this.widget,
- visible: true,
- });
+ this.headerbar = new Headerbar(this.widget);
}
};
diff --git a/src/preferences/ui/headerbar.ui b/src/preferences/ui/headerbar.ui
new file mode 100644
index 0000000..790c662
--- /dev/null
+++ b/src/preferences/ui/headerbar.ui
@@ -0,0 +1,417 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/prefs.js b/src/prefs.js
index b8f0d75..d99b377 100644
--- a/src/prefs.js
+++ b/src/prefs.js
@@ -18,7 +18,7 @@ this program. If not, see .
'use strict';
-const { GLib } = imports.gi;
+const { GLib, Gtk } = imports.gi;
const { extensionUtils } = imports.misc;
const Me = extensionUtils.getCurrentExtension();
@@ -29,15 +29,16 @@ const { Preferences } = Me.imports.preferences.Preferences;
function init() {
compat.initTranslations(Me.metadata.uuid);
+ const iconTheme = Gtk.IconTheme.get_default();
+ iconTheme.append_search_path(GLib.build_filenamev([Me.path, 'icons']));
}
function buildPrefsWidget() {
const preferences = new Preferences();
GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
const window = preferences.widget.get_toplevel();
- window.resize(800, 200);
- const titlebar = window.get_titlebar();
- titlebar.custom_title = preferences.titlebar;
+ window.resize(600, 200);
+ window.set_titlebar(preferences.headerbar);
});
return preferences.widget;
}