@@ -6,8 +6,9 @@ use glib::subclass::prelude::*;
6
6
use gtk:: prelude:: * ;
7
7
use gtk:: subclass:: prelude:: * ;
8
8
use glib:: translate:: { FromGlibPtrFull , ToGlib , ToGlibPtr } ;
9
+ use once_cell:: sync:: Lazy ;
9
10
use std:: {
10
- cell:: { Cell , RefCell } ,
11
+ cell:: RefCell ,
11
12
collections:: HashMap ,
12
13
rc:: Rc ,
13
14
} ;
@@ -33,6 +34,24 @@ button {
33
34
}
34
35
"# ;
35
36
37
+ pub static SCANCODE_LABELS : Lazy < HashMap < String , String > > = Lazy :: new ( || {
38
+ let mut labels = HashMap :: new ( ) ;
39
+ for record in picker_csv ( ) {
40
+ match record {
41
+ PickerCsv :: Group { .. } => { }
42
+ PickerCsv :: Key { name, top, bottom } => {
43
+ let text = if bottom. is_empty ( ) {
44
+ top
45
+ } else {
46
+ format ! ( "{}\n {}" , top, bottom)
47
+ } ;
48
+ labels. insert ( name, text) ;
49
+ }
50
+ }
51
+ }
52
+ labels
53
+ } ) ;
54
+
36
55
pub struct PickerInner {
37
56
groups : Vec < PickerGroup > ,
38
57
keys : HashMap < String , Rc < PickerKey > > ,
@@ -180,7 +199,7 @@ impl Picker {
180
199
181
200
println!( "Clicked {} layer {}" , name, layer) ;
182
201
if let Some ( i) = kb. selected( ) {
183
- kb. keymap_set( & picker , i, layer, & name) ;
202
+ kb. keymap_set( i, layer, & name) ;
184
203
}
185
204
} ) ) ;
186
205
}
@@ -191,10 +210,6 @@ impl Picker {
191
210
self . inner ( ) . keys . get ( scancode_name) . map ( |k| & k. gtk )
192
211
}
193
212
194
- pub ( crate ) fn get_text ( & self , scancode_name : & str ) -> Option < & str > {
195
- self . inner ( ) . keys . get ( scancode_name) . map ( |k| k. text . as_ref ( ) )
196
- }
197
-
198
213
pub ( crate ) fn set_keyboard ( & self , keyboard : Option < Keyboard > ) {
199
214
if let Some ( old_kb) = & * self . inner ( ) . keyboard . borrow ( ) {
200
215
old_kb. set_picker ( None ) ;
0 commit comments