Commit c7a62db8b9b926fae91a7db0d8bafbbe2131bc77

Authored by perry.werneck@gmail.com
1 parent 1211f8b2

Trabalhando no diálogo de transferência de arquivos

src/include/lib3270/filetransfer.h
... ... @@ -37,30 +37,48 @@
37 37 #include <sys/time.h>
38 38 #include <lib3270/charset.h>
39 39  
40   - #define LIB3270_FT_OPTION_SEND 0x0000
41 40  
  41 +/*
42 42 #define LIB3270_FT_RECORD_FORMAT_DEFAULT 0x0000
43 43 #define LIB3270_FT_RECORD_FORMAT_FIXED 0x0100
44 44 #define LIB3270_FT_RECORD_FORMAT_VARIABLE 0x0200
45 45 #define LIB3270_FT_RECORD_FORMAT_UNDEFINED 0x0300
46 46 #define LIB3270_FT_RECORD_FORMAT_MASK LIB3270_FT_RECORD_FORMAT_UNDEFINED
  47 +*/
47 48  
  49 +/*
48 50 #define LIB3270_FT_ALLOCATION_UNITS_DEFAULT 0x0000
49 51 #define LIB3270_FT_ALLOCATION_UNITS_TRACKS 0x1000
50 52 #define LIB3270_FT_ALLOCATION_UNITS_CYLINDERS 0x2000
51 53 #define LIB3270_FT_ALLOCATION_UNITS_AVBLOCK 0x3000
52 54 #define LIB3270_FT_ALLOCATION_UNITS_MASK LIB3270_FT_ALLOCATION_UNITS_AVBLOCK
  55 +*/
53 56  
54   - typedef enum _lib3270_FT_FLAG
  57 + typedef enum _lib3270_FT_OPTION
55 58 {
56   - LIB3270_FT_OPTION_RECEIVE = 0x0001,
57   - LIB3270_FT_OPTION_ASCII = 0x0002, /**< Convert to ascii */
58   - LIB3270_FT_OPTION_CRLF = 0x0004, /**< Add crlf to each line */
59   - LIB3270_FT_OPTION_APPEND = 0x0008,
60   - LIB3270_FT_OPTION_REMAP = 0x0010 /**< Remap ASCII<->EBCDIC */
  59 + LIB3270_FT_OPTION_SEND = 0x0000,
  60 +
  61 + LIB3270_FT_OPTION_RECEIVE = 0x0001,
  62 + LIB3270_FT_OPTION_ASCII = 0x0002, /**< Convert to ascii */
  63 + LIB3270_FT_OPTION_CRLF = 0x0004, /**< Add crlf to each line */
  64 + LIB3270_FT_OPTION_APPEND = 0x0008,
  65 + LIB3270_FT_OPTION_REMAP = 0x0010, /**< Remap ASCII<->EBCDIC */
  66 +
  67 + LIB3270_FT_RECORD_FORMAT_DEFAULT = 0x0000,
  68 + LIB3270_FT_RECORD_FORMAT_FIXED = 0x0100,
  69 + LIB3270_FT_RECORD_FORMAT_VARIABLE = 0x0200,
  70 + LIB3270_FT_RECORD_FORMAT_UNDEFINED = 0x0300,
  71 +
  72 + LIB3270_FT_ALLOCATION_UNITS_DEFAULT = 0x0000,
  73 + LIB3270_FT_ALLOCATION_UNITS_TRACKS = 0x1000,
  74 + LIB3270_FT_ALLOCATION_UNITS_CYLINDERS = 0x2000,
  75 + LIB3270_FT_ALLOCATION_UNITS_AVBLOCK = 0x3000
61 76  
62 77 } LIB3270_FT_OPTION;
63 78  
  79 + #define LIB3270_FT_ALLOCATION_UNITS_MASK LIB3270_FT_ALLOCATION_UNITS_AVBLOCK
  80 + #define LIB3270_FT_RECORD_FORMAT_MASK LIB3270_FT_RECORD_FORMAT_UNDEFINED
  81 +
64 82 typedef enum _lib3270_ft_state
65 83 {
66 84 LIB3270_FT_STATE_NONE, /**< No transfer in progress */
... ...
src/pw3270/ft/ftdialog.c
... ... @@ -135,6 +135,8 @@ static void toggle_option(GtkToggleButton *button, v3270FTD *dialog)
135 135 else
136 136 dialog->options &= ~opt->flag;
137 137  
  138 +// g_message("Option \"%s\" is %s flag=%08lx",opt->label,gtk_toggle_button_get_active(button) ? "ON" : "OFF", (unsigned long) opt->flag);
  139 +
138 140 }
139 141  
140 142 static GtkWidget * ftoption_new(v3270FTD *dialog, const struct ftoptions *opt)
... ... @@ -192,6 +194,32 @@ static GtkWidget * ftvalue_new(v3270FTD *dialog, const struct ftvalues *val)
192 194  
193 195 }
194 196  
  197 +static GtkWidget * ftradio_new(v3270FTD *dialog, const gchar *title, const gchar *tooltip, const struct ftoptions *opt)
  198 +{
  199 + GtkContainer * frame = GTK_CONTAINER(gtk_frame_new(title));
  200 + GtkBox * box = GTK_BOX(gtk_box_new(GTK_ORIENTATION_HORIZONTAL,2));
  201 + GSList * lst = NULL;
  202 + int f;
  203 +
  204 + for(f=0;opt[f].label;f++)
  205 + {
  206 + 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);
  208 + if(opt[f].tooltip)
  209 + gtk_widget_set_tooltip_text(button,gettext(opt[f].tooltip));
  210 +
  211 + g_object_set_data(G_OBJECT(button),"cfg",(gpointer) &opt[f]);
  212 + g_signal_connect(G_OBJECT(button),"toggled",G_CALLBACK(toggle_option),dialog);
  213 +
  214 + gtk_box_pack_start(box,button,FALSE,TRUE,2);
  215 + lst = gtk_radio_button_get_group(GTK_RADIO_BUTTON(button));
  216 + }
  217 +
  218 + gtk_widget_set_tooltip_text(GTK_WIDGET(frame),tooltip);
  219 + gtk_container_add(frame,GTK_WIDGET(box));
  220 + return GTK_WIDGET(frame);
  221 +}
  222 +
195 223 GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options)
196 224 {
197 225 v3270FTD *dialog = g_object_new(GTK_TYPE_V3270FTD, NULL);
... ... @@ -345,6 +373,76 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options)
345 373 gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),ftoption_new(dialog,opt),FALSE,TRUE,2);
346 374  
347 375  
  376 + // Create format box
  377 + GtkBox * box = GTK_BOX(gtk_box_new(GTK_ORIENTATION_HORIZONTAL,2));
  378 +
  379 + // Create record format box
  380 + static const struct ftoptions recfm[] =
  381 + {
  382 + {
  383 + LIB3270_FT_RECORD_FORMAT_DEFAULT,
  384 + N_("Default"),
  385 + N_("Use host default record format.")
  386 + },
  387 + {
  388 + LIB3270_FT_RECORD_FORMAT_FIXED,
  389 + N_("Fixed"),
  390 + N_("Creates a file with fixed-length records.")
  391 + },
  392 + {
  393 + LIB3270_FT_RECORD_FORMAT_VARIABLE,
  394 + N_("Variable"),
  395 + N_("Creates a file with variable-length records.")
  396 + },
  397 + {
  398 + LIB3270_FT_RECORD_FORMAT_UNDEFINED,
  399 + N_("Undefined"),
  400 + N_("Creates a file with undefined-length records (TSO hosts only).")
  401 + },
  402 + {
  403 + 0,
  404 + NULL,
  405 + NULL
  406 + }
  407 + };
  408 +
  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);
  411 +
  412 +
  413 + // Create allocation unit box
  414 + static const struct ftoptions units[] =
  415 + {
  416 + {
  417 + LIB3270_FT_ALLOCATION_UNITS_DEFAULT,
  418 + N_("Default"),
  419 + NULL
  420 + },
  421 + {
  422 + LIB3270_FT_ALLOCATION_UNITS_TRACKS,
  423 + N_("Tracks"),
  424 + NULL
  425 + },
  426 + {
  427 + LIB3270_FT_ALLOCATION_UNITS_CYLINDERS,
  428 + N_("Cylinders"),
  429 + NULL
  430 + },
  431 + {
  432 + LIB3270_FT_ALLOCATION_UNITS_AVBLOCK,
  433 + N_("Avblock"),
  434 + NULL
  435 + },
  436 + {
  437 + 0,
  438 + NULL,
  439 + NULL
  440 + }
  441 + };
  442 +
  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);
  445 +
348 446 // Create values box
349 447 static const struct ftvalues val[] =
350 448 {
... ... @@ -358,7 +456,7 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options)
358 456 {
359 457 VALUE_PRIMSPACE,
360 458 N_( "Primary space:" ),
361   - N_( "Primary allocation for a file created on a TSO host.\nThe units are given by the Allocation option." )
  459 + N_( "Primary allocation for a file created on a TSO host.\nThe units are given by the space allocation units option." )
362 460 },
363 461  
364 462 {
... ... @@ -370,7 +468,7 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options)
370 468 {
371 469 VALUE_SECSPACE,
372 470 N_( "Secondary space:" ),
373   - N_( "Secondary allocation for a file created on a TSO host.\nThe units are given by the Allocation option." )
  471 + N_( "Secondary allocation for a file created on a TSO host.\nThe units are given by the space allocation units option." )
374 472 },
375 473  
376 474 {
... ... @@ -386,13 +484,11 @@ GtkWidget * v3270_dialog_ft_new(LIB3270_FT_OPTION options)
386 484 }
387 485 };
388 486  
  487 + gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),GTK_WIDGET(box),FALSE,TRUE,2);
389 488 gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),ftvalue_new(dialog,val),FALSE,TRUE,2);
390 489  
391 490 }
392 491  
393   -
394   - // File transfer options
395   -
396 492 return GTK_WIDGET(dialog);
397 493 }
398 494  
... ...
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(0);
  41 + win = v3270_dialog_ft_new(LIB3270_FT_OPTION_SEND);
42 42  
43 43  
44 44 gtk_widget_show_all (win);
... ...