Re: Gtk::Menu with libglademm



Well, I think I found the problem.
On line 30 of main.cpp you've got:
    mXMLGlade = createGlade ("Application");
On line 30 of searchFile.cpp, you've got:
  return Gtk::Builder::create_from_file (searchGladeFile (GLADE_FILE),
object_id);

And if you read here:
http://library.gnome.org/devel/gtkmm/stable/classGtk_1_1Builder.html#ae851b019aeb1b8c0891be99ece184146
You will find out, that when you pass object_id to create_from_file,
then only that object_id will be created.
But your menu is not a child of the object that you pass
(Application). It's a toplevel.
I think, you should omit object_id, to get the whole file contents parsed.
Try:
  return Gtk::Builder::create_from_file (searchGladeFile (GLADE_FILE));

Here are some useful docs on Gtk::Builder:
http://library.gnome.org/devel/gtkmm-tutorial/unstable/sec-builder-loading-glade-file.html.en
http://library.gnome.org/devel/gtkmm/stable/classGtk_1_1Builder.htm

I hope it solves the problem.

Good Luck.

On 7 March 2010 11:06, Andreas Volz <lists brachttal net> wrote:
> Am Sun, 7 Mar 2010 01:44:51 +0200 schrieb Michael:
>
>> Hello,
>> > I rewrote my code to use Gtk::Builder::create_from_file() logic,
>> > but as result I get:
>> >
>> > BuilderError: Invalid root element: 'glade-interface'
>> This is probably, because your files is actually in glade format,
>> rather than Builder.
>
> I used another system with Glade 3.6.3 installed...
>
>> > My glade file starts like this:
>> >
>> > <?xml version="1.0" encoding="UTF-8" standalone="no"?>
>> > <!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
>> And this doctype shows it quite clearly.
>>
>> > Any ideas about that problem?
>>
>> Actually, you should try to load your file back in glade and save it
>> as GtkBuilder. Just select
>> Save As... and in the dialog box, in the bottom left corner you will
>> notice 2 radoibuttons.
>> One says GtkBuilder, and the other Libglade. You need GtkBuilder.
>> Overwrite your file,
>
> ...and just converted my Glade to a GtkBuilder file.
>
>> and try running your program again. If it doesn't work, then there's
>> something rather obscure there.
>
> I think it's really obscure. See the gdb backtrace I get:
>
> Starting program: /mnt/raid/home/andreas/src/svn/state/trunk/src/state
> [Thread debugging using libthread_db enabled]
> [New Thread 0xb6dd4720 (LWP 10040)]
>
> (state:10040): gtkmm-CRITICAL **: gtkmm: object `umlEditMenu' not found in GtkBuilder file.
>
> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 0xb6dd4720 (LWP 10040)]
> 0xb7ded505 in Gtk::Builder::get_widget_checked () from /usr/lib/libgtkmm-2.4.so.1
> (gdb) bt
> #0  0xb7ded505 in Gtk::Builder::get_widget_checked () from /usr/lib/libgtkmm-2.4.so.1
> #1  0x08051a2a in Gtk::Builder::get_widget<Gtk::Menu> (this=0x9c84550, name= 0xbf99d12c, widget= 0x9c844e0)
>    at /usr/include/gtkmm-2.4/gtkmm/builder.h:474
> #2  0x0804fed0 in UMLDrawer::getGladeWidgets (this=0x9c844b8) at UMLDrawer.cpp:40
> #3  0x08050766 in UMLDrawer (this=0x9c844b8, cobject=0x9c60c88, refGlade= 0xbf99d1a4) at UMLDrawer.cpp:28
> #4  0x08052d02 in Gtk::Builder::get_widget_derived<UMLDrawer> (this=0x9c84550, name= 0xbf99d1ec,
>    widget= 0x9db1920) at /usr/include/gtkmm-2.4/gtkmm/builder.h:532
> #5  0x08051dbe in Application::getGladeWidgets (this=0x9db1908) at Application.cpp:42
> #6  0x08052496 in Application (this=0x9db1908, cobject=0x9c93038, refGlade= 0xbf99d274) at Application.cpp:24
> #7  0x0804f0ac in Gtk::Builder::get_widget_derived<Application> (this=0x9c84550, name= 0xbf99d2cc,
>    widget= 0xbf99d2d0) at /usr/include/gtkmm-2.4/gtkmm/builder.h:532
> #8  0x0804ed6b in create_gtk_window (argc=1, argv=0xbf99d3b4) at main.cpp:44
> #9  0x0804ee47 in main (argc=Cannot access memory at address 0x0
>
> I uploaded the relevant files here:
>
> http://tux-style.com/tmp/UMLDrawer.cpp
> http://tux-style.com/tmp/UMLDrawer.h
> http://tux-style.com/tmp/main.cpp
> http://tux-style.com/tmp/state.glade
> http://tux-style.com/tmp/searchFile.cpp (yes, I'm sure the correct glade is loaded!)
>
> Please don't blame me for the code! It's a prototype software. :-)
>
> But maybe someone is able to see the root of the problem...
>
>> If it doesn't work, then I'd try (just in case) to change the name of
>> the element (both in the file and
>> in the code of the program, in the string you pass to
>> Whatever->get_widget("ElementName", mUmlEditMenu).)
>
> I also tried this without success.
>
> libgtkmm-2.4-1c2a / 1:2.16.0-1
> libgtk2.0-0 / 2.16.1-0ubuntu2
>
> I'm short before constructing the Gtk::Menu by hand and not using Glade. But maybe it's
> because my Ubuntu installation is a little old. Would anyone try my sources if I upload a
> tarball?
>
> regards
>        Andreas
> _______________________________________________
> gtkmm-list mailing list
> gtkmm-list gnome org
> http://mail.gnome.org/mailman/listinfo/gtkmm-list
>


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