@@ -77,19 +77,16 @@ static struct
77
77
int ret_cmd ;
78
78
button_flags_t flags ;
79
79
int y ;
80
- int len ;
81
80
const char * text ;
81
+ WButton * button ;
82
82
} chown_but [BUTTONS ] = {
83
- { B_SETALL , NORMAL_BUTTON , 5 , 0 , N_ ("Set &all" ) },
84
- { B_SETGRP , NORMAL_BUTTON , 5 , 0 , N_ ("Set &groups" ) },
85
- { B_SETUSR , NORMAL_BUTTON , 5 , 0 , N_ ("Set &users" ) },
86
- { B_ENTER , DEFPUSH_BUTTON , 3 , 0 , N_ ("&Set" ) },
87
- { B_CANCEL , NORMAL_BUTTON , 3 , 0 , N_ ("&Cancel" ) },
83
+ { B_SETALL , NORMAL_BUTTON , 5 , N_ ("Set &all" ), NULL },
84
+ { B_SETGRP , NORMAL_BUTTON , 5 , N_ ("Set &groups" ), NULL },
85
+ { B_SETUSR , NORMAL_BUTTON , 5 , N_ ("Set &users" ), NULL },
86
+ { B_ENTER , DEFPUSH_BUTTON , 3 , N_ ("&Set" ), NULL },
87
+ { B_CANCEL , NORMAL_BUTTON , 3 , N_ ("&Cancel" ), NULL },
88
88
};
89
89
90
- /* summary length of three buttons */
91
- static int blen = 0 ;
92
-
93
90
static struct
94
91
{
95
92
int y ;
@@ -111,29 +108,16 @@ static void
111
108
chown_init (void )
112
109
{
113
110
static gboolean i18n = FALSE;
114
- int i ;
115
111
116
112
if (i18n )
117
113
return ;
118
114
119
115
i18n = TRUE;
120
116
121
117
#ifdef ENABLE_NLS
122
- for (i = 0 ; i < BUTTONS ; i ++ )
118
+ for (int i = 0 ; i < BUTTONS ; i ++ )
123
119
chown_but [i ].text = _ (chown_but [i ].text );
124
120
#endif
125
-
126
- for (i = 0 ; i < BUTTONS ; i ++ )
127
- {
128
- chown_but [i ].len = str_term_width1 (chown_but [i ].text ) + 3 ; // [], spaces and w/o &
129
- if (chown_but [i ].flags == DEFPUSH_BUTTON )
130
- chown_but [i ].len += 2 ; // <>
131
-
132
- if (i < BUTTONS - 2 )
133
- blen += chown_but [i ].len ;
134
- }
135
-
136
- blen += 2 ;
137
121
}
138
122
139
123
/* --------------------------------------------------------------------------------------------- */
@@ -177,14 +161,43 @@ chown_bg_callback (Widget *w, Widget *sender, widget_msg_t msg, int parm, void *
177
161
178
162
/* --------------------------------------------------------------------------------------------- */
179
163
164
+ static void
165
+ chown_buttons_create (WGroup * g , const int first , const int last )
166
+ {
167
+ int i ;
168
+ int blen = 0 ;
169
+ int x ;
170
+
171
+ const int y = WIDGET (g )-> rect .lines - chown_but [first ].y ;
172
+
173
+ group_add_widget (g , hline_new (y - 1 , -1 , -1 ));
174
+
175
+ for (i = first ; i <= last ; i ++ )
176
+ {
177
+ chown_but [i ].button =
178
+ button_new (y , 1 , chown_but [i ].ret_cmd , chown_but [i ].flags , chown_but [i ].text , NULL );
179
+ blen += button_get_width (chown_but [i ].button ) + 1 ;
180
+ group_add_widget (g , chown_but [i ].button );
181
+ }
182
+
183
+ x = WIDGET (g )-> rect .x + (WIDGET (g )-> rect .cols - blen ) / 2 ;
184
+
185
+ for (i = first ; i <= last ; i ++ )
186
+ {
187
+ WIDGET (chown_but [i ].button )-> rect .x = x ;
188
+ x += button_get_width (chown_but [i ].button ) + 1 ;
189
+ }
190
+ }
191
+
192
+ /* --------------------------------------------------------------------------------------------- */
193
+
180
194
static WDialog *
181
195
chown_dlg_create (WPanel * panel )
182
196
{
183
197
int single_set ;
184
198
WDialog * ch_dlg ;
185
199
WGroup * g ;
186
200
int lines , cols ;
187
- int i , y ;
188
201
struct passwd * l_pass ;
189
202
struct group * l_grp ;
190
203
@@ -223,41 +236,16 @@ chown_dlg_create (WPanel *panel)
223
236
224
237
group_add_widget (g , groupbox_new (2 , 5 + GW * 2 , GH , GW , _ ("File" )));
225
238
// add widgets for the file information
226
- for (i = 0 ; i < LABELS ; i ++ )
239
+ for (int i = 0 ; i < LABELS ; i ++ )
227
240
{
228
241
chown_label [i ].l = label_new (chown_label [i ].y , 7 + GW * 2 , NULL );
229
242
group_add_widget (g , chown_label [i ].l );
230
243
}
231
244
232
245
if (single_set == 0 )
233
- {
234
- int x ;
235
-
236
- group_add_widget (g , hline_new (lines - chown_but [0 ].y - 1 , -1 , -1 ));
237
-
238
- y = lines - chown_but [0 ].y ;
239
- x = (cols - blen ) / 2 ;
240
-
241
- for (i = 0 ; i < BUTTONS - 2 ; i ++ )
242
- {
243
- group_add_widget (g ,
244
- button_new (y , x , chown_but [i ].ret_cmd , chown_but [i ].flags ,
245
- chown_but [i ].text , NULL ));
246
- x += chown_but [i ].len + 1 ;
247
- }
248
- }
246
+ chown_buttons_create (g , 0 , BUTTONS - 3 );
249
247
250
- i = BUTTONS - 2 ;
251
- y = lines - chown_but [i ].y ;
252
- group_add_widget (g , hline_new (y - 1 , -1 , -1 ));
253
- group_add_widget (g ,
254
- button_new (y , WIDGET (ch_dlg )-> rect .cols / 2 - chown_but [i ].len ,
255
- chown_but [i ].ret_cmd , chown_but [i ].flags , chown_but [i ].text ,
256
- NULL ));
257
- i ++ ;
258
- group_add_widget (g ,
259
- button_new (y , WIDGET (ch_dlg )-> rect .cols / 2 + 1 , chown_but [i ].ret_cmd ,
260
- chown_but [i ].flags , chown_but [i ].text , NULL ));
248
+ chown_buttons_create (g , BUTTONS - 2 , BUTTONS - 1 );
261
249
262
250
// select first listbox
263
251
widget_select (WIDGET (l_user ));
0 commit comments