⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 itemfactory.c

📁 gtk是linux一款强大的夸平台的图形化开发工具
💻 C
字号:
/* example-start menu itemfactory.c */#include <gtk/gtk.h>#include <strings.h>/* Obligatory basic callback */static void print_hello(GtkWidget *w, gpointer data) {  g_message("Hello, World!\n");}/* This is the GtkItemFactoryEntry structure used to generate new menus.   Item 1: The menu path. The letter after the underscore indicates an           accelerator key once the menu is open.   Item 2: The accelerator key for the entry   Item 3: The callback function.   Item 4: The callback action.  This changes the parameters with           which the function is called.  The default is 0.   Item 5: The item type, used to define what kind of an item it is.           Here are the possible values:           NULL               -> "<Item>"           ""                 -> "<Item>"           "<Title>"          -> create a title item           "<Item>"           -> create a simple item           "<CheckItem>"      -> create a check item           "<ToggleItem>"     -> create a toggle item           "<RadioItem>"      -> create a radio item           <path>             -> path of a radio item to link against           "<Separator>"      -> create a separator           "<Branch>"         -> create an item to hold sub items           "<LastBranch>"     -> create a right justified branch */static GtkItemFactoryEntry menu_items[] = {  {"/_File",         NULL,         NULL, 0, "<Branch>"},  {"/File/_New",     "<control>N", print_hello, 0, NULL},  {"/File/_Open",    "<control>O", print_hello, 0, NULL},  {"/File/_Save",    "<control>S", print_hello, 0, NULL},  {"/File/Save _As", NULL,         NULL, 0, NULL},  {"/File/sep1",     NULL,         NULL, 0, "<Separator>"},  {"/File/Quit",     "<control>Q", gtk_main_quit, 0, NULL},  {"/_Options",      NULL,         NULL, 0, "<Branch>"},  {"/Options/Test",  NULL,         NULL, 0, NULL},  {"/_Help",         NULL,         NULL, 0, "<LastBranch>"},  {"/_Help/About",   NULL,         NULL, 0, NULL},};void get_main_menu(GtkWidget *window, GtkWidget ** menubar) {  int nmenu_items = sizeof(menu_items) / sizeof(menu_items[0]);  GtkItemFactory *item_factory;  GtkAccelGroup *accel_group;  accel_group = gtk_accel_group_new();  /* This function initializes the item factory.     Param 1: The type of menu - can be GTK_TYPE_MENU_BAR, GTK_TYPE_MENU,              or GTK_TYPE_OPTION_MENU.     Param 2: The path of the menu.     Param 3: A pointer to a gtk_accel_group.  The item factory sets up              the accelerator table while generating menus.  */  item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", 				       accel_group);  /* This function generates the menu items. Pass the item factory,     the number of items in the array, the array itself, and any     callback data for the the menu items. */  gtk_item_factory_create_items(item_factory, nmenu_items, menu_items, NULL);  /* Attach the new accelerator group to the window. */  gtk_accel_group_attach (accel_group, GTK_OBJECT (window));  if (menubar)    /* Finally, return the actual menu bar created by the item factory. */     *menubar = gtk_item_factory_get_widget(item_factory, "<main>");}int main(int argc, char *argv[]) {  GtkWidget *window;  GtkWidget *main_vbox;  GtkWidget *menubar;    gtk_init(&argc, &argv);    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);  gtk_signal_connect(GTK_OBJECT(window), "destroy", 		     GTK_SIGNAL_FUNC(gtk_main_quit), 		     "WM destroy");  gtk_window_set_title(GTK_WINDOW(window), "Item Factory");  gtk_widget_set_usize(GTK_WIDGET(window), 300, 200);    main_vbox = gtk_vbox_new(FALSE, 1);  gtk_container_border_width(GTK_CONTAINER(main_vbox), 1);  gtk_container_add(GTK_CONTAINER(window), main_vbox);  gtk_widget_show(main_vbox);    get_main_menu(window, &menubar);  gtk_box_pack_start(GTK_BOX(main_vbox), menubar, FALSE, TRUE, 0);  gtk_widget_show(menubar);    gtk_widget_show(window);  gtk_main();    return(0);}/* example-end */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -