Commit 5e333817b3fe10f980a5f10a488608bf08b88fae

Authored by perry.werneck@gmail.com
1 parent c7a62db8

Implementando diálogo de transferência de arquivos

src/pw3270/ft/ftdialog.c
... ... @@ -141,8 +141,9 @@ static void toggle_option(GtkToggleButton *button, v3270FTD *dialog)
141 141  
142 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 148 gtk_grid_set_row_homogeneous(grid,TRUE);
148 149 gtk_grid_set_column_homogeneous(grid,TRUE);
... ... @@ -152,7 +153,7 @@ static GtkWidget * ftoption_new(v3270FTD *dialog, const struct ftoptions *opt)
152 153 for(f=0;opt[f].label;f++)
153 154 {
154 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 157 gtk_widget_set_tooltip_text(GTK_WIDGET(button),gettext(opt[f].tooltip));
157 158 gtk_widget_set_hexpand(button,TRUE);
158 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 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 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 200 gtk_label_set_mnemonic_widget(GTK_LABEL(label),GTK_WIDGET(entry));
184 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 221 for(f=0;opt[f].label;f++)
205 222 {
206 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 225 if(opt[f].tooltip)
209 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 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 323 // Create values box
  324 + /*
307 325 static const struct ftvalues val[] =
308 326 {
309 327 {
... ... @@ -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 343 else
326 344 {
... ... @@ -374,7 +392,9 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options)
374 392  
375 393  
376 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 399 // Create record format box
380 400 static const struct ftoptions recfm[] =
... ... @@ -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 435 // Create allocation unit box
... ... @@ -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 471 // Create values box
447 472 static const struct ftvalues val[] =
448 473 {
449 474 {
450 475 VALUE_LRECL,
451   - N_( "Lrecl:" ),
  476 + N_( "Record Length:" ),
452 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 486  
462 487 {
463 488 VALUE_BLKSIZE,
464   - N_( "Blksize:" ),
  489 + N_( "Block size:" ),
465 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 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 38  
39 39 gtk_init (&argc, &argv);
40 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 44 gtk_widget_show_all (win);
... ...