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 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  
... ...