On Wed, 2006-09-27 at 20:31 +0200, Murray Cumming wrote: > If you attach an actual test case, I will investigate. Attached an extended version of the previous test case that shows the assertion failures (I am fairly sure caused by something stupid I am or am not doing) and the segfault. The assertion failures always happen the seg faulting is controlled with the SHOW_SEGFAULT macro. -- Russel. ==================================================== Dr Russel Winder +44 20 7585 2200 41 Buckmaster Road +44 7770 465 077 London SW11 1EN, UK russel russel org uk
#include <iostream>
#include <glibmm.h>
#include <gtkmm.h>
#include <libglademm.h>
#define SHOW_SEGFAULT 0
Gtk::Window * mainWindow ;
Gtk::TreeView * mainWindow_familyList ;
Gtk::SpinButton * mainWindow_fontSize ;
Gtk::TreeView * mainWindow_presentationList ;
Gtk::Entry * mainWindow_sampleText ;
void initialize_mainWindow_fontSize ( ) { }
void initialize_mainWindow_sampleText ( ) { }
void showAbout ( ) { }
int main ( int ac , char * * av ) {
Glib::ustring name ( "test" ) ;
bool version ( FALSE ) ;
Glib::OptionEntry entry ;
entry.set_long_name ( "version" ) ;
entry.set_description ( "Show version and exit." ) ;
Glib::OptionGroup options ( name , "Test" ) ;
options.add_entry ( entry , version ) ;
Glib::OptionContext context ( "-- A message." ) ;
context.add_group ( options ) ;
context.set_main_group ( options ) ;
#if SHOW_SEGFAULT
try { Gtk::Main application ( ac , av , context ) ; }
catch ( const Glib::OptionError & e ) { std::cout << e.what ( ) << std::endl ; return 1 ; }
#else
Gtk::Main application ( ac , av , context ) ;
#endif
if ( version ) { std::cout << name << " v" << "0.0.1" << std::endl ; return 0 ; }
Glib::RefPtr<Gnome::Glade::Xml> refXml ;
try { refXml = Gnome::Glade::Xml::create ( "gfontbrowser.glade" ) ; }
catch ( const Gnome::Glade::XmlError & e ) { std::cerr << e.what ( ) << std::endl ; exit ( 1 ) ; }
refXml->get_widget ( "mainWindow" , mainWindow ) ;
Glib::RefPtr<Gtk::MenuItem> quitMenuItem ( dynamic_cast<Gtk::MenuItem *> ( refXml->get_widget ( "mainWindow_quit" ) ) ) ;
quitMenuItem->signal_activate ( ).connect ( sigc::ptr_fun ( &Gtk::Main::quit ) ) ;
Glib::RefPtr<Gtk::MenuItem> aboutMenuItem ( dynamic_cast<Gtk::MenuItem *> ( refXml->get_widget ( "mainWindow_about" ) ) ) ;
aboutMenuItem->signal_activate ( ).connect ( sigc::ptr_fun ( &showAbout ) ) ;
refXml->get_widget ( "mainWindow_familyList" , mainWindow_familyList ) ;
refXml->get_widget ( "mainWindow_presentationList" , mainWindow_presentationList ) ;
refXml->get_widget ( "mainWindow_sampleText" , mainWindow_sampleText ) ;
initialize_mainWindow_sampleText ( ) ;
refXml->get_widget ( "mainWindow_fontSize" , mainWindow_fontSize ) ;
initialize_mainWindow_fontSize ( ) ;
Gtk::Main::run ( *mainWindow ) ;
return 0 ;
}
Attachment:
gfontbrowser.glade
Description: application/glade
Attachment:
signature.asc
Description: This is a digitally signed message part