rendered paste bodystatic void
activate_recent_cb (GtkRecentChooser *action, VinagreWindow *window)
{
VinagreConnection *conn;
conn = vinagre_connection_new_from_string (gtk_recent_chooser_get_current_uri (action));
vinagre_cmd_open_favorite (window, conn);
vinagre_connection_free (conn);
}
static void update_recent_connections (VinagreWindow *window)
{
VinagreWindowPrivate *p = window->priv;
GtkAction *action;
GtkRecentFilter *filter;
g_return_if_fail (p->recent_action_group != NULL);
if (p->recents_menu_ui_id != 0)
gtk_ui_manager_remove_ui (p->manager, p->recents_menu_ui_id);
p->recents_menu_ui_id = gtk_ui_manager_new_merge_id (p->manager);
action = gtk_recent_action_new ("recent_connections",
_("_Recent connections"),
NULL, NULL);
g_signal_connect (action,
"item-activated",
G_CALLBACK (activate_recent_cb),
window);
filter = gtk_recent_filter_new ();
gtk_recent_filter_add_group (filter, "vinagre");
gtk_recent_chooser_add_filter (GTK_RECENT_CHOOSER (action),
filter);
gtk_recent_action_set_show_numbers (GTK_RECENT_ACTION (action), TRUE);
gtk_action_group_add_action (p->recent_action_group, action);
gtk_ui_manager_add_ui (p->manager,
p->recents_menu_ui_id,
"/MenuBar/MachineMenu/FileRecentsPlaceholder",
"recent_connections",
"recent_connections",
GTK_UI_MANAGER_MENUITEM,
FALSE);
}
static void
recent_manager_changed (GtkRecentManager *manager,
VinagreWindow *window)
{
update_recent_connections (window);
}
static void
create_menu_bar_and_toolbar (VinagreWindow *window,
GtkWidget *main_box)
{
GtkActionGroup *action_group;
GtkUIManager *manager;
GError *error = NULL;
GtkRecentManager *recent_manager;
manager = gtk_ui_manager_new ();
window->priv->manager = manager;
...
/* Recent connections */
action_group = gtk_action_group_new ("VinagreRecentConnectionsActions");
gtk_action_group_set_translation_domain (action_group, NULL);
gtk_ui_manager_insert_action_group (manager, action_group, 0);
g_object_unref (action_group);
window->priv->recent_action_group = action_group;
update_recent_connections (window);
recent_manager = gtk_recent_manager_get_default ();
g_signal_connect (recent_manager,
"changed",
G_CALLBACK (recent_manager_changed),
window);
}