From 7c1c1b306be5f85e05bdac2d2ba166b6a5fb8f3c Mon Sep 17 00:00:00 2001 From: Philipp Unger Date: Thu, 7 Apr 2022 00:35:37 +0200 Subject: [PATCH] move preferences dialog create into _createPreferencesDialog --- prefs.js | 708 ++++++++++++++++++++----------------------------------- 1 file changed, 258 insertions(+), 450 deletions(-) diff --git a/prefs.js b/prefs.js index fc58f3c..02d7997 100644 --- a/prefs.js +++ b/prefs.js @@ -481,18 +481,51 @@ const Preferences = class { }); } - _showShowAppsButtonOptions() { - let dialog = new Gtk.Dialog({ title: _('Show Applications options'), + _createPreferencesDialog(title, content, reset_function = null) { + let dialog; + + if (true) { // Config.PACKAGE_VERSION < '42') { + dialog = new Gtk.Dialog({ title: title, transient_for: this.notebook.get_root(), use_header_bar: true, modal: true }); - // GTK+ leaves positive values for application-defined response ids. - // Use +1 for the reset action - dialog.add_button(_('Reset to defaults'), 1); + // GTK+ leaves positive values for application-defined response ids. + // Use +1 for the reset action + if (reset_function != null) + dialog.add_button(_('Reset to defaults'), 1); + dialog.get_content_area().append(content); + + dialog.connect('response', (dialog, id) => { + if (id == 1) { + // restore default settings + if (reset_function) + reset_function(); + } else { + // remove the settings content so it doesn't get destroyed; + dialog.get_content_area().remove(content); + dialog.destroy(); + } + return; + }); + } else { + dialog = new Adw.PreferencesWindow({ title: title }); + } + return dialog; + } + + _showShowAppsButtonOptions() { let box = this._builder.get_object('show_applications_options'); - dialog.get_content_area().append(box); + + let dialog = this._createPreferencesDialog(_('Show Applications options'), box, () => + { + // restore default settings + this._settings.set_value('show-apps-icon-side-padding', this._settings.get_default_value('show-apps-icon-side-padding')); + this._builder.get_object('show_applications_side_padding_spinbutton').set_value(this._settings.get_int('show-apps-icon-side-padding')); + this._settings.set_value('show-apps-override-escape', this._settings.get_default_value('show-apps-override-escape')); + handleIconChange.call(this, null); + }); let fileChooserButton = this._builder.get_object('show_applications_icon_file_filebutton'); let fileChooser = new Gtk.FileChooserNative({ title: _('Open icon'), transient_for: dialog }); @@ -527,17 +560,9 @@ const Preferences = class { fileChooser.connect('response', widget => handleIconChange.call(this, widget.get_file().get_path())); handleIconChange.call(this, this._settings.get_string('show-apps-icon-file')); + // we have to destroy the fileChooser as well dialog.connect('response', (dialog, id) => { - if (id == 1) { - // restore default settings - this._settings.set_value('show-apps-icon-side-padding', this._settings.get_default_value('show-apps-icon-side-padding')); - this._builder.get_object('show_applications_side_padding_spinbutton').set_value(this._settings.get_int('show-apps-icon-side-padding')); - this._settings.set_value('show-apps-override-escape', this._settings.get_default_value('show-apps-override-escape')); - handleIconChange.call(this, null); - } else { - // remove the settings box so it doesn't get destroyed; - dialog.get_content_area().remove(box); - dialog.destroy(); + if (id != 1) { fileChooser.destroy(); } return; @@ -548,17 +573,24 @@ const Preferences = class { } _showDesktopButtonOptions() { - let dialog = new Gtk.Dialog({ title: _('Show Desktop options'), - transient_for: this.notebook.get_root(), - use_header_bar: true, - modal: true }); - - // GTK+ leaves positive values for application-defined response ids. - // Use +1 for the reset action - dialog.add_button(_('Reset to defaults'), 1); - let box = this._builder.get_object('box_show_showdesktop_options'); - dialog.get_content_area().append(box); + + let dialog = this._createPreferencesDialog(_('Show Desktop options'), box, () => + { + // restore default settings + this._settings.set_value('showdesktop-button-width', this._settings.get_default_value('showdesktop-button-width')); + this._builder.get_object('show_showdesktop_width_spinbutton').set_value(this._settings.get_int('showdesktop-button-width')); + + this._settings.set_value('desktop-line-use-custom-color', this._settings.get_default_value('desktop-line-use-custom-color')); + + this._settings.set_value('show-showdesktop-hover', this._settings.get_default_value('show-showdesktop-hover')); + + this._settings.set_value('show-showdesktop-delay', this._settings.get_default_value('show-showdesktop-delay')); + this._builder.get_object('show_showdesktop_delay_spinbutton').set_value(this._settings.get_int('show-showdesktop-delay')); + + this._settings.set_value('show-showdesktop-time', this._settings.get_default_value('show-showdesktop-time')); + this._builder.get_object('show_showdesktop_time_spinbutton').set_value(this._settings.get_int('show-showdesktop-time')); + }); this._builder.get_object('show_showdesktop_width_spinbutton').set_value(this._settings.get_int('showdesktop-button-width')); this._builder.get_object('show_showdesktop_width_spinbutton').connect('value-changed', (widget) => { @@ -575,27 +607,6 @@ const Preferences = class { this._settings.set_int('show-showdesktop-time', widget.get_value()); }); - dialog.connect('response', (dialog, id) => { - if (id == 1) { - // restore default settings - this._settings.set_value('showdesktop-button-width', this._settings.get_default_value('showdesktop-button-width')); - this._builder.get_object('show_showdesktop_width_spinbutton').set_value(this._settings.get_int('showdesktop-button-width')); - - this._settings.set_value('show-showdesktop-hover', this._settings.get_default_value('show-showdesktop-hover')); - - this._settings.set_value('show-showdesktop-delay', this._settings.get_default_value('show-showdesktop-delay')); - this._builder.get_object('show_showdesktop_delay_spinbutton').set_value(this._settings.get_int('show-showdesktop-delay')); - - this._settings.set_value('show-showdesktop-time', this._settings.get_default_value('show-showdesktop-time')); - this._builder.get_object('show_showdesktop_time_spinbutton').set_value(this._settings.get_int('show-showdesktop-time')); - } else { - // remove the settings box so it doesn't get destroyed; - dialog.get_content_area().remove(box); - dialog.destroy(); - } - return; - }); - dialog.show(); dialog.set_default_size(1, 1); } @@ -767,18 +778,41 @@ const Preferences = class { }); this._builder.get_object('dot_style_options_button').connect('clicked', () => { - - let dialog = new Gtk.Dialog({ title: _('Running Indicator Options'), - transient_for: this.notebook.get_root(), - use_header_bar: true, - modal: true }); - - // GTK+ leaves positive values for application-defined response ids. - // Use +1 for the reset action - dialog.add_button(_('Reset to defaults'), 1); - let box = this._builder.get_object('box_dots_options'); - dialog.get_content_area().append(box); + + let dialog = this._createPreferencesDialog(_('Running Indicator Options'), box, () => + { + // restore default settings + this._settings.set_value('dot-color-dominant', this._settings.get_default_value('dot-color-dominant')); + this._settings.set_value('dot-color-override', this._settings.get_default_value('dot-color-override')); + this._settings.set_value('dot-color-unfocused-different', this._settings.get_default_value('dot-color-unfocused-different')); + + this._settings.set_value('focus-highlight-color', this._settings.get_default_value('focus-highlight-color')); + let rgba = new Gdk.RGBA(); + rgba.parse(this._settings.get_string('focus-highlight-color')); + this._builder.get_object('focus_highlight_color_colorbutton').set_rgba(rgba); + + this._settings.set_value('focus-highlight-opacity', this._settings.get_default_value('focus-highlight-opacity')); + this._builder.get_object('focus_highlight_opacity_spinbutton').set_value(this._settings.get_int('focus-highlight-opacity')); + + for (let i = 1; i <= MAX_WINDOW_INDICATOR; i++) { + this._settings.set_value('dot-color-' + i, this._settings.get_default_value('dot-color-' + i)); + rgba = new Gdk.RGBA(); + rgba.parse(this._settings.get_string('dot-color-' + i)); + this._builder.get_object('dot_color_' + i + '_colorbutton').set_rgba(rgba); + + this._settings.set_value('dot-color-unfocused-' + i, this._settings.get_default_value('dot-color-unfocused-' + i)); + rgba = new Gdk.RGBA(); + rgba.parse(this._settings.get_string('dot-color-unfocused-' + i)); + this._builder.get_object('dot_color_unfocused_' + i + '_colorbutton').set_rgba(rgba); + } + + this._settings.set_value('dot-size', this._settings.get_default_value('dot-size')); + this._builder.get_object('dot_size_spinbutton').set_value(this._settings.get_int('dot-size')); + + this._settings.set_value('focus-highlight', this._settings.get_default_value('focus-highlight')); + this._settings.set_value('focus-highlight-dominant', this._settings.get_default_value('focus-highlight-dominant')); + }); this._settings.bind('dot-color-dominant', this._builder.get_object('dot_color_dominant_switch'), @@ -870,47 +904,6 @@ const Preferences = class { this._settings.set_int('dot-size', widget.get_value()); }); - dialog.connect('response', (dialog, id) => { - if (id == 1) { - // restore default settings - this._settings.set_value('dot-color-dominant', this._settings.get_default_value('dot-color-dominant')); - this._settings.set_value('dot-color-override', this._settings.get_default_value('dot-color-override')); - this._settings.set_value('dot-color-unfocused-different', this._settings.get_default_value('dot-color-unfocused-different')); - - this._settings.set_value('focus-highlight-color', this._settings.get_default_value('focus-highlight-color')); - let rgba = new Gdk.RGBA(); - rgba.parse(this._settings.get_string('focus-highlight-color')); - this._builder.get_object('focus_highlight_color_colorbutton').set_rgba(rgba); - - this._settings.set_value('focus-highlight-opacity', this._settings.get_default_value('focus-highlight-opacity')); - this._builder.get_object('focus_highlight_opacity_spinbutton').set_value(this._settings.get_int('focus-highlight-opacity')); - - for (let i = 1; i <= MAX_WINDOW_INDICATOR; i++) { - this._settings.set_value('dot-color-' + i, this._settings.get_default_value('dot-color-' + i)); - rgba = new Gdk.RGBA(); - rgba.parse(this._settings.get_string('dot-color-' + i)); - this._builder.get_object('dot_color_' + i + '_colorbutton').set_rgba(rgba); - - this._settings.set_value('dot-color-unfocused-' + i, this._settings.get_default_value('dot-color-unfocused-' + i)); - rgba = new Gdk.RGBA(); - rgba.parse(this._settings.get_string('dot-color-unfocused-' + i)); - this._builder.get_object('dot_color_unfocused_' + i + '_colorbutton').set_rgba(rgba); - } - - this._settings.set_value('dot-size', this._settings.get_default_value('dot-size')); - this._builder.get_object('dot_size_spinbutton').set_value(this._settings.get_int('dot-size')); - - this._settings.set_value('focus-highlight', this._settings.get_default_value('focus-highlight')); - this._settings.set_value('focus-highlight-dominant', this._settings.get_default_value('focus-highlight-dominant')); - - } else { - // remove the settings box so it doesn't get destroyed; - dialog.get_content_area().remove(box); - dialog.destroy(); - } - return; - }); - dialog.show(); dialog.set_default_size(1, 1); @@ -1114,20 +1107,10 @@ const Preferences = class { }); this._builder.get_object('trans_dyn_options_button').connect('clicked', () => { - let dialog = new Gtk.Dialog({ title: _('Dynamic opacity options'), - transient_for: this.notebook.get_root(), - use_header_bar: true, - modal: true }); - - // GTK+ leaves positive values for application-defined response ids. - // Use +1 for the reset action - dialog.add_button(_('Reset to defaults'), 1); - let box = this._builder.get_object('box_dynamic_opacity_options'); - dialog.get_content_area().append(box); - dialog.connect('response', (dialog, id) => { - if (id == 1) { + let dialog = this._createPreferencesDialog(_('Dynamic opacity options'), box, () => + { // restore default settings this._settings.set_value('trans-dynamic-behavior', this._settings.get_default_value('trans-dynamic-behavior')); @@ -1139,12 +1122,6 @@ const Preferences = class { this._settings.set_value('trans-dynamic-anim-time', this._settings.get_default_value('trans-dynamic-anim-time')); this._builder.get_object('trans_options_anim_time_spinbutton').set_value(this._settings.get_int('trans-dynamic-anim-time')); - } else { - // remove the settings box so it doesn't get destroyed; - dialog.get_content_area().remove(box); - dialog.destroy(); - } - return; }); dialog.show(); @@ -1258,49 +1235,33 @@ const Preferences = class { }); this._builder.get_object('intellihide_options_button').connect('clicked', () => { - let dialog = new Gtk.Dialog({ title: _('Intellihide options'), - transient_for: this.notebook.get_root(), - use_header_bar: true, - modal: true }); - - // GTK+ leaves positive values for application-defined response ids. - // Use +1 for the reset action - dialog.add_button(_('Reset to defaults'), 1); - let box = this._builder.get_object('box_intellihide_options'); - dialog.get_content_area().append(box); - dialog.connect('response', (dialog, id) => { - if (id == 1) { - // restore default settings - this._settings.set_value('intellihide-hide-from-windows', this._settings.get_default_value('intellihide-hide-from-windows')); - this._settings.set_value('intellihide-behaviour', this._settings.get_default_value('intellihide-behaviour')); - this._settings.set_value('intellihide-use-pressure', this._settings.get_default_value('intellihide-use-pressure')); - this._settings.set_value('intellihide-show-in-fullscreen', this._settings.get_default_value('intellihide-show-in-fullscreen')); - this._settings.set_value('intellihide-only-secondary', this._settings.get_default_value('intellihide-only-secondary')); + let dialog = this._createPreferencesDialog(_('Intellihide options'), box, () => + { + // restore default settings + this._settings.set_value('intellihide-hide-from-windows', this._settings.get_default_value('intellihide-hide-from-windows')); + this._settings.set_value('intellihide-behaviour', this._settings.get_default_value('intellihide-behaviour')); + this._settings.set_value('intellihide-use-pressure', this._settings.get_default_value('intellihide-use-pressure')); + this._settings.set_value('intellihide-show-in-fullscreen', this._settings.get_default_value('intellihide-show-in-fullscreen')); + this._settings.set_value('intellihide-only-secondary', this._settings.get_default_value('intellihide-only-secondary')); - this._settings.set_value('intellihide-pressure-threshold', this._settings.get_default_value('intellihide-pressure-threshold')); - this._builder.get_object('intellihide_pressure_threshold_spinbutton').set_value(this._settings.get_int('intellihide-pressure-threshold')); - - this._settings.set_value('intellihide-pressure-time', this._settings.get_default_value('intellihide-pressure-time')); - this._builder.get_object('intellihide_pressure_time_spinbutton').set_value(this._settings.get_int('intellihide-pressure-time')); + this._settings.set_value('intellihide-pressure-threshold', this._settings.get_default_value('intellihide-pressure-threshold')); + this._builder.get_object('intellihide_pressure_threshold_spinbutton').set_value(this._settings.get_int('intellihide-pressure-threshold')); + + this._settings.set_value('intellihide-pressure-time', this._settings.get_default_value('intellihide-pressure-time')); + this._builder.get_object('intellihide_pressure_time_spinbutton').set_value(this._settings.get_int('intellihide-pressure-time')); - this._settings.set_value('intellihide-key-toggle-text', this._settings.get_default_value('intellihide-key-toggle-text')); + this._settings.set_value('intellihide-key-toggle-text', this._settings.get_default_value('intellihide-key-toggle-text')); - this._settings.set_value('intellihide-animation-time', this._settings.get_default_value('intellihide-animation-time')); - this._builder.get_object('intellihide_animation_time_spinbutton').set_value(this._settings.get_int('intellihide-animation-time')); + this._settings.set_value('intellihide-animation-time', this._settings.get_default_value('intellihide-animation-time')); + this._builder.get_object('intellihide_animation_time_spinbutton').set_value(this._settings.get_int('intellihide-animation-time')); - this._settings.set_value('intellihide-close-delay', this._settings.get_default_value('intellihide-close-delay')); - this._builder.get_object('intellihide_close_delay_spinbutton').set_value(this._settings.get_int('intellihide-close-delay')); + this._settings.set_value('intellihide-close-delay', this._settings.get_default_value('intellihide-close-delay')); + this._builder.get_object('intellihide_close_delay_spinbutton').set_value(this._settings.get_int('intellihide-close-delay')); - this._settings.set_value('intellihide-enable-start-delay', this._settings.get_default_value('intellihide-enable-start-delay')); - this._builder.get_object('intellihide_enable_start_delay_spinbutton').set_value(this._settings.get_int('intellihide-enable-start-delay')); - } else { - // remove the settings box so it doesn't get destroyed; - dialog.get_content_area().remove(box); - dialog.destroy(); - } - return; + this._settings.set_value('intellihide-enable-start-delay', this._settings.get_default_value('intellihide-enable-start-delay')); + this._builder.get_object('intellihide_enable_start_delay_spinbutton').set_value(this._settings.get_int('intellihide-enable-start-delay')); }); dialog.show(); @@ -1380,19 +1341,70 @@ const Preferences = class { }); this._builder.get_object('show_window_previews_button').connect('clicked', () => { - - let dialog = new Gtk.Dialog({ title: _('Window preview options'), - transient_for: this.notebook.get_root(), - use_header_bar: true, - modal: true }); - - // GTK+ leaves positive values for application-defined response ids. - // Use +1 for the reset action - dialog.add_button(_('Reset to defaults'), 1); - let scrolledWindow = this._builder.get_object('box_window_preview_options'); - dialog.get_content_area().append(scrolledWindow); + let dialog = this._createPreferencesDialog(_('Window preview options'), scrolledWindow, () => + { + // restore default settings + this._settings.set_value('show-window-previews-timeout', this._settings.get_default_value('show-window-previews-timeout')); + this._builder.get_object('preview_timeout_spinbutton').set_value(this._settings.get_int('show-window-previews-timeout')); + + this._settings.set_value('leave-timeout', this._settings.get_default_value('leave-timeout')); + this._builder.get_object('leave_timeout_spinbutton').set_value(this._settings.get_int('leave-timeout')); + + this._settings.set_value('window-preview-hide-immediate-click', this._settings.get_default_value('window-preview-hide-immediate-click')); + + this._settings.set_value('window-preview-animation-time', this._settings.get_default_value('window-preview-animation-time')); + this._builder.get_object('animation_time_spinbutton').set_value(this._settings.get_int('window-preview-animation-time')); + + this._settings.set_value('preview-use-custom-opacity', this._settings.get_default_value('preview-use-custom-opacity')); + + this._settings.set_value('window-preview-use-custom-icon-size', this._settings.get_default_value('window-preview-use-custom-icon-size')); + + this._settings.set_value('preview-custom-opacity', this._settings.get_default_value('preview-custom-opacity')); + this._builder.get_object('preview_custom_opacity_spinbutton').set_value(this._settings.get_int('preview-custom-opacity')); + + this._settings.set_value('window-preview-title-position', this._settings.get_default_value('window-preview-title-position')); + this._setPreviewTitlePosition(); + + this._settings.set_value('peek-mode', this._settings.get_default_value('peek-mode')); + this._settings.set_value('window-preview-show-title', this._settings.get_default_value('window-preview-show-title')); + this._settings.set_value('enter-peek-mode-timeout', this._settings.get_default_value('enter-peek-mode-timeout')); + this._builder.get_object('enter_peek_mode_timeout_spinbutton').set_value(this._settings.get_int('enter-peek-mode-timeout')); + this._settings.set_value('peek-mode-opacity', this._settings.get_default_value('peek-mode-opacity')); + this._builder.get_object('peek_mode_opacity_spinbutton').set_value(this._settings.get_int('peek-mode-opacity')); + + this._settings.set_value('window-preview-size', this._settings.get_default_value('window-preview-size')); + this._builder.get_object('preview_size_spinbutton').set_value(this._settings.get_int('window-preview-size')); + + this._settings.set_value('window-preview-fixed-x', this._settings.get_default_value('window-preview-fixed-x')); + this._settings.set_value('window-preview-fixed-y', this._settings.get_default_value('window-preview-fixed-y')); + + this._settings.set_value('window-preview-aspect-ratio-x', this._settings.get_default_value('window-preview-aspect-ratio-x')); + this._builder.get_object('preview_aspect_ratio_x_combo').set_active_id(this._settings.get_int('window-preview-aspect-ratio-x').toString()); + + this._settings.set_value('window-preview-aspect-ratio-y', this._settings.get_default_value('window-preview-aspect-ratio-y')); + this._builder.get_object('preview_aspect_ratio_y_combo').set_active_id(this._settings.get_int('window-preview-aspect-ratio-y').toString()); + + this._settings.set_value('window-preview-padding', this._settings.get_default_value('window-preview-padding')); + this._builder.get_object('preview_padding_spinbutton').set_value(this._settings.get_int('window-preview-padding')); + + this._settings.set_value('preview-middle-click-close', this._settings.get_default_value('preview-middle-click-close')); + + this._settings.set_value('window-preview-title-font-size', this._settings.get_default_value('window-preview-title-font-size')); + this._builder.get_object('preview_title_size_spinbutton').set_value(this._settings.get_int('window-preview-title-font-size')); + + this._settings.set_value('window-preview-custom-icon-size', this._settings.get_default_value('window-preview-custom-icon-size')); + this._builder.get_object('preview_custom_icon_size_spinbutton').set_value(this._settings.get_int('window-preview-custom-icon-size')); + + this._settings.set_value('window-preview-title-font-weight', this._settings.get_default_value('window-preview-title-font-weight')); + this._builder.get_object('grid_preview_title_weight_combo').set_active_id(this._settings.get_string('window-preview-title-font-weight')); + + this._settings.set_value('window-preview-title-font-color', this._settings.get_default_value('window-preview-title-font-color')); + let rgba = new Gdk.RGBA(); + rgba.parse(this._settings.get_string('window-preview-title-font-color')); + this._builder.get_object('grid_preview_title_font_color_colorbutton').set_rgba(rgba); + }); this._builder.get_object('preview_timeout_spinbutton').set_value(this._settings.get_int('show-window-previews-timeout')); this._builder.get_object('preview_timeout_spinbutton').connect('value-changed', (widget) => { @@ -1536,76 +1548,6 @@ const Preferences = class { this._builder.get_object('grid_preview_title_font_color_colorbutton').set_rgba(rgba); }).apply(this); - dialog.connect('response', (dialog, id) => { - if (id == 1) { - // restore default settings - this._settings.set_value('show-window-previews-timeout', this._settings.get_default_value('show-window-previews-timeout')); - this._builder.get_object('preview_timeout_spinbutton').set_value(this._settings.get_int('show-window-previews-timeout')); - - this._settings.set_value('leave-timeout', this._settings.get_default_value('leave-timeout')); - this._builder.get_object('leave_timeout_spinbutton').set_value(this._settings.get_int('leave-timeout')); - - this._settings.set_value('window-preview-hide-immediate-click', this._settings.get_default_value('window-preview-hide-immediate-click')); - - this._settings.set_value('window-preview-animation-time', this._settings.get_default_value('window-preview-animation-time')); - this._builder.get_object('animation_time_spinbutton').set_value(this._settings.get_int('window-preview-animation-time')); - - this._settings.set_value('preview-use-custom-opacity', this._settings.get_default_value('preview-use-custom-opacity')); - - this._settings.set_value('window-preview-use-custom-icon-size', this._settings.get_default_value('window-preview-use-custom-icon-size')); - - this._settings.set_value('preview-custom-opacity', this._settings.get_default_value('preview-custom-opacity')); - this._builder.get_object('preview_custom_opacity_spinbutton').set_value(this._settings.get_int('preview-custom-opacity')); - - this._settings.set_value('window-preview-title-position', this._settings.get_default_value('window-preview-title-position')); - this._setPreviewTitlePosition(); - - this._settings.set_value('peek-mode', this._settings.get_default_value('peek-mode')); - this._settings.set_value('window-preview-show-title', this._settings.get_default_value('window-preview-show-title')); - this._settings.set_value('enter-peek-mode-timeout', this._settings.get_default_value('enter-peek-mode-timeout')); - this._builder.get_object('enter_peek_mode_timeout_spinbutton').set_value(this._settings.get_int('enter-peek-mode-timeout')); - this._settings.set_value('peek-mode-opacity', this._settings.get_default_value('peek-mode-opacity')); - this._builder.get_object('peek_mode_opacity_spinbutton').set_value(this._settings.get_int('peek-mode-opacity')); - - this._settings.set_value('window-preview-size', this._settings.get_default_value('window-preview-size')); - this._builder.get_object('preview_size_spinbutton').set_value(this._settings.get_int('window-preview-size')); - - this._settings.set_value('window-preview-fixed-x', this._settings.get_default_value('window-preview-fixed-x')); - this._settings.set_value('window-preview-fixed-y', this._settings.get_default_value('window-preview-fixed-y')); - - this._settings.set_value('window-preview-aspect-ratio-x', this._settings.get_default_value('window-preview-aspect-ratio-x')); - this._builder.get_object('preview_aspect_ratio_x_combo').set_active_id(this._settings.get_int('window-preview-aspect-ratio-x').toString()); - - this._settings.set_value('window-preview-aspect-ratio-y', this._settings.get_default_value('window-preview-aspect-ratio-y')); - this._builder.get_object('preview_aspect_ratio_y_combo').set_active_id(this._settings.get_int('window-preview-aspect-ratio-y').toString()); - - this._settings.set_value('window-preview-padding', this._settings.get_default_value('window-preview-padding')); - this._builder.get_object('preview_padding_spinbutton').set_value(this._settings.get_int('window-preview-padding')); - - this._settings.set_value('preview-middle-click-close', this._settings.get_default_value('preview-middle-click-close')); - - this._settings.set_value('window-preview-title-font-size', this._settings.get_default_value('window-preview-title-font-size')); - this._builder.get_object('preview_title_size_spinbutton').set_value(this._settings.get_int('window-preview-title-font-size')); - - this._settings.set_value('window-preview-custom-icon-size', this._settings.get_default_value('window-preview-custom-icon-size')); - this._builder.get_object('preview_custom_icon_size_spinbutton').set_value(this._settings.get_int('window-preview-custom-icon-size')); - - this._settings.set_value('window-preview-title-font-weight', this._settings.get_default_value('window-preview-title-font-weight')); - this._builder.get_object('grid_preview_title_weight_combo').set_active_id(this._settings.get_string('window-preview-title-font-weight')); - - this._settings.set_value('window-preview-title-font-color', this._settings.get_default_value('window-preview-title-font-color')); - let rgba = new Gdk.RGBA(); - rgba.parse(this._settings.get_string('window-preview-title-font-color')); - this._builder.get_object('grid_preview_title_font_color_colorbutton').set_rgba(rgba); - - } else { - // remove the settings box so it doesn't get destroyed; - dialog.get_content_area().remove(scrolledWindow); - dialog.destroy(); - } - return; - }); - dialog.show(); }); @@ -1675,17 +1617,34 @@ const Preferences = class { Gio.SettingsBindFlags.DEFAULT); this._builder.get_object('show_group_apps_options_button').connect('clicked', () => { - let dialog = new Gtk.Dialog({ title: _('Ungrouped application options'), - transient_for: this.notebook.get_root(), - use_header_bar: true, - modal: true }); - - // GTK+ leaves positive values for application-defined response ids. - // Use +1 for the reset action - dialog.add_button(_('Reset to defaults'), 1); - let box = this._builder.get_object('box_group_apps_options'); - dialog.get_content_area().append(box); + + let dialog = this._createPreferencesDialog(_('Ungrouped application options'), box, () => + { + // restore default settings + this._settings.set_value('group-apps-label-font-size', this._settings.get_default_value('group-apps-label-font-size')); + this._builder.get_object('group_apps_label_font_size_spinbutton').set_value(this._settings.get_int('group-apps-label-font-size')); + + this._settings.set_value('group-apps-label-font-weight', this._settings.get_default_value('group-apps-label-font-weight')); + this._builder.get_object('group_apps_label_font_weight_combo').set_active_id(this._settings.get_string('group-apps-label-font-weight')); + + this._settings.set_value('group-apps-label-font-color', this._settings.get_default_value('group-apps-label-font-color')); + let rgba = new Gdk.RGBA(); + rgba.parse(this._settings.get_string('group-apps-label-font-color')); + this._builder.get_object('group_apps_label_font_color_colorbutton').set_rgba(rgba); + + this._settings.set_value('group-apps-label-font-color-minimized', this._settings.get_default_value('group-apps-label-font-color-minimized')); + let minimizedFontColor = new Gdk.RGBA(); + minimizedFontColor.parse(this._settings.get_string('group-apps-label-font-color-minimized')); + this._builder.get_object('group_apps_label_font_color_minimized_colorbutton').set_rgba(minimizedFontColor); + + this._settings.set_value('group-apps-label-max-width', this._settings.get_default_value('group-apps-label-max-width')); + this._builder.get_object('group_apps_label_max_width_spinbutton').set_value(this._settings.get_int('group-apps-label-max-width')); + + this._settings.set_value('group-apps-use-fixed-width', this._settings.get_default_value('group-apps-use-fixed-width')); + this._settings.set_value('group-apps-underline-unfocused', this._settings.get_default_value('group-apps-underline-unfocused')); + this._settings.set_value('group-apps-use-launchers', this._settings.get_default_value('group-apps-use-launchers')); + }); this._builder.get_object('group_apps_label_font_size_spinbutton').set_value(this._settings.get_int('group-apps-label-font-size')); this._builder.get_object('group_apps_label_font_size_spinbutton').connect('value-changed', (widget) => { @@ -1714,39 +1673,6 @@ const Preferences = class { this._settings.set_int('group-apps-label-max-width', widget.get_value()); }); - dialog.connect('response', (dialog, id) => { - if (id == 1) { - // restore default settings - this._settings.set_value('group-apps-label-font-size', this._settings.get_default_value('group-apps-label-font-size')); - this._builder.get_object('group_apps_label_font_size_spinbutton').set_value(this._settings.get_int('group-apps-label-font-size')); - - this._settings.set_value('group-apps-label-font-weight', this._settings.get_default_value('group-apps-label-font-weight')); - this._builder.get_object('group_apps_label_font_weight_combo').set_active_id(this._settings.get_string('group-apps-label-font-weight')); - - this._settings.set_value('group-apps-label-font-color', this._settings.get_default_value('group-apps-label-font-color')); - let rgba = new Gdk.RGBA(); - rgba.parse(this._settings.get_string('group-apps-label-font-color')); - this._builder.get_object('group_apps_label_font_color_colorbutton').set_rgba(rgba); - - this._settings.set_value('group-apps-label-font-color-minimized', this._settings.get_default_value('group-apps-label-font-color-minimized')); - let minimizedFontColor = new Gdk.RGBA(); - minimizedFontColor.parse(this._settings.get_string('group-apps-label-font-color-minimized')); - this._builder.get_object('group_apps_label_font_color_minimized_colorbutton').set_rgba(minimizedFontColor); - - this._settings.set_value('group-apps-label-max-width', this._settings.get_default_value('group-apps-label-max-width')); - this._builder.get_object('group_apps_label_max_width_spinbutton').set_value(this._settings.get_int('group-apps-label-max-width')); - - this._settings.set_value('group-apps-use-fixed-width', this._settings.get_default_value('group-apps-use-fixed-width')); - this._settings.set_value('group-apps-underline-unfocused', this._settings.get_default_value('group-apps-underline-unfocused')); - this._settings.set_value('group-apps-use-launchers', this._settings.get_default_value('group-apps-use-launchers')); - } else { - // remove the settings box so it doesn't get destroyed; - dialog.get_content_area().remove(box); - dialog.destroy(); - } - return; - }); - dialog.show(); dialog.set_default_size(600, 1); @@ -1770,18 +1696,19 @@ const Preferences = class { // Create dialog for middle-click options this._builder.get_object('middle_click_options_button').connect('clicked', () => { - - let dialog = new Gtk.Dialog({ title: _('Customize middle-click behavior'), - transient_for: this.notebook.get_root(), - use_header_bar: true, - modal: true }); - - // GTK+ leaves positive values for application-defined response ids. - // Use +1 for the reset action - dialog.add_button(_('Reset to defaults'), 1); - let box = this._builder.get_object('box_middle_click_options'); - dialog.get_content_area().append(box); + + let dialog = this._createPreferencesDialog(_('Customize middle-click behavior'), box, () => + { + // restore default settings for the relevant keys + let keys = ['shift-click-action', 'middle-click-action', 'shift-middle-click-action']; + keys.forEach(function(val) { + this._settings.set_value(val, this._settings.get_default_value(val)); + }, this); + this._builder.get_object('shift_click_action_combo').set_active_id(this._settings.get_string('shift-click-action')); + this._builder.get_object('middle_click_action_combo').set_active_id(this._settings.get_string('middle-click-action')); + this._builder.get_object('shift_middle_click_action_combo').set_active_id(this._settings.get_string('shift-middle-click-action')); + }); this._builder.get_object('shift_click_action_combo').set_active_id(this._settings.get_string('shift-click-action')); @@ -1802,24 +1729,6 @@ const Preferences = class { 'active-id', Gio.SettingsBindFlags.DEFAULT); - dialog.connect('response', (dialog, id) => { - if (id == 1) { - // restore default settings for the relevant keys - let keys = ['shift-click-action', 'middle-click-action', 'shift-middle-click-action']; - keys.forEach(function(val) { - this._settings.set_value(val, this._settings.get_default_value(val)); - }, this); - this._builder.get_object('shift_click_action_combo').set_active_id(this._settings.get_string('shift-click-action')); - this._builder.get_object('middle_click_action_combo').set_active_id(this._settings.get_string('middle-click-action')); - this._builder.get_object('shift_middle_click_action_combo').set_active_id(this._settings.get_string('shift-middle-click-action')); - } else { - // remove the settings box so it doesn't get destroyed; - dialog.get_content_area().remove(box); - dialog.destroy(); - } - return; - }); - dialog.show(); dialog.set_default_size(700, 1); @@ -1837,17 +1746,16 @@ const Preferences = class { // Create dialog for panel scroll options this._builder.get_object('scroll_panel_options_button').connect('clicked', () => { - let dialog = new Gtk.Dialog({ title: _('Customize panel scroll behavior'), - transient_for: this.notebook.get_root(), - use_header_bar: true, - modal: true }); - - // GTK+ leaves positive values for application-defined response ids. - // Use +1 for the reset action - dialog.add_button(_('Reset to defaults'), 1); - let box = this._builder.get_object('scroll_panel_options_box'); - dialog.get_content_area().append(box); + + let dialog = this._createPreferencesDialog(_('Customize panel scroll behavior'), box, () => + { + // restore default settings + this._settings.set_value('scroll-panel-delay', this._settings.get_default_value('scroll-panel-delay')); + this._builder.get_object('scroll_panel_options_delay_spinbutton').set_value(this._settings.get_int('scroll-panel-delay')); + + this._settings.set_value('scroll-panel-show-ws-popup', this._settings.get_default_value('scroll-panel-show-ws-popup')); + }); this._builder.get_object('scroll_panel_options_delay_spinbutton').set_value(this._settings.get_int('scroll-panel-delay')); this._builder.get_object('scroll_panel_options_delay_spinbutton').connect('value-changed', (widget) => { @@ -1859,21 +1767,6 @@ const Preferences = class { 'active', Gio.SettingsBindFlags.DEFAULT); - dialog.connect('response', (dialog, id) => { - if (id == 1) { - // restore default settings - this._settings.set_value('scroll-panel-delay', this._settings.get_default_value('scroll-panel-delay')); - this._builder.get_object('scroll_panel_options_delay_spinbutton').set_value(this._settings.get_int('scroll-panel-delay')); - - this._settings.set_value('scroll-panel-show-ws-popup', this._settings.get_default_value('scroll-panel-show-ws-popup')); - } else { - // remove the settings box so it doesn't get destroyed; - dialog.get_content_area().remove(box); - dialog.destroy(); - } - return; - }); - dialog.show(); dialog.set_default_size(640, 1); @@ -1881,36 +1774,20 @@ const Preferences = class { // Create dialog for icon scroll options this._builder.get_object('scroll_icon_options_button').connect('clicked', () => { - let dialog = new Gtk.Dialog({ title: _('Customize icon scroll behavior'), - transient_for: this.notebook.get_root(), - use_header_bar: true, - modal: true }); - - // GTK+ leaves positive values for application-defined response ids. - // Use +1 for the reset action - dialog.add_button(_('Reset to defaults'), 1); - let box = this._builder.get_object('scroll_icon_options_box'); - dialog.get_content_area().append(box); + + let dialog = this._createPreferencesDialog(_('Customize icon scroll behavior'), box, () => + { + // restore default settings + this._settings.set_value('scroll-icon-delay', this._settings.get_default_value('scroll-icon-delay')); + this._builder.get_object('scroll_icon_options_delay_spinbutton').set_value(this._settings.get_int('scroll-icon-delay')); + }); this._builder.get_object('scroll_icon_options_delay_spinbutton').set_value(this._settings.get_int('scroll-icon-delay')); this._builder.get_object('scroll_icon_options_delay_spinbutton').connect('value-changed', (widget) => { this._settings.set_int('scroll-icon-delay', widget.get_value()); }); - dialog.connect('response', (dialog, id) => { - if (id == 1) { - // restore default settings - this._settings.set_value('scroll-icon-delay', this._settings.get_default_value('scroll-icon-delay')); - this._builder.get_object('scroll_icon_options_delay_spinbutton').set_value(this._settings.get_int('scroll-icon-delay')); - } else { - // remove the settings box so it doesn't get destroyed; - dialog.get_content_area().remove(box); - dialog.destroy(); - } - return; - }); - dialog.show(); dialog.set_default_size(640, 1); @@ -1978,32 +1855,15 @@ const Preferences = class { // Create dialog for number overlay options this._builder.get_object('overlay_button').connect('clicked', () => { - - let dialog = new Gtk.Dialog({ title: _('Advanced hotkeys options'), - transient_for: this.notebook.get_root(), - use_header_bar: true, - modal: true }); - - // GTK+ leaves positive values for application-defined response ids. - // Use +1 for the reset action - dialog.add_button(_('Reset to defaults'), 1); - let box = this._builder.get_object('box_overlay_shortcut'); - dialog.get_content_area().append(box); - dialog.connect('response', (dialog, id) => { - if (id == 1) { - // restore default settings for the relevant keys - let keys = ['hotkey-prefix-text', 'shortcut-text', 'hotkeys-overlay-combo', 'overlay-timeout', 'shortcut-previews']; - keys.forEach(function(val) { - this._settings.set_value(val, this._settings.get_default_value(val)); - }, this); - } else { - // remove the settings box so it doesn't get destroyed; - dialog.get_content_area().remove(box); - dialog.destroy(); - } - return; + let dialog = this._createPreferencesDialog(_('Advanced hotkeys options'), box, () => + { + // restore default settings for the relevant keys + let keys = ['hotkey-prefix-text', 'shortcut-text', 'hotkeys-overlay-combo', 'overlay-timeout', 'shortcut-previews']; + keys.forEach(function(val) { + this._settings.set_value(val, this._settings.get_default_value(val)); + }, this); }); dialog.show(); @@ -2013,18 +1873,14 @@ const Preferences = class { // setup dialog for secondary menu options this._builder.get_object('secondarymenu_options_button').connect('clicked', () => { - - let dialog = new Gtk.Dialog({ title: _('Secondary Menu Options'), - transient_for: this.notebook.get_root(), - use_header_bar: true, - modal: true }); - - // GTK+ leaves positive values for application-defined response ids. - // Use +1 for the reset action - dialog.add_button(_('Reset to defaults'), 1); - let box = this._builder.get_object('box_secondarymenu_options'); - dialog.get_content_area().append(box); + + let dialog = this._createPreferencesDialog(_('Secondary Menu Options'), box, () => + { + // restore default settings + this._settings.set_value('secondarymenu-contains-appmenu', this._settings.get_default_value('secondarymenu-contains-appmenu')); + this._settings.set_value('secondarymenu-contains-showdetails', this._settings.get_default_value('secondarymenu-contains-showdetails')); + }); this._settings.bind('secondarymenu-contains-appmenu', this._builder.get_object('secondarymenu_appmenu_switch'), @@ -2036,19 +1892,6 @@ const Preferences = class { 'active', Gio.SettingsBindFlags.DEFAULT); - dialog.connect('response', (dialog, id) => { - if (id == 1) { - // restore default settings - this._settings.set_value('secondarymenu-contains-appmenu', this._settings.get_default_value('secondarymenu-contains-appmenu')); - this._settings.set_value('secondarymenu-contains-showdetails', this._settings.get_default_value('secondarymenu-contains-showdetails')); - } else { - // remove the settings box so it doesn't get destroyed; - dialog.get_content_area().remove(box); - dialog.destroy(); - } - return; - }); - dialog.show(); dialog.set_default_size(480, 1); @@ -2056,30 +1899,10 @@ const Preferences = class { // setup dialog for advanced options this._builder.get_object('button_advanced_options').connect('clicked', () => { - - let dialog = new Gtk.Dialog({ title: _('Advanced Options'), - transient_for: this.notebook.get_root(), - use_header_bar: true, - modal: true }); - - // GTK+ leaves positive values for application-defined response ids. - // Use +1 for the reset action - dialog.add_button(_('Reset to defaults'), 1); - + print("nj"); let box = this._builder.get_object('box_advanced_options'); - dialog.get_content_area().append(box); - dialog.connect('response', (dialog, id) => { - if (id == 1) { - // restore default settings - - } else { - // remove the settings box so it doesn't get destroyed; - dialog.get_content_area().remove(box); - dialog.destroy(); - } - return; - }); + let dialog = this._createPreferencesDialog(_('Advanced Options'), box); dialog.show(); dialog.set_default_size(480, 1); @@ -2193,34 +2016,19 @@ const Preferences = class { } this._builder.get_object('animate_appicon_hover_button').connect('clicked', () => { - let dialog = new Gtk.Dialog({ title: _('App icon animation options'), - transient_for: this.notebook.get_root(), - use_header_bar: true, - modal: true }); - - // GTK+ leaves positive values for application-defined response ids. - // Use +1 for the reset action - dialog.add_button(_('Reset to defaults'), 1); - + print("BB"); let box = this._builder.get_object('animate_appicon_hover_options'); - dialog.get_content_area().append(box); - dialog.connect('response', (dialog, id) => { - if (id == 1) { - // restore default settings - this._settings.set_value('animate-appicon-hover-animation-type', this._settings.get_default_value('animate-appicon-hover-animation-type')); - this._settings.set_value('animate-appicon-hover-animation-duration', this._settings.get_default_value('animate-appicon-hover-animation-duration')); - this._settings.set_value('animate-appicon-hover-animation-rotation', this._settings.get_default_value('animate-appicon-hover-animation-rotation')); - this._settings.set_value('animate-appicon-hover-animation-travel', this._settings.get_default_value('animate-appicon-hover-animation-travel')); - this._settings.set_value('animate-appicon-hover-animation-zoom', this._settings.get_default_value('animate-appicon-hover-animation-zoom')); - this._settings.set_value('animate-appicon-hover-animation-convexity', this._settings.get_default_value('animate-appicon-hover-animation-convexity')); - this._settings.set_value('animate-appicon-hover-animation-extent', this._settings.get_default_value('animate-appicon-hover-animation-extent')); - } else { - // remove the settings box so it doesn't get destroyed; - dialog.get_content_area().remove(box); - dialog.destroy(); - } - return; + let dialog = this._createPreferencesDialog(_('App icon animation options'), box, () => + { + // restore default settings + this._settings.set_value('animate-appicon-hover-animation-type', this._settings.get_default_value('animate-appicon-hover-animation-type')); + this._settings.set_value('animate-appicon-hover-animation-duration', this._settings.get_default_value('animate-appicon-hover-animation-duration')); + this._settings.set_value('animate-appicon-hover-animation-rotation', this._settings.get_default_value('animate-appicon-hover-animation-rotation')); + this._settings.set_value('animate-appicon-hover-animation-travel', this._settings.get_default_value('animate-appicon-hover-animation-travel')); + this._settings.set_value('animate-appicon-hover-animation-zoom', this._settings.get_default_value('animate-appicon-hover-animation-zoom')); + this._settings.set_value('animate-appicon-hover-animation-convexity', this._settings.get_default_value('animate-appicon-hover-animation-convexity')); + this._settings.set_value('animate-appicon-hover-animation-extent', this._settings.get_default_value('animate-appicon-hover-animation-extent')); }); dialog.show();