Remmina - The GTK+ Remote Desktop Client  v1.4.34
Remmina is a remote desktop client written in GTK+, aiming to be useful for system administrators and travellers, who need to work with lots of remote computers in front of either large monitors or tiny netbooks. Remmina supports multiple network protocols in an integrated and consistent user interface. Currently RDP, VNC, NX, XDMCP and SSH are supported.
remmina_main.h
Go to the documentation of this file.
1 /*
2  * Remmina - The GTK+ Remote Desktop Client
3  * Copyright (C) 2009-2011 Vic Lee
4  * Copyright (C) 2014-2015 Antenore Gatta, Fabio Castelli, Giovanni Panozzo
5  * Copyright (C) 2016-2022 Antenore Gatta, Giovanni Panozzo
6  * Copyright (C) 2022-2023 Antenore Gatta, Giovanni Panozzo, Hiroyuki Tanaka
7  * Copyright (C) 2023-2024 Hiroyuki Tanaka, Sunil Bhat
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor,
22  * Boston, MA 02110-1301, USA.
23  *
24  * In addition, as a special exception, the copyright holders give
25  * permission to link the code of portions of this program with the
26  * OpenSSL library under certain conditions as described in each
27  * individual source file, and distribute linked combinations
28  * including the two.
29  * You must obey the GNU General Public License in all respects
30  * for all of the code used other than OpenSSL. * If you modify
31  * file(s) with this exception, you may extend this exception to your
32  * version of the file(s), but you are not obligated to do so. * If you
33  * do not wish to do so, delete this exception statement from your
34  * version. * If you delete this exception statement from all source
35  * files in the program, then also delete it here.
36  *
37  */
38 
39 #pragma once
40 
41 #include "remmina_file.h"
42 #include "remmina_monitor.h"
43 #include <gtk/gtk.h>
44 
45 #include "remmina_string_array.h"
46 
47 typedef struct _RemminaMainPriv RemminaMainPriv;
48 
49 typedef struct _RemminaMain {
50  GtkBuilder * builder;
51  GtkWindow * window;
52  /* Menu widgets */
53  GtkMenu * menu_popup;
54  GtkMenuButton * menu_header_button;
55  GtkMenu * menu_popup_full;
57  GtkRadioMenuItem * menuitem_view_mode_list;
58  GtkRadioMenuItem * menuitem_view_mode_tree;
59  GtkMenuItem * menuitem_connection_quit;
60  /* Button new */
61  GtkButton * button_new;
62  GtkButton * button_make_default;
63  /* Search bar objects */
64  GtkToggleButton * search_toggle;
65  GtkSwitch * switch_dark_mode;
66  GtkToggleButton * view_toggle_button;
67  GtkToggleButton * ustats_toggle;
68  GtkSearchBar * search_bar;
69  /* Quick connect objects */
71  GtkComboBoxText * combo_quick_connect_protocol;
73  GtkButton * button_quick_connect;
74  /* Other widgets */
75  GtkTreeView * tree_files_list;
76  GtkTreeViewColumn * column_files_list_name;
77  GtkTreeViewColumn * column_files_list_group;
78  GtkTreeViewColumn * column_files_list_server;
79  GtkTreeViewColumn * column_files_list_plugin;
80  GtkTreeViewColumn * column_files_list_date;
81  GtkTreeViewColumn * column_files_list_notes;
82  GtkStatusbar * statusbar_main;
83  GtkWidget * network_icon;
84  /* Non widget objects */
85  GtkAccelGroup * accelgroup_shortcuts;
89 
91  GtkTreeModel * file_model;
92  GtkTreeModel * file_model_filter;
93  GtkTreeModel * file_model_sort;
94 
95  gboolean initialized;
96 
98  gchar * selected_name;
101 };
102 
103 G_BEGIN_DECLS
104 
105 /* Create the remminamain struct and the remmina main Remmina window */
106 GtkWidget *remmina_main_new(void);
107 /* Get the current main GTK window or NULL if not initialized */
108 GtkWindow *remmina_main_get_window(void);
109 
111 
112 void remmina_main_destroy(void);
115 
116 void remmina_main_show_dialog(GtkMessageType msg, GtkButtonsType buttons, const gchar* message);
117 void remmina_main_show_warning_dialog(const gchar *message);
118 void remmina_main_on_action_application_about(GSimpleAction *action, GVariant *param, gpointer data);
119 void remmina_main_on_action_application_bug_report(GSimpleAction *action, GVariant *param, gpointer data);
120 void remmina_main_on_action_application_default(GSimpleAction *action, GVariant *param, gpointer data);
121 void remmina_main_on_action_application_mpchange(GSimpleAction *action, GVariant *param, gpointer data);
122 void remmina_main_on_action_application_plugins(GSimpleAction *action, GVariant *param, gpointer data);
123 void remmina_main_on_action_application_dark_theme(GSimpleAction *action, GVariant *param, gpointer data);
124 void remmina_main_on_action_application_preferences(GSimpleAction *action, GVariant *param, gpointer data);
125 void remmina_main_on_action_application_quit(GSimpleAction *action, GVariant *param, gpointer data);
126 void remmina_main_on_action_connection_connect(GSimpleAction *action, GVariant *param, gpointer data);
127 void remmina_main_on_action_connection_copy(GSimpleAction *action, GVariant *param, gpointer data);
128 void remmina_main_on_action_connection_delete(GSimpleAction *action, GVariant *param, gpointer data);
129 void remmina_main_on_action_connection_delete_multiple(GSimpleAction *action, GVariant *param, gpointer data);
130 void remmina_main_on_action_connection_edit(GSimpleAction *action, GVariant *param, gpointer data);
131 void remmina_main_on_action_connection_external_tools(GSimpleAction *action, GVariant *param, gpointer data);
132 void remmina_main_on_action_connection_new(GSimpleAction *action, GVariant *param, gpointer data);
133 void remmina_main_on_action_help_community(GSimpleAction *action, GVariant *param, gpointer data);
134 void remmina_main_on_action_help_debug(GSimpleAction *action, GVariant *param, gpointer data);
135 void remmina_main_on_action_help_donations(GSimpleAction *action, GVariant *param, gpointer data);
136 void remmina_main_on_action_help_homepage(GSimpleAction *action, GVariant *param, gpointer data);
137 void remmina_main_on_action_help_wiki(GSimpleAction *action, GVariant *param, gpointer data);
138 void remmina_main_on_action_tools_export(GSimpleAction *action, GVariant *param, gpointer data);
139 void remmina_main_on_action_tools_import(GSimpleAction *action, GVariant *param, gpointer data);
140 void remmina_main_on_action_expand(GSimpleAction *action, GVariant *param, gpointer data);
141 void remmina_main_on_action_collapse(GSimpleAction *action, GVariant *param, gpointer data);
142 void remmina_main_on_action_search_toggle(GSimpleAction *action, GVariant *param, gpointer data);
143 void remmina_main_toggle_password_view(GtkWidget *widget, gpointer data);
145 
146 G_END_DECLS
void remmina_main_on_action_application_default(GSimpleAction *action, GVariant *param, gpointer data)
G_BEGIN_DECLS GtkWidget * remmina_main_new(void)
void remmina_main_on_action_help_wiki(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_action_collapse(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_action_connection_delete(GSimpleAction *action, GVariant *param, gpointer data)
Definition: remmina_main.c:981
void remmina_main_reload_preferences()
void remmina_main_on_action_application_bug_report(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_action_help_donations(GSimpleAction *action, GVariant *param, gpointer data)
GtkWindow * remmina_main_get_window(void)
void remmina_main_on_action_connection_copy(GSimpleAction *action, GVariant *param, gpointer data)
Definition: remmina_main.c:914
void remmina_main_on_action_tools_import(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_destroy_event(void)
Called when the remminamain->window widget is destroyed (glade event handler)
Definition: remmina_main.c:251
void remmina_main_on_action_connection_new(GSimpleAction *action, GVariant *param, gpointer data)
Definition: remmina_main.c:854
void remmina_main_on_action_application_quit(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_update_file_datetime(RemminaFile *file)
void remmina_main_on_action_help_debug(GSimpleAction *action, GVariant *param, gpointer data)
struct _RemminaMain RemminaMain
void remmina_main_on_action_connection_connect(GSimpleAction *action, GVariant *param, gpointer data)
Definition: remmina_main.c:771
void remmina_main_on_action_application_preferences(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_action_help_homepage(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_destroy(void)
Definition: remmina_main.c:196
void remmina_main_on_action_application_dark_theme(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_save_before_destroy(void)
Save the Remmina Main Window size and the expanded group before to close Remmina.
Definition: remmina_main.c:183
void remmina_main_on_action_search_toggle(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_action_application_about(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_action_help_community(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_toggle_password_view(GtkWidget *widget, gpointer data)
void remmina_main_on_action_tools_export(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_show_dialog(GtkMessageType msg, GtkButtonsType buttons, const gchar *message)
void remmina_main_on_action_expand(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_action_connection_external_tools(GSimpleAction *action, GVariant *param, gpointer data)
Definition: remmina_main.c:799
void remmina_main_on_action_application_mpchange(GSimpleAction *action, GVariant *param, gpointer data)
Definition: remmina_main.c:817
void remmina_main_show_warning_dialog(const gchar *message)
void remmina_main_on_action_application_plugins(GSimpleAction *action, GVariant *param, gpointer data)
void remmina_main_on_action_connection_edit(GSimpleAction *action, GVariant *param, gpointer data)
Definition: remmina_main.c:950
void remmina_main_on_action_connection_delete_multiple(GSimpleAction *action, GVariant *param, gpointer data)
G_BEGIN_DECLS typedef GPtrArray RemminaStringArray
GtkWidget * network_icon
Definition: remmina_main.h:83
GtkAccelGroup * accelgroup_shortcuts
Definition: remmina_main.h:85
RemminaMonitor * monitor
Definition: remmina_main.h:87
GtkMenu * menu_popup_full
Definition: remmina_main.h:55
GtkTreeViewColumn * column_files_list_date
Definition: remmina_main.h:80
GtkMenu * menu_popup
Definition: remmina_main.h:53
GtkComboBoxText * combo_quick_connect_protocol
Definition: remmina_main.h:71
GtkMenuItem * menuitem_connection_quit
Definition: remmina_main.h:59
RemminaMainPriv * priv
Definition: remmina_main.h:86
GtkButton * button_new
Definition: remmina_main.h:61
GtkTreeViewColumn * column_files_list_group
Definition: remmina_main.h:77
GtkRadioMenuItem * menuitem_view_mode_list
Definition: remmina_main.h:57
GtkButton * button_make_default
Definition: remmina_main.h:62
GtkRadioMenuItem * menuitem_view_mode_tree
Definition: remmina_main.h:58
GtkBox * box_quick_connect
Definition: remmina_main.h:70
GtkTreeViewColumn * column_files_list_server
Definition: remmina_main.h:78
GtkTreeView * tree_files_list
Definition: remmina_main.h:75
GtkWindow * window
Definition: remmina_main.h:51
GtkTreeViewColumn * column_files_list_plugin
Definition: remmina_main.h:79
GtkSwitch * switch_dark_mode
Definition: remmina_main.h:65
GtkMenu * menu_popup_delete_rc
Definition: remmina_main.h:56
GtkToggleButton * ustats_toggle
Definition: remmina_main.h:67
GtkTreeViewColumn * column_files_list_name
Definition: remmina_main.h:76
GtkMenuButton * menu_header_button
Definition: remmina_main.h:54
GtkTreeViewColumn * column_files_list_notes
Definition: remmina_main.h:81
GtkBuilder * builder
Definition: remmina_main.h:50
GtkEntry * entry_quick_connect_server
Definition: remmina_main.h:72
GtkStatusbar * statusbar_main
Definition: remmina_main.h:82
GtkToggleButton * search_toggle
Definition: remmina_main.h:64
GtkToggleButton * view_toggle_button
Definition: remmina_main.h:66
GtkButton * button_quick_connect
Definition: remmina_main.h:73
GtkSearchBar * search_bar
Definition: remmina_main.h:68
gboolean override_view_file_mode_to_list
Definition: remmina_main.h:99
gchar * selected_filename
Definition: remmina_main.h:97
RemminaStringArray * expanded_group
Definition: remmina_main.h:100
gchar * selected_name
Definition: remmina_main.h:98
gboolean initialized
Definition: remmina_main.h:95
GtkTreeModel * file_model_sort
Definition: remmina_main.h:93
GtkTreeModel * file_model_filter
Definition: remmina_main.h:92
GtkTreeModel * file_model
Definition: remmina_main.h:91
typedefG_BEGIN_DECLS struct _RemminaFile RemminaFile
Definition: types.h:44