Philippe Bertin wrote: > Hello, Tristan, > > Tristan Van Berkom wrote: > >> Why would someone want to go from >> glade file --> generated code --> GUI >> when you can simply go from >> glade file --> GUI >> with much less code-generators & generated code to maintain ? >> > You're right in some sense. Still, how can one statically prove that the > created .glade file is *statically* correct ? I mean by this, how can > the (no longer existing, no longer statically compiled) program be > proven it would link statically ? I have the impression the user > interface is kind of linked-in dynamically, at runtime, having libglade > dynamically parsing the .glade file ?
libglade is a portion of code, it exists in the form of a library and can be linked to staticly or dynamicly, what libglade does is simple - it creates a widget heirarchy prorgressively whilst parsing a glade file. > There's another recent thread on this newslist from a certain leoo. Well > I think his problematic program compiles but doesn't work because all > callbacks (specified in his .glade file) aren't available in his > program. Using code generation I could exclude such a suspiction, for > instance. libglade uses dlopen/dlsym to access symbols in the program's global namespace (actually indirectly via GModule), when you lookup symbols in a namespace: a.) you need to have those symbols exposed globally in your program text b.) you need to compile those symbols so that they export using the -Wl,--export-dynamic linker flags If you find anything weird about "b", think of it this way - if you were developing a plugin, the entrypoints of that plugin have to be visible to the app that loads it, so they also must be exposed in the same way - its just a really basic requirement to be able to load addresses for signal callbacks in a generic way from a parser. > Maybe it's just the libglade doumentation which is not clear enough on > this issue (or I haven't found it in the last 2 days I've been actively > trying to figure out libglade usage examples ?). Would there be any good > documentation one could consult on this issue(s) ? This is the second google hit for 'libglade', you should try the "GladeXML" section (which is the one that concerns you) http://developer.gnome.org/doc/API/libglade/libglade.html You should see the test-libglade.c example sitting in the libglade tarball for a really quick example. >> That being said - I think that distributing the glade file seperately is >> a cleaner design, as it allows not only users but also developers to >> update >> the UI without recompiling (allowing for some magic at the packaging >> level), also - typicly apps are installed by a super-user into a >> read-only >> prefix, generally the glade file - being part of the program's >> distributed >> files is not user writable. > > > If shit can happen, it will. In other words: if users can mess up, they > will. Even root users aren't safe from trying to tamper with fiiles, > even when told not to do so (provided they have read the README > altogether)... Sure, people can modify fstab & inittab and the computor just wont run anymore - would you consider that a valid bug report if one of your users told you they were unable to use your program after removing the "/" entry of /etc/fstab ? I think we need a little more trust on this front, if the user is tampering with the system, its not a valid bug report/use case. > What I mean by this is that I would feel a lot more comfortable to have > my program be confirmed to link and run. In other words : those > code-generating glade plugins which used to exist must still be around > somewhere. Where are these to be found ? Provided people are no longer > feeling being forced to have to use them (call me an exception ;) still > these plugins must be around somewhere. Where could these eventually be > found ? I think it is unwise (please do not take this personally, it is > far from being meant personally) to force users into the direct GUI -> > glade file concept. The former plugins should, to my feeling, be > continued to be put available (as a libglade submodule, or give it > another name, that's a detail). So that one can generate oneself the > code an prove a .glade file to conceptually work... statically. Sure code generators exist, people can use glade files to do what they desire - if that desire be to generate code - since we're on the topic today, my only question to them is: why ? If its only ease developer's fear of change, is it worth throwing volunteer developer hours at ? (then again - a developer might write such a code generator purely out of thier own interest). Ok actually admittedly - some projects have opted for code generation use because of optimization reasons; it takes less time to create a GUI when you dont need to parse an XML (using libglade)... people concerned by this should look into the gtk builder effort [1], if we all screw are heads on correctly - we should have this in gtk+ 2.12. Note that one of these companies was considering; instead of a code generator - a binary file generator/binary reader that basicly is a libglade equivalent in a more compact/optimized version. > Apart from that, I also fail to find documentation on another aspect of > using glade and libglade : what is the API to provide to write a glade > plugin (e.g. to be able to create custom widgets with glade) ? > I fear I sound like a libglade critics. I myself don't feel like that > (apart from a 'positive' libglade critics) : on the contrary, I am > enthousiasted by the concept. But I do have some questions, which can to > my feeling all be answered by a good documentation set, which I fail to > find easily (enough)... These are the docs to write a plugin to the Glade 3 core: http://glade.gnome.org/docs/index.html Is there anywhere in particular you think it should be linked from ? Cheers, -Tristan [1]: http://bugzilla.gnome.org/show_bug.cgi?id=172535 _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list