Commit 4ff7cbe02c60df3a5fed41d6ee35d6865869507f
1 parent
0c06052f
Exists in
master
and in
5 other branches
Incluindo opcao para acesso a hosts com 8 cores
Showing
3 changed files
with
68 additions
and
28 deletions
Show diff stats
src/pw3270/actions.c
| @@ -73,6 +73,7 @@ static void connect_action(GtkAction *action, GtkWidget *widget) | @@ -73,6 +73,7 @@ static void connect_action(GtkAction *action, GtkWidget *widget) | ||
| 73 | 73 | ||
| 74 | if(host) | 74 | if(host) |
| 75 | { | 75 | { |
| 76 | + lib3270_set_options(v3270_get_session(widget),0); | ||
| 76 | v3270_connect(widget,host); | 77 | v3270_connect(widget,host); |
| 77 | return; | 78 | return; |
| 78 | } | 79 | } |
| @@ -80,6 +81,7 @@ static void connect_action(GtkAction *action, GtkWidget *widget) | @@ -80,6 +81,7 @@ static void connect_action(GtkAction *action, GtkWidget *widget) | ||
| 80 | host = get_string_from_config("host","uri",""); | 81 | host = get_string_from_config("host","uri",""); |
| 81 | if(*host) | 82 | if(*host) |
| 82 | { | 83 | { |
| 84 | + load_3270_options_from_config(widget); | ||
| 83 | v3270_connect(widget,host); | 85 | v3270_connect(widget,host); |
| 84 | g_free(host); | 86 | g_free(host); |
| 85 | return; | 87 | return; |
src/pw3270/dialog.c
| @@ -32,7 +32,46 @@ | @@ -32,7 +32,46 @@ | ||
| 32 | #include "globals.h" | 32 | #include "globals.h" |
| 33 | #include <pw3270/v3270.h> | 33 | #include <pw3270/v3270.h> |
| 34 | 34 | ||
| 35 | -/*--[ Implement ]------------------------------------------------------------------------------------*/ | 35 | + static const struct _lib3270_options |
| 36 | + { | ||
| 37 | + LIB3270_OPTION value; | ||
| 38 | + const gchar * key; | ||
| 39 | + const gchar * text; | ||
| 40 | + const gchar * tooltip; | ||
| 41 | + } lib3270_options[] = | ||
| 42 | + { | ||
| 43 | + { | ||
| 44 | + LIB3270_OPTION_COLOR8, | ||
| 45 | + "color8", | ||
| 46 | + N_( "_8 colors" ), | ||
| 47 | + N_( "If active, pw3270 will respond to a Query(Color) with a list of 8 supported colors." ) | ||
| 48 | + }, | ||
| 49 | + | ||
| 50 | + { | ||
| 51 | + LIB3270_OPTION_AS400, | ||
| 52 | + "as400", | ||
| 53 | + N_( "Host is AS_400" ), | ||
| 54 | + NULL | ||
| 55 | + }, | ||
| 56 | + | ||
| 57 | + }; | ||
| 58 | + | ||
| 59 | + | ||
| 60 | +/*--[ Globals ]--------------------------------------------------------------------------------------*/ | ||
| 61 | + | ||
| 62 | + void load_3270_options_from_config(GtkWidget *widget) | ||
| 63 | + { | ||
| 64 | + int f; | ||
| 65 | + LIB3270_OPTION opt = 0; | ||
| 66 | + | ||
| 67 | + for(f=0;f<G_N_ELEMENTS(lib3270_options);f++) | ||
| 68 | + { | ||
| 69 | + if(get_boolean_from_config("host",lib3270_options[f].key,FALSE)) | ||
| 70 | + opt |= lib3270_options[f].value; | ||
| 71 | + } | ||
| 72 | + lib3270_set_options(v3270_get_session(widget),opt); | ||
| 73 | + } | ||
| 74 | + | ||
| 36 | 75 | ||
| 37 | static void charset_changed(GtkComboBox *widget,gchar **encoding) | 76 | static void charset_changed(GtkComboBox *widget,gchar **encoding) |
| 38 | { | 77 | { |
| @@ -286,28 +325,9 @@ | @@ -286,28 +325,9 @@ | ||
| 286 | return 0; | 325 | return 0; |
| 287 | } | 326 | } |
| 288 | 327 | ||
| 328 | + | ||
| 289 | void hostname_action(GtkAction *action, GtkWidget *widget) | 329 | void hostname_action(GtkAction *action, GtkWidget *widget) |
| 290 | { | 330 | { |
| 291 | - static const struct _option | ||
| 292 | - { | ||
| 293 | - LIB3270_OPTION value; | ||
| 294 | - const gchar * text; | ||
| 295 | - const gchar * tooltip; | ||
| 296 | - } option[] = | ||
| 297 | - { | ||
| 298 | - { | ||
| 299 | - LIB3270_OPTION_COLOR8, | ||
| 300 | - N_( "_8 colors" ), | ||
| 301 | - N_( "If active, pw3270 will respond to a Query(Color) with a list of 8 supported colors." ) | ||
| 302 | - }, | ||
| 303 | - | ||
| 304 | - { | ||
| 305 | - LIB3270_OPTION_AS400, | ||
| 306 | - N_( "Host is AS_400" ), | ||
| 307 | - NULL | ||
| 308 | - }, | ||
| 309 | - }; | ||
| 310 | - | ||
| 311 | const gchar * title = g_object_get_data(G_OBJECT(action),"title"); | 331 | const gchar * title = g_object_get_data(G_OBJECT(action),"title"); |
| 312 | gchar * cfghost = get_string_from_config("host","uri",""); | 332 | gchar * cfghost = get_string_from_config("host","uri",""); |
| 313 | gchar * hostname; | 333 | gchar * hostname; |
| @@ -318,7 +338,7 @@ | @@ -318,7 +338,7 @@ | ||
| 318 | GtkEntry * host = GTK_ENTRY(gtk_entry_new()); | 338 | GtkEntry * host = GTK_ENTRY(gtk_entry_new()); |
| 319 | GtkEntry * port = GTK_ENTRY(gtk_entry_new()); | 339 | GtkEntry * port = GTK_ENTRY(gtk_entry_new()); |
| 320 | GtkToggleButton * sslcheck = GTK_TOGGLE_BUTTON(gtk_check_button_new_with_mnemonic( _( "_Secure connection" ) )); | 340 | GtkToggleButton * sslcheck = GTK_TOGGLE_BUTTON(gtk_check_button_new_with_mnemonic( _( "_Secure connection" ) )); |
| 321 | - GtkToggleButton * optcheck[G_N_ELEMENTS(option)]; | 341 | + GtkToggleButton * optcheck[G_N_ELEMENTS(lib3270_options)]; |
| 322 | GtkWidget * dialog = gtk_dialog_new_with_buttons( gettext(title ? title : N_( "Select hostname" )), | 342 | GtkWidget * dialog = gtk_dialog_new_with_buttons( gettext(title ? title : N_( "Select hostname" )), |
| 323 | GTK_WINDOW(gtk_widget_get_toplevel(widget)), | 343 | GTK_WINDOW(gtk_widget_get_toplevel(widget)), |
| 324 | GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT, | 344 | GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT, |
| @@ -347,20 +367,19 @@ | @@ -347,20 +367,19 @@ | ||
| 347 | int f; | 367 | int f; |
| 348 | int col = 1; | 368 | int col = 1; |
| 349 | int row = 0; | 369 | int row = 0; |
| 350 | - LIB3270_OPTION optval = lib3270_get_options(v3270_get_session(widget)); | ||
| 351 | 370 | ||
| 352 | GtkTable * frame = GTK_TABLE(gtk_table_new(2,2,FALSE)); | 371 | GtkTable * frame = GTK_TABLE(gtk_table_new(2,2,FALSE)); |
| 353 | gtk_table_attach(frame,GTK_WIDGET(sslcheck), 0,1,0,1,GTK_EXPAND|GTK_FILL,0,0,0); | 372 | gtk_table_attach(frame,GTK_WIDGET(sslcheck), 0,1,0,1,GTK_EXPAND|GTK_FILL,0,0,0); |
| 354 | 373 | ||
| 355 | - for(f=0;f<G_N_ELEMENTS(option);f++) | 374 | + for(f=0;f<G_N_ELEMENTS(lib3270_options);f++) |
| 356 | { | 375 | { |
| 357 | - optcheck[f] = GTK_TOGGLE_BUTTON(gtk_check_button_new_with_mnemonic( gettext( option[f].text ) )); | 376 | + optcheck[f] = GTK_TOGGLE_BUTTON(gtk_check_button_new_with_mnemonic( gettext( lib3270_options[f].text ) )); |
| 358 | 377 | ||
| 359 | - if(option[f].tooltip) | ||
| 360 | - gtk_widget_set_tooltip_markup(GTK_WIDGET(optcheck[f]),gettext(option[f].tooltip)); | 378 | + if(lib3270_options[f].tooltip) |
| 379 | + gtk_widget_set_tooltip_markup(GTK_WIDGET(optcheck[f]),gettext(lib3270_options[f].tooltip)); | ||
| 361 | 380 | ||
| 362 | gtk_table_attach(frame,GTK_WIDGET(optcheck[f]),col,col+1,row,row+1,GTK_EXPAND|GTK_FILL,0,0,0); | 381 | gtk_table_attach(frame,GTK_WIDGET(optcheck[f]),col,col+1,row,row+1,GTK_EXPAND|GTK_FILL,0,0,0); |
| 363 | - gtk_toggle_button_set_active(optcheck[f],optval & option[f].value ? TRUE : FALSE); | 382 | + gtk_toggle_button_set_active(optcheck[f],get_boolean_from_config("host", lib3270_options[f].key, FALSE)); |
| 364 | 383 | ||
| 365 | if(++col > 1); | 384 | if(++col > 1); |
| 366 | { | 385 | { |
| @@ -423,6 +442,22 @@ | @@ -423,6 +442,22 @@ | ||
| 423 | NULL | 442 | NULL |
| 424 | ); | 443 | ); |
| 425 | 444 | ||
| 445 | + { | ||
| 446 | + int f; | ||
| 447 | + LIB3270_OPTION opt = 0; | ||
| 448 | + | ||
| 449 | + for(f=0;f<G_N_ELEMENTS(lib3270_options);f++) | ||
| 450 | + { | ||
| 451 | + gboolean val = gtk_toggle_button_get_active(optcheck[f]); | ||
| 452 | + if(val) | ||
| 453 | + opt |= lib3270_options[f].value; | ||
| 454 | + set_boolean_to_config("host", lib3270_options[f].key, val); | ||
| 455 | + } | ||
| 456 | + | ||
| 457 | + lib3270_set_options(v3270_get_session(widget),opt); | ||
| 458 | + | ||
| 459 | + } | ||
| 460 | + | ||
| 426 | if(!lib3270_connect(v3270_get_session(widget),hostname,1)) | 461 | if(!lib3270_connect(v3270_get_session(widget),hostname,1)) |
| 427 | again = FALSE; | 462 | again = FALSE; |
| 428 | 463 |
src/pw3270/globals.h
| @@ -62,6 +62,9 @@ | @@ -62,6 +62,9 @@ | ||
| 62 | G_GNUC_INTERNAL void load_color_schemes(GtkWidget *widget, gchar *active); | 62 | G_GNUC_INTERNAL void load_color_schemes(GtkWidget *widget, gchar *active); |
| 63 | G_GNUC_INTERNAL GtkWidget * color_scheme_new(const GdkColor *current); | 63 | G_GNUC_INTERNAL GtkWidget * color_scheme_new(const GdkColor *current); |
| 64 | 64 | ||
| 65 | + G_GNUC_INTERNAL void load_3270_options_from_config(GtkWidget *widget); | ||
| 66 | + | ||
| 67 | + | ||
| 65 | // actions | 68 | // actions |
| 66 | G_GNUC_INTERNAL void paste_file_action(GtkAction *action, GtkWidget *widget); | 69 | G_GNUC_INTERNAL void paste_file_action(GtkAction *action, GtkWidget *widget); |
| 67 | G_GNUC_INTERNAL void hostname_action(GtkAction *action, GtkWidget *widget); | 70 | G_GNUC_INTERNAL void hostname_action(GtkAction *action, GtkWidget *widget); |