All pastes #730756 Raw Edit

Untitled

public text v1 · immutable
·published 2007-10-09 14:15 UTC
rendered paste body
static 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);

}