]> Pileus Git - ~andy/gtk/commitdiff
update to new examples
authorGMT 1999 Tony Gale <gale@gtk.org>
Mon, 1 Feb 1999 14:47:05 +0000 (14:47 +0000)
committerTony Gale <gale@src.gnome.org>
Mon, 1 Feb 1999 14:47:05 +0000 (14:47 +0000)
Mon Feb  1 13:35:14 GMT 1999 Tony Gale  <gale@gtk.org>

        * examples/Makefile: update to new examples

        * examples/menu/itemfactory.c: I must have forgotten to
          'cvs add' this file

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
examples/Makefile
examples/menu/itemfactory.c [new file with mode: 0644]

index 51dfc3727802ead9e5e2eaf101f210227e1d90a7..dcb86109549215cad9fe7b19c8c8149c2070fd27 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Mon Feb  1 13:35:14 GMT 1999 Tony Gale  <gale@gtk.org>
+
+       * examples/Makefile: update to new examples
+
+       * examples/menu/itemfactory.c: I must have forgotten to
+         'cvs add' this file
+
 Mon Feb  1 09:16:03 GMT 1999 Tony Gale  <gale@gtk.org>
 
        * docs/gtk_tut.sgml:
index 51dfc3727802ead9e5e2eaf101f210227e1d90a7..dcb86109549215cad9fe7b19c8c8149c2070fd27 100644 (file)
@@ -1,3 +1,10 @@
+Mon Feb  1 13:35:14 GMT 1999 Tony Gale  <gale@gtk.org>
+
+       * examples/Makefile: update to new examples
+
+       * examples/menu/itemfactory.c: I must have forgotten to
+         'cvs add' this file
+
 Mon Feb  1 09:16:03 GMT 1999 Tony Gale  <gale@gtk.org>
 
        * docs/gtk_tut.sgml:
index 51dfc3727802ead9e5e2eaf101f210227e1d90a7..dcb86109549215cad9fe7b19c8c8149c2070fd27 100644 (file)
@@ -1,3 +1,10 @@
+Mon Feb  1 13:35:14 GMT 1999 Tony Gale  <gale@gtk.org>
+
+       * examples/Makefile: update to new examples
+
+       * examples/menu/itemfactory.c: I must have forgotten to
+         'cvs add' this file
+
 Mon Feb  1 09:16:03 GMT 1999 Tony Gale  <gale@gtk.org>
 
        * docs/gtk_tut.sgml:
index 51dfc3727802ead9e5e2eaf101f210227e1d90a7..dcb86109549215cad9fe7b19c8c8149c2070fd27 100644 (file)
@@ -1,3 +1,10 @@
+Mon Feb  1 13:35:14 GMT 1999 Tony Gale  <gale@gtk.org>
+
+       * examples/Makefile: update to new examples
+
+       * examples/menu/itemfactory.c: I must have forgotten to
+         'cvs add' this file
+
 Mon Feb  1 09:16:03 GMT 1999 Tony Gale  <gale@gtk.org>
 
        * docs/gtk_tut.sgml:
index 51dfc3727802ead9e5e2eaf101f210227e1d90a7..dcb86109549215cad9fe7b19c8c8149c2070fd27 100644 (file)
@@ -1,3 +1,10 @@
+Mon Feb  1 13:35:14 GMT 1999 Tony Gale  <gale@gtk.org>
+
+       * examples/Makefile: update to new examples
+
+       * examples/menu/itemfactory.c: I must have forgotten to
+         'cvs add' this file
+
 Mon Feb  1 09:16:03 GMT 1999 Tony Gale  <gale@gtk.org>
 
        * docs/gtk_tut.sgml:
index 51dfc3727802ead9e5e2eaf101f210227e1d90a7..dcb86109549215cad9fe7b19c8c8149c2070fd27 100644 (file)
@@ -1,3 +1,10 @@
+Mon Feb  1 13:35:14 GMT 1999 Tony Gale  <gale@gtk.org>
+
+       * examples/Makefile: update to new examples
+
+       * examples/menu/itemfactory.c: I must have forgotten to
+         'cvs add' this file
+
 Mon Feb  1 09:16:03 GMT 1999 Tony Gale  <gale@gtk.org>
 
        * docs/gtk_tut.sgml:
index 51dfc3727802ead9e5e2eaf101f210227e1d90a7..dcb86109549215cad9fe7b19c8c8149c2070fd27 100644 (file)
@@ -1,3 +1,10 @@
+Mon Feb  1 13:35:14 GMT 1999 Tony Gale  <gale@gtk.org>
+
+       * examples/Makefile: update to new examples
+
+       * examples/menu/itemfactory.c: I must have forgotten to
+         'cvs add' this file
+
 Mon Feb  1 09:16:03 GMT 1999 Tony Gale  <gale@gtk.org>
 
        * docs/gtk_tut.sgml:
index a5396d2aabf1899a53f1a6497840fee5268df371..f669019c925b94a23191878839c117971863acb5 100644 (file)
@@ -1,9 +1,40 @@
 
-SUBDIRS = aspectframe eventbox gtkdial notebook progressbar scrolledwin tictactoe \
-         clist filesel list paned rulers table \
-          entry menu pixmap scribble-simple text \
-         base  helloworld packbox radiobuttons selection tree \
-         buttons helloworld2 packer rangewidgets  statusbar wheelbarrow 
+SUBDIRS =      arrow \
+               aspectframe \
+               base \
+               buttonbox \
+               buttons \
+               calendar \
+               clist \
+               entry \
+               eventbox \
+               filesel \
+               fixed \
+               frame \
+               gtkdial \
+               helloworld \
+               helloworld2 \
+               label \
+               list \
+               menu \
+               notebook \
+               packbox \
+               packer \
+               paned \
+               pixmap \
+               progressbar \
+               radiobuttons \
+               rangewidgets \
+               rulers \
+               scribble-simple \
+               scrolledwin \
+               selection \
+               statusbar \
+               table \
+               text \
+               tictactoe \
+               tree \
+               wheelbarrow
 
 all:
        list='$(SUBDIRS)'; \
diff --git a/examples/menu/itemfactory.c b/examples/menu/itemfactory.c
new file mode 100644 (file)
index 0000000..b47e3df
--- /dev/null
@@ -0,0 +1,108 @@
+/* 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 */