Commit 5e333817b3fe10f980a5f10a488608bf08b88fae
1 parent
c7a62db8
Exists in
master
and in
5 other branches
Implementando diálogo de transferência de arquivos
Showing
2 changed files
with
54 additions
and
28 deletions
Show diff stats
src/pw3270/ft/ftdialog.c
@@ -141,8 +141,9 @@ static void toggle_option(GtkToggleButton *button, v3270FTD *dialog) | @@ -141,8 +141,9 @@ static void toggle_option(GtkToggleButton *button, v3270FTD *dialog) | ||
141 | 141 | ||
142 | static GtkWidget * ftoption_new(v3270FTD *dialog, const struct ftoptions *opt) | 142 | static GtkWidget * ftoption_new(v3270FTD *dialog, const struct ftoptions *opt) |
143 | { | 143 | { |
144 | - GtkGrid * grid = GTK_GRID(gtk_grid_new()); | ||
145 | - int f; | 144 | + GtkContainer * frame = GTK_CONTAINER(gtk_frame_new(_("Transfer options"))); |
145 | + GtkGrid * grid = GTK_GRID(gtk_grid_new()); | ||
146 | + int f; | ||
146 | 147 | ||
147 | gtk_grid_set_row_homogeneous(grid,TRUE); | 148 | gtk_grid_set_row_homogeneous(grid,TRUE); |
148 | gtk_grid_set_column_homogeneous(grid,TRUE); | 149 | gtk_grid_set_column_homogeneous(grid,TRUE); |
@@ -152,7 +153,7 @@ static GtkWidget * ftoption_new(v3270FTD *dialog, const struct ftoptions *opt) | @@ -152,7 +153,7 @@ static GtkWidget * ftoption_new(v3270FTD *dialog, const struct ftoptions *opt) | ||
152 | for(f=0;opt[f].label;f++) | 153 | for(f=0;opt[f].label;f++) |
153 | { | 154 | { |
154 | GtkWidget * button = gtk_check_button_new_with_mnemonic(gettext(opt[f].label)); | 155 | GtkWidget * button = gtk_check_button_new_with_mnemonic(gettext(opt[f].label)); |
155 | - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),dialog->options & opt[f].flag); | 156 | + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),(dialog->options & opt[f].flag) != 0); |
156 | gtk_widget_set_tooltip_text(GTK_WIDGET(button),gettext(opt[f].tooltip)); | 157 | gtk_widget_set_tooltip_text(GTK_WIDGET(button),gettext(opt[f].tooltip)); |
157 | gtk_widget_set_hexpand(button,TRUE); | 158 | gtk_widget_set_hexpand(button,TRUE); |
158 | gtk_grid_attach(grid,button,f&1,f/2,1,1); | 159 | gtk_grid_attach(grid,button,f&1,f/2,1,1); |
@@ -160,25 +161,41 @@ static GtkWidget * ftoption_new(v3270FTD *dialog, const struct ftoptions *opt) | @@ -160,25 +161,41 @@ static GtkWidget * ftoption_new(v3270FTD *dialog, const struct ftoptions *opt) | ||
160 | g_signal_connect(G_OBJECT(button),"toggled",G_CALLBACK(toggle_option),dialog); | 161 | g_signal_connect(G_OBJECT(button),"toggled",G_CALLBACK(toggle_option),dialog); |
161 | } | 162 | } |
162 | 163 | ||
163 | - return GTK_WIDGET(grid); | 164 | + gtk_container_add(frame,GTK_WIDGET(grid)); |
165 | + | ||
166 | + return GTK_WIDGET(frame); | ||
164 | } | 167 | } |
165 | 168 | ||
166 | -static GtkWidget * ftvalue_new(v3270FTD *dialog, const struct ftvalues *val) | 169 | +/* |
170 | +http://stackoverflow.com/questions/16539127/gtkentry-change-text-on-user-input | ||
171 | +void entry_insert(GtkEntryBuffer *buffer, guint position, gchar *chars, guint n_chars, gpointer user_data) | ||
167 | { | 172 | { |
168 | - GtkGrid * grid = GTK_GRID(gtk_grid_new()); | ||
169 | - int f; | ||
170 | 173 | ||
171 | - gtk_grid_set_row_homogeneous(grid,TRUE); | ||
172 | - gtk_grid_set_column_homogeneous(grid,TRUE); | ||
173 | - gtk_grid_set_column_spacing(grid,5); | ||
174 | - gtk_grid_set_row_spacing(grid,5); | 174 | +} |
175 | +static void setup_numeric_entry(GtkEntry *entry) | ||
176 | +{ | ||
177 | + gtk_entry_set_max_length(entry,10); | ||
178 | + gtk_entry_set_width_chars(entry,10); | ||
179 | + gtk_entry_set_alignment(entry,1); | ||
180 | + gtk_entry_set_input_purpose(entry,GTK_INPUT_PURPOSE_NUMBER); | ||
181 | + g_signal_connect_after(G_OBJECT(entry), "insert-text", G_CALLBACK(entry_insert),NULL); | ||
182 | +} | ||
183 | +*/ | ||
184 | + | ||
185 | +static GtkWidget * ftvalue_new(v3270FTD *dialog, GtkGrid *grid, int r, const struct ftvalues *val) | ||
186 | +{ | ||
187 | + int f; | ||
175 | 188 | ||
176 | for(f=0;val[f].label;f++) | 189 | for(f=0;val[f].label;f++) |
177 | { | 190 | { |
178 | - int col = (f&1)*2; | ||
179 | - int row = f/2; | ||
180 | - GtkWidget * label = gtk_label_new_with_mnemonic(gettext(val[f].label)); | ||
181 | - GtkEntry * entry = GTK_ENTRY(gtk_entry_new()); | 191 | + int col = (f&1)*2; |
192 | + int row = (f/2)+r; | ||
193 | + GtkWidget * label = gtk_label_new_with_mnemonic(gettext(val[f].label)); | ||
194 | + GtkWidget * entry = GTK_WIDGET(gtk_spin_button_new_with_range(0,99999,1)); | ||
195 | + | ||
196 | + gtk_widget_set_hexpand(GTK_WIDGET(label),TRUE); | ||
197 | + gtk_widget_set_tooltip_text(GTK_WIDGET(label),gettext(val[f].tooltip)); | ||
198 | + gtk_misc_set_alignment(GTK_MISC(label),0,0.5); | ||
182 | 199 | ||
183 | gtk_label_set_mnemonic_widget(GTK_LABEL(label),GTK_WIDGET(entry)); | 200 | gtk_label_set_mnemonic_widget(GTK_LABEL(label),GTK_WIDGET(entry)); |
184 | gtk_widget_set_tooltip_text(GTK_WIDGET(entry),gettext(val[f].tooltip)); | 201 | gtk_widget_set_tooltip_text(GTK_WIDGET(entry),gettext(val[f].tooltip)); |
@@ -204,7 +221,7 @@ static GtkWidget * ftradio_new(v3270FTD *dialog, const gchar *title, const gchar | @@ -204,7 +221,7 @@ static GtkWidget * ftradio_new(v3270FTD *dialog, const gchar *title, const gchar | ||
204 | for(f=0;opt[f].label;f++) | 221 | for(f=0;opt[f].label;f++) |
205 | { | 222 | { |
206 | GtkWidget * button = gtk_radio_button_new_with_label(lst,gettext(opt[f].label)); | 223 | GtkWidget * button = gtk_radio_button_new_with_label(lst,gettext(opt[f].label)); |
207 | - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),dialog->options & opt[f].flag); | 224 | + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),(dialog->options & opt[f].flag) != 0); |
208 | if(opt[f].tooltip) | 225 | if(opt[f].tooltip) |
209 | gtk_widget_set_tooltip_text(button,gettext(opt[f].tooltip)); | 226 | gtk_widget_set_tooltip_text(button,gettext(opt[f].tooltip)); |
210 | 227 | ||
@@ -304,6 +321,7 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | @@ -304,6 +321,7 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | ||
304 | gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),ftoption_new(dialog,opt),FALSE,TRUE,2); | 321 | gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),ftoption_new(dialog,opt),FALSE,TRUE,2); |
305 | 322 | ||
306 | // Create values box | 323 | // Create values box |
324 | + /* | ||
307 | static const struct ftvalues val[] = | 325 | static const struct ftvalues val[] = |
308 | { | 326 | { |
309 | { | 327 | { |
@@ -319,8 +337,8 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | @@ -319,8 +337,8 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | ||
319 | } | 337 | } |
320 | }; | 338 | }; |
321 | 339 | ||
322 | - gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),ftvalue_new(dialog,val),FALSE,TRUE,2); | ||
323 | - | 340 | + // gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),ftvalue_new(dialog,val),FALSE,TRUE,2); |
341 | + */ | ||
324 | } | 342 | } |
325 | else | 343 | else |
326 | { | 344 | { |
@@ -374,7 +392,9 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | @@ -374,7 +392,9 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | ||
374 | 392 | ||
375 | 393 | ||
376 | // Create format box | 394 | // Create format box |
377 | - GtkBox * box = GTK_BOX(gtk_box_new(GTK_ORIENTATION_HORIZONTAL,2)); | 395 | + GtkGrid * grid = GTK_GRID(gtk_grid_new()); |
396 | + gtk_grid_set_column_spacing(grid,5); | ||
397 | + gtk_grid_set_row_spacing(grid,5); | ||
378 | 398 | ||
379 | // Create record format box | 399 | // Create record format box |
380 | static const struct ftoptions recfm[] = | 400 | static const struct ftoptions recfm[] = |
@@ -406,8 +426,10 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | @@ -406,8 +426,10 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | ||
406 | } | 426 | } |
407 | }; | 427 | }; |
408 | 428 | ||
409 | - gtk_box_pack_start( box, | ||
410 | - ftradio_new(dialog,_("Record format"),_("Controls the record format of files created on the host."),recfm),FALSE,TRUE,2); | 429 | + gtk_grid_attach( grid, |
430 | + ftradio_new(dialog,_("Record format"),_("Controls the record format of files created on the host."),recfm), | ||
431 | + 0,0,2,1 | ||
432 | + ); | ||
411 | 433 | ||
412 | 434 | ||
413 | // Create allocation unit box | 435 | // Create allocation unit box |
@@ -440,15 +462,18 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | @@ -440,15 +462,18 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | ||
440 | } | 462 | } |
441 | }; | 463 | }; |
442 | 464 | ||
443 | - gtk_box_pack_start( box, | ||
444 | - ftradio_new(dialog,_("Space allocation units"),_("Specifies the units for the TSO host primary and secondary space options."),units),FALSE,TRUE,2); | 465 | + gtk_grid_attach( grid, |
466 | + ftradio_new(dialog,_("Space allocation units"),_("Specifies the units for the TSO host primary and secondary space options."),units), | ||
467 | + 2,0,2,1 | ||
468 | + ); | ||
469 | + | ||
445 | 470 | ||
446 | // Create values box | 471 | // Create values box |
447 | static const struct ftvalues val[] = | 472 | static const struct ftvalues val[] = |
448 | { | 473 | { |
449 | { | 474 | { |
450 | VALUE_LRECL, | 475 | VALUE_LRECL, |
451 | - N_( "Lrecl:" ), | 476 | + N_( "Record Length:" ), |
452 | N_( "Specifies the record length (or maximum record length) for files created on the host." ) | 477 | N_( "Specifies the record length (or maximum record length) for files created on the host." ) |
453 | }, | 478 | }, |
454 | 479 | ||
@@ -461,7 +486,7 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | @@ -461,7 +486,7 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | ||
461 | 486 | ||
462 | { | 487 | { |
463 | VALUE_BLKSIZE, | 488 | VALUE_BLKSIZE, |
464 | - N_( "Blksize:" ), | 489 | + N_( "Block size:" ), |
465 | N_( "Specifies the block size for files created on the host (TSO hosts only)." ) | 490 | N_( "Specifies the block size for files created on the host (TSO hosts only)." ) |
466 | }, | 491 | }, |
467 | 492 | ||
@@ -484,8 +509,9 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | @@ -484,8 +509,9 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options) | ||
484 | } | 509 | } |
485 | }; | 510 | }; |
486 | 511 | ||
487 | - gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),GTK_WIDGET(box),FALSE,TRUE,2); | ||
488 | - gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),ftvalue_new(dialog,val),FALSE,TRUE,2); | 512 | + ftvalue_new(dialog,grid,1,val); |
513 | + | ||
514 | + gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),GTK_WIDGET(grid),FALSE,TRUE,2); | ||
489 | 515 | ||
490 | } | 516 | } |
491 | 517 |
src/pw3270/ft/testprogram.c
@@ -38,7 +38,7 @@ int main (int argc, char *argv[]) | @@ -38,7 +38,7 @@ int main (int argc, char *argv[]) | ||
38 | 38 | ||
39 | gtk_init (&argc, &argv); | 39 | gtk_init (&argc, &argv); |
40 | // win = v3270_dialog_ft_new(LIB3270_FT_OPTION_RECEIVE|LIB3270_FT_OPTION_ASCII); | 40 | // win = v3270_dialog_ft_new(LIB3270_FT_OPTION_RECEIVE|LIB3270_FT_OPTION_ASCII); |
41 | - win = v3270_dialog_ft_new(LIB3270_FT_OPTION_SEND); | 41 | + win = v3270_dialog_ft_new(LIB3270_FT_OPTION_SEND|LIB3270_FT_OPTION_REMAP); |
42 | 42 | ||
43 | 43 | ||
44 | gtk_widget_show_all (win); | 44 | gtk_widget_show_all (win); |