Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/Remmina/Remmina.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/remmina_ssh_plugin.c26
-rw-r--r--src/remmina_ssh_plugin.h9
2 files changed, 34 insertions, 1 deletions
diff --git a/src/remmina_ssh_plugin.c b/src/remmina_ssh_plugin.c
index 5ef5c0037..05de5ef09 100644
--- a/src/remmina_ssh_plugin.c
+++ b/src/remmina_ssh_plugin.c
@@ -944,7 +944,7 @@ static gpointer ssh_terminal_palette[] =
"4", "Solarized Light",
"5", "XTerm",
"6", "Custom (Configured in Remmina preferences)",
- NULL
+ NULL, NULL
};
/**
@@ -1048,6 +1048,30 @@ remmina_ssh_plugin_register(void)
remmina_plugin_ssh_features[3].opt3 = GUINT_TO_POINTER(remmina_pref.vte_shortcutkey_select_all);
remmina_plugin_service = &remmina_plugin_manager_service;
+
+ RemminaProtocolSettingOpt *settings = malloc(sizeof(remmina_ssh_advanced_settings));
+
+ // preset new settings with (old) static remmina_ssh_advanced_settings data
+ unsigned int rec_size = sizeof(remmina_ssh_advanced_settings) / sizeof(RemminaProtocolSetting);
+ for (int ii=0; ii < rec_size; ii++) {
+ settings[ii].type = remmina_ssh_advanced_settings[ii].type;
+ settings[ii].name = remmina_ssh_advanced_settings[ii].name;
+ settings[ii].label = remmina_ssh_advanced_settings[ii].label;
+ settings[ii].compact = remmina_ssh_advanced_settings[ii].compact;
+ settings[ii].opt1 = remmina_ssh_advanced_settings[ii].opt1;
+ settings[ii].opt2 = remmina_ssh_advanced_settings[ii].opt1;
+ }
+
+ // create dynamic advanced settings to made replacing of ssh_terminal_palette possible
+ rec_size = sizeof(ssh_terminal_palette) / sizeof(gpointer);
+ gpointer *ssh_terminal_palette_new = malloc(rec_size * sizeof(gpointer));
+ // preset with (old) static ssh_terminal_palette data
+ for (int ii=0; ii < rec_size; ii++) {
+ ssh_terminal_palette_new[ii] = ssh_terminal_palette[ii];
+ }
+ settings[0].opt1 = ssh_terminal_palette_new;
+ remmina_plugin_ssh.advanced_settings = (RemminaProtocolSetting*)settings;
+
remmina_plugin_service->register_plugin((RemminaPlugin*)&remmina_plugin_ssh);
ssh_threads_set_callbacks(ssh_threads_get_pthread());
diff --git a/src/remmina_ssh_plugin.h b/src/remmina_ssh_plugin.h
index fe6351e38..bccf2e08e 100644
--- a/src/remmina_ssh_plugin.h
+++ b/src/remmina_ssh_plugin.h
@@ -44,6 +44,15 @@ G_BEGIN_DECLS
void remmina_ssh_plugin_register(void);
+typedef struct _RemminaProtocolSettingOpt {
+ RemminaProtocolSettingType type;
+ const gchar *name;
+ const gchar *label;
+ gboolean compact;
+ gpointer opt1;
+ gpointer opt2;
+} RemminaProtocolSettingOpt;
+
/* For callback in main thread */
#if defined (HAVE_LIBSSH) && defined (HAVE_LIBVTE)
void remmina_plugin_ssh_vte_terminal_set_encoding_and_pty(VteTerminal *terminal, const char *codeset, int master, int slave);