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:
authormyheroyuki <myheroyuki@outlook.com>2022-11-05 15:37:14 +0300
committermyheroyuki <myheroyuki@outlook.com>2022-11-05 15:37:14 +0300
commitf367cd0893162c267d8d85f213913a1aeb589bb0 (patch)
tree4f76296b107451f9927e50461b2e1ab7d1a17fcf
parentc0ba3b01f3cb224762962729757fc17e042149b5 (diff)
parentaae70ca911b3621bfdc24ea0eebe539dead8e189 (diff)
Merge branch 'Rem-2760' into 'master'
Rem 2760 See merge request Remmina/Remmina!2440
-rw-r--r--data/ui/remmina_main.glade14
-rw-r--r--data/ui/remmina_preferences.glade19
-rw-r--r--src/remmina_main.c16
-rw-r--r--src/remmina_main.h1
-rw-r--r--src/remmina_pref.c6
-rw-r--r--src/remmina_pref.h1
-rw-r--r--src/remmina_pref_dialog.c3
-rw-r--r--src/remmina_pref_dialog.h1
8 files changed, 58 insertions, 3 deletions
diff --git a/data/ui/remmina_main.glade b/data/ui/remmina_main.glade
index 537df3fb3..c0f90f89f 100644
--- a/data/ui/remmina_main.glade
+++ b/data/ui/remmina_main.glade
@@ -503,6 +503,20 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
</object>
</child>
<child>
+ <object class="GtkTreeViewColumn" id="column_files_list_notes">
+ <property name="resizable">True</property>
+ <property name="title" translatable="yes">Notes</property>
+ <property name="clickable">True</property>
+ <property name="sort-column-id">8</property>
+ <child>
+ <object class="GtkCellRendererText" id="renderer_files_list_notes"/>
+ <attributes>
+ <attribute name="text">8</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
<object class="GtkTreeViewColumn" id="column_files_list_plugin">
<property name="resizable">True</property>
<property name="title" translatable="yes">Plugin</property>
diff --git a/data/ui/remmina_preferences.glade b/data/ui/remmina_preferences.glade
index d9e7775fe..6be3f20ab 100644
--- a/data/ui/remmina_preferences.glade
+++ b/data/ui/remmina_preferences.glade
@@ -722,7 +722,6 @@
<property name="halign">start</property>
<property name="margin-start">18</property>
<property name="margin-end">18</property>
- <property name="margin-bottom">18</property>
<property name="draw-indicator">True</property>
</object>
<packing>
@@ -731,6 +730,24 @@
</packing>
</child>
<child>
+ <object class="GtkCheckButton" id="checkbutton_appearance_show_notes">
+ <property name="label" translatable="yes">Always show notes</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Add a column displaying any notes associated with a connection.</property>
+ <property name="halign">start</property>
+ <property name="margin-start">18</property>
+ <property name="margin-end">18</property>
+ <property name="margin-bottom">18</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">9</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkLabel" id="label_appearance__grab">
<property name="visible">True</property>
<property name="can-focus">False</property>
diff --git a/src/remmina_main.c b/src/remmina_main.c
index c1b052b34..003576c44 100644
--- a/src/remmina_main.c
+++ b/src/remmina_main.c
@@ -76,6 +76,7 @@ enum {
DATE_COLUMN,
FILENAME_COLUMN,
LABELS_COLUMN,
+ NOTES_COLUMN,
N_COLUMNS
};
@@ -362,6 +363,7 @@ static void remmina_main_load_file_list_callback(RemminaFile *remminafile, gpoin
gtk_list_store_set(store, &iter,
PROTOCOL_COLUMN, remmina_file_get_icon_name(remminafile),
NAME_COLUMN, remmina_file_get_string(remminafile, "name"),
+ NOTES_COLUMN, g_uri_unescape_string(remmina_file_get_string(remminafile, "notes_text"), NULL),
GROUP_COLUMN, remmina_file_get_string(remminafile, "group"),
SERVER_COLUMN, remmina_file_get_string(remminafile, "server"),
PLUGIN_COLUMN, remmina_file_get_string(remminafile, "protocol"),
@@ -496,6 +498,7 @@ static void remmina_main_load_file_tree_callback(RemminaFile *remminafile, gpoin
gtk_tree_store_set(store, &child,
PROTOCOL_COLUMN, remmina_file_get_icon_name(remminafile),
NAME_COLUMN, remmina_file_get_string(remminafile, "name"),
+ NOTES_COLUMN, g_uri_unescape_string(remmina_file_get_string(remminafile, "notes_text"), NULL),
GROUP_COLUMN, remmina_file_get_string(remminafile, "group"),
SERVER_COLUMN, remmina_file_get_string(remminafile, "server"),
PLUGIN_COLUMN, remmina_file_get_string(remminafile, "protocol"),
@@ -644,6 +647,7 @@ static void remmina_main_load_files()
gchar buf[200];
guint context_id;
gint view_file_mode;
+ gboolean always_show_notes;
char *save_selected_filename;
GtkTreeModel *newmodel;
const gchar *neticon;
@@ -669,7 +673,7 @@ static void remmina_main_load_files()
switch (view_file_mode) {
case REMMINA_VIEW_FILE_TREE:
/* Create new GtkTreeStore model */
- newmodel = GTK_TREE_MODEL(gtk_tree_store_new(8, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING));
+ newmodel = GTK_TREE_MODEL(gtk_tree_store_new(9, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING));
/* Hide the Group column in the tree view mode */
gtk_tree_view_column_set_visible(remminamain->column_files_list_group, FALSE);
/* Load groups first */
@@ -681,7 +685,7 @@ static void remmina_main_load_files()
case REMMINA_VIEW_FILE_LIST:
default:
/* Create new GtkListStore model */
- newmodel = GTK_TREE_MODEL(gtk_list_store_new(8, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING));
+ newmodel = GTK_TREE_MODEL(gtk_list_store_new(9, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING));
/* Show the Group column in the list view mode */
gtk_tree_view_column_set_visible(remminamain->column_files_list_group, TRUE);
/* Load files list */
@@ -689,6 +693,12 @@ static void remmina_main_load_files()
break;
}
+ /* Set note column visibility*/
+ always_show_notes = remmina_pref.always_show_notes;
+ if (!always_show_notes){
+ gtk_tree_view_column_set_visible(remminamain->column_files_list_notes, FALSE);
+ }
+
/* Unset old model */
gtk_tree_view_set_model(remminamain->tree_files_list, NULL);
@@ -1601,6 +1611,8 @@ GtkWidget *remmina_main_new(void)
remminamain->column_files_list_server = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT("column_files_list_server"));
remminamain->column_files_list_plugin = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT("column_files_list_plugin"));
remminamain->column_files_list_date = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT("column_files_list_date"));
+ remminamain->column_files_list_notes = GTK_TREE_VIEW_COLUMN(RM_GET_OBJECT("column_files_list_notes"));
+ gtk_tree_view_column_set_fixed_width(remminamain->column_files_list_notes, 100);
remminamain->statusbar_main = GTK_STATUSBAR(RM_GET_OBJECT("statusbar_main"));
/* signals */
g_signal_connect(remminamain->entry_quick_connect_server, "key-release-event", G_CALLBACK(remmina_main_search_key_event), NULL);
diff --git a/src/remmina_main.h b/src/remmina_main.h
index e381cfad3..ebe26eabc 100644
--- a/src/remmina_main.h
+++ b/src/remmina_main.h
@@ -75,6 +75,7 @@ typedef struct _RemminaMain {
GtkTreeViewColumn * column_files_list_server;
GtkTreeViewColumn * column_files_list_plugin;
GtkTreeViewColumn * column_files_list_date;
+ GtkTreeViewColumn * column_files_list_notes;
GtkStatusbar * statusbar_main;
GtkWidget * network_icon;
/* Non widget objects */
diff --git a/src/remmina_pref.c b/src/remmina_pref.c
index 544ed4abe..b0cc6f568 100644
--- a/src/remmina_pref.c
+++ b/src/remmina_pref.c
@@ -366,6 +366,11 @@ void remmina_pref_init(void)
if (extrahardening)
remmina_pref.always_show_tab = FALSE;
+ if (g_key_file_has_key(gkeyfile, "remmina_pref", "always_show_notes", NULL))
+ remmina_pref.always_show_notes = g_key_file_get_boolean(gkeyfile, "remmina_pref", "always_show_notes", NULL);
+ else
+ remmina_pref.always_show_notes = FALSE;
+
if (g_key_file_has_key(gkeyfile, "remmina_pref", "hide_connection_toolbar", NULL))
remmina_pref.hide_connection_toolbar = g_key_file_get_boolean(gkeyfile, "remmina_pref",
"hide_connection_toolbar", NULL);
@@ -841,6 +846,7 @@ gboolean remmina_pref_save(void)
g_key_file_set_string(gkeyfile, "remmina_pref", "last_quickconnect_protocol", remmina_pref.last_quickconnect_protocol);
g_key_file_set_boolean(gkeyfile, "remmina_pref", "fullscreen_on_auto", remmina_pref.fullscreen_on_auto);
g_key_file_set_boolean(gkeyfile, "remmina_pref", "always_show_tab", remmina_pref.always_show_tab);
+ g_key_file_set_boolean(gkeyfile, "remmina_pref", "always_show_notes", remmina_pref.always_show_notes);
g_key_file_set_boolean(gkeyfile, "remmina_pref", "hide_connection_toolbar", remmina_pref.hide_connection_toolbar);
g_key_file_set_boolean(gkeyfile, "remmina_pref", "hide_searchbar", remmina_pref.hide_searchbar);
g_key_file_set_integer(gkeyfile, "remmina_pref", "default_action", remmina_pref.default_action);
diff --git a/src/remmina_pref.h b/src/remmina_pref.h
index 8f42fb0d3..5631b1589 100644
--- a/src/remmina_pref.h
+++ b/src/remmina_pref.h
@@ -149,6 +149,7 @@ typedef struct _RemminaPref {
gboolean list_refresh_workaround;
gboolean fullscreen_on_auto;
gboolean always_show_tab;
+ gboolean always_show_notes;
gboolean hide_connection_toolbar;
gboolean hide_searchbar;
gint default_mode;
diff --git a/src/remmina_pref_dialog.c b/src/remmina_pref_dialog.c
index eadbedeb5..68f8809e1 100644
--- a/src/remmina_pref_dialog.c
+++ b/src/remmina_pref_dialog.c
@@ -240,6 +240,7 @@ void remmina_pref_on_dialog_destroy(GtkWidget *widget, gpointer user_data)
remmina_pref.screenshot_path = gtk_file_chooser_get_filename(remmina_pref_dialog->filechooserbutton_options_screenshots_path);
remmina_pref.fullscreen_on_auto = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog->checkbutton_appearance_fullscreen_on_auto));
remmina_pref.always_show_tab = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog->checkbutton_appearance_show_tabs));
+ remmina_pref.always_show_notes = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog->checkbutton_appearance_show_notes));
remmina_pref.hide_connection_toolbar = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog->checkbutton_appearance_hide_toolbar));
remmina_pref.hide_searchbar = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog->checkbutton_appearance_hide_searchbar));
@@ -490,6 +491,7 @@ static void remmina_pref_dialog_init(void)
gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog->switch_options_deny_screenshot_clipboard), remmina_pref.deny_screenshot_clipboard);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog->checkbutton_appearance_fullscreen_on_auto), remmina_pref.fullscreen_on_auto);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog->checkbutton_appearance_show_tabs), remmina_pref.always_show_tab);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog->checkbutton_appearance_show_notes), remmina_pref.always_show_notes);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog->checkbutton_appearance_hide_toolbar), remmina_pref.hide_connection_toolbar);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog->checkbutton_appearance_hide_searchbar), remmina_pref.hide_searchbar);
@@ -720,6 +722,7 @@ GtkWidget *remmina_pref_dialog_new(gint default_tab, GtkWindow *parent)
remmina_pref_dialog->checkbutton_options_save_settings = GTK_CHECK_BUTTON(GET_OBJECT("checkbutton_options_save_settings"));
remmina_pref_dialog->checkbutton_appearance_fullscreen_on_auto = GTK_CHECK_BUTTON(GET_OBJECT("checkbutton_appearance_fullscreen_on_auto"));
remmina_pref_dialog->checkbutton_appearance_show_tabs = GTK_CHECK_BUTTON(GET_OBJECT("checkbutton_appearance_show_tabs"));
+ remmina_pref_dialog->checkbutton_appearance_show_notes = GTK_CHECK_BUTTON(GET_OBJECT("checkbutton_appearance_show_notes"));
remmina_pref_dialog->checkbutton_appearance_hide_toolbar = GTK_CHECK_BUTTON(GET_OBJECT("checkbutton_appearance_hide_toolbar"));
remmina_pref_dialog->checkbutton_appearance_hide_searchbar = GTK_CHECK_BUTTON(GET_OBJECT("checkbutton_appearance_hide_searchbar"));
remmina_pref_dialog->switch_permit_news = GTK_SWITCH(GET_OBJECT("switch_permit_news"));
diff --git a/src/remmina_pref_dialog.h b/src/remmina_pref_dialog.h
index 60382f4f1..2b5d8a758 100644
--- a/src/remmina_pref_dialog.h
+++ b/src/remmina_pref_dialog.h
@@ -66,6 +66,7 @@ typedef struct _RemminaPrefDialog {
GtkCheckButton * checkbutton_options_save_settings;
GtkCheckButton * checkbutton_appearance_fullscreen_on_auto;
GtkCheckButton * checkbutton_appearance_show_tabs;
+ GtkCheckButton * checkbutton_appearance_show_notes;
GtkCheckButton * checkbutton_appearance_hide_toolbar;
GtkCheckButton * checkbutton_appearance_hide_searchbar;
GtkSwitch * switch_permit_news;