1
- use gtk:: prelude:: * ;
2
-
3
- use super :: { PickerGroup , PickerKey } ;
4
-
5
- const KEY_WIDTH : f64 = 48.0 ;
6
- const KEY_SPACE : f64 = 4.0 ;
1
+ use super :: variable_width:: { PickerVariableWidthGroup , KEY_SIZE , KEY_SPACE } ;
2
+ use crate :: fl;
7
3
8
4
// A 2U key takes same space as 2 1U including spacing
9
5
// 2 1.5U keys take same space as 3 1U
10
6
// Space bar is the same as 3 1U + 1 1.5U to line up with previous row
11
7
static KEY_WIDTHS : & [ ( f64 , & [ & str ] ) ] = & [
12
8
(
13
- 1.5 * KEY_WIDTH + 0.5 * KEY_SPACE ,
9
+ 1.5 * KEY_SIZE + 0.5 * KEY_SPACE ,
14
10
& [
15
11
"DEL" ,
16
12
"BKSP" ,
@@ -24,10 +20,10 @@ static KEY_WIDTHS: &[(f64, &[&str])] = &[
24
20
] ,
25
21
) ,
26
22
(
27
- 2.0 * KEY_WIDTH + KEY_SPACE ,
23
+ 2.0 * KEY_SIZE + KEY_SPACE ,
28
24
& [ "LEFT_SHIFT" , "RIGHT_SHIFT" , "ENTER" ] ,
29
25
) ,
30
- ( 4.5 * KEY_WIDTH + 3.5 * KEY_SPACE , & [ "SPACE" ] ) ,
26
+ ( 4.5 * KEY_SIZE + 3.5 * KEY_SPACE , & [ "SPACE" ] ) ,
31
27
] ;
32
28
33
29
static ROWS : & [ & [ & str ] ] = & [
@@ -94,53 +90,12 @@ static ROWS: &[&[&str]] = &[
94
90
] ,
95
91
] ;
96
92
97
- pub struct PickerAnsiGroup {
98
- keys : Vec < PickerKey > ,
99
- widget : gtk:: Fixed ,
100
- }
101
-
102
- impl PickerAnsiGroup {
103
- pub fn new ( ) -> Self {
104
- let mut keys = Vec :: new ( ) ;
105
- let box_ = gtk:: Box :: new ( gtk:: Orientation :: Vertical , 0 ) ;
106
-
107
- let fixed = gtk:: Fixed :: new ( ) ;
108
-
109
- let mut y = 0 ;
110
- for row in ROWS {
111
- let mut x = 0 ;
112
- for name in * row {
113
- let width = KEY_WIDTHS
114
- . iter ( )
115
- . find_map ( |( width, keys) | {
116
- if keys. contains ( name) {
117
- Some ( * width)
118
- } else {
119
- None
120
- }
121
- } )
122
- . unwrap_or ( KEY_WIDTH ) ;
123
- let key = PickerKey :: new ( name, width / KEY_WIDTH ) ;
124
- fixed. put ( & key, x, y) ;
125
- keys. push ( key) ;
126
- x += width as i32 + 4
127
- }
128
- y += KEY_WIDTH as i32 + 4 ;
129
- }
130
-
131
- PickerAnsiGroup {
132
- keys,
133
- widget : fixed,
134
- }
135
- }
136
- }
137
-
138
- impl PickerGroup for PickerAnsiGroup {
139
- fn keys ( & self ) -> & [ PickerKey ] {
140
- & self . keys
141
- }
142
-
143
- fn widget ( & self ) -> & gtk:: Widget {
144
- self . widget . upcast_ref ( )
145
- }
93
+ pub fn picker_ansi_group ( ) -> PickerVariableWidthGroup {
94
+ PickerVariableWidthGroup :: new (
95
+ ROWS ,
96
+ KEY_WIDTHS ,
97
+ & [ ] ,
98
+ None ,
99
+ Some ( & fl ! ( "picker-shift-click" ) ) ,
100
+ )
146
101
}
0 commit comments