[network-manager-openvpn] properties/ui: add ping, ping-exit and ping-restart to the UI (bgo #651657)
- From: Jiří Klimeš <jklimes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [network-manager-openvpn] properties/ui: add ping, ping-exit and ping-restart to the UI (bgo #651657)
- Date: Wed, 26 Aug 2015 08:46:50 +0000 (UTC)
commit 6d589f24e781656714f199a6a75e84cbb342b7fa
Author: Jiří Klimeš <jklimes redhat com>
Date: Wed Aug 19 15:53:14 2015 +0200
properties/ui: add ping, ping-exit and ping-restart to the UI (bgo #651657)
https://bugzilla.gnome.org/show_bug.cgi?id=651657
properties/auth-helpers.c | 116 ++++++++++++++++++++++++++++++++
properties/nm-openvpn-dialog.ui | 139 +++++++++++++++++++++++++++++++++++++++
2 files changed, 255 insertions(+), 0 deletions(-)
---
diff --git a/properties/auth-helpers.c b/properties/auth-helpers.c
index 8352b42..0e019b4 100644
--- a/properties/auth-helpers.c
+++ b/properties/auth-helpers.c
@@ -913,6 +913,9 @@ static const char *advanced_keys[] = {
NM_OPENVPN_KEY_TLS_REMOTE,
NM_OPENVPN_KEY_REMOTE_RANDOM,
NM_OPENVPN_KEY_REMOTE_CERT_TLS,
+ NM_OPENVPN_KEY_PING,
+ NM_OPENVPN_KEY_PING_EXIT,
+ NM_OPENVPN_KEY_PING_RESTART,
NULL
};
@@ -1216,6 +1219,9 @@ tls_auth_toggled_cb (GtkWidget *widget, gpointer user_data)
#define DEVICE_TYPE_IDX_TUN 0
#define DEVICE_TYPE_IDX_TAP 1
+#define PING_EXIT 0
+#define PING_RESTART 1
+
static void
proxy_type_changed (GtkComboBox *combo, gpointer user_data)
{
@@ -1355,6 +1361,19 @@ dev_checkbox_toggled_cb (GtkWidget *check, gpointer user_data)
device_name_changed_cb (GTK_ENTRY (entry), ok_button);
}
+static void
+ping_exit_restart_checkbox_toggled_cb (GtkWidget *check, gpointer user_data)
+{
+ GtkBuilder *builder = (GtkBuilder *) user_data;
+ GtkWidget *combo, *spin;
+
+ combo = GTK_WIDGET (gtk_builder_get_object (builder, "ping_exit_restart_combo"));
+ spin = GTK_WIDGET (gtk_builder_get_object (builder, "ping_exit_restart_spinbutton"));
+
+ checkbox_toggled_update_widget_cb (check, combo);
+ checkbox_toggled_update_widget_cb (check, spin);
+}
+
#define TA_DIR_COL_NAME 0
#define TA_DIR_COL_NUM 1
@@ -1742,6 +1761,74 @@ advanced_dialog_new (GHashTable *hash, const char *contype)
gtk_notebook_remove_page (GTK_NOTEBOOK (widget), 2);
}
+ /* ping */
+ widget = GTK_WIDGET (gtk_builder_get_object (builder, "ping_checkbutton"));
+ spin = GTK_WIDGET (gtk_builder_get_object (builder, "ping_spinbutton"));
+ g_signal_connect (G_OBJECT (widget), "toggled", G_CALLBACK (checkbox_toggled_update_widget_cb), spin);
+ value = g_hash_table_lookup (hash, NM_OPENVPN_KEY_PING);
+ if (value && *value) {
+ long int tmp;
+
+ errno = 0;
+ tmp = strtol (value, NULL, 10);
+ if (errno == 0 && tmp > 0 && tmp < 65536) {
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
+
+ widget = GTK_WIDGET (gtk_builder_get_object (builder, "ping_spinbutton"));
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), (gdouble) tmp);
+ gtk_widget_set_sensitive (widget, TRUE);
+ }
+ } else {
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE);
+
+ widget = GTK_WIDGET (gtk_builder_get_object (builder, "ping_spinbutton"));
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), 30.0);
+ gtk_widget_set_sensitive (widget, FALSE);
+ }
+
+ /* ping-exit / ping-restart */
+ widget = GTK_WIDGET (gtk_builder_get_object (builder, "ping_exit_restart_checkbutton"));
+ ping_exit_restart_checkbox_toggled_cb (widget, builder);
+ g_signal_connect (G_OBJECT (widget), "toggled", G_CALLBACK (ping_exit_restart_checkbox_toggled_cb),
builder);
+
+ combo = GTK_WIDGET (gtk_builder_get_object (builder, "ping_exit_restart_combo"));
+ value = g_hash_table_lookup (hash, NM_OPENVPN_KEY_PING_EXIT);
+ if (value && *value)
+ active = PING_EXIT;
+ else {
+ value = g_hash_table_lookup (hash, NM_OPENVPN_KEY_PING_RESTART);
+ active = PING_RESTART;
+ }
+
+ store = gtk_list_store_new (1, G_TYPE_STRING);
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter, 0, _("ping-exit"), -1);
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter, 0, _("ping-restart"), -1);
+ gtk_combo_box_set_model (GTK_COMBO_BOX (combo), GTK_TREE_MODEL (store));
+ g_object_unref (store);
+ gtk_combo_box_set_active (GTK_COMBO_BOX (combo), active);
+
+ if (value && *value) {
+ long int tmp;
+
+ errno = 0;
+ tmp = strtol (value, NULL, 10);
+ if (errno == 0 && tmp > 0 && tmp < 65536) {
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
+
+ widget = GTK_WIDGET (gtk_builder_get_object (builder,
"ping_exit_restart_spinbutton"));
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), (gdouble) tmp);
+ gtk_widget_set_sensitive (widget, TRUE);
+ }
+ } else {
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE);
+
+ widget = GTK_WIDGET (gtk_builder_get_object (builder, "ping_exit_restart_spinbutton"));
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), 30.0);
+ gtk_widget_set_sensitive (widget, FALSE);
+ }
+
out:
g_free (ui_file);
return dialog;
@@ -1983,6 +2070,35 @@ advanced_dialog_new_hash_from_dialog (GtkWidget *dialog, GError **error)
}
}
+ widget = GTK_WIDGET (gtk_builder_get_object (builder, "ping_checkbutton"));
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) {
+ int ping_val;
+
+ widget = GTK_WIDGET (gtk_builder_get_object (builder, "ping_spinbutton"));
+ ping_val = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (widget));
+
+ g_hash_table_insert (hash,
+ g_strdup (NM_OPENVPN_KEY_PING),
+ g_strdup_printf ("%d", ping_val));
+ }
+
+ widget = GTK_WIDGET (gtk_builder_get_object (builder, "ping_exit_restart_checkbutton"));
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) {
+ int ping_exit_type, ping_val;
+
+ widget = GTK_WIDGET (gtk_builder_get_object (builder, "ping_exit_restart_combo"));
+ ping_exit_type = gtk_combo_box_get_active (GTK_COMBO_BOX (widget));
+
+ widget = GTK_WIDGET (gtk_builder_get_object (builder, "ping_exit_restart_spinbutton"));
+ ping_val = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (widget));
+
+ g_hash_table_insert (hash,
+ ping_exit_type == PING_EXIT ?
+ g_strdup (NM_OPENVPN_KEY_PING_EXIT) :
+ g_strdup (NM_OPENVPN_KEY_PING_RESTART),
+ g_strdup_printf ("%d", ping_val));
+ }
+
return hash;
}
diff --git a/properties/nm-openvpn-dialog.ui b/properties/nm-openvpn-dialog.ui
index 029602b..a83c1f0 100644
--- a/properties/nm-openvpn-dialog.ui
+++ b/properties/nm-openvpn-dialog.ui
@@ -40,6 +40,20 @@
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
+ <object class="GtkAdjustment" id="adjustment7">
+ <property name="lower">1</property>
+ <property name="upper">65535</property>
+ <property name="value">30</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment8">
+ <property name="lower">1</property>
+ <property name="upper">65535</property>
+ <property name="value">30</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
<object class="GtkListStore" id="liststore1"/>
<object class="GtkListStore" id="liststore2"/>
<object class="GtkListStore" id="model1">
@@ -1032,6 +1046,17 @@ config: static <file> [direction]</property>
</row>
</data>
</object>
+ <object class="GtkListStore" id="model8">
+ <columns>
+ <!-- column-name gchararray -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes"> </col>
+ </row>
+ </data>
+ </object>
<object class="GtkDialog" id="openvpn-advanced-dialog">
<property name="can_focus">False</property>
<property name="border_width">5</property>
@@ -1467,6 +1492,120 @@ config: float</property>
<property name="position">9</property>
</packing>
</child>
+ <child>
+ <object class="GtkBox" id="hbox8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkCheckButton" id="ping_checkbutton">
+ <property name="label" translatable="yes">Specify pin_g interval:</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Ping remote over the TCP/UDP
control channel if no packets have been sent for at least n seconds.
+config: ping <n></property>
+ <property name="use_underline">True</property>
+ <property name="xalign">0.5</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="ping_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">Ping remote over the TCP/UDP
control channel if no packets have been sent for at least n seconds.
+config: ping <n></property>
+ <property name="adjustment">adjustment7</property>
+ <property name="climb_rate">1</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">10</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkCheckButton" id="ping_exit_restart_checkbutton">
+ <property name="label" translatable="yes">Specify _exit or restart ping:</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Exit or restart after n seconds
pass without reception of a ping or other packet from remote.
+config: ping-exit | ping-restart <n></property>
+ <property name="use_underline">True</property>
+ <property name="xalign">0.5</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="ping_exit_restart_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">Exit or restart after n seconds
pass without reception of a ping or other packet from remote.
+config: ping-exit | ping-restart <n></property>
+ <property name="model">model8</property>
+ <child>
+ <object class="GtkCellRendererText" id="renderer11"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="ping_exit_restart_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">Exit or restart after n seconds
pass without reception of a ping or other packet from remote.
+config: ping-exit | ping-restart <n></property>
+ <property name="adjustment">adjustment8</property>
+ <property name="climb_rate">1</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">11</property>
+ </packing>
+ </child>
</object>
</child>
<child type="tab">
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]