Commit 8181c4e31c6b313b3755944aa1cecf3408e36fa2
1 parent
d60908ae
Exists in
master
and in
1 other branch
Adding "auto disconnect" option in the host settings dialog.
Showing
1 changed file
with
43 additions
and
5 deletions
Show diff stats
src/dialogs/hostselect.c
... | ... | @@ -53,17 +53,17 @@ |
53 | 53 | { |
54 | 54 | { |
55 | 55 | .left = 2, |
56 | - .top = 2, | |
56 | + .top = 3, | |
57 | 57 | .id = LIB3270_TOGGLE_CONNECT_ON_STARTUP, |
58 | 58 | }, |
59 | 59 | { |
60 | 60 | .left = 3, |
61 | - .top = 2, | |
61 | + .top = 3, | |
62 | 62 | .id = LIB3270_TOGGLE_RECONNECT, |
63 | 63 | }, |
64 | 64 | { |
65 | 65 | .left = 4, |
66 | - .top = 2, | |
66 | + .top = 3, | |
67 | 67 | .id = LIB3270_TOGGLE_KEEP_ALIVE, |
68 | 68 | } |
69 | 69 | |
... | ... | @@ -249,7 +249,6 @@ |
249 | 249 | .width_chars = 50, |
250 | 250 | }, |
251 | 251 | |
252 | - | |
253 | 252 | }; |
254 | 253 | |
255 | 254 | struct _V3270HostSelectWidget |
... | ... | @@ -263,6 +262,7 @@ |
263 | 262 | GtkComboBox * combos[G_N_ELEMENTS(combos)]; ///< @brief Combo-boxes. |
264 | 263 | GtkComboBox * charset; ///< @brief Charset combo box. |
265 | 264 | GtkToggleButton * toggles[G_N_ELEMENTS(toggleList)]; ///< @brief Toggle checks. |
265 | + GtkSpinButton * auto_disconnect; ///< @brief Auto disconnect. | |
266 | 266 | |
267 | 267 | } input; |
268 | 268 | |
... | ... | @@ -381,6 +381,21 @@ static void select_remap_file(GtkEditable *editable, G_GNUC_UNUSED GtkEntryIconP |
381 | 381 | |
382 | 382 | } |
383 | 383 | |
384 | +static gboolean auto_disconnect_format(GtkSpinButton *spin, G_GNUC_UNUSED gpointer data) { | |
385 | + | |
386 | + GtkAdjustment * adjustment = gtk_spin_button_get_adjustment (spin); | |
387 | + guint value = (guint) gtk_adjustment_get_value(adjustment); | |
388 | + | |
389 | + if(value < 1) { | |
390 | + gtk_entry_set_text(GTK_ENTRY(spin), ""); | |
391 | + } else { | |
392 | + g_autofree gchar * text = g_strdup_printf ("%d", value); | |
393 | + gtk_entry_set_text(GTK_ENTRY(spin), text); | |
394 | + } | |
395 | + | |
396 | + return TRUE; | |
397 | +} | |
398 | + | |
384 | 399 | static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget) |
385 | 400 | { |
386 | 401 | // Cell renderer |
... | ... | @@ -467,12 +482,29 @@ static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget) |
467 | 482 | |
468 | 483 | } |
469 | 484 | |
485 | + // Auto disconnect | |
486 | + { | |
487 | + GtkWidget *label = gtk_label_new_with_mnemonic(_("Auto _disconnect")); | |
488 | + | |
489 | + gtk_widget_set_halign(label,GTK_ALIGN_END); | |
490 | + | |
491 | + widget->input.auto_disconnect = GTK_SPIN_BUTTON(gtk_spin_button_new_with_range(0,60,1)); | |
492 | + gtk_widget_set_tooltip_markup(GTK_WIDGET(widget->input.auto_disconnect),_("IDLE minutes for automatic disconnection")); | |
493 | + gtk_label_set_mnemonic_widget(GTK_LABEL(label),GTK_WIDGET(widget->input.auto_disconnect)); | |
494 | + | |
495 | + gtk_spin_button_set_increments(widget->input.auto_disconnect,1,1); | |
496 | + | |
497 | + gtk_grid_attach(GTK_GRID(connection),label,0,2,1,1); | |
498 | + gtk_grid_attach(GTK_GRID(connection),GTK_WIDGET(widget->input.auto_disconnect),1,2,1,1); | |
499 | + g_signal_connect(G_OBJECT(widget->input.auto_disconnect),"output",G_CALLBACK(auto_disconnect_format),widget); | |
500 | + } | |
501 | + | |
470 | 502 | // SSL checkbox |
471 | 503 | { |
472 | 504 | widget->input.ssl = GTK_TOGGLE_BUTTON(gtk_check_button_new_with_mnemonic(_( "_Secure connection." ))); |
473 | 505 | gtk_widget_set_tooltip_text(GTK_WIDGET(widget->input.ssl),_( "Check for SSL secure connection." )); |
474 | 506 | gtk_widget_set_halign(GTK_WIDGET(widget->input.ssl),GTK_ALIGN_START); |
475 | - gtk_grid_attach(GTK_GRID(connection),GTK_WIDGET(widget->input.ssl),1,2,1,1); | |
507 | + gtk_grid_attach(GTK_GRID(connection),GTK_WIDGET(widget->input.ssl),1,3,1,1); | |
476 | 508 | } |
477 | 509 | |
478 | 510 | // Toggle checkboxes |
... | ... | @@ -703,6 +735,9 @@ static void apply(GtkWidget *w, GtkWidget *terminal) |
703 | 735 | // Apply oversize |
704 | 736 | lib3270_set_oversize(hSession,gtk_entry_get_text(widget->input.entry[ENTRY_OVERSIZE])); |
705 | 737 | |
738 | + // Apply auto-disconnect | |
739 | + v3270_set_auto_disconnect(terminal,gtk_spin_button_get_value_as_int(widget->input.auto_disconnect)); | |
740 | + | |
706 | 741 | } |
707 | 742 | |
708 | 743 | static void load(GtkWidget *w, GtkWidget *terminal) |
... | ... | @@ -835,5 +870,8 @@ static void load(GtkWidget *w, GtkWidget *terminal) |
835 | 870 | const char * oversize = lib3270_get_oversize(hSession); |
836 | 871 | gtk_entry_set_text(widget->input.entry[ENTRY_OVERSIZE],oversize ? oversize : ""); |
837 | 872 | |
873 | + // Load auto disconnect | |
874 | + gtk_spin_button_set_value(widget->input.auto_disconnect, v3270_get_auto_disconnect(terminal)); | |
875 | + | |
838 | 876 | } |
839 | 877 | ... | ... |