Gary,

Seems to work ok for me.
results of:
g_print("%d.%d.%d",GTK_MAJOR_VERSION,GTK_MINOR_VERSION,GTK_MICRO_VERSION);

2.20.0

what version of GTK are you using?  any error messages?


On Mon, Dec 19, 2011 at 7:46 PM, Gary Kline <kl...@thought.org> wrote:

>        i thought i would  start to put up the standard items on my
>        topmenu bar: "File". ""Edit", "Help"  and so on.  but  while
>        the following gtk program compiles:: zip.  the window is
>        empty and there is no menubar at the top.  i have use
>        'pkg-config' as in my early programs.
>
>        Anybody know what i'm missing?
>
>
>
> #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 (optional)
>           "<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 )
> {
>  GtkItemFactory *item_factory;
>  GtkAccelGroup *accel_group;
>  gint nmenu_items = sizeof (menu_items) / sizeof (menu_items[0]);
>
>  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_window_add_accel_group (GTK_WINDOW (window), accel_group);
>
>  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 */
>
>
> --
>  Gary Kline  kl...@thought.org  http://www.thought.org  Public Service
> Unix
>           Journey Toward the Dawn, E-Book: http://www.thought.org
>          The 8.57a release of Jottings: http://jottings.thought.org
>             Twenty-five years of service to the Unix community.
>
> _______________________________________________
> gtk-app-devel-list mailing list
> gtk-app-devel-list@gnome.org
> http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
>
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to