diff --git a/src/modules/GtkThemer.js b/src/modules/GtkThemer.js index a371194..af3a0bf 100644 --- a/src/modules/GtkThemer.js +++ b/src/modules/GtkThemer.js @@ -46,10 +46,14 @@ var GtkThemer = class { enable() { log_debug('Enabling GTK Themer...'); try { - this._update_variants(); - this._set_variant(e.timer.time); - this._connect_settings(); - this._connect_timer(); + this._watch_status(); + this._save_original_theme(); + if ( e.settingsManager.gtk_variants_enabled ) { + this._update_variants(); + this._set_variant(e.timer.time); + this._connect_settings(); + this._connect_timer(); + } } catch(e) { log_error(e); @@ -61,11 +65,25 @@ var GtkThemer = class { log_debug('Disabling GTK Themer...'); this._disconnect_timer(); this._disconnect_settings(); - this._reset_theme(); + this._reset_original_theme(); + this._unwatch_status(); log_debug('GTK Themer disabled.'); } + _watch_status() { + log_debug('Watching GTK variants status...'); + this._gtk_variants_status_changed_connect = e.settingsManager.connect('gtk-variants-status-changed', this._on_gtk_variants_status_changed.bind(this)); + } + + _unwatch_status() { + if ( this._gtk_variants_status_changed_connect ) { + e.settingsManager.disconnect(this._gtk_variants_status_changed_connect); + this._gtk_variants_status_changed_connect = null; + } + log_debug('Stopped watching GTK variants status.'); + } + _connect_settings() { log_debug('Connecting GTK Themer to settings...'); this._gtk_variant_changed_connect = e.settingsManager.connect('gtk-variant-changed', this._on_gtk_variant_changed.bind(this)); @@ -98,6 +116,11 @@ var GtkThemer = class { } + _on_gtk_variants_status_changed(settings, enabled) { + this.disable(); + this.enable(); + } + _on_gtk_variant_changed(settings, changed_variant_time) { if ( changed_variant_time === e.timer.time ) { this._set_variant(changed_variant_time); @@ -159,7 +182,11 @@ var GtkThemer = class { log_debug(`New GTK variants. { day: '${variants.get('day')}'; night: '${variants.get('night')}' }`); } - _reset_theme() { + _save_original_theme() { + e.settingsManager.gtk_variant_original = e.settingsManager.gtk_theme; + } + + _reset_original_theme() { // We don't reset the theme when locking the session to prevent // flicker on unlocking if ( !main.screenShield.locked ) { diff --git a/src/modules/SettingsManager.js b/src/modules/SettingsManager.js index 7c2cbd9..25bc58a 100644 --- a/src/modules/SettingsManager.js +++ b/src/modules/SettingsManager.js @@ -51,9 +51,11 @@ var SettingsManager = class { enable() { log_debug('Connecting settings signals...'); + this._gtk_variants_status_changed_connect = this._extensionsSettings.connect('changed::gtk-variants-enabled', this._on_gtk_variants_status_changed.bind(this)); this._gtk_variant_day_changed_connect = this._extensionsSettings.connect('changed::gtk-variant-day', this._on_gtk_variant_day_changed.bind(this)); this._gtk_variant_night_changed_connect = this._extensionsSettings.connect('changed::gtk-variant-night', this._on_gtk_variant_night_changed.bind(this)); this._gtk_variant_original_changed_connect = this._extensionsSettings.connect('changed::gtk-variant-original', this._on_gtk_variant_original_changed.bind(this)); + this._shell_variants_status_changed_connect = this._extensionsSettings.connect('changed::shell-variants-enabled', this._on_shell_variants_status_changed.bind(this)); this._shell_variant_day_changed_connect = this._extensionsSettings.connect('changed::shell-variant-day', this._on_shell_variant_day_changed.bind(this)); this._shell_variant_night_changed_connect = this._extensionsSettings.connect('changed::shell-variant-night', this._on_shell_variant_night_changed.bind(this)); this._shell_variant_original_changed_connect = this._extensionsSettings.connect('changed::shell-variant-original', this._on_shell_variant_original_changed.bind(this)); @@ -85,9 +87,11 @@ var SettingsManager = class { disable() { log_debug('Disconnecting settings signals...'); + this._extensionsSettings.disconnect(this._gtk_variants_status_changed_connect); this._extensionsSettings.disconnect(this._gtk_variant_day_changed_connect); this._extensionsSettings.disconnect(this._gtk_variant_night_changed_connect); this._extensionsSettings.disconnect(this._gtk_variant_original_changed_connect); + this._extensionsSettings.disconnect(this._shell_variants_status_changed_connect); this._extensionsSettings.disconnect(this._shell_variant_day_changed_connect); this._extensionsSettings.disconnect(this._shell_variant_night_changed_connect); this._extensionsSettings.disconnect(this._shell_variant_original_changed_connect); @@ -123,6 +127,10 @@ var SettingsManager = class { /* GTK variants settings */ + get gtk_variants_enabled() { + return this._extensionsSettings.get_boolean('gtk-variants-enabled'); + } + get gtk_variant_day() { return this._extensionsSettings.get_string('gtk-variant-day'); } @@ -163,6 +171,10 @@ var SettingsManager = class { /* Shell variants settings */ + get shell_variants_enabled() { + return this._extensionsSettings.get_boolean('shell-variants-enabled'); + } + get shell_variant_day() { return this._extensionsSettings.get_string('shell-variant-day'); } @@ -387,6 +399,9 @@ var SettingsManager = class { if ( this._userthemesSettings ) { return this._userthemesSettings.get_string('name'); } + else { + return ''; + } } set shell_theme(value) { @@ -448,6 +463,11 @@ var SettingsManager = class { /* GTK variants */ + _on_gtk_variants_status_changed(settings, changed_key) { + log_debug('GTK variants have been ' + (this.gtk_variants_enabled ? 'ena' : 'disa') + 'bled.'); + this.emit('gtk-variants-status-changed', this.gtk_variants_enabled); + } + _on_gtk_variant_day_changed(settings, changed_key) { log_debug(`GTK day variant has changed to '${this.gtk_variant_day}'.`); this.emit('gtk-variant-changed', 'day'); @@ -466,6 +486,11 @@ var SettingsManager = class { /* Shell variants */ + _on_shell_variants_status_changed(settings, changed_key) { + log_debug('Shell variants have been ' + (this.shell_variants_enabled ? 'ena' : 'disa') + 'bled.'); + this.emit('shell-variants-status-changed', this.shell_variants_enabled); + } + _on_shell_variant_day_changed(settings, changed_key) { log_debug(`Shell day variant has changed to '${this.shell_variant_day}'.`); this.emit('shell-variant-changed', 'day'); diff --git a/src/modules/ShellThemer.js b/src/modules/ShellThemer.js index 7f800cb..fbc8a49 100644 --- a/src/modules/ShellThemer.js +++ b/src/modules/ShellThemer.js @@ -45,10 +45,14 @@ var ShellThemer = class { enable() { log_debug('Enabling Shell Themer...'); try { - this._update_variants(); - this._set_variant(e.timer.time); - this._connect_settings(); - this._connect_timer(); + this._watch_status(); + this._save_original_theme(); + if ( e.settingsManager.shell_variants_enabled ) { + this._update_variants(); + this._set_variant(e.timer.time); + this._connect_settings(); + this._connect_timer(); + } } catch(e) { log_error(e); @@ -60,11 +64,25 @@ var ShellThemer = class { log_debug('Disabling Shell Themer...'); this._disconnect_timer(); this._disconnect_settings(); - this._reset_theme(); + this._reset_original_theme(); + this._unwatch_status(); log_debug('Shell Themer disabled.'); } + _watch_status() { + log_debug('Watching shell variants status...'); + this._shell_variants_status_changed_connect = e.settingsManager.connect('shell-variants-status-changed', this._on_shell_variants_status_changed.bind(this)); + } + + _unwatch_status() { + if ( this._shell_variants_status_changed_connect ) { + e.settingsManager.disconnect(this._shell_variants_status_changed_connect); + this._shell_variants_status_changed_connect = null; + } + log_debug('Stopped watching shell variants status.'); + } + _connect_settings() { log_debug('Connecting Shell Themer to settings...'); this._shell_variant_changed_connect = e.settingsManager.connect('shell-variant-changed', this._on_shell_variant_changed.bind(this)); @@ -97,6 +115,11 @@ var ShellThemer = class { } + _on_shell_variants_status_changed(settings, enabled) { + this.disable(); + this.enable(); + } + _on_shell_variant_changed(settings, changed_variant_time) { if ( changed_variant_time === e.timer.time ) { this._set_variant(e.timer.time); @@ -166,7 +189,11 @@ var ShellThemer = class { log_debug(`New Shell variants. { day: '${variants.get('day')}'; night: '${variants.get('night')}' }`); } - _reset_theme() { + _save_original_theme() { + e.settingsManager.shell_variant_original = e.settingsManager.shell_theme; + } + + _reset_original_theme() { // We don't reset the theme when locking the session to prevent // flicker on unlocking if ( !main.screenShield.locked ) { diff --git a/src/po/fr.po b/src/po/fr.po index cf4e929..93b9faf 100644 --- a/src/po/fr.po +++ b/src/po/fr.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Night Theme Switcher 7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-15 10:10+0200\n" -"PO-Revision-Date: 2020-06-15 10:11+0200\n" +"POT-Creation-Date: 2020-06-15 16:04+0200\n" +"PO-Revision-Date: 2020-06-15 16:06+0200\n" "Last-Translator: Romain Vigier \n" "Language-Team: French - France \n" "Language: fr_FR\n" @@ -18,7 +18,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1)\n" "X-Generator: Gtranslator 3.36.0\n" -#: src/modules/GtkThemer.js:152 +#: src/modules/GtkThemer.js:175 #, javascript-format msgid "" "Unable to automatically detect the day and night variants for the \"%s\" GTK " @@ -28,7 +28,7 @@ msgstr "" "pour le thème GTK \"%s\". Veuillez les sélectionner manuellement dans les " "préférences de l’extension." -#: src/modules/ShellThemer.js:159 +#: src/modules/ShellThemer.js:182 #, javascript-format msgid "" "Unable to automatically detect the day and night variants for the \"%s\" " @@ -49,15 +49,15 @@ msgstr "Vous pouvez définir des arrière-plans diurnes et nocturnes différents #: src/preferences/Backgrounds.js:43 msgid "Switch backgrounds" -msgstr "Changer les arrière-plans" +msgstr "Permuter les arrière-plans" #: src/preferences/Backgrounds.js:44 -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:146 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:156 msgid "Day background" msgstr "Arrière-plan diurne" #: src/preferences/Backgrounds.js:45 -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:151 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:161 msgid "Night background" msgstr "Arrière-plan nocturne" @@ -107,25 +107,25 @@ msgstr "" "Vous pouvez définir des thèmes de curseurs diurnes et nocturnes différents." #: src/preferences/CursorTheme.js:44 -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:66 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:76 msgid "Switch cursor variants" -msgstr "Changer les variantes de curseur" +msgstr "Permuter les variantes de curseur" -#: src/preferences/CursorTheme.js:45 src/preferences/GtkTheme.js:45 -#: src/preferences/IconTheme.js:45 src/preferences/ShellTheme.js:45 +#: src/preferences/CursorTheme.js:45 src/preferences/GtkTheme.js:57 +#: src/preferences/IconTheme.js:45 src/preferences/ShellTheme.js:57 msgid "Day variant" msgstr "Variante diurne" -#: src/preferences/CursorTheme.js:46 src/preferences/GtkTheme.js:46 -#: src/preferences/IconTheme.js:46 src/preferences/ShellTheme.js:46 +#: src/preferences/CursorTheme.js:46 src/preferences/GtkTheme.js:64 +#: src/preferences/IconTheme.js:46 src/preferences/ShellTheme.js:64 msgid "Night variant" msgstr "Variante nocturne" -#: src/preferences/GtkTheme.js:40 +#: src/preferences/GtkTheme.js:42 msgid "GTK theme" msgstr "Thème GTK" -#: src/preferences/GtkTheme.js:41 +#: src/preferences/GtkTheme.js:43 msgid "" "The extension will try to automatically detect the day and night variants of " "your GTK theme.\n" @@ -142,7 +142,12 @@ msgstr "" "\">ouvrir une demande. Vous pouvez aussi sélectionner manuellement les " "variantes." -#: src/preferences/GtkTheme.js:44 src/preferences/ShellTheme.js:44 +#: src/preferences/GtkTheme.js:46 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:6 +msgid "Switch GTK variants" +msgstr "Permuter les variantes GTK" + +#: src/preferences/GtkTheme.js:48 src/preferences/ShellTheme.js:48 msgid "Manual variants" msgstr "Variantes manuelles" @@ -156,9 +161,9 @@ msgstr "" "Vous pouvez définir des thèmes d’icônes diurnes et nocturnes différents." #: src/preferences/IconTheme.js:44 -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:46 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:56 msgid "Switch icon variants" -msgstr "Changer les variantes d’icônes" +msgstr "Permuter les variantes d’icônes" #: src/preferences/Schedule.js:39 msgid "Schedule" @@ -184,7 +189,7 @@ msgid "Manual time source" msgstr "Source d’horaires manuelle" #: src/preferences/Schedule.js:44 -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:92 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:102 msgid "Time source" msgstr "Source d’horaires" @@ -208,11 +213,11 @@ msgstr "Horaire manuel" msgid "On-demand" msgstr "À la demande" -#: src/preferences/ShellTheme.js:40 +#: src/preferences/ShellTheme.js:42 msgid "Shell theme" msgstr "Thème du shell" -#: src/preferences/ShellTheme.js:41 +#: src/preferences/ShellTheme.js:43 msgid "" "The extension will try to automatically detect the day and night variants of " "your GNOME Shell theme.\n" @@ -229,211 +234,227 @@ msgstr "" "\">ouvrir une demande. Vous pouvez aussi sélectionner manuellement les " "variantes." -#: src/preferences/ShellTheme.js:78 +#: src/preferences/ShellTheme.js:46 +msgid "Switch Shell variants" +msgstr "Permuter les variantes Shell" + +#: src/preferences/ShellTheme.js:121 msgid "Default" msgstr "Par défaut" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:6 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:7 +msgid "Enable GTK variants switching" +msgstr "Activer le changement de variantes GTK" + +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:11 msgid "Day GTK theme" msgstr "Thème GTK diurne" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:7 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:12 msgid "The GTK theme to use during daytime" msgstr "Le thème GTK à utiliser le jour" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:11 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:16 msgid "Night GTK theme" msgstr "Thème GTK nocturne" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:12 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:17 msgid "The GTK theme to use during nighttime" msgstr "Le thème GTK à utiliser la nuit" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:16 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:21 msgid "Original GTK theme" msgstr "Thème GTK original" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:17 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:22 msgid "The GTK theme to restore when the extension is disabled" msgstr "Le thème GTK à restaurer quand l’extension est désactivée" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:21 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:26 msgid "Use manual GTK variants" msgstr "Utiliser des variantes GTK manuelles" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:22 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:27 msgid "Disable automatic GTK theme variants detection" msgstr "Désactiver la détection automatique des variantes du thème GTK" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:26 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:31 +msgid "Switch shell variants" +msgstr "Permuter les variantes du shell" + +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:32 +msgid "Enable shell variants switching" +msgstr "Activer le changement des variantes du shell" + +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:36 msgid "Day shell theme" msgstr "Thème shell diurne" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:27 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:37 msgid "The shell theme to use during daytime" msgstr "Le thème shell à utiliser le jour" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:31 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:41 msgid "Night shell theme" msgstr "Thème shell nocturne" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:32 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:42 msgid "The shell theme to use during nighttime" msgstr "Le thème shell à utiliser la nuit" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:36 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:46 msgid "Original shell theme" msgstr "Thème shell original" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:37 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:47 msgid "The shell theme to restore when the extension is disabled" msgstr "Le thème shell à restaurer quand l’extension est désactivée" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:41 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:51 msgid "Use manual shell variants" msgstr "Utiliser des variantes shell manuelles" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:42 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:52 msgid "Disable automatic shell theme variants detection" msgstr "Désactiver la détection automatique des variantes du thème shell" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:47 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:57 msgid "Enable icon variants switching" msgstr "Activer le changement de variantes d’icônes" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:51 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:61 msgid "Day icon theme" msgstr "Thème d’icônes diurne" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:52 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:62 msgid "The icon theme to use during daytime" msgstr "Le thème d’icônes à utiliser le jour" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:56 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:66 msgid "Night icon theme" msgstr "Thème d’icônes nocturne" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:57 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:67 msgid "The icon theme to use during nighttime" msgstr "Le thème d’icônes à utiliser la nuit" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:61 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:71 msgid "Original icon theme" msgstr "Thème d’icônes original" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:62 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:72 msgid "The icon theme to restore when the extension is disabled" msgstr "Le thème d’icônes à restaurer quand l’extension est désactivée" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:67 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:77 msgid "Enable cursor variants switching" msgstr "Activer le changement de variantes de curseur" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:71 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:81 msgid "Day cursor theme" msgstr "Thème de curseurs diurne" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:72 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:82 msgid "The cursor theme to use during daytime" msgstr "Le thème de curseurs à utiliser le jour" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:76 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:86 msgid "Night cursor theme" msgstr "Thème de curseurs nocturne" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:77 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:87 msgid "The cursor theme to use during nighttime" msgstr "Le thème de curseurs à utiliser la nuit" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:81 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:91 msgid "Original cursor theme" msgstr "Thème de curseurs original" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:82 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:92 msgid "The cursor theme to restore when the extension is disabled" msgstr "Le thème de curseurs à restaurer quand l’extension est désactivée" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:93 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:103 msgid "The source used to check current time" msgstr "Source utilisée pour vérifier les horaires" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:101 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:111 msgid "On-demand time" msgstr "Temps à la demande" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:102 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:112 msgid "The current time used in on-demand mode" msgstr "Le temps actuel utilisé dans le mode à la demande" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:106 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:116 msgid "Key combination to toggle time" msgstr "Combinaison de touches pour permuter le temps" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:107 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:117 msgid "The key combination that will toggle time in on-demand mode" msgstr "La combinaison de touches qui permutera le temps en mode à la demande" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:111 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:121 msgid "Use manual time source" msgstr "Utiliser une source d’horaires manuelle" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:112 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:122 msgid "Disable automatic time source detection" msgstr "Désactive la détection automatique de la source d’horaires" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:116 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:126 msgid "Sunrise time" msgstr "Heure du lever" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:117 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:127 msgid "When the day starts" msgstr "Quand le jour se lève" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:121 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:131 msgid "Sunset time" msgstr "Heure du coucher" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:122 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:132 msgid "When the day ends" msgstr "Quand le jour se couche" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:126 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:136 msgid "Enable commands" msgstr "Activer les commandes" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:127 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:137 msgid "Commands will be spawned on time change" msgstr "Les commandes seront lancées au changement d’horaire" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:131 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:141 msgid "Sunrise command" msgstr "Commande du lever de soleil" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:132 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:142 msgid "The command to spawn at sunrise" msgstr "La commande à lancer quand le soleil se lève" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:136 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:146 msgid "Sunset command" msgstr "Commande du coucher de soleil" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:137 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:147 msgid "The command to spawn at sunset" msgstr "La commande à lancer quand le soleil se couche" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:141 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:151 msgid "Enable backgrounds" msgstr "Activer les arrière-plans" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:142 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:152 msgid "Background will be changed on time change" msgstr "L’arrière-plan changera au changement d’horaire" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:147 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:157 msgid "Path to the day background" msgstr "Chemin vers l’arrière-plan diurne" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:152 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:162 msgid "Path to the night background" msgstr "Chemin vers l’arrière-plan nocturne" diff --git a/src/po/nightthemeswitcher@romainvigier.fr.pot b/src/po/nightthemeswitcher@romainvigier.fr.pot index 28668e4..9a912e8 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 30\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-15 10:10+0200\n" +"POT-Creation-Date: 2020-06-15 16:04+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,14 +17,14 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: src/modules/GtkThemer.js:152 +#: src/modules/GtkThemer.js:175 #, javascript-format msgid "" "Unable to automatically detect the day and night variants for the \"%s\" GTK " "theme. Please manually choose them in the extension's preferences." msgstr "" -#: src/modules/ShellThemer.js:159 +#: src/modules/ShellThemer.js:182 #, javascript-format msgid "" "Unable to automatically detect the day and night variants for the \"%s\" " @@ -45,12 +45,12 @@ msgid "Switch backgrounds" msgstr "" #: src/preferences/Backgrounds.js:44 -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:146 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:156 msgid "Day background" msgstr "" #: src/preferences/Backgrounds.js:45 -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:151 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:161 msgid "Night background" msgstr "" @@ -97,25 +97,25 @@ msgid "You can set different cursor themes for day and night." msgstr "" #: src/preferences/CursorTheme.js:44 -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:66 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:76 msgid "Switch cursor variants" msgstr "" -#: src/preferences/CursorTheme.js:45 src/preferences/GtkTheme.js:45 -#: src/preferences/IconTheme.js:45 src/preferences/ShellTheme.js:45 +#: src/preferences/CursorTheme.js:45 src/preferences/GtkTheme.js:57 +#: src/preferences/IconTheme.js:45 src/preferences/ShellTheme.js:57 msgid "Day variant" msgstr "" -#: src/preferences/CursorTheme.js:46 src/preferences/GtkTheme.js:46 -#: src/preferences/IconTheme.js:46 src/preferences/ShellTheme.js:46 +#: src/preferences/CursorTheme.js:46 src/preferences/GtkTheme.js:64 +#: src/preferences/IconTheme.js:46 src/preferences/ShellTheme.js:64 msgid "Night variant" msgstr "" -#: src/preferences/GtkTheme.js:40 +#: src/preferences/GtkTheme.js:42 msgid "GTK theme" msgstr "" -#: src/preferences/GtkTheme.js:41 +#: src/preferences/GtkTheme.js:43 msgid "" "The extension will try to automatically detect the day and night variants of " "your GTK theme.\n" @@ -125,7 +125,12 @@ msgid "" "a>. You can also manually set variants." msgstr "" -#: src/preferences/GtkTheme.js:44 src/preferences/ShellTheme.js:44 +#: src/preferences/GtkTheme.js:46 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:6 +msgid "Switch GTK variants" +msgstr "" + +#: src/preferences/GtkTheme.js:48 src/preferences/ShellTheme.js:48 msgid "Manual variants" msgstr "" @@ -138,7 +143,7 @@ msgid "You can set different icon themes for day and night." msgstr "" #: src/preferences/IconTheme.js:44 -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:46 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:56 msgid "Switch icon variants" msgstr "" @@ -160,7 +165,7 @@ msgid "Manual time source" msgstr "" #: src/preferences/Schedule.js:44 -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:92 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:102 msgid "Time source" msgstr "" @@ -184,11 +189,11 @@ msgstr "" msgid "On-demand" msgstr "" -#: src/preferences/ShellTheme.js:40 +#: src/preferences/ShellTheme.js:42 msgid "Shell theme" msgstr "" -#: src/preferences/ShellTheme.js:41 +#: src/preferences/ShellTheme.js:43 msgid "" "The extension will try to automatically detect the day and night variants of " "your GNOME Shell theme.\n" @@ -198,210 +203,226 @@ msgid "" "a>. You can also manually set variants." msgstr "" -#: src/preferences/ShellTheme.js:78 +#: src/preferences/ShellTheme.js:46 +msgid "Switch Shell variants" +msgstr "" + +#: src/preferences/ShellTheme.js:121 msgid "Default" msgstr "" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:6 -msgid "Day GTK theme" -msgstr "" - #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:7 -msgid "The GTK theme to use during daytime" +msgid "Enable GTK variants switching" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:11 -msgid "Night GTK theme" +msgid "Day GTK theme" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:12 -msgid "The GTK theme to use during nighttime" +msgid "The GTK theme to use during daytime" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:16 -msgid "Original GTK theme" +msgid "Night GTK theme" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:17 -msgid "The GTK theme to restore when the extension is disabled" +msgid "The GTK theme to use during nighttime" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:21 -msgid "Use manual GTK variants" +msgid "Original GTK theme" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:22 -msgid "Disable automatic GTK theme variants detection" +msgid "The GTK theme to restore when the extension is disabled" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:26 -msgid "Day shell theme" +msgid "Use manual GTK variants" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:27 -msgid "The shell theme to use during daytime" +msgid "Disable automatic GTK theme variants detection" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:31 -msgid "Night shell theme" +msgid "Switch shell variants" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:32 -msgid "The shell theme to use during nighttime" +msgid "Enable shell variants switching" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:36 -msgid "Original shell theme" +msgid "Day shell theme" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:37 -msgid "The shell theme to restore when the extension is disabled" +msgid "The shell theme to use during daytime" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:41 -msgid "Use manual shell variants" +msgid "Night shell theme" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:42 -msgid "Disable automatic shell theme variants detection" +msgid "The shell theme to use during nighttime" +msgstr "" + +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:46 +msgid "Original shell theme" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:47 -msgid "Enable icon variants switching" +msgid "The shell theme to restore when the extension is disabled" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:51 -msgid "Day icon theme" +msgid "Use manual shell variants" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:52 -msgid "The icon theme to use during daytime" -msgstr "" - -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:56 -msgid "Night icon theme" +msgid "Disable automatic shell theme variants detection" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:57 -msgid "The icon theme to use during nighttime" +msgid "Enable icon variants switching" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:61 -msgid "Original icon theme" +msgid "Day icon theme" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:62 -msgid "The icon theme to restore when the extension is disabled" +msgid "The icon theme to use during daytime" +msgstr "" + +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:66 +msgid "Night icon theme" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:67 -msgid "Enable cursor variants switching" +msgid "The icon theme to use during nighttime" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:71 -msgid "Day cursor theme" +msgid "Original icon theme" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:72 -msgid "The cursor theme to use during daytime" -msgstr "" - -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:76 -msgid "Night cursor theme" +msgid "The icon theme to restore when the extension is disabled" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:77 -msgid "The cursor theme to use during nighttime" +msgid "Enable cursor variants switching" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:81 -msgid "Original cursor theme" +msgid "Day cursor theme" msgstr "" #: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:82 +msgid "The cursor theme to use during daytime" +msgstr "" + +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:86 +msgid "Night cursor theme" +msgstr "" + +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:87 +msgid "The cursor theme to use during nighttime" +msgstr "" + +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:91 +msgid "Original cursor theme" +msgstr "" + +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:92 msgid "The cursor theme to restore when the extension is disabled" msgstr "" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:93 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:103 msgid "The source used to check current time" msgstr "" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:101 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:111 msgid "On-demand time" msgstr "" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:102 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:112 msgid "The current time used in on-demand mode" msgstr "" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:106 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:116 msgid "Key combination to toggle time" msgstr "" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:107 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:117 msgid "The key combination that will toggle time in on-demand mode" msgstr "" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:111 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:121 msgid "Use manual time source" msgstr "" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:112 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:122 msgid "Disable automatic time source detection" msgstr "" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:116 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:126 msgid "Sunrise time" msgstr "" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:117 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:127 msgid "When the day starts" msgstr "" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:121 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:131 msgid "Sunset time" msgstr "" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:122 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:132 msgid "When the day ends" msgstr "" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:126 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:136 msgid "Enable commands" msgstr "" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:127 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:137 msgid "Commands will be spawned on time change" msgstr "" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:131 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:141 msgid "Sunrise command" msgstr "" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:132 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:142 msgid "The command to spawn at sunrise" msgstr "" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:136 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:146 msgid "Sunset command" msgstr "" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:137 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:147 msgid "The command to spawn at sunset" msgstr "" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:141 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:151 msgid "Enable backgrounds" msgstr "" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:142 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:152 msgid "Background will be changed on time change" msgstr "" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:147 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:157 msgid "Path to the day background" msgstr "" -#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:152 +#: src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml:162 msgid "Path to the night background" msgstr "" diff --git a/src/preferences/GtkTheme.js b/src/preferences/GtkTheme.js index 20c356d..94f7d6d 100644 --- a/src/preferences/GtkTheme.js +++ b/src/preferences/GtkTheme.js @@ -37,13 +37,36 @@ if ( shell_minor_version <= 30 ) { var GtkThemePreferences = class { constructor() { + const settings = extensionUtils.getSettings(); + const label = _('GTK theme'); const description = _('The extension will try to automatically detect the day and night variants of your GTK theme.\n\nIf the theme you use isn\'t supported, please submit a request. You can also manually set variants.'); const content = new SettingsList(); - content.add_row(new SettingsListRow(_('Manual variants'), new ManualGtkVariantsControl())); - content.add_row(new SettingsListRow(_('Day variant'), new TimeGtkVariantControl('day'))); - content.add_row(new SettingsListRow(_('Night variant'), new TimeGtkVariantControl('night'))); + content.add_row(new SettingsListRow(_('Switch GTK variants'), new GtkVariantsEnabledControl())); + + const manual_variants_row = new SettingsListRow(_('Manual variants'), new ManualGtkVariantsControl()); + settings.bind( + 'gtk-variants-enabled', + manual_variants_row, + 'sensitive', + Gio.SettingsBindFlags.DEFAULT + ); + content.add_row(manual_variants_row); + + const day_variant_row = new SettingsListRow(_('Day variant'), new TimeGtkVariantControl('day')); + const update_day_variant_row_sensitivity = () => day_variant_row.set_sensitive(!!(settings.get_boolean('gtk-variants-enabled') && settings.get_boolean('manual-gtk-variants'))); + settings.connect('changed::gtk-variants-enabled', update_day_variant_row_sensitivity); + settings.connect('changed::manual-gtk-variants', update_day_variant_row_sensitivity) + update_day_variant_row_sensitivity(); + content.add_row(day_variant_row); + + const night_variant_row = new SettingsListRow(_('Night variant'), new TimeGtkVariantControl('night')); + const update_night_variant_row_sensitivity = () => night_variant_row.set_sensitive(!!(settings.get_boolean('gtk-variants-enabled') && settings.get_boolean('manual-gtk-variants'))); + settings.connect('changed::gtk-variants-enabled', update_night_variant_row_sensitivity); + settings.connect('changed::manual-gtk-variants', update_night_variant_row_sensitivity) + update_night_variant_row_sensitivity(); + content.add_row(night_variant_row); return new SettingsPage(label, description, content); } @@ -51,6 +74,25 @@ var GtkThemePreferences = class { } +class GtkVariantsEnabledControl { + + constructor() { + const settings = extensionUtils.getSettings(); + const toggle = new Gtk.Switch({ + active: settings.get_boolean('gtk-variants-enabled') + }); + settings.bind( + 'gtk-variants-enabled', + toggle, + 'active', + Gio.SettingsBindFlags.DEFAULT + ); + return toggle; + } + +} + + class ManualGtkVariantsControl { constructor() { @@ -83,12 +125,6 @@ class TimeGtkVariantControl { 'active-id', Gio.SettingsBindFlags.DEFAULT ); - settings.bind( - 'manual-gtk-variants', - combo, - 'sensitive', - Gio.SettingsBindFlags.DEFAULT - ); return combo; } diff --git a/src/preferences/ShellTheme.js b/src/preferences/ShellTheme.js index d9d6902..5d39342 100644 --- a/src/preferences/ShellTheme.js +++ b/src/preferences/ShellTheme.js @@ -37,19 +37,62 @@ if ( shell_minor_version <= 30 ) { var ShellThemePreferences = class { constructor() { + const settings = extensionUtils.getSettings(); + const label = _('Shell theme'); const description = _('The extension will try to automatically detect the day and night variants of your GNOME Shell theme.\n\nIf the theme you use isn\'t supported, please submit a request. You can also manually set variants.'); const content = new SettingsList(); - content.add_row(new SettingsListRow(_('Manual variants'), new ManualShellVariantsControl())); - content.add_row(new SettingsListRow(_('Day variant'), new TimeShellVariantControl('day'))); - content.add_row(new SettingsListRow(_('Night variant'), new TimeShellVariantControl('night'))); + content.add_row(new SettingsListRow(_('Switch Shell variants'), new ShellVariantsEnabledControl())); + + const manual_variants_row = new SettingsListRow(_('Manual variants'), new ManualShellVariantsControl()); + settings.bind( + 'shell-variants-enabled', + manual_variants_row, + 'sensitive', + Gio.SettingsBindFlags.DEFAULT + ); + content.add_row(manual_variants_row); + + const day_variant_row = new SettingsListRow(_('Day variant'), new TimeShellVariantControl('day')); + const update_day_variant_row_sensitivity = () => day_variant_row.set_sensitive(!!(settings.get_boolean('shell-variants-enabled') && settings.get_boolean('manual-shell-variants'))); + settings.connect('changed::shell-variants-enabled', update_day_variant_row_sensitivity); + settings.connect('changed::manual-shell-variants', update_day_variant_row_sensitivity) + update_day_variant_row_sensitivity(); + content.add_row(day_variant_row); + + const night_variant_row = new SettingsListRow(_('Night variant'), new TimeShellVariantControl('night')); + const update_night_variant_row_sensitivity = () => night_variant_row.set_sensitive(!!(settings.get_boolean('shell-variants-enabled') && settings.get_boolean('manual-shell-variants'))); + settings.connect('changed::shell-variants-enabled', update_night_variant_row_sensitivity); + settings.connect('changed::manual-shell-variants', update_night_variant_row_sensitivity) + update_night_variant_row_sensitivity(); + content.add_row(night_variant_row); return new SettingsPage(label, description, content); } } + +class ShellVariantsEnabledControl { + + constructor() { + const settings = extensionUtils.getSettings(); + const toggle = new Gtk.Switch({ + active: settings.get_boolean('shell-variants-enabled') + }); + settings.bind( + 'shell-variants-enabled', + toggle, + 'active', + Gio.SettingsBindFlags.DEFAULT + ); + return toggle; + } + +} + + class ManualShellVariantsControl { constructor() { @@ -82,12 +125,6 @@ class TimeShellVariantControl { 'active-id', Gio.SettingsBindFlags.DEFAULT ); - settings.bind( - 'manual-shell-variants', - combo, - 'sensitive', - Gio.SettingsBindFlags.DEFAULT - ); return combo; } diff --git a/src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml b/src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml index 6a74639..eeda907 100644 --- a/src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml +++ b/src/schemas/org.gnome.shell.extensions.nightthemeswitcher.gschema.xml @@ -1,6 +1,11 @@ + + true + Switch GTK variants + Enable GTK variants switching + "Adwaita" Day GTK theme @@ -21,6 +26,11 @@ Use manual GTK variants Disable automatic GTK theme variants detection + + true + Switch shell variants + Enable shell variants switching + "" Day shell theme