@@ -21,14 +21,16 @@ const BingImageURL = Utils.BingImageURL;
21
21
22
22
var DESKTOP_SCHEMA = 'org.gnome.desktop.background' ;
23
23
24
- var PREFS_DEFAULT_WIDTH = 950 ;
25
- var PREFS_DEFAULT_HEIGHT = 950 ;
24
+ var PREFS_DEFAULT_WIDTH = 700 ;
25
+ var PREFS_DEFAULT_HEIGHT = 750 ;
26
26
27
27
export default class BingWallpaperExtensionPreferences extends ExtensionPreferences {
28
28
fillPreferencesWindow ( window ) {
29
29
// formally globals
30
30
let settings = this . getSettings ( Utils . BING_SCHEMA ) ;
31
- let desktop_settings = this . getSettings ( Utils . DESKTOP_SCHEMA ) ;
31
+ //let desktop_settings = this.getSettings(Utils.DESKTOP_SCHEMA);
32
+
33
+ window . set_default_size ( PREFS_DEFAULT_WIDTH , PREFS_DEFAULT_HEIGHT ) ;
32
34
33
35
let icon_image = null ;
34
36
let provider = new Gtk . CssProvider ( ) ;
@@ -45,80 +47,48 @@ export default class BingWallpaperExtensionPreferences extends ExtensionPreferen
45
47
if ( settings . get_boolean ( 'debug-logging' ) )
46
48
console . log ( "BingWallpaper extension: " + msg ) ; // disable to keep the noise down in journal
47
49
}
50
+
51
+ let buildable = new Gtk . Builder ( ) ;
52
+ // GTK4 removes some properties, and builder breaks when it sees them
53
+ buildable . add_from_file ( this . dir . get_path ( ) + '/ui/prefsadw.ui' ) ;
48
54
49
- const settings_page = new Adw . PreferencesPage ( {
50
- title : _ ( 'Settings' ) ,
51
- icon_name : 'dialog-information-symbolic' ,
52
- } ) ;
55
+ const settings_page = buildable . get_object ( 'settings_page' ) ;
56
+
53
57
window . add ( settings_page ) ;
54
- const ui_group = new Adw . PreferencesGroup ( {
55
- title : _ ( 'Indicator' ) ,
56
- /*description: _('Configure the indicator of the extension'),*/
57
- } ) ;
58
- settings_page . add ( ui_group ) ;
59
- const hideSwitch = new Adw . SwitchRow ( {
60
- title : _ ( 'Hide Indicator' ) ,
61
- subtitle : _ ( 'Whether to hide the panel indicator' ) ,
62
- } ) ;
63
- const notifySwitch = new Adw . SwitchRow ( {
64
- title : _ ( 'Desktop notifications' ) ,
65
- subtitle : _ ( 'Whether to enable notifications on new images' ) ,
66
- } ) ;
67
- ui_group . add ( hideSwitch ) ;
68
- ui_group . add ( notifySwitch ) ;
69
- /*const list = new Gtk.StringList();
58
+
59
+ const ui_group = buildable . get_object ( 'ui_group' ) ;
60
+ const hideSwitch = buildable . get_object ( 'hideSwitch' ) ;
61
+ const notifySwitch = buildable . get_object ( 'notifySwitch' ) ;
62
+ const iconEntry = buildable . get_object ( 'iconEntry' ) ;
63
+
64
+ const list = new Gtk . StringList ( ) ;
70
65
Utils . icon_list . forEach ( ( iconname , index ) => {
71
66
list . append ( iconname , iconname ) ;
72
- });*/
73
- const iconEntry = new Adw . ComboRow ( {
74
- title : _ ( 'Desktop notifications' ) ,
75
- subtitle : _ ( 'Whether to enable notifications on new images' ) ,
76
- model : Gtk . StringList . new ( Utils . icon_list ) ,
77
- selected : Utils . icon_list . indexOf ( settings . get_string ( 'icon-name' ) ) ,
78
67
} ) ;
79
- ui_group . add ( iconEntry ) ;
68
+
69
+ iconEntry . set_model ( list ) ;
70
+ iconEntry . set_selected ( Utils . icon_list . indexOf ( settings . get_string ( 'icon-name' ) ) ) ;
71
+
80
72
73
+ const wp_group = buildable . get_object ( 'wp_group' ) ;
74
+ //settings_page.add(wp_group);
81
75
82
- const wp_group = new Adw . PreferencesGroup ( {
83
- title : _ ( 'Wallpaper' ) ,
84
- /*description: _('Configure downloads'),*/
85
- } ) ;
86
- settings_page . add ( wp_group ) ;
87
76
const shuffleIntervals = new Gtk . StringList ;
88
77
Utils . randomIntervals . forEach ( ( x ) => {
89
78
shuffleIntervals . append ( _ ( x . title ) ) ;
90
79
} ) ;
91
- const shuffleSwitch = new Adw . SwitchRow ( {
92
- title : _ ( 'Enabled shuffle' ) ,
93
- subtitle : _ ( 'Whether to select random wallpapers' ) ,
94
- } ) ;
95
- const shuffleInterval = new Adw . ComboRow ( {
96
- title : _ ( 'Enabled shuffle' ) ,
97
- subtitle : _ ( 'Whether to select random wallpapers' ) ,
98
- model : shuffleIntervals ,
99
- selected : Utils . icon_list . indexOf ( settings . get_string ( 'random-interval' ) ) ,
100
- } ) ;
101
- wp_group . add ( shuffleSwitch ) ;
102
- wp_group . add ( shuffleInterval ) ;
103
80
104
- const dl_group = new Adw . PreferencesGroup ( {
105
- title : _ ( 'Downloads' ) ,
106
- /*description: _('Configure downloads'),*/
107
- } ) ;
108
- settings_page . add ( dl_group ) ;
109
- const bgSwitch = new Adw . SwitchRow ( {
110
- title : _ ( 'Set wallpaper' ) ,
111
- subtitle : _ ( 'Whether to set wallpaper automatically' ) ,
112
- } ) ;
113
- dl_group . add ( bgSwitch ) ;
114
- const folderOpen = new Adw . ActionRow ( {
115
- title : _ ( 'Download folder' ) ,
116
- subtitle : _ ( 'Open or change wallpaper downloads folder' ) ,
117
- } ) ;
118
- dl_group . add ( folderOpen ) ;
119
- const folderSplit = new Adw . SplitButton ( {
120
- label : _ ( 'Open folder' ) ,
121
- } ) ;
81
+ const bgSwitch = buildable . get_object ( 'bgSwitch' ) ;
82
+ const shuffleSwitch = buildable . get_object ( 'shuffleSwitch' ) ;
83
+ const shuffleInterval = buildable . get_object ( 'shuffleInterval' ) ;
84
+ shuffleInterval . set_model ( shuffleIntervals ) ;
85
+ shuffleInterval . set_selected ( Utils . randomIntervals . map ( e => e . value ) . indexOf ( settings . get_string ( 'random-interval-mode' ) ) ) ;
86
+
87
+ const dl_group = buildable . get_object ( 'dl_group' ) ;
88
+ //settings_page.add(dl_group);
89
+
90
+ const folderRow = buildable . get_object ( 'folderRow' ) ;
91
+
122
92
const openBtn = new Gtk . Button ( {
123
93
child : new Adw . ButtonContent ( {
124
94
icon_name : 'folder-pictures-symbolic' ,
@@ -135,17 +105,108 @@ export default class BingWallpaperExtensionPreferences extends ExtensionPreferen
135
105
valign : Gtk . Align . CENTER ,
136
106
halign : Gtk . Align . CENTER ,
137
107
} ) ;
138
- /*folderSplit.set_child(openBtn);
139
- folderSplit.set_child(changeBtn);*/
140
- folderOpen . add_suffix ( openBtn ) ;
141
- folderOpen . add_suffix ( changeBtn ) ;
108
+
109
+ folderRow . add_suffix ( openBtn ) ;
110
+ folderRow . add_suffix ( changeBtn ) ;
142
111
143
112
/* not sure how to make this work right just yet */
144
- const folderDialog = new Gtk . FileDialog ( {
145
- accept_label : _ ( 'Select' ) ,
146
- modal : true ,
147
- title : _ ( 'Select new wallpaper download folder' ) ,
113
+ const folderDialog = buildable . get_object ( 'folderDialog' ) ;
114
+
115
+ const lockscreen_page = new Adw . PreferencesPage ( {
116
+ title : _ ( 'Lock screen' ) ,
117
+ icon_name : 'applications-system-symbolic' ,
118
+ } ) ;
119
+ window . add ( lockscreen_page ) ;
120
+ const ls_group = new Adw . PreferencesGroup ( {
121
+ title : _ ( 'Lockscreen blur' ) ,
122
+ /*description: _('Configure the indicator of the extension'),*/
123
+ } ) ;
124
+ lockscreen_page . add ( ls_group ) ;
125
+ const overrideSwitch = new Adw . SwitchRow ( {
126
+ title : _ ( 'Dynamic lockscreen blur' ) ,
127
+ subtitle : _ ( 'Whether to enable dynamic blur mode on lock screen' ) ,
128
+ } ) ;
129
+ const strengthEntry = new Adw . SpinRow ( {
130
+ title : _ ( 'Blur strength' ) ,
131
+ subtitle : _ ( 'Blur strength when login prompt is not visible' ) ,
132
+ adjustment : new Gtk . Adjustment ( {
133
+ lower : 0 ,
134
+ upper : 50 ,
135
+ value : settings . get_int ( 'lockscreen-blur-strength' ) ,
136
+ page_increment : 10 ,
137
+ step_increment : 1 ,
138
+ } ) ,
139
+ } ) ;
140
+ const brightnessEntry = new Adw . SpinRow ( {
141
+ title : _ ( 'Wallpaper brightness' ) ,
142
+ subtitle : _ ( 'Dim wallpaper when login prompt is not visible' ) ,
143
+ adjustment : new Gtk . Adjustment ( {
144
+ lower : 0 ,
145
+ upper : 50 ,
146
+ value : settings . get_int ( 'lockscreen-blur-brightness' ) ,
147
+ page_increment : 10 ,
148
+ step_increment : 1 ,
149
+ } ) ,
150
+ } ) ;
151
+
152
+ const blurPresets = new Adw . ActionRow ( {
153
+ title : _ ( 'Presets' ) ,
154
+ /*subtitle: _('Open or change wallpaper downloads folder'),*/
155
+ } ) ;
156
+
157
+ const defaultBtn = new Gtk . Button ( {
158
+ child : new Adw . ButtonContent ( {
159
+ icon_name : 'emblem-default-symbolic' ,
160
+ label : _ ( 'Default' ) ,
161
+ } , ) ,
162
+ valign : Gtk . Align . CENTER ,
163
+ halign : Gtk . Align . CENTER ,
148
164
} ) ;
165
+ const noBlurBtn = new Gtk . Button ( {
166
+ child : new Adw . ButtonContent ( {
167
+ icon_name : 'emblem-default-symbolic' ,
168
+ label : _ ( 'No blur, slight dim' ) ,
169
+ } , ) ,
170
+ valign : Gtk . Align . CENTER ,
171
+ halign : Gtk . Align . CENTER ,
172
+ } ) ;
173
+ const slightBlurBtn = new Gtk . Button ( {
174
+ child : new Adw . ButtonContent ( {
175
+ icon_name : 'emblem-default-symbolic' ,
176
+ label : _ ( 'Slight blur & dim' ) ,
177
+ } , ) ,
178
+ valign : Gtk . Align . CENTER ,
179
+ halign : Gtk . Align . CENTER ,
180
+ } ) ;
181
+
182
+ blurPresets . add_suffix ( defaultBtn ) ;
183
+ blurPresets . add_suffix ( noBlurBtn ) ;
184
+ blurPresets . add_suffix ( slightBlurBtn ) ;
185
+
186
+ ls_group . add ( overrideSwitch ) ;
187
+ ls_group . add ( strengthEntry ) ;
188
+ ls_group . add ( brightnessEntry ) ;
189
+ ls_group . add ( blurPresets ) ;
190
+
191
+ const gallery_page = new Adw . PreferencesPage ( {
192
+ title : _ ( 'Gallery' ) ,
193
+ icon_name : 'document-open-recent-symbolic' ,
194
+ } ) ;
195
+ window . add ( gallery_page ) ;
196
+
197
+ const debug_page = new Adw . PreferencesPage ( {
198
+ title : _ ( 'Debug' ) ,
199
+ icon_name : 'preferences-other-symbolic' ,
200
+ } ) ;
201
+ window . add ( debug_page ) ;
202
+
203
+ const about_page = new Adw . PreferencesPage ( {
204
+ title : _ ( 'About' ) ,
205
+ icon_name : 'user-info-symbolic' ,
206
+ } ) ;
207
+ window . add ( about_page ) ;
208
+
209
+
149
210
150
211
/*
151
212
// Prepare labels and controls
@@ -208,6 +269,7 @@ export default class BingWallpaperExtensionPreferences extends ExtensionPreferen
208
269
// check that these are valid (can be edited through dconf-editor)
209
270
Utils . validate_resolution ( settings ) ;
210
271
Utils . validate_icon ( settings , this . path , icon_image ) ;
272
+ Utils . validate_interval ( settings ) ;
211
273
212
274
// Indicator & notifications
213
275
settings . bind ( 'hide' , hideSwitch , 'active' , Gio . SettingsBindFlags . DEFAULT ) ;
@@ -217,14 +279,21 @@ export default class BingWallpaperExtensionPreferences extends ExtensionPreferen
217
279
Utils.icon_list.forEach((iconname, index) => {
218
280
iconEntry.append(iconname, iconname);
219
281
});
282
+ */
220
283
// user selectable indicator icons
221
- settings.bind('icon-name', iconEntry, 'active_id', Gio.SettingsBindFlags.DEFAULT);
284
+ // settings.bind('icon-name', iconEntry, 'active_id', Gio.SettingsBindFlags.DEFAULT);
222
285
settings . connect ( 'changed::icon-name' , ( ) => {
223
286
Utils . validate_icon ( settings , this . path , icon_image ) ;
287
+ /*iconEntry.set_selected(Utils.indexOf(settings.get_string('icon-name')));*/
224
288
} ) ;
225
- iconEntry.set_active_id(settings.get_string('icon-name'));
289
+
290
+ /*
291
+ iconEntry.connect('changed', (widget) => {
292
+ settings.set_string('icon-name', Utils.icon_list[iconEntry.active_id]);
293
+ });*/
294
+
295
+ //iconEntry.set_active_id(settings.get_string('icon-name'));
226
296
227
- */
228
297
// connect switches to settings changes
229
298
settings . bind ( 'set-background' , bgSwitch , 'active' , Gio . SettingsBindFlags . DEFAULT ) ;
230
299
/*
@@ -309,37 +378,28 @@ export default class BingWallpaperExtensionPreferences extends ExtensionPreferen
309
378
settings . bind ( 'random-mode-enabled' , shuffleSwitch , 'active' , Gio . SettingsBindFlags . DEFAULT ) ;
310
379
/*settings.bind('random-interval-mode', entryShuffleMode, 'active_id', Gio.SettingsBindFlags.DEFAULT);*/
311
380
312
- /*
313
- // selected image can no longer be changed through a dropdown (didn't scale)
314
- settings.bind('selected-image', historyEntry, 'label', Gio.SettingsBindFlags.DEFAULT);
315
- settings.connect('changed::selected-image', () => {
316
- Utils.validate_imagename(settings);
381
+ settings . connect ( 'changed::random-interval-mode' , ( ) => {
382
+ shuffleInterval . set_selected ( Utils . randomIntervals . map ( e => e . value ) . indexOf ( settings . get_string ( 'random-interval-mode' ) ) ) ;
317
383
} ) ;
318
-
319
- // background styles (e.g. zoom or span)
320
- Utils.backgroundStyle.forEach((style) => {
321
- styleEntry.append(style, style);
322
- });
323
- desktop_settings.bind('picture-options', styleEntry, 'active_id', Gio.SettingsBindFlags.DEFAULT);
324
-
384
+
385
+
325
386
// GDM3 lockscreen blur override
326
387
settings . bind ( 'override-lockscreen-blur' , overrideSwitch , 'active' , Gio . SettingsBindFlags . DEFAULT ) ;
327
388
settings . bind ( 'lockscreen-blur-strength' , strengthEntry , 'value' , Gio . SettingsBindFlags . DEFAULT ) ;
328
389
settings . bind ( 'lockscreen-blur-brightness' , brightnessEntry , 'value' , Gio . SettingsBindFlags . DEFAULT ) ;
329
390
391
+
330
392
// add a couple of preset buttons
331
- buttonGDMdefault .connect('clicked', (widget) => {
393
+ defaultBtn . connect ( 'clicked' , ( widget ) => {
332
394
Utils . set_blur_preset ( settings , Utils . PRESET_GNOME_DEFAULT ) ;
333
395
} ) ;
334
- buttonnoblur .connect('clicked', (widget) => {
396
+ noBlurBtn . connect ( 'clicked' , ( widget ) => {
335
397
Utils . set_blur_preset ( settings , Utils . PRESET_NO_BLUR ) ;
336
398
} ) ;
337
- buttonslightblur .connect('clicked', (widget) => {
399
+ slightBlurBtn . connect ( 'clicked' , ( widget ) => {
338
400
Utils . set_blur_preset ( settings , Utils . PRESET_SLIGHT_BLUR ) ;
339
401
} ) ;
340
-
341
- */
342
-
402
+
343
403
// fetch
344
404
/*
345
405
if (httpSession)
0 commit comments