38 #include <glib/gi18n.h> 39 #include <glib/gprintf.h> 49 #define IS_EMPTY(s) ((!s) || (s[0] == 0)) 75 g_signal_connect(G_OBJECT(item),
"destroy", G_CALLBACK(remmina_applet_menu_item_destroy), NULL);
88 va_start(ap, item_type);
90 item = REMMINA_APPLET_MENU_ITEM(g_object_new(REMMINA_TYPE_APPLET_MENU_ITEM, NULL));
96 item->
filename = g_strdup(va_arg(ap,
const gchar*));
99 gkeyfile = g_key_file_new();
101 if (!g_key_file_load_from_file(gkeyfile, item->
filename, G_KEY_FILE_NONE, NULL)) {
102 g_key_file_free(gkeyfile);
107 item->
name = g_key_file_get_string(gkeyfile,
"remmina",
"name", NULL);
108 item->
group = g_key_file_get_string(gkeyfile,
"remmina",
"group", NULL);
109 item->
protocol = g_key_file_get_string(gkeyfile,
"remmina",
"protocol", NULL);
110 item->
server = g_key_file_get_string(gkeyfile,
"remmina",
"server", NULL);
111 item->
ssh_tunnel_enabled = g_key_file_get_boolean(gkeyfile,
"remmina",
"ssh_tunnel_enabled", NULL);
113 g_key_file_free(gkeyfile);
115 if (item->
name == NULL) {
116 g_printf(
"WARNING: missing name= line in file %s. Skipping.\n", item->
filename);
124 item->
name = g_strdup(va_arg(ap,
const gchar *));
125 item->
group = g_strdup(_(
"Discovered"));
130 item->
name = g_strdup(_(
"New Connection"));
138 const gchar* icon_name;
143 icon_name = g_strconcat(REMMINA_APP_ID,
"-symbolic", NULL);
147 icon = gtk_image_new_from_icon_name(icon_name, GTK_ICON_SIZE_MENU);
150 widget = gtk_label_new(item->
name);
151 box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);
152 gtk_widget_show(widget);
153 gtk_widget_show(icon);
154 gtk_widget_show(box);
155 gtk_widget_set_valign(widget, GTK_ALIGN_START);
156 gtk_widget_set_halign(widget, GTK_ALIGN_START);
157 gtk_container_add(GTK_CONTAINER(box), icon);
158 gtk_container_add(GTK_CONTAINER(box), widget);
159 gtk_container_add(GTK_CONTAINER(item), box);
162 gtk_widget_set_tooltip_text(GTK_WIDGET(item), item->
server);
165 return GTK_WIDGET(item);
170 TRACE_CALL(__func__);
176 itema = REMMINA_APPLET_MENU_ITEM(*((
void**)a));
177 itemb = REMMINA_APPLET_MENU_ITEM(*((
void**)b));
180 if (IS_EMPTY(itema->
group) && !IS_EMPTY(itemb->
group))
182 if (!IS_EMPTY(itema->
group) && IS_EMPTY(itemb->
group))
198 return g_strcmp0(itema->
name, itemb->
name);
const gchar * icon_name_ssh
RemminaPlugin * remmina_plugin_manager_get_plugin(RemminaPluginType type, const gchar *name)