@@ -4,35 +4,18 @@ use glib::subclass;
4
4
use gtk:: prelude:: * ;
5
5
use gtk:: subclass:: prelude:: * ;
6
6
use std:: {
7
- cell:: {
8
- Cell ,
9
- RefCell ,
10
- } ,
7
+ cell:: { Cell , RefCell } ,
11
8
collections:: HashMap ,
12
9
convert:: TryFrom ,
13
10
ffi:: OsStr ,
14
11
fs:: { self , File } ,
15
- path:: {
16
- Path ,
17
- } ,
12
+ path:: Path ,
18
13
rc:: Rc ,
19
14
str,
20
15
} ;
21
16
22
- use crate :: {
23
- DaemonBoard ,
24
- DerefCell ,
25
- KeyboardColorButton ,
26
- KeyMap ,
27
- } ;
28
- use super :: {
29
- error_dialog,
30
- Key ,
31
- KeyboardLayer ,
32
- Layout ,
33
- Page ,
34
- Picker ,
35
- } ;
17
+ use super :: { error_dialog, Key , KeyboardLayer , Layout , Page , Picker } ;
18
+ use crate :: { DaemonBoard , DerefCell , KeyMap , KeyboardColorButton } ;
36
19
37
20
#[ derive( Default ) ]
38
21
pub struct KeyboardInner {
@@ -95,15 +78,13 @@ impl ObjectImpl for KeyboardInner {
95
78
..set_halign( gtk:: Align :: Fill ) ;
96
79
..set_size_request( 200 , 0 ) ;
97
80
} ;
98
- brightness_scale. connect_value_changed (
99
- clone ! ( @weak keyboard => move |this| {
100
- let value = this. get_value( ) as i32 ;
101
- if let Err ( err) = keyboard. board( ) . set_brightness( value) {
102
- eprintln!( "{}" , err) ;
103
- }
104
- println!( "{}" , value) ;
105
- } )
106
- ) ;
81
+ brightness_scale. connect_value_changed ( clone ! ( @weak keyboard => move |this| {
82
+ let value = this. get_value( ) as i32 ;
83
+ if let Err ( err) = keyboard. board( ) . set_brightness( value) {
84
+ eprintln!( "{}" , err) ;
85
+ }
86
+ println!( "{}" , value) ;
87
+ } ) ) ;
107
88
108
89
// XXX add support to ColorButton for changing keyboard
109
90
let color_button_bin = cascade ! {
@@ -161,23 +142,27 @@ impl ObjectImpl for KeyboardInner {
161
142
fn properties ( ) -> & ' static [ glib:: ParamSpec ] {
162
143
use once_cell:: sync:: Lazy ;
163
144
static PROPERTIES : Lazy < Vec < glib:: ParamSpec > > = Lazy :: new ( || {
164
- vec ! [
165
- glib:: ParamSpec :: int(
166
- "selected" ,
167
- "selected" ,
168
- "selected" ,
169
- -1 ,
170
- i32 :: MAX ,
171
- -1 ,
172
- glib:: ParamFlags :: READWRITE ,
173
- )
174
- ]
145
+ vec ! [ glib:: ParamSpec :: int(
146
+ "selected" ,
147
+ "selected" ,
148
+ "selected" ,
149
+ -1 ,
150
+ i32 :: MAX ,
151
+ -1 ,
152
+ glib:: ParamFlags :: READWRITE ,
153
+ ) ]
175
154
} ) ;
176
155
177
156
PROPERTIES . as_ref ( )
178
157
}
179
158
180
- fn set_property ( & self , keyboard : & Keyboard , _id : usize , value : & glib:: Value , pspec : & glib:: ParamSpec ) {
159
+ fn set_property (
160
+ & self ,
161
+ keyboard : & Keyboard ,
162
+ _id : usize ,
163
+ value : & glib:: Value ,
164
+ pspec : & glib:: ParamSpec ,
165
+ ) {
181
166
match pspec. get_name ( ) {
182
167
"selected" => {
183
168
let v: i32 = value. get_some ( ) . unwrap ( ) ;
@@ -188,11 +173,18 @@ impl ObjectImpl for KeyboardInner {
188
173
}
189
174
}
190
175
191
- fn get_property ( & self , keyboard : & Keyboard , _id : usize , pspec : & glib:: ParamSpec ) -> glib:: Value {
176
+ fn get_property (
177
+ & self ,
178
+ keyboard : & Keyboard ,
179
+ _id : usize ,
180
+ pspec : & glib:: ParamSpec ,
181
+ ) -> glib:: Value {
192
182
match pspec. get_name ( ) {
193
- "selected" => {
194
- keyboard. selected ( ) . map ( |v| v as i32 ) . unwrap_or ( -1 ) . to_value ( )
195
- }
183
+ "selected" => keyboard
184
+ . selected ( )
185
+ . map ( |v| v as i32 )
186
+ . unwrap_or ( -1 )
187
+ . to_value ( ) ,
196
188
_ => unimplemented ! ( ) ,
197
189
}
198
190
}
@@ -212,15 +204,22 @@ impl Keyboard {
212
204
pub fn new < P : AsRef < Path > > ( dir : P , board_name : & str , board : DaemonBoard ) -> Self {
213
205
let dir = dir. as_ref ( ) ;
214
206
215
- let default_json = fs:: read_to_string ( dir. join ( "default_json" ) )
216
- . expect ( "Failed to load keymap.json" ) ;
217
- let keymap_json = fs:: read_to_string ( dir. join ( "keymap.json" ) )
218
- . expect ( "Failed to load keymap.json" ) ;
219
- let layout_json = fs:: read_to_string ( dir. join ( "layout.json" ) )
220
- . expect ( "Failed to load layout.json" ) ;
221
- let physical_json = fs:: read_to_string ( dir. join ( "physical.json" ) )
222
- . expect ( "Failed to load physical.json" ) ;
223
- Self :: new_data ( board_name, & default_json, & keymap_json, & layout_json, & physical_json, board)
207
+ let default_json =
208
+ fs:: read_to_string ( dir. join ( "default_json" ) ) . expect ( "Failed to load keymap.json" ) ;
209
+ let keymap_json =
210
+ fs:: read_to_string ( dir. join ( "keymap.json" ) ) . expect ( "Failed to load keymap.json" ) ;
211
+ let layout_json =
212
+ fs:: read_to_string ( dir. join ( "layout.json" ) ) . expect ( "Failed to load layout.json" ) ;
213
+ let physical_json =
214
+ fs:: read_to_string ( dir. join ( "physical.json" ) ) . expect ( "Failed to load physical.json" ) ;
215
+ Self :: new_data (
216
+ board_name,
217
+ & default_json,
218
+ & keymap_json,
219
+ & layout_json,
220
+ & physical_json,
221
+ board,
222
+ )
224
223
}
225
224
226
225
fn new_layout ( board_name : & str , layout : Layout , board : DaemonBoard ) -> Self {
@@ -265,7 +264,10 @@ impl Keyboard {
265
264
100.0
266
265
}
267
266
} ;
268
- keyboard. inner ( ) . brightness_scale . set_range ( 0.0 , max_brightness) ;
267
+ keyboard
268
+ . inner ( )
269
+ . brightness_scale
270
+ . set_range ( 0.0 , max_brightness) ;
269
271
270
272
let brightness = match keyboard. board ( ) . brightness ( ) {
271
273
Ok ( value) => value as f64 ,
@@ -282,13 +284,18 @@ impl Keyboard {
282
284
}
283
285
284
286
pub fn new_board ( board_name : & str , board : DaemonBoard ) -> Option < Self > {
285
- Layout :: from_board ( board_name) . map ( |layout|
286
- Self :: new_layout ( board_name, layout, board)
287
- )
287
+ Layout :: from_board ( board_name) . map ( |layout| Self :: new_layout ( board_name, layout, board) )
288
288
}
289
289
290
290
#[ allow( dead_code) ]
291
- fn new_data ( board_name : & str , default_json : & str , keymap_json : & str , layout_json : & str , physical_json : & str , board : DaemonBoard ) -> Self {
291
+ fn new_data (
292
+ board_name : & str ,
293
+ default_json : & str ,
294
+ keymap_json : & str ,
295
+ layout_json : & str ,
296
+ physical_json : & str ,
297
+ board : DaemonBoard ,
298
+ ) -> Self {
292
299
let layout = Layout :: from_data ( default_json, keymap_json, layout_json, physical_json) ;
293
300
Self :: new_layout ( board_name, layout, board)
294
301
}
@@ -325,7 +332,7 @@ impl Keyboard {
325
332
match self . inner ( ) . page . get ( ) {
326
333
Page :: Layer1 => Some ( 0 ) ,
327
334
Page :: Layer2 => Some ( 1 ) ,
328
- _ => None
335
+ _ => None ,
329
336
}
330
337
}
331
338
@@ -357,7 +364,10 @@ impl Keyboard {
357
364
}
358
365
println ! (
359
366
" set {}, {}, {} to {:04X}" ,
360
- layer, k. electrical. 0 , k. electrical. 1 , k. scancodes. borrow( ) [ layer] . 0
367
+ layer,
368
+ k. electrical. 0 ,
369
+ k. electrical. 1 ,
370
+ k. scancodes. borrow( ) [ layer] . 0
361
371
) ;
362
372
if let Err ( err) = self . board ( ) . keymap_set (
363
373
layer as u8 ,
@@ -389,9 +399,11 @@ impl Keyboard {
389
399
// TODO: Ideally don't want this function to be O(Keys^2)
390
400
391
401
if & keymap. board != self . board_name ( ) {
392
- error_dialog ( & self . window ( ) . unwrap ( ) ,
393
- "Failed to import keymap" ,
394
- format ! ( "Keymap is for board '{}'" , keymap. board) ) ;
402
+ error_dialog (
403
+ & self . window ( ) . unwrap ( ) ,
404
+ "Failed to import keymap" ,
405
+ format ! ( "Keymap is for board '{}'" , keymap. board) ,
406
+ ) ;
395
407
return ;
396
408
}
397
409
@@ -424,8 +436,10 @@ impl Keyboard {
424
436
match File :: open ( & path) {
425
437
Ok ( file) => match KeyMap :: from_reader ( file) {
426
438
Ok ( keymap) => self . import_keymap ( & keymap) ,
427
- Err ( err) => error_dialog ( & self . window ( ) . unwrap ( ) , "Failed to import keymap" , err) ,
428
- }
439
+ Err ( err) => {
440
+ error_dialog ( & self . window ( ) . unwrap ( ) , "Failed to import keymap" , err)
441
+ }
442
+ } ,
429
443
Err ( err) => error_dialog ( & self . window ( ) . unwrap ( ) , "Failed to open file" , err) ,
430
444
}
431
445
}
@@ -446,7 +460,9 @@ impl Keyboard {
446
460
if chooser. run ( ) == gtk:: ResponseType :: Accept {
447
461
let mut path = chooser. get_filename ( ) . unwrap ( ) ;
448
462
match path. extension ( ) {
449
- None => { path. set_extension ( OsStr :: new ( "json" ) ) ; }
463
+ None => {
464
+ path. set_extension ( OsStr :: new ( "json" ) ) ;
465
+ }
450
466
Some ( ext) if ext == OsStr :: new ( "json" ) => { }
451
467
Some ( ext) => {
452
468
let mut ext = ext. to_owned ( ) ;
@@ -458,9 +474,11 @@ impl Keyboard {
458
474
459
475
match File :: create ( & path) {
460
476
Ok ( file) => match keymap. to_writer_pretty ( file) {
461
- Ok ( ( ) ) => { } ,
462
- Err ( err) => error_dialog ( & self . window ( ) . unwrap ( ) , "Failed to export keymap" , err) ,
463
- }
477
+ Ok ( ( ) ) => { }
478
+ Err ( err) => {
479
+ error_dialog ( & self . window ( ) . unwrap ( ) , "Failed to export keymap" , err)
480
+ }
481
+ } ,
464
482
Err ( err) => error_dialog ( & self . window ( ) . unwrap ( ) , "Failed to open file" , err) ,
465
483
}
466
484
}
@@ -495,15 +513,17 @@ impl Keyboard {
495
513
Some ( picker) => {
496
514
picker. set_sensitive ( self . selected ( ) . is_some ( ) && self . layer ( ) != None ) ;
497
515
picker. downgrade ( )
498
- } ,
516
+ }
499
517
None => WeakRef :: new ( ) ,
500
518
} ;
501
519
}
502
520
503
521
fn set_selected ( & self , i : Option < usize > ) {
504
522
let picker = match self . inner ( ) . picker . borrow ( ) . upgrade ( ) {
505
523
Some ( picker) => picker,
506
- None => { return ; } ,
524
+ None => {
525
+ return ;
526
+ }
507
527
} ;
508
528
let keys = self . keys ( ) ;
509
529
0 commit comments