Commit 4ac39648fcd945476099efbc8a5edab6f9e55e52

Authored by perry.werneck@gmail.com
1 parent 0fdbd46f

Simplificando configuração do host para facilitar a transferência de arquivos "BB"

src/include/lib3270.h
... ... @@ -241,13 +241,14 @@
241 241 */
242 242 typedef enum lib3270_option
243 243 {
244   - LIB3270_OPTION_COLOR8 = 0x0001, /**< If active, pw3270 will respond to a Query(Color) with a list of 8 supported colors. */
245   - LIB3270_OPTION_AS400 = 0x0002, /**< Host is AS400? */
  244 + LIB3270_OPTION_COLOR8 = 0x0001, /**< If active, pw3270 will respond to a Query(Color) with a list of 8 supported colors. */
  245 + LIB3270_OPTION_KYBD_AS400 = 0x0002, /**< Prefix every PF with PA1 */
  246 + LIB3270_OPTION_TSO = 0x0004, /**< Host is TSO? */
246 247  
247 248 } LIB3270_OPTION;
248 249  
249 250 #define LIB3270_OPTION_DEFAULT 0
250   - #define LIB3270_OPTION_COUNT 2
  251 + #define LIB3270_OPTION_COUNT 3
251 252  
252 253 typedef struct _lib3270_option_entry
253 254 {
... ...
src/lib3270/kybd.c
... ... @@ -566,14 +566,14 @@ LIB3270_FKEY_ACTION( pfkey )
566 566  
567 567 if (hSession->kybdlock)
568 568 {
569   - if(hSession->options & LIB3270_OPTION_AS400)
  569 + if(hSession->options & LIB3270_OPTION_KYBD_AS400)
570 570 enq_key(hSession,pa_xlate[0]);
571 571  
572 572 enq_key(hSession,pf_xlate[key-1]);
573 573 }
574 574 else
575 575 {
576   - if(hSession->options & LIB3270_OPTION_AS400)
  576 + if(hSession->options & LIB3270_OPTION_KYBD_AS400)
577 577 key_AID(hSession,pa_xlate[0]);
578 578  
579 579 key_AID(hSession,pf_xlate[key-1]);
... ...
src/lib3270/options.c
... ... @@ -46,9 +46,16 @@
46 46 },
47 47  
48 48 {
49   - LIB3270_OPTION_AS400,
  49 + LIB3270_OPTION_KYBD_AS400,
50 50 "as400",
51   - N_( "Host is AS_400" ),
  51 + N_( "Host is AS/400" ),
  52 + NULL
  53 + },
  54 +
  55 + {
  56 + LIB3270_OPTION_TSO,
  57 + "tso",
  58 + N_( "Host is TSO" ),
52 59 NULL
53 60 },
54 61  
... ...
src/pw3270/dialog.c
... ... @@ -34,6 +34,36 @@
34 34  
35 35 /*--[ Globals ]--------------------------------------------------------------------------------------*/
36 36  
  37 + static const struct _host_type
  38 + {
  39 + const gchar * name;
  40 + const gchar * description;
  41 + LIB3270_OPTION option;
  42 + } host_type[] =
  43 + {
  44 + { "S390", N_( "IBM S/390" ), LIB3270_OPTION_TSO },
  45 + { "AS400", N_( "IBM AS/400" ), LIB3270_OPTION_KYBD_AS400 },
  46 + { "TSO", N_( "Other (TSO)" ), LIB3270_OPTION_TSO },
  47 + { "VM/CMS", N_( "Other (VM/CMS)" ), 0 }
  48 + };
  49 +
  50 + static const struct _charset
  51 + {
  52 + const gchar *name;
  53 + const gchar *description;
  54 + } charset[] =
  55 + {
  56 + // http://en.wikipedia.org/wiki/Character_encoding
  57 + { "UTF-8", N_( "UTF-8" ) },
  58 + { "ISO-8859-1", N_( "Western Europe (ISO 8859-1)" ) },
  59 + { "CP1252", N_( "Windows Western languages (CP1252)" ) },
  60 +
  61 + { NULL, NULL }
  62 + };
  63 +
  64 +
  65 +/*--[ Implement ]------------------------------------------------------------------------------------*/
  66 +
37 67 void load_3270_options_from_config(GtkWidget *widget)
38 68 {
39 69 int f;
... ... @@ -97,22 +127,8 @@
97 127 else
98 128 {
99 129 // Add charset options
100   - static const struct _list
101   - {
102   - const gchar *charset;
103   - const gchar *text;
104   - } list[] =
105   - {
106   - // http://en.wikipedia.org/wiki/Character_encoding
107   - { "UTF-8", N_( "UTF-8" ) },
108   - { "ISO-8859-1", N_( "Western Europe (ISO 8859-1)" ) },
109   - { "CP1252", N_( "Windows Western languages (CP1252)" ) },
110   -
111   - { NULL, NULL }
112   - };
113   -
114 130 GtkWidget * label = gtk_label_new_with_mnemonic (_("C_haracter Coding:"));
115   - const gchar * charset = NULL;
  131 + const gchar * scharset = NULL;
116 132 #if GTK_CHECK_VERSION(3,0,0)
117 133 GtkWidget * menu = gtk_combo_box_text_new();
118 134 #else
... ... @@ -125,14 +141,14 @@
125 141 int f;
126 142 int p = 0;
127 143  
128   - g_get_charset(&charset);
129   - *encoding = g_strdup(charset);
  144 + g_get_charset(&scharset);
  145 + *encoding = g_strdup(scharset);
130 146  
131   - text = g_strdup_printf(_("Current (%s)"),charset);
  147 + text = g_strdup_printf(_("Current (%s)"),scharset);
132 148  
133 149 #if GTK_CHECK_VERSION(3,0,0)
134 150  
135   - gtk_combo_box_text_insert(GTK_COMBO_BOX_TEXT(menu),p,charset,text);
  151 + gtk_combo_box_text_insert(GTK_COMBO_BOX_TEXT(menu),p,scharset,text);
136 152  
137 153 #else
138 154  
... ... @@ -140,7 +156,7 @@
140 156 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(menu), renderer, "text", 0, NULL);
141 157  
142 158 gtk_list_store_append((GtkListStore *) model,&iter);
143   - gtk_list_store_set((GtkListStore *) model, &iter, 0, text, 1, charset, -1);
  159 + gtk_list_store_set((GtkListStore *) model, &iter, 0, text, 1, scharset, -1);
144 160  
145 161 #endif // GTK(3,0,0)
146 162  
... ... @@ -148,15 +164,15 @@
148 164  
149 165 gtk_combo_box_set_active(GTK_COMBO_BOX(menu),p++);
150 166  
151   - for(f=0;list[f].charset;f++)
  167 + for(f=0;charset[f].name;f++)
152 168 {
153   - if(strcasecmp(charset,list[f].charset))
  169 + if(strcasecmp(scharset,charset[f].name))
154 170 {
155 171 #if GTK_CHECK_VERSION(3,0,0)
156   - gtk_combo_box_text_insert(GTK_COMBO_BOX_TEXT(menu),p++,list[f].charset,gettext(list[f].text));
  172 + gtk_combo_box_text_insert(GTK_COMBO_BOX_TEXT(menu),p++,charset[f].name,gettext(charset[f].description));
157 173 #else
158 174 gtk_list_store_append((GtkListStore *) model,&iter);
159   - gtk_list_store_set((GtkListStore *) model, &iter, 0, gettext(list[f].text), 1, list[f].charset, -1);
  175 + gtk_list_store_set((GtkListStore *) model, &iter, 0, gettext(charset[f].description), 1, charset[f].name, -1);
160 176 #endif // GTK(3,0,0)
161 177 }
162 178 }
... ... @@ -304,9 +320,10 @@
304 320  
305 321 void hostname_action(GtkAction *action, GtkWidget *widget)
306 322 {
307   - const LIB3270_OPTION_ENTRY *options = lib3270_get_option_list();
  323 +// const LIB3270_OPTION_ENTRY *options = lib3270_get_option_list();
308 324  
309 325 const gchar * title = g_object_get_data(G_OBJECT(action),"title");
  326 + const gchar * systype = g_object_get_data(G_OBJECT(action),"type");
310 327 gchar * cfghost = get_string_from_config("host","uri","");
311 328 gchar * hostname;
312 329 gchar * ptr;
... ... @@ -316,7 +333,7 @@
316 333 GtkEntry * host = GTK_ENTRY(gtk_entry_new());
317 334 GtkEntry * port = GTK_ENTRY(gtk_entry_new());
318 335 GtkToggleButton * sslcheck = GTK_TOGGLE_BUTTON(gtk_check_button_new_with_mnemonic( _( "_Secure connection" ) ));
319   - GtkToggleButton * optcheck[LIB3270_OPTION_COUNT];
  336 +// GtkToggleButton * optcheck[LIB3270_OPTION_COUNT];
320 337 GtkWidget * dialog = gtk_dialog_new_with_buttons( gettext(title ? title : N_( "Select hostname" )),
321 338 GTK_WINDOW(gtk_widget_get_toplevel(widget)),
322 339 GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
... ... @@ -344,12 +361,38 @@
344 361 gtk_table_attach(table,GTK_WIDGET(sslcheck), 1,2,1,2,GTK_EXPAND|GTK_FILL,0,0,0);
345 362  
346 363 {
  364 + GtkWidget * expander = gtk_expander_new_with_mnemonic(_( "_Host options"));
  365 + GtkBox * container = GTK_BOX(gtk_box_new(GTK_ORIENTATION_VERTICAL,0));
  366 +
  367 + // Host options
  368 + if(!systype)
  369 + {
  370 + // No system type defined, ask user
  371 + GtkTable * frame = GTK_TABLE(gtk_table_new(2,2,FALSE));
  372 + GtkWidget * widget = gtk_combo_box_text_new();
  373 + gchar * str = get_string_from_config("host","systype",host_type[0].name);
  374 + int f;
  375 +
  376 + label = gtk_label_new_with_mnemonic( _("System _Type:") );
  377 + gtk_table_attach(frame,label,0,1,0,1,0,0,5,0);
  378 +
  379 + for(f=0;f<G_N_ELEMENTS(host_type);f++)
  380 + {
  381 + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widget),host_type[f].name,gettext(host_type[f].description));
  382 + if(!g_strcasecmp(host_type[f].name,str))
  383 + gtk_combo_box_set_active(GTK_COMBO_BOX(widget),f);
  384 + }
  385 +
  386 + g_free(str);
347 387  
348   - int f;
349   - int col = 0;
350   - int row = 0;
351 388  
352   - GtkWidget * container = gtk_expander_new_with_mnemonic(_( "_Host options"));
  389 + gtk_table_attach(frame,widget,1,2,0,1,GTK_EXPAND|GTK_FILL,0,0,0);
  390 + gtk_label_set_mnemonic_widget(GTK_LABEL(label),GTK_WIDGET(widget));
  391 +
  392 + gtk_box_pack_start(container,GTK_WIDGET(frame),FALSE,TRUE,0);
  393 + }
  394 +
  395 +/*
353 396 GtkTable * frame = GTK_TABLE(gtk_table_new(2,2,FALSE));
354 397  
355 398 for(f=0;f<LIB3270_OPTION_COUNT;f++)
... ... @@ -371,7 +414,10 @@
371 414 }
372 415  
373 416 gtk_container_add(GTK_CONTAINER(container),GTK_WIDGET(frame));
374   - gtk_table_attach(table,container,1,2,2,3,GTK_EXPAND|GTK_FILL,0,0,0);
  417 +
  418 +*/
  419 + gtk_container_add(GTK_CONTAINER(expander),GTK_WIDGET(container));
  420 + gtk_table_attach(table,expander,1,2,2,3,GTK_EXPAND|GTK_FILL,0,0,0);
375 421 }
376 422  
377 423  
... ... @@ -425,9 +471,10 @@
425 471 );
426 472  
427 473 {
428   - int f;
  474 +// int f;
429 475 LIB3270_OPTION opt = 0;
430 476  
  477 +/*
431 478 for(f=0;f<LIB3270_OPTION_COUNT;f++)
432 479 {
433 480 gboolean val = gtk_toggle_button_get_active(optcheck[f]);
... ... @@ -435,7 +482,7 @@
435 482 opt |= options[f].value;
436 483 set_boolean_to_config("host", options[f].key, val);
437 484 }
438   -
  485 +*/
439 486 v3270_set_session_options(widget,opt);
440 487  
441 488 }
... ...