Re: Problems with GtkUIManager



After some more tests, I can answer myself:

This does NOT work:
gtk_ui_manager_add_ui (uim, mid, "/ui/", "mymenubar",
                       "MenubarAction", GTK_UI_MANAGER_MENUBAR,
                       FALSE);

This works:
gtk_ui_manager_add_ui (uim, mid, "ui/", "mymenubar",
                       "MenubarAction", GTK_UI_MANAGER_MENUBAR,
                       FALSE);

Note I removed the first '/' in the path of the second call.

I guess we should say so in the docs so nobody spend 45 minutes trying
to do that.

I attach a tiny patch to fix that. Please tell me if I should fill a bug
for such a small thing or commit it directly.

Lorenzo

Index: gtk/gtkuimanager.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtkuimanager.c,v
retrieving revision 1.53
diff -u -r1.53 gtkuimanager.c
--- gtk/gtkuimanager.c  20 Jul 2004 17:10:24 -0000      1.53
+++ gtk/gtkuimanager.c  23 Jul 2004 10:32:04 -0000
@@ -1542,7 +1542,7 @@
  * gtk_ui_manager_add_ui:
  * @self: a #GtkUIManager
  * @merge_id: the merge id for the merged UI, see
gtk_ui_manager_new_merge_id()
- * @path: a path
+ * @path: a path (it should not start by a slash)
  * @name: the name for the added UI element
  * @action: the name of the action to be proxied, or %NULL to add a
separator
  * @type: the type of UI element to add.


El vie, 23-07-2004 a las 12:09, Lorenzo Gil Sanchez escribió:
Sorry, forgot to attach the file :|

Lorenzo

#include <gtk/gtk.h>

static void on_click (GtkButton *button, gpointer data) {
  GtkUIManager *uim = GTK_UI_MANAGER (data);

  gtk_ui_manager_ensure_update (uim);
  g_print (gtk_ui_manager_get_ui (uim));
}

static void dummy (GtkAction *action) {
  ;
}

GtkActionEntry actions[] = {
  { "MenubarAction", NULL, "Dummy"},
  { "FileAction", NULL, "_File"},
  { "FileOpenAction", GTK_STOCK_OPEN, NULL, NULL, "Open it",
G_CALLBACK(dummy)}
};

int main(int argc, char **argv) {
  GtkWidget *window;
  GtkWidget *button;
  GtkUIManager *uim;
  GtkActionGroup *ag;
  int mid;

  gtk_init (&argc, &argv);

  ag = gtk_action_group_new("MyActionGroup");
  gtk_action_group_add_actions(ag, actions, 2, NULL);

  uim = gtk_ui_manager_new ();
  gtk_ui_manager_insert_action_group (uim, ag, 0);

  mid = gtk_ui_manager_new_merge_id (uim);
  gtk_ui_manager_add_ui (uim, mid, "/ui/", "mymenubar", "MenubarAction",
                       GTK_UI_MANAGER_MENUBAR, FALSE);

  gtk_ui_manager_add_ui (uim, mid, "/ui/mymenubar/", "filemenu",
"FileAction",
                       GTK_UI_MANAGER_MENU, FALSE);

  gtk_ui_manager_add_ui (uim, mid, "/ui/mymenubar/filemenu", "open",
                       "FileOpenAction", GTK_UI_MANAGER_MENUITEM, FALSE);

  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

  button = gtk_button_new_with_label ("Dump UI Info");
  
  g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (on_click),
uim);

  gtk_container_add (GTK_CONTAINER (window), button);

  gtk_widget_show_all (window);

  gtk_main ();

  return 0;
}


El vie, 23-07-2004 a las 12:04, Lorenzo Gil Sanchez escribió:
Hi,

I'm trying to create an UIManager totally from scratch, e.g. with no XML
files. I wonder if this is possible because after several calls to
gtk_ui_manager_add_ui(...) I do a gtk_ui_manager_get_ui(...) and nothing
is there. No errors, no warnings, but nothing is there.

I attach a 50 lines test program to show what I mean.

Any help is very appreciated

Lorenzo Gil Sanchez

______________________________________________________________________
_______________________________________________
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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]