Commit 1c49b810deabb6422f80273e4243c28270da1396
1 parent
cd9a3e63
Exists in
master
and in
1 other branch
Adding connection toggles in the host settings dialog.
Showing
1 changed file
with
74 additions
and
7 deletions
Show diff stats
src/dialogs/hostselect.c
... | ... | @@ -37,8 +37,31 @@ |
37 | 37 | #include <v3270/dialogs.h> |
38 | 38 | #include <v3270/settings.h> |
39 | 39 | #include <lib3270/log.h> |
40 | + #include <lib3270/toggle.h> | |
40 | 41 | |
41 | -/*--[ Widget definition ]----------------------------------------------------------------------------*/ | |
42 | +/*--[ Globals ]--------------------------------------------------------------------------------------*/ | |
43 | + | |
44 | + static const struct ToggleList | |
45 | + { | |
46 | + gint left; | |
47 | + gint top; | |
48 | + | |
49 | + LIB3270_TOGGLE_ID id; | |
50 | + } | |
51 | + toggleList[] = | |
52 | + { | |
53 | + { | |
54 | + .left = 3, | |
55 | + .top = 1, | |
56 | + .id = LIB3270_TOGGLE_CONNECT_ON_STARTUP, | |
57 | + }, | |
58 | + { | |
59 | + .left = 4, | |
60 | + .top = 1, | |
61 | + .id = LIB3270_TOGGLE_RECONNECT, | |
62 | + } | |
63 | + | |
64 | + }; | |
42 | 65 | |
43 | 66 | enum _entry |
44 | 67 | { |
... | ... | @@ -162,7 +185,7 @@ |
162 | 185 | { |
163 | 186 | .left = 0, |
164 | 187 | .top = 0, |
165 | - .width = 5, | |
188 | + .width = 4, | |
166 | 189 | .height = 1, |
167 | 190 | |
168 | 191 | .label = N_( "_Host" ), |
... | ... | @@ -215,10 +238,11 @@ |
215 | 238 | |
216 | 239 | struct |
217 | 240 | { |
218 | - GtkEntry * entry[G_N_ELEMENTS(entryfields)]; ///< @brief Entry fields for host & service name | |
219 | - GtkToggleButton * ssl; ///< @brief SSL Connection? | |
220 | - GtkComboBox * combos[G_N_ELEMENTS(combos)]; ///< @brief Combo-boxes | |
221 | - GtkComboBox * charset; ///< @brief Charset combo box | |
241 | + GtkEntry * entry[G_N_ELEMENTS(entryfields)]; ///< @brief Entry fields for host & service name. | |
242 | + GtkToggleButton * ssl; ///< @brief SSL Connection? | |
243 | + GtkComboBox * combos[G_N_ELEMENTS(combos)]; ///< @brief Combo-boxes. | |
244 | + GtkComboBox * charset; ///< @brief Charset combo box. | |
245 | + GtkToggleButton * toggles[G_N_ELEMENTS(toggleList)]; ///< @brief Toggle checks. | |
222 | 246 | |
223 | 247 | } input; |
224 | 248 | |
... | ... | @@ -423,7 +447,31 @@ static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget) |
423 | 447 | widget->input.ssl = GTK_TOGGLE_BUTTON(gtk_check_button_new_with_mnemonic(_( "_Secure connection." ))); |
424 | 448 | gtk_widget_set_tooltip_text(GTK_WIDGET(widget->input.ssl),_( "Check for SSL secure connection." )); |
425 | 449 | gtk_widget_set_halign(GTK_WIDGET(widget->input.ssl),GTK_ALIGN_START); |
426 | - gtk_grid_attach(GTK_GRID(connection),GTK_WIDGET(widget->input.ssl),3,1,1,1); | |
450 | + gtk_grid_attach(GTK_GRID(connection),GTK_WIDGET(widget->input.ssl),2,1,1,1); | |
451 | + } | |
452 | + | |
453 | + // Toggle checkboxes | |
454 | + { | |
455 | + size_t toggle; | |
456 | + | |
457 | + for(toggle = 0; toggle < G_N_ELEMENTS(toggleList); toggle++) | |
458 | + { | |
459 | + const LIB3270_TOGGLE * descriptor = lib3270_toggle_get_from_id(toggleList[toggle].id); | |
460 | + | |
461 | + if(descriptor) | |
462 | + { | |
463 | + widget->input.toggles[toggle] = GTK_TOGGLE_BUTTON(gtk_check_button_new_with_label(gettext(descriptor->label))); | |
464 | + | |
465 | + if(descriptor->summary) | |
466 | + gtk_widget_set_tooltip_text(GTK_WIDGET(widget->input.toggles[toggle]),gettext(descriptor->summary)); | |
467 | + | |
468 | + gtk_widget_set_halign(GTK_WIDGET(widget->input.toggles[toggle]),GTK_ALIGN_START); | |
469 | + gtk_grid_attach(GTK_GRID(connection),GTK_WIDGET(widget->input.toggles[toggle]),toggleList[toggle].left,toggleList[toggle].top,1,1); | |
470 | + | |
471 | + } | |
472 | + | |
473 | + } | |
474 | + | |
427 | 475 | } |
428 | 476 | |
429 | 477 | // Create combo boxes |
... | ... | @@ -613,6 +661,15 @@ static void apply(GtkWidget *w, GtkWidget *terminal) |
613 | 661 | |
614 | 662 | } |
615 | 663 | |
664 | + // Apply toggles | |
665 | + size_t toggle; | |
666 | + | |
667 | + for(toggle = 0; toggle < G_N_ELEMENTS(toggleList); toggle++) | |
668 | + { | |
669 | + if(widget->input.toggles[toggle]) | |
670 | + v3270_set_toggle(terminal, toggleList[toggle].id, gtk_toggle_button_get_active(widget->input.toggles[toggle])); | |
671 | + } | |
672 | + | |
616 | 673 | } |
617 | 674 | |
618 | 675 | static void load(GtkWidget *w, GtkWidget *terminal) |
... | ... | @@ -717,6 +774,7 @@ static void load(GtkWidget *w, GtkWidget *terminal) |
717 | 774 | |
718 | 775 | } while(gtk_tree_model_iter_next(model,&iter)); |
719 | 776 | |
777 | + | |
720 | 778 | } |
721 | 779 | |
722 | 780 | } |
... | ... | @@ -727,5 +785,14 @@ static void load(GtkWidget *w, GtkWidget *terminal) |
727 | 785 | |
728 | 786 | } |
729 | 787 | |
788 | + // Load toggles | |
789 | + size_t toggle; | |
790 | + | |
791 | + for(toggle = 0; toggle < G_N_ELEMENTS(toggleList); toggle++) | |
792 | + { | |
793 | + if(widget->input.toggles[toggle]) | |
794 | + gtk_toggle_button_set_active(widget->input.toggles[toggle],v3270_get_toggle(terminal,toggleList[toggle].id)); | |
795 | + } | |
796 | + | |
730 | 797 | } |
731 | 798 | ... | ... |