Revision: 6750 http://playerstage.svn.sourceforge.net/playerstage/?rev=6750&view=rev Author: jeremy_asher Date: 2008-07-03 14:09:25 -0700 (Thu, 03 Jul 2008)
Log Message: ----------- Fixed Option loading not updating menu Modified Paths: -------------- code/stage/trunk/libstage/canvas.cc code/stage/trunk/libstage/option.cc code/stage/trunk/libstage/option.hh code/stage/trunk/libstage/options_dlg.cc code/stage/trunk/libstage/stage.hh code/stage/trunk/libstage/worldgui.cc Modified: code/stage/trunk/libstage/canvas.cc =================================================================== --- code/stage/trunk/libstage/canvas.cc 2008-07-03 20:22:14 UTC (rev 6749) +++ code/stage/trunk/libstage/canvas.cc 2008-07-03 21:09:25 UTC (rev 6750) @@ -760,25 +760,25 @@ } -void StgCanvas::CreateMenuItems( Fl_Menu_Bar* menu, std::string path ) +void StgCanvas::createMenuItems( Fl_Menu_Bar* menu, std::string path ) { - showData.CreateMenuItem( menu, path ); -// visualizeAll.CreateMenuItem( menu, path ); - showBlocks.CreateMenuItem( menu, path ); - showFlags.CreateMenuItem( menu, path ); - showClock.CreateMenuItem( menu, path ); - showFlags.CreateMenuItem( menu, path ); - showFollow.CreateMenuItem( menu, path ); - showFootprints.CreateMenuItem( menu, path ); - showGrid.CreateMenuItem( menu, path ); - showStatus.CreateMenuItem( menu, path ); - perspectiveCam.CreateMenuItem( menu, path ); - showOccupancy.CreateMenuItem( menu, path ); - showTrailArrows.CreateMenuItem( menu, path ); - showTrails.CreateMenuItem( menu, path ); - showTrailRise.CreateMenuItem( menu, path ); - showTree.CreateMenuItem( menu, path ); - showScreenshots.CreateMenuItem( menu, path ); + showData.createMenuItem( menu, path ); +// visualizeAll.createMenuItem( menu, path ); + showBlocks.createMenuItem( menu, path ); + showFlags.createMenuItem( menu, path ); + showClock.createMenuItem( menu, path ); + showFlags.createMenuItem( menu, path ); + showFollow.createMenuItem( menu, path ); + showFootprints.createMenuItem( menu, path ); + showGrid.createMenuItem( menu, path ); + showStatus.createMenuItem( menu, path ); + perspectiveCam.createMenuItem( menu, path ); + showOccupancy.createMenuItem( menu, path ); + showTrailArrows.createMenuItem( menu, path ); + showTrails.createMenuItem( menu, path ); + showTrailRise.createMenuItem( menu, path ); + showTree.createMenuItem( menu, path ); + showScreenshots.createMenuItem( menu, path ); } Modified: code/stage/trunk/libstage/option.cc =================================================================== --- code/stage/trunk/libstage/option.cc 2008-07-03 20:22:14 UTC (rev 6749) +++ code/stage/trunk/libstage/option.cc 2008-07-03 21:09:25 UTC (rev 6750) @@ -8,7 +8,8 @@ value( v ), wf_token( tok ), shortcut( key ), -menu_item( NULL ) +menu( NULL ), +menuIndex( -1 ) { } Option::Option( const Option& o ) : @@ -16,13 +17,14 @@ value( o.value ), wf_token( o.wf_token ), shortcut( o.shortcut ), -menu_item( o.menu_item ) +menu( o.menu ), +menuIndex( o.menuIndex ) { } void Option::Load( Worldfile* wf, int section ) { - Set( (bool)wf->ReadInt(section, wf_token.c_str(), value )); + set( (bool)wf->ReadInt( section, wf_token.c_str(), value )); } void Option::Save( Worldfile* wf, int section ) @@ -30,32 +32,30 @@ wf->WriteInt(section, wf_token.c_str(), value ); } -void Option::CreateMenuItem( Fl_Menu_Bar* menu, std::string path ) +void toggleCb( Fl_Widget* w, void* p ) { - path = path + "/" + optName; - menu->add( path.c_str(), shortcut.c_str(), - (Fl_Callback*)ToggleCb, this, - FL_MENU_TOGGLE | (value ? FL_MENU_VALUE : 0 ) ); - - // find the menu item we just created and store it for later access - menu_item = (Fl_Menu_Item*)menu->find_item( path.c_str() ); -} - -void Option::ToggleCb( Fl_Menu_Bar* menubar, Option* opt ) -{ - opt->Invert(); + //Fl_Menu_* menu = static_cast<Fl_Menu_*>( w ); + Option* opt = static_cast<Option*>( p ); + opt->invert(); } - -void Option::Invert() +void Option::createMenuItem( Fl_Menu_Bar* m, std::string path ) { - Set( !value ); -} + menu = m; + path = path + "/" + optName; + // create a menu item and save its index + menuIndex = menu->add( path.c_str(), shortcut.c_str(), + toggleCb, this, + FL_MENU_TOGGLE | (value ? FL_MENU_VALUE : 0 ) ); +} -void Option::Set( bool val ) +void Option::set( bool val ) { - value = val; + value = val; - if( menu_item ) - value ? menu_item->set() : menu_item->clear(); + if( menu ) { + const Fl_Menu_Item* mArr = menu->menu(); + Fl_Menu_Item* item = const_cast<Fl_Menu_Item*>( &mArr[ menuIndex ] ); + value ? item->set() : item->clear(); + } } Modified: code/stage/trunk/libstage/option.hh =================================================================== --- code/stage/trunk/libstage/option.hh 2008-07-03 20:22:14 UTC (rev 6749) +++ code/stage/trunk/libstage/option.hh 2008-07-03 21:09:25 UTC (rev 6750) @@ -20,38 +20,38 @@ class Option { private: - friend bool compare( const Option* lhs, const Option* rhs ); + friend bool compare( const Option* lhs, const Option* rhs ); - std::string optName; - bool value; - /** worldfile entry string for loading and saving this value */ - std::string wf_token; - std::string shortcut; - Fl_Menu_Item* menu_item; + std::string optName; + bool value; + /** worldfile entry string for loading and saving this value */ + std::string wf_token; + std::string shortcut; + Fl_Menu_* menu; + int menuIndex; public: Option( std::string n, std::string tok, std::string key, bool v ); Option( const Option& o ); - const std::string name() const { return optName; } + const std::string name() const { return optName; } inline bool val() const { return value; } inline operator bool() { return val(); } inline bool operator<( const Option& rhs ) const { return optName<rhs.optName; } - void Set( bool val ); - void Invert(); + void set( bool val ); + void invert() { set( !value ); } - // Comparator to dereference Option pointers and compare their strings - struct optComp { - inline bool operator()( const Option* lhs, const Option* rhs ) const - { return lhs->operator<(*rhs); } - }; - - static void ToggleCb( Fl_Menu_Bar* menubar, Option* opt ); + // Comparator to dereference Option pointers and compare their strings + struct optComp { + inline bool operator()( const Option* lhs, const Option* rhs ) const + { return lhs->operator<(*rhs); } + }; - void Load( Worldfile* wf, int section ); - void Save( Worldfile* wf, int section ); - void CreateMenuItem( Fl_Menu_Bar* menu, std::string path ); + + void createMenuItem( Fl_Menu_Bar* menu, std::string path ); + void Load( Worldfile* wf, int section ); + void Save( Worldfile* wf, int section ); }; } Modified: code/stage/trunk/libstage/options_dlg.cc =================================================================== --- code/stage/trunk/libstage/options_dlg.cc 2008-07-03 20:22:14 UTC (rev 6749) +++ code/stage/trunk/libstage/options_dlg.cc 2008-07-03 21:09:25 UTC (rev 6750) @@ -36,13 +36,13 @@ if ( check == oDlg->showAllCheck && oDlg->showAll ) { oDlg->status = CHANGE_ALL; - oDlg->showAll->Set( check->value() ); + oDlg->showAll->set( check->value() ); oDlg->do_callback(); oDlg->status = NO_EVENT; } else { int item = oDlg->scroll->find( check ); - oDlg->options[ item ]->Set( check->value() ); + oDlg->options[ item ]->set( check->value() ); oDlg->changedItem = oDlg->options[ item ]; oDlg->status = CHANGE; oDlg->do_callback(); Modified: code/stage/trunk/libstage/stage.hh =================================================================== --- code/stage/trunk/libstage/stage.hh 2008-07-03 20:22:14 UTC (rev 6749) +++ code/stage/trunk/libstage/stage.hh 2008-07-03 21:09:25 UTC (rev 6750) @@ -1961,7 +1961,7 @@ void Screenshot(); - void CreateMenuItems( Fl_Menu_Bar* menu, std::string path ); + void createMenuItems( Fl_Menu_Bar* menu, std::string path ); void FixViewport(int W,int H); void DrawFloor(); //simpler floor compared to grid Modified: code/stage/trunk/libstage/worldgui.cc =================================================================== --- code/stage/trunk/libstage/worldgui.cc 2008-07-03 20:22:14 UTC (rev 6749) +++ code/stage/trunk/libstage/worldgui.cc 2008-07-03 21:09:25 UTC (rev 6750) @@ -147,7 +147,7 @@ mbar->add( "&View", 0, 0, 0, FL_SUBMENU ); mbar->add( "View/Filter data...", FL_SHIFT + 'd', StgWorldGui::viewOptionsCb, this ); - canvas->CreateMenuItems( mbar, "View" ); + canvas->createMenuItems( mbar, "View" ); mbar->add( "&Help", 0, 0, 0, FL_SUBMENU ); mbar->add( "Help/&About Stage...", 0, StgWorldGui::helpAboutCb, this ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------- Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! Studies have shown that voting for your favorite open source project, along with a healthy diet, reduces your potential for chronic lameness and boredom. Vote Now at http://www.sourceforge.net/community/cca08 _______________________________________________ Playerstage-commit mailing list Playerstage-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/playerstage-commit