static void item_added(GnomeRecentlyUsed* recently_used, GnomeRecentDocument* doc, gpointer user_data) { GtkWidget *menu = user_data; add_to_menu(menu, doc); }
void menu_add_edit(WebKitWebView *page, GArray *argv, GString *result) { (void) page; (void) result; add_to_menu(argv, WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE); }
void menu_add_link(WebKitWebView *page, GArray *argv, GString *result) { (void) page; (void) result; add_to_menu(argv, WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK); }
void plugin_menu_add (int id, MenuFunc func, const char * name, const char * icon) { struct Item * item = g_slice_new (struct Item); item->name = name; item->icon = icon; item->func = func; items[id] = g_list_append (items[id], item); if (menus[id]) add_to_menu (menus[id], item); }
/* GtkWidget * get_plugin_menu (int id) */ void * get_plugin_menu (int id) { if (! menus[id]) { menus[id] = gtk_menu_new (); g_signal_connect (menus[id], "destroy", (GCallback) gtk_widget_destroyed, & menus[id]); for (GList * node = items[id]; node; node = node->next) add_to_menu (menus[id], node->data); } return menus[id]; }
int main(int argc, char** argv) { GnomeProgram *program; GtkWidget *window; GtkWidget *menu; GtkWidget *vbox; GtkWidget *entry; GtkWidget *button; GtkWidget *option; GSList *list; GSList *iter; program = gnome_program_init("test-recently-used", "0.1", argc, argv, GNOMEUI_INIT, GNOME_GCONF_INIT, NULL); doc_to_menuitem = g_hash_table_new(NULL, NULL); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); vbox = gtk_vbox_new(FALSE, 6); gtk_container_add(GTK_CONTAINER(window), vbox); entry = gtk_entry_new(); gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0); button = gtk_button_new_with_label("Add"); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(add_clicked), entry); gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0); option = gtk_option_menu_new(); gtk_box_pack_start(GTK_BOX(vbox), option, FALSE, FALSE, 0); menu = gtk_menu_new(); ru = gnome_recently_used_new(); gtk_signal_connect(GTK_OBJECT(ru), "document_added", GTK_SIGNAL_FUNC(item_added), menu); gtk_signal_connect(GTK_OBJECT(ru), "document_removed", GTK_SIGNAL_FUNC(item_removed), menu); gtk_signal_connect(GTK_OBJECT(ru), "document_changed", GTK_SIGNAL_FUNC(item_changed), menu); list = gnome_recently_used_get_all(ru); iter = list; while (iter != NULL) { GnomeRecentDocument *doc = iter->data; add_to_menu(menu, doc); iter = g_slist_next(iter); } g_slist_free(list); gtk_option_menu_set_menu(GTK_OPTION_MENU(option), menu); gtk_widget_show_all(window); gtk_main(); g_object_unref (program); return 0; }