Revision: 7336
http://playerstage.svn.sourceforge.net/playerstage/?rev=7336&view=rev
Author: rtv
Date: 2009-02-16 01:59:06 +0000 (Mon, 16 Feb 2009)
Log Message:
-----------
working on simplifying GUI option code
Modified Paths:
--------------
code/stage/trunk/libstage/CMakeLists.txt
code/stage/trunk/libstage/model.cc
code/stage/trunk/libstage/model_draw.cc
code/stage/trunk/libstage/model_laser.cc
code/stage/trunk/libstage/option.cc
code/stage/trunk/libstage/option.hh
code/stage/trunk/libstage/stage.hh
code/stage/trunk/libstage/world.cc
code/stage/trunk/libstage/worldgui.cc
code/stage/trunk/worlds/fasr.world
Modified: code/stage/trunk/libstage/CMakeLists.txt
===================================================================
--- code/stage/trunk/libstage/CMakeLists.txt 2009-02-16 00:02:13 UTC (rev
7335)
+++ code/stage/trunk/libstage/CMakeLists.txt 2009-02-16 01:59:06 UTC (rev
7336)
@@ -4,7 +4,6 @@
include_directories(${PROJECT_BINARY_DIR})
set( stageSrcs ancestor.cc
- model_gripper.cc
block.cc
blockgroup.cc
camera.cc
@@ -21,6 +20,7 @@
model_camera.cc
model_fiducial.cc
model_getset.cc
+ model_gripper.cc
model_laser.cc
model_load.cc
model_position.cc
Modified: code/stage/trunk/libstage/model.cc
===================================================================
--- code/stage/trunk/libstage/model.cc 2009-02-16 00:02:13 UTC (rev 7335)
+++ code/stage/trunk/libstage/model.cc 2009-02-16 01:59:06 UTC (rev 7336)
@@ -1019,3 +1019,11 @@
return NULL;
}
+
+void Model::RegisterOption( Option* opt )
+{
+ drawOptions.push_back( opt );
+
+ if( world->IsGUI() )
+ world->RegisterOption( opt );
+}
Modified: code/stage/trunk/libstage/model_draw.cc
===================================================================
--- code/stage/trunk/libstage/model_draw.cc 2009-02-16 00:02:13 UTC (rev
7335)
+++ code/stage/trunk/libstage/model_draw.cc 2009-02-16 01:59:06 UTC (rev
7336)
@@ -263,7 +263,11 @@
Canvas* canvas = world_gui->GetCanvas();
std::map< std::string, Option* >::iterator i =
canvas->_custom_options.find( custom_visual->name() );
if( i == canvas->_custom_options.end() ) {
- Option* op = new Option( custom_visual->name(),
custom_visual->name(), "", true, world_gui );
+ Option* op = new Option( custom_visual->name(),
+
custom_visual->name(),
+
"",
+
true,
+
world_gui );
canvas->_custom_options[ custom_visual->name() ] = op;
registerOption( op );
}
Modified: code/stage/trunk/libstage/model_laser.cc
===================================================================
--- code/stage/trunk/libstage/model_laser.cc 2009-02-16 00:02:13 UTC (rev
7335)
+++ code/stage/trunk/libstage/model_laser.cc 2009-02-16 01:59:06 UTC (rev
7336)
@@ -108,10 +108,12 @@
if( world->IsGUI() )
data_dl = glGenLists(1);
- registerOption( &showLaserData );
- registerOption( &showLaserStrikes );
- registerOption( &showLaserFov );
- registerOption( &showLaserBeams );
+ RegisterOption( &showLaserData );
+ RegisterOption( &showLaserStrikes );
+ RegisterOption( &showLaserFov );
+ RegisterOption( &showLaserBeams );
+
+ //AddCustomVisualizer( new LaserScanVis( this ));
}
@@ -420,3 +422,10 @@
glPopMatrix();
}
+
+
+// void ModelLaser::LaserScanVis::DataVisualize( Camera* cam )
+// {
+// puts( "LSV DataVisualize" );
+// laser->DataVisualize( cam );
+// }
Modified: code/stage/trunk/libstage/option.cc
===================================================================
--- code/stage/trunk/libstage/option.cc 2009-02-16 00:02:13 UTC (rev 7335)
+++ code/stage/trunk/libstage/option.cc 2009-02-16 01:59:06 UTC (rev 7336)
@@ -13,7 +13,8 @@
shortcut( key ),
menu( NULL ),
menuCb( NULL ),
-_world( world )
+_world( world ),
+htname( strdup(n.c_str()) )
{ }
Fl_Menu_Item* getMenuItem( Fl_Menu_* menu, int i ) {
Modified: code/stage/trunk/libstage/option.hh
===================================================================
--- code/stage/trunk/libstage/option.hh 2009-02-16 00:02:13 UTC (rev 7335)
+++ code/stage/trunk/libstage/option.hh 2009-02-16 01:59:06 UTC (rev 7336)
@@ -55,6 +55,8 @@
static void toggleCb( Fl_Widget* w, void* p );
void Load( Worldfile* wf, int section );
void Save( Worldfile* wf, int section );
+
+ const char* htname;
};
}
Modified: code/stage/trunk/libstage/stage.hh
===================================================================
--- code/stage/trunk/libstage/stage.hh 2009-02-16 00:02:13 UTC (rev 7335)
+++ code/stage/trunk/libstage/stage.hh 2009-02-16 01:59:06 UTC (rev 7336)
@@ -891,6 +891,7 @@
stg_bounds3d_t extent; ///< Describes the 3D volume of the world
bool graphics;///< true iff we have a GUI
stg_usec_t interval_sim; ///< temporal resolution: microseconds that
elapse between simulated time steps
+ GHashTable* option_table; ///< GUI options (toggles) registered by
models
GList* powerpack_list; ///< List of all the powerpacks attached to
models in the world
GList* ray_list;///< List of rays traced for debug visualization
stg_usec_t sim_time; ///< the current sim time in this world in ms
@@ -1051,6 +1052,9 @@
/** Return the number of times the world has been updated. */
long unsigned int GetUpdateCount() { return updates; }
+
+ /// Register an Option for pickup by the GUI
+ void RegisterOption( Option* opt );
};
class Block
@@ -1376,7 +1380,7 @@
stg_usec_t real_time_of_last_update;
void UpdateOptions();
-
+
// static callback functions
static void windowCb( Fl_Widget* w, void* p );
static void fileLoadCb( Fl_Widget* w, void* p );
@@ -1507,8 +1511,7 @@
virtual const std::string& name() = 0; //must return a name for
visualization (careful not to return stack-memory)
};
-
-
+
/* Hooks for attaching special callback functions (not used as
variables - we just need unique addresses for them.) */
class CallbackHooks
@@ -1534,46 +1537,6 @@
void Load( Worldfile* wf, int wf_entity );
};
- // class Option {
- // private:
- // 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_* menu;
- // int menuIndex;
- // Fl_Callback* menuCb;
- // Fl_Widget* menuCbWidget;
-
- // public:
- // Option( std::string n, std::string tok, std::string key, bool v,
WorldGui* worldgui );
-
- // 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() { 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); }
- // };
-
-
- // void createMenuItem( Fl_Menu_Bar* menu, std::string path );
- // void menuCallback( Fl_Callback* cb, Fl_Widget* w );
- // static void toggleCb( Fl_Widget* w, void* p );
- // void Load( Worldfile* wf, int section );
- // void Save( Worldfile* wf, int section );
- // };
-
-
/// %Model class
class Model : public Ancestor
{
@@ -1720,8 +1683,8 @@
protected:
/// Register an Option for pickup by the GUI
- void registerOption( Option* opt )
- { drawOptions.push_back( opt ); }
+ void RegisterOption( Option* opt );
+ void registerOption( Option* opt ) { RegisterOption( opt) ; };
GList* AppendTouchingModels( GList* list );
//void AddTouchingModelsToList( GList* list );
@@ -1872,8 +1835,10 @@
virtual ~Model();
void Say( const char* str );
- /** Attach a user supplied visualization to a model */
+
+ /** Attach a user supplied visualization to a model. */
void AddCustomVisualizer( CustomVisualizer* custom_visual );
+
/** remove user supplied visualization to a model - supply the same
ptr passed to AddCustomVisualizer */
void RemoveCustomVisualizer( CustomVisualizer* custom_visual );
@@ -2272,7 +2237,27 @@
static Option showLaserStrikes;
static Option showLaserFov;
static Option showLaserBeams;
-
+
+// class LaserScanVis : public CustomVisualizer
+// {
+// public:
+// LaserScanVis( ModelLaser* laser ) :
+// CustomVisualizer(),
+// laser( laser )
+// { /* nothing to do */ };
+
+// virtual void DataVisualize( Camera* cam );
+
+// // rtv - surely a static string member would be easier here?
+// //must return a name for visualization (careful not to return
stack-memory)
+
+// virtual const std::string& name() { return "LaserScanVisName";
} ;
+
+// private:
+// ModelLaser* laser;
+// };
+
+
public:
static const char* typestr;
// constructor
Modified: code/stage/trunk/libstage/world.cc
===================================================================
--- code/stage/trunk/libstage/world.cc 2009-02-16 00:02:13 UTC (rev 7335)
+++ code/stage/trunk/libstage/world.cc 2009-02-16 01:59:06 UTC (rev 7336)
@@ -50,6 +50,7 @@
#include "file_manager.hh"
#include "worldfile.hh"
#include "region.hh"
+#include "option.hh"
using namespace Stg;
// static data members
@@ -95,6 +96,7 @@
extent(),
graphics( false ),
interval_sim( (stg_usec_t)thousand * interval_sim ),
+ option_table( g_hash_table_new( g_str_hash, g_str_equal ) ),
ray_list( NULL ),
sim_time( 0 ),
superregions( g_hash_table_new( (GHashFunc)PointIntHash,
@@ -945,3 +947,9 @@
{
powerpack_list = g_list_remove( powerpack_list, pp );
}
+
+/// Register an Option for pickup by the GUI
+void World:: RegisterOption( Option* opt )
+{
+ g_hash_table_insert( option_table, (void*)opt->htname, opt );
+}
Modified: code/stage/trunk/libstage/worldgui.cc
===================================================================
--- code/stage/trunk/libstage/worldgui.cc 2009-02-16 00:02:13 UTC (rev
7335)
+++ code/stage/trunk/libstage/worldgui.cc 2009-02-16 01:59:06 UTC (rev
7336)
@@ -519,6 +519,12 @@
}
+void list_option( char* name, Option* opt, void* dummy )
+{
+ printf( "option %s @ %p\n", name, opt );
+
+}
+
void WorldGui::viewOptionsCb( Fl_Widget* w, void* p )
{
WorldGui* worldGui = static_cast<WorldGui*>( p );
@@ -538,6 +544,8 @@
{
worldGui->oDlg->show(); // bring it to front
}
+
+ //g_hash_table_foreach( worldGui->option_table, (GHFunc)list_option, NULL );
}
void WorldGui::optionsDlgCb( Fl_Widget* w, void* p ) {
Modified: code/stage/trunk/worlds/fasr.world
===================================================================
--- code/stage/trunk/worlds/fasr.world 2009-02-16 00:02:13 UTC (rev 7335)
+++ code/stage/trunk/worlds/fasr.world 2009-02-16 01:59:06 UTC (rev 7336)
@@ -72,7 +72,7 @@
define autorob pioneer2dx
(
- sicklaser( samples 180 range_max 5 laser_return 2 watts 30 )
+ sicklaser( samples 32 range_max 5 laser_return 2 watts 30 )
ctrl "fasr"
joules 100000
joules_capacity 400000
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit