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;
73
84// A 2U key takes same space as 2 1U including spacing
95// 2 1.5U keys take same space as 3 1U
106// Space bar is the same as 3 1U + 1 1.5U to line up with previous row
117static KEY_WIDTHS : & [ ( f64 , & [ & str ] ) ] = & [
128 (
13- 1.5 * KEY_WIDTH + 0.5 * KEY_SPACE ,
9+ 1.5 * KEY_SIZE + 0.5 * KEY_SPACE ,
1410 & [
1511 "DEL" ,
1612 "BKSP" ,
@@ -24,10 +20,10 @@ static KEY_WIDTHS: &[(f64, &[&str])] = &[
2420 ] ,
2521 ) ,
2622 (
27- 2.0 * KEY_WIDTH + KEY_SPACE ,
23+ 2.0 * KEY_SIZE + KEY_SPACE ,
2824 & [ "LEFT_SHIFT" , "RIGHT_SHIFT" , "ENTER" ] ,
2925 ) ,
30- ( 4.5 * KEY_WIDTH + 3.5 * KEY_SPACE , & [ "SPACE" ] ) ,
26+ ( 4.5 * KEY_SIZE + 3.5 * KEY_SPACE , & [ "SPACE" ] ) ,
3127] ;
3228
3329static ROWS : & [ & [ & str ] ] = & [
@@ -94,53 +90,12 @@ static ROWS: &[&[&str]] = &[
9490 ] ,
9591] ;
9692
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+ )
146101}
0 commit comments