Commit 8181c4e31c6b313b3755944aa1cecf3408e36fa2

Authored by Perry Werneck
1 parent d60908ae
Exists in master and in 1 other branch develop

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,17 +53,17 @@
53 { 53 {
54 { 54 {
55 .left = 2, 55 .left = 2,
56 - .top = 2, 56 + .top = 3,
57 .id = LIB3270_TOGGLE_CONNECT_ON_STARTUP, 57 .id = LIB3270_TOGGLE_CONNECT_ON_STARTUP,
58 }, 58 },
59 { 59 {
60 .left = 3, 60 .left = 3,
61 - .top = 2, 61 + .top = 3,
62 .id = LIB3270_TOGGLE_RECONNECT, 62 .id = LIB3270_TOGGLE_RECONNECT,
63 }, 63 },
64 { 64 {
65 .left = 4, 65 .left = 4,
66 - .top = 2, 66 + .top = 3,
67 .id = LIB3270_TOGGLE_KEEP_ALIVE, 67 .id = LIB3270_TOGGLE_KEEP_ALIVE,
68 } 68 }
69 69
@@ -249,7 +249,6 @@ @@ -249,7 +249,6 @@
249 .width_chars = 50, 249 .width_chars = 50,
250 }, 250 },
251 251
252 -  
253 }; 252 };
254 253
255 struct _V3270HostSelectWidget 254 struct _V3270HostSelectWidget
@@ -263,6 +262,7 @@ @@ -263,6 +262,7 @@
263 GtkComboBox * combos[G_N_ELEMENTS(combos)]; ///< @brief Combo-boxes. 262 GtkComboBox * combos[G_N_ELEMENTS(combos)]; ///< @brief Combo-boxes.
264 GtkComboBox * charset; ///< @brief Charset combo box. 263 GtkComboBox * charset; ///< @brief Charset combo box.
265 GtkToggleButton * toggles[G_N_ELEMENTS(toggleList)]; ///< @brief Toggle checks. 264 GtkToggleButton * toggles[G_N_ELEMENTS(toggleList)]; ///< @brief Toggle checks.
  265 + GtkSpinButton * auto_disconnect; ///< @brief Auto disconnect.
266 266
267 } input; 267 } input;
268 268
@@ -381,6 +381,21 @@ static void select_remap_file(GtkEditable *editable, G_GNUC_UNUSED GtkEntryIconP @@ -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 static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget) 399 static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget)
385 { 400 {
386 // Cell renderer 401 // Cell renderer
@@ -467,12 +482,29 @@ static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget) @@ -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 // SSL checkbox 502 // SSL checkbox
471 { 503 {
472 widget->input.ssl = GTK_TOGGLE_BUTTON(gtk_check_button_new_with_mnemonic(_( "_Secure connection." ))); 504 widget->input.ssl = GTK_TOGGLE_BUTTON(gtk_check_button_new_with_mnemonic(_( "_Secure connection." )));
473 gtk_widget_set_tooltip_text(GTK_WIDGET(widget->input.ssl),_( "Check for SSL secure connection." )); 505 gtk_widget_set_tooltip_text(GTK_WIDGET(widget->input.ssl),_( "Check for SSL secure connection." ));
474 gtk_widget_set_halign(GTK_WIDGET(widget->input.ssl),GTK_ALIGN_START); 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 // Toggle checkboxes 510 // Toggle checkboxes
@@ -703,6 +735,9 @@ static void apply(GtkWidget *w, GtkWidget *terminal) @@ -703,6 +735,9 @@ static void apply(GtkWidget *w, GtkWidget *terminal)
703 // Apply oversize 735 // Apply oversize
704 lib3270_set_oversize(hSession,gtk_entry_get_text(widget->input.entry[ENTRY_OVERSIZE])); 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 static void load(GtkWidget *w, GtkWidget *terminal) 743 static void load(GtkWidget *w, GtkWidget *terminal)
@@ -835,5 +870,8 @@ static void load(GtkWidget *w, GtkWidget *terminal) @@ -835,5 +870,8 @@ static void load(GtkWidget *w, GtkWidget *terminal)
835 const char * oversize = lib3270_get_oversize(hSession); 870 const char * oversize = lib3270_get_oversize(hSession);
836 gtk_entry_set_text(widget->input.entry[ENTRY_OVERSIZE],oversize ? oversize : ""); 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