diff options
author | myheroyuki <myheroyuki@outlook.com> | 2022-11-05 15:37:14 +0300 |
---|---|---|
committer | myheroyuki <myheroyuki@outlook.com> | 2022-11-05 15:37:14 +0300 |
commit | f367cd0893162c267d8d85f213913a1aeb589bb0 (patch) | |
tree | 4f76296b107451f9927e50461b2e1ab7d1a17fcf | |
parent | c0ba3b01f3cb224762962729757fc17e042149b5 (diff) | |
parent | aae70ca911b3621bfdc24ea0eebe539dead8e189 (diff) |
Merge branch 'Rem-2760' into 'master'
Rem 2760
See merge request Remmina/Remmina!2440
-rw-r--r-- | data/ui/remmina_main.glade | 14 | ||||
-rw-r--r-- | data/ui/remmina_preferences.glade | 19 | ||||
-rw-r--r-- | src/remmina_main.c | 16 | ||||
-rw-r--r-- | src/remmina_main.h | 1 | ||||
-rw-r--r-- | src/remmina_pref.c | 6 | ||||
-rw-r--r-- | src/remmina_pref.h | 1 | ||||
-rw-r--r-- | src/remmina_pref_dialog.c | 3 | ||||
-rw-r--r-- | src/remmina_pref_dialog.h | 1 |
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; |