Add and adjust preview settings

This commit is contained in:
Charles Gagnon
2019-05-23 20:08:49 -04:00
parent d7c59efbf6
commit 64cd3404c6
4 changed files with 704 additions and 594 deletions

File diff suppressed because it is too large Load Diff

117
prefs.js
View File

@@ -990,6 +990,13 @@ const Settings = new Lang.Class({
'active',
Gio.SettingsBindFlags.DEFAULT);
this._builder.get_object('grid_preview_title_font_color_colorbutton').connect('notify::color', Lang.bind(this, function (button) {
let rgba = button.get_rgba();
let css = rgba.to_string();
let hexString = cssHexString(css);
this._settings.set_string('window-preview-title-font-color', hexString);
}));
this._builder.get_object('show_window_previews_button').connect('clicked', Lang.bind(this, function() {
let dialog = new Gtk.Dialog({ title: _('Window preview options'),
@@ -1009,47 +1016,59 @@ const Settings = new Lang.Class({
this._settings.set_int('show-window-previews-timeout', widget.get_value());
}));
this._settings.bind('peek-mode',
this._builder.get_object('peek_mode_switch'),
'active',
Gio.SettingsBindFlags.DEFAULT);
this._settings.bind('window-preview-show-title',
this._builder.get_object('preview_show_title_switch'),
'active',
Gio.SettingsBindFlags.DEFAULT);
this._settings.bind('peek-mode',
this._builder.get_object('listboxrow_enter_peek_mode_timeout'),
'sensitive',
Gio.SettingsBindFlags.DEFAULT);
this._settings.bind('peek-mode',
this._builder.get_object('listboxrow_peek_mode_opacity'),
'sensitive',
Gio.SettingsBindFlags.DEFAULT);
this._settings.bind('preview-middle-click-close',
this._builder.get_object('preview_middle_click_close_switch'),
'active',
Gio.SettingsBindFlags.DEFAULT);
this._builder.get_object('enter_peek_mode_timeout_spinbutton').set_value(this._settings.get_int('enter-peek-mode-timeout'));
this._settings.bind('peek-mode',
this._builder.get_object('peek_mode_switch'),
'active',
Gio.SettingsBindFlags.DEFAULT);
this._settings.bind('peek-mode',
this._builder.get_object('grid_enter_peek_mode_timeout'),
'sensitive',
Gio.SettingsBindFlags.DEFAULT);
this._settings.bind('peek-mode',
this._builder.get_object('grid_peek_mode_opacity'),
'sensitive',
Gio.SettingsBindFlags.DEFAULT);
this._settings.bind('window-preview-show-title',
this._builder.get_object('preview_show_title_switch'),
'active',
Gio.SettingsBindFlags.DEFAULT);
this._settings.bind('window-preview-show-title',
this._builder.get_object('grid_preview_title_size'),
'sensitive',
Gio.SettingsBindFlags.DEFAULT);
this._settings.bind('window-preview-show-title',
this._builder.get_object('grid_preview_title_weight'),
'sensitive',
Gio.SettingsBindFlags.DEFAULT);
this._settings.bind('window-preview-show-title',
this._builder.get_object('grid_preview_title_font_color'),
'sensitive',
Gio.SettingsBindFlags.DEFAULT);
this._builder.get_object('enter_peek_mode_timeout_spinbutton').set_value(this._settings.get_int('enter-peek-mode-timeout'));
this._builder.get_object('enter_peek_mode_timeout_spinbutton').connect('value-changed', Lang.bind (this, function(widget) {
this._settings.set_int('enter-peek-mode-timeout', widget.get_value());
}));
this._builder.get_object('peek_mode_opacity_spinbutton').set_value(this._settings.get_int('peek-mode-opacity'));
this._builder.get_object('leave_timeout_spinbutton').set_value(this._settings.get_int('leave-timeout'));
this._builder.get_object('leave_timeout_spinbutton').connect('value-changed', Lang.bind (this, function(widget) {
this._settings.set_int('leave-timeout', widget.get_value());
}));
this._builder.get_object('peek_mode_opacity_spinbutton').set_value(this._settings.get_int('peek-mode-opacity'));
this._builder.get_object('peek_mode_opacity_spinbutton').connect('value-changed', Lang.bind (this, function(widget) {
this._settings.set_int('peek-mode-opacity', widget.get_value());
}));
this._builder.get_object('preview_width_spinbutton').set_value(this._settings.get_int('window-preview-width'));
this._builder.get_object('preview_width_spinbutton').connect('value-changed', Lang.bind (this, function(widget) {
this._settings.set_int('window-preview-width', widget.get_value());
}));
this._builder.get_object('preview_height_spinbutton').set_value(this._settings.get_int('window-preview-height'));
this._builder.get_object('preview_height_spinbutton').connect('value-changed', Lang.bind (this, function(widget) {
this._settings.set_int('window-preview-height', widget.get_value());
this._builder.get_object('preview_size_spinbutton').set_value(this._settings.get_int('window-preview-size'));
this._builder.get_object('preview_size_spinbutton').connect('value-changed', Lang.bind (this, function(widget) {
this._settings.set_int('window-preview-size', widget.get_value());
}));
this._builder.get_object('preview_padding_spinbutton').set_value(this._settings.get_int('window-preview-padding'));
@@ -1057,12 +1076,31 @@ const Settings = new Lang.Class({
this._settings.set_int('window-preview-padding', widget.get_value());
}));
this._builder.get_object('preview_title_size_spinbutton').set_value(this._settings.get_int('window-preview-title-font-size'));
this._builder.get_object('preview_title_size_spinbutton').connect('value-changed', Lang.bind (this, function(widget) {
this._settings.set_int('window-preview-title-font-size', widget.get_value());
}));
this._builder.get_object('grid_preview_title_weight_combo').set_active_id(this._settings.get_string('window-preview-title-font-weight'));
this._builder.get_object('grid_preview_title_weight_combo').connect('changed', Lang.bind (this, function(widget) {
this._settings.set_string('window-preview-title-font-weight', widget.get_active_id());
}));
(function() {
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);
}).apply(this);
dialog.connect('response', Lang.bind(this, function(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('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'));
@@ -1070,17 +1108,25 @@ const Settings = new Lang.Class({
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-width', this._settings.get_default_value('window-preview-width'));
this._builder.get_object('preview_width_spinbutton').set_value(this._settings.get_int('window-preview-width'));
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-height', this._settings.get_default_value('window-preview-height'));
this._builder.get_object('preview_height_spinbutton').set_value(this._settings.get_int('window-preview-height'));
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-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(box);
@@ -1414,17 +1460,10 @@ const Settings = new Lang.Class({
let box = this._builder.get_object('box_advanced_options');
dialog.get_content_area().add(box);
this._builder.get_object('leave_timeout_spinbutton').set_value(this._settings.get_int('leave-timeout'));
this._builder.get_object('leave_timeout_spinbutton').connect('value-changed', Lang.bind (this, function(widget) {
this._settings.set_int('leave-timeout', widget.get_value());
}));
dialog.connect('response', Lang.bind(this, function(dialog, id) {
if (id == 1) {
// restore default settings
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'));
} else {
// remove the settings box so it doesn't get destroyed;
dialog.get_content_area().remove(box);

View File

@@ -410,23 +410,28 @@
<summary>Display title in preview</summary>
<description>Display window title in preview</description>
</key>
<key type="s" name="window-preview-title-font-color">
<default>"#dddddd"</default>
<summary>Window previews title font color</summary>
<description>This defines the Window previews titles font color.</description>
</key>
<key type="i" name="window-preview-title-font-size">
<default>14</default>
<summary>Window previews title font size</summary>
<description>This defines the Window previews titles font size.</description>
</key>
<key name="window-preview-title-font-weight" enum="org.gnome.shell.extensions.dash-to-panel.fontWeight">
<default>'inherit'</default>
<summary>Font weight of window preview titles</summary>
<description>This defines the font weight of window preview titles. Supported values: inherit (from theme), normal, lighter, bold and bolder.</description>
</key>
<key type="i" name="window-preview-size">
<default>240</default>
<summary>Window previews size</summary>
<description>Preferred window previews size</description>
</key>
<key type="i" name="window-preview-width">
<default>350</default>
<summary>Window previews width</summary>
<description>The width of the window previews</description>
</key>
<key type="i" name="window-preview-height">
<default>200</default>
<summary>Window previews height</summary>
<description>The height of the window previews</description>
</key>
<key type="i" name="window-preview-padding">
<default>20</default>
<default>8</default>
<summary>Window previews padding</summary>
<description>The padding of the window previews</description>
</key>

View File

@@ -720,35 +720,31 @@ var Preview = Utils.defineClass({
if (headerHeight) {
let iconTextureSize = headerHeight / scaleFactor * .6;
let icon = this._previewMenu.getCurrentAppIcon().app.create_icon_texture(iconTextureSize);
let windowTitleStyle = 'max-width: 0px;';
let workspaceIndex = '';
let workspaceStyle = null;
let commonTitleStyles = 'color: ' + this._previewMenu._dtpSettings.get_string('window-preview-title-font-color') + ';' +
'font-size: ' + this._previewMenu._dtpSettings.get_int('window-preview-title-font-size') + 'px;' +
'font-weight: ' + this._previewMenu._dtpSettings.get_string('window-preview-title-font-weight') + ';';
this._iconBin.destroy_all_children();
this._iconBin.add_child(icon);
if (isLeftButtons) {
windowTitleStyle += 'padding-left:' + (headerHeight - icon.width) * .5 + 'px;';
if (!this._previewMenu._dtpSettings.get_boolean('isolate-workspaces')) {
workspaceIndex = (this.window.get_workspace().index() + 1).toString();
workspaceStyle = 'margin: 0 4px 0 ' + (isLeftButtons ? Math.round((headerHeight - icon.width) * .5) + 'px' : '0') + '; padding: 0 4px;' +
'border: 2px solid ' + this._getRgbaColor(FOCUSED_COLOR_OFFSET, .8) + 'border-radius: 2px;' + commonTitleStyles;
}
this._workspaceIndicator.text = workspaceIndex;
this._workspaceIndicator.set_style(workspaceStyle);
this._titleWindowChangeId = this.window.connect('notify::title', () => this._updateWindowTitle());
this._windowTitle.set_style(windowTitleStyle);
this._windowTitle.set_style('max-width: 0px; padding-right: 4px;' + commonTitleStyles);
this._updateWindowTitle();
}
},
_updateWindowTitle: function() {
let workspaceIndex = '';
let workspaceStyle = null;
if (!this._previewMenu._dtpSettings.get_boolean('isolate-workspaces')) {
workspaceIndex = (this.window.get_workspace().index() + 1).toString();
workspaceStyle = 'padding: 0 4px; border: 2px solid ' + this._getRgbaColor(FOCUSED_COLOR_OFFSET, .8) +
'border-radius: 2px; margin-right: 4px;';
}
this._workspaceIndicator.text = workspaceIndex;
this._workspaceIndicator.set_style(workspaceStyle);
this._windowTitle.text = this.window.title;
},