Hi, Sascha, > i've written a new GUI for my program with Glade and Gtk.Builder. > Err... why? Nevermind.
> Actually i'm having that constructors: > > public static PublicanCreators Create() > { > Builder builder = new Builder(); > builder.AddFromFile("gui.glade"); > return new PublicanCreators(builder, > builder.GetObject("PublicanCreators").Handle); > }protected PublicanCreators(Builder builder, IntPtr handle) : base(handle){ > _builder = builder; > builder.Autoconnect(this); > SetupHandlers();} > > I don't have much experience with Glade 3, and Gtk 3. Glade 3 uses Gtk+ 3, while Gtk# uses Gtk+2, so at first glance, they are incompatible. I've found this answer in stack overflow: http://stackoverflow.com/questions/15599497/how-do-i-use-gtk-builder-in-c-sharp#19352159 They seem to be able to build a user interface using both methods: with Gtk.Builder, and with libglade (Glade.XML). I've tried both. Using the libglade method, I was able to make the program compile and run, even with the glade XML file as a resource (this is a must to me). == public Ppal() { Gtk.Application.Init(); var uiInterface = new Glade.XML( "GladeTest.Res.glade_test-ui.glade", "AppWindow" ); uiInterface.Autoconnect( this ); Gtk.Application.Run(); } == Unfortunately, nothing shows on screen. I double-checked that the GtkWindow had the Visible property set to true. Then I checked the output, to find: == (GladeTest:7658): libglade-WARNING **: Expected <glade-interface>. Got <interface>. (GladeTest:7658): libglade-WARNING **: did not finish in PARSER_FINISH state! (GladeTest:7658): libglade-CRITICAL **: glade_xml_get_widget: assertion 'self != NULL' failed (GladeTest:7658): libglade-CRITICAL **: glade_xml_signal_autoconnect_full: assertion 'self != NULL' failed == It seems that the XML format generated by Glade is not the expected by libglade. So libglade does not work... what about Gtk.Builder? The same app, with the same user interface generated by Glade. == public Ppal() { Gtk.Application.Init(); var guiBuilder = new Gtk.Builder(); StreamReader uiFile = new StreamReader( System.Reflection.Assembly.GetEntryAssembly(). GetManifestResourceStream( "GladeTest.Res.glade_test-ui.glade" ) ); guiBuilder.AddFromString( uiFile.ReadToEnd() ); * // ERROR autoconnect does not exist * * //guiBuilder.Autoconnect( this );* Gtk.Application.Run(); } == The problem with Builder is twofold: a) there is not an "autoconnect" method, and b) (and most important) the execution fails while executing AddFromString(), with a Glib.GException with message "<input>: required gtk+ version 3.0, current version is 2.24" This is actually the problem I had foreseen, they are not compatible since Gtk# is stuck in Gtk+2. It requires gtk+3.0 because I messed with the settings, by default it requires gtk+3.20. Maybe someone can provide more info about this issue, perhaps a workaround or something. I'm using Mono 4.6.2. -- Baltasar
_______________________________________________ Gtk-sharp-list maillist - Gtk-sharp-list@lists.dot.net http://lists.dot.net/mailman/listinfo/gtk-sharp-list