diff options
author | Hiroyuki Tanaka <myheroyuki@outlook.com> | 2023-07-11 16:08:29 +0300 |
---|---|---|
committer | Hiroyuki Tanaka <myheroyuki@outlook.com> | 2023-07-11 16:08:29 +0300 |
commit | e8d2c9dab0bef9ce4da3dc3d5c330c891b468a8c (patch) | |
tree | 0c311d6cff600c9f0313a403356912ae756ee6c4 /src | |
parent | 3fbb4188526d30c47dd2b2fd869d1012c5325f18 (diff) | |
parent | e46df1d9904c158798bf873c51d25590d066d666 (diff) |
Merge branch 'Remote_assistance' into 'master'
Remote assistance
See merge request Remmina/Remmina!2516
Diffstat (limited to 'src')
-rw-r--r-- | src/include/remmina/types.h | 1 | ||||
-rw-r--r-- | src/remmina_file_editor.c | 96 | ||||
-rw-r--r-- | src/remmina_plugin_manager.c | 2 |
3 files changed, 98 insertions, 1 deletions
diff --git a/src/include/remmina/types.h b/src/include/remmina/types.h index f81af78c2..43d7ec237 100644 --- a/src/include/remmina/types.h +++ b/src/include/remmina/types.h @@ -100,6 +100,7 @@ typedef enum { REMMINA_PROTOCOL_SETTING_TYPE_SERVER, REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD, REMMINA_PROTOCOL_SETTING_TYPE_RESOLUTION, + REMMINA_PROTOCOL_SETTING_TYPE_ASSISTANCE, REMMINA_PROTOCOL_SETTING_TYPE_KEYMAP, REMMINA_PROTOCOL_SETTING_TYPE_TEXT, diff --git a/src/remmina_file_editor.c b/src/remmina_file_editor.c index faafb7c80..719b092e2 100644 --- a/src/remmina_file_editor.c +++ b/src/remmina_file_editor.c @@ -111,6 +111,12 @@ struct _RemminaFileEditorPriv { GtkWidget * resolution_custom_combo; GtkWidget * keymap_combo; + GtkWidget * assistance_toggle; + GtkWidget * assistance_file; + GtkWidget * assistance_password; + GtkWidget * assistance_file_label; + GtkWidget * assistance_password_label; + GtkWidget * behavior_autostart_check; GtkWidget * behavior_precommand_entry; GtkWidget * behavior_postcommand_entry; @@ -365,6 +371,27 @@ static void remmina_file_editor_ssh_tunnel_server_custom_radio_on_toggled(GtkTog gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gfe->priv->ssh_tunnel_server_custom_radio)))); } + +static void remmina_file_editor_assistance_enabled_check_on_toggled(GtkToggleButton *togglebutton, + RemminaFileEditor *gfe) +{ + TRACE_CALL(__func__); + RemminaFileEditorPriv *priv = gfe->priv; + gboolean enabled = TRUE; + + if (gfe->priv->assistance_toggle) { + enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gfe->priv->assistance_toggle)); + if (gfe->priv->assistance_file) + gtk_widget_set_sensitive(GTK_WIDGET(gfe->priv->assistance_file), enabled); + if (gfe->priv->assistance_password) + gtk_widget_set_sensitive(GTK_WIDGET(gfe->priv->assistance_password), enabled); + if (gfe->priv->assistance_file_label) + gtk_widget_set_sensitive(GTK_WIDGET(gfe->priv->assistance_file_label), enabled); + if (gfe->priv->assistance_password_label) + gtk_widget_set_sensitive(GTK_WIDGET(gfe->priv->assistance_password_label), enabled); + } +} + static void remmina_file_editor_ssh_tunnel_enabled_check_on_toggled(GtkToggleButton *togglebutton, RemminaFileEditor *gfe, RemminaProtocolSSHSetting ssh_setting) { @@ -617,6 +644,57 @@ static void remmina_file_editor_create_resolution(RemminaFileEditor *gfe, const g_free(res_str); } + +static void remmina_file_editor_create_assistance(RemminaFileEditor *gfe, const RemminaProtocolSetting *setting, + GtkWidget *grid, gint row) +{ + TRACE_CALL(__func__); + GtkWidget *widget; + int assistance_mode; + + assistance_mode = remmina_file_get_int(gfe->priv->remmina_file, "assistance_mode", 0); + + + widget = gtk_toggle_button_new_with_label(_("Assistance Mode")); + gtk_widget_set_halign(widget, GTK_ALIGN_START); + gtk_widget_show(widget); + gtk_grid_attach(GTK_GRID(grid), widget, 0, row, 1, 1); + gtk_toggle_button_set_active(widget, remmina_file_get_int(gfe->priv->remmina_file, "assistance_mode", 0)); + gfe->priv->assistance_toggle = widget; + g_signal_connect(widget, "toggled", G_CALLBACK(remmina_file_editor_assistance_enabled_check_on_toggled), gfe); + + + widget = gtk_label_new("Assistance file"); + gtk_widget_set_halign(widget, GTK_ALIGN_END); + gtk_widget_show(widget); + gtk_grid_attach(GTK_GRID(grid), widget, 0, row+1, 1, 1); + gfe->priv->assistance_file_label = widget; + + widget = gtk_entry_new(); + gtk_widget_set_halign(widget, GTK_ALIGN_START); + gtk_widget_show(widget); + gtk_entry_set_text(GTK_ENTRY(widget), remmina_file_get_string(gfe->priv->remmina_file, "assistance_file")); + gtk_grid_attach(GTK_GRID(grid), widget, 1, row+1, 1, 1); + gfe->priv->assistance_file = widget; + + widget = gtk_label_new("Assistance Password"); + gtk_widget_set_halign(widget, GTK_ALIGN_END); + gtk_widget_show(widget); + gtk_grid_attach(GTK_GRID(grid), widget, 0, row+2, 1, 1); + gfe->priv->assistance_password_label = widget; + + widget = gtk_entry_new(); + gtk_widget_set_halign(widget, GTK_ALIGN_START); + gtk_widget_show(widget); + gtk_entry_set_text(GTK_ENTRY(widget), remmina_file_get_string(gfe->priv->remmina_file, "assistance_pass")); + gtk_grid_attach(GTK_GRID(grid), widget, 1, row+2, 1, 1); + gfe->priv->assistance_password = widget; + + remmina_file_editor_assistance_enabled_check_on_toggled(NULL, gfe); + +} + + static GtkWidget *remmina_file_editor_create_text2(RemminaFileEditor *gfe, GtkWidget *grid, gint row, gint col, const gchar *label, const gchar *value, gint left, gint right, gchar *setting_name) @@ -946,7 +1024,12 @@ static void remmina_file_editor_create_settings(RemminaFileEditor *gfe, GtkWidge case REMMINA_PROTOCOL_SETTING_TYPE_RESOLUTION: remmina_file_editor_create_resolution(gfe, settings, grid, grid_row); - grid_row += 1; + grid_row ++; + break; + + case REMMINA_PROTOCOL_SETTING_TYPE_ASSISTANCE: + remmina_file_editor_create_assistance(gfe, settings, grid, grid_row); + grid_row += 3; break; case REMMINA_PROTOCOL_SETTING_TYPE_KEYMAP: @@ -1679,6 +1762,17 @@ static GError *remmina_file_editor_update(RemminaFileEditor * gfe, remmina_file_set_int(priv->remmina_file, "resolution_height", res_h); } + if (priv->assistance_toggle){ + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->assistance_toggle))) { + remmina_file_set_string(priv->remmina_file, "assistance_file", gtk_entry_get_text(priv->assistance_file)); + remmina_file_set_string(priv->remmina_file, "assistance_pass", gtk_entry_get_text(priv->assistance_password)); + remmina_file_set_int(priv->remmina_file, "assistance_mode", 1); + }else{ + remmina_file_set_int(priv->remmina_file, "assistance_mode", 0); + } + + } + if (priv->keymap_combo) remmina_file_set_string(priv->remmina_file, "keymap", remmina_public_combo_get_active_text(GTK_COMBO_BOX(priv->keymap_combo))); diff --git a/src/remmina_plugin_manager.c b/src/remmina_plugin_manager.c index d578c4aad..27c248644 100644 --- a/src/remmina_plugin_manager.c +++ b/src/remmina_plugin_manager.c @@ -462,6 +462,8 @@ const gchar *remmina_plugin_manager_get_canonical_setting_name(const RemminaProt return "password"; if (setting->type == REMMINA_PROTOCOL_SETTING_TYPE_RESOLUTION) return "resolution"; + if (setting->type == REMMINA_PROTOCOL_SETTING_TYPE_ASSISTANCE) + return "assistance_mode"; return "missing_setting_name_into_plugin_RemminaProtocolSetting"; } return setting->name; |