Revision: 7012 http://playerstage.svn.sourceforge.net/playerstage/?rev=7012&view=rev Author: natepak Date: 2008-09-09 16:22:53 +0000 (Tue, 09 Sep 2008)
Log Message: ----------- Added Entity browser Modified Paths: -------------- code/gazebo/trunk/server/controllers/opaque/SConscript code/gazebo/trunk/server/gui/Toolbar.cc code/gazebo/trunk/server/gui/Toolbar.hh Modified: code/gazebo/trunk/server/controllers/opaque/SConscript =================================================================== --- code/gazebo/trunk/server/controllers/opaque/SConscript 2008-09-09 14:25:39 UTC (rev 7011) +++ code/gazebo/trunk/server/controllers/opaque/SConscript 2008-09-09 16:22:53 UTC (rev 7012) @@ -1,7 +1,7 @@ #Import variable Import('env sharedObjs') -dirs = Split('jointforce contact') +dirs = Split('jointforce') for subdir in dirs : SConscript('%s/SConscript' % subdir) Modified: code/gazebo/trunk/server/gui/Toolbar.cc =================================================================== --- code/gazebo/trunk/server/gui/Toolbar.cc 2008-09-09 14:25:39 UTC (rev 7011) +++ code/gazebo/trunk/server/gui/Toolbar.cc 2008-09-09 16:22:53 UTC (rev 7012) @@ -30,6 +30,7 @@ #include <FL/Fl_Input.H> #include <FL/Fl_Button.H> +#include "World.hh" #include "Body.hh" #include "Geom.hh" #include "Entity.hh" @@ -42,52 +43,69 @@ using namespace gazebo; +//////////////////////////////////////////////////////////////////////////////// +// Constructor Toolbar::Toolbar(int x, int y, int w, int h, const char *l) : Fl_Group(x,y,w,h,l) { this->box(FL_UP_BOX); - this->columnWidths[0] = 80; - this->columnWidths[1] = 120; - this->columnWidths[2] = 0; - - this->entityBrowser = new Fl_Hold_Browser(x+10, y+20, w-20, 25*10, "Attributes"); + this->entityBrowser = new Fl_Hold_Browser(x+10, y+20, w-20, 25*5,"Models"); this->entityBrowser->align(FL_ALIGN_TOP); - this->entityBrowser->column_char('~'); - this->entityBrowser->column_widths( columnWidths ); - this->entityBrowser->callback(&Toolbar::AttributeBrowserCB, this); + this->entityBrowser->callback( &Toolbar::EntityBrowserCB, this ); + this->paramColumnWidths[0] = 80; + this->paramColumnWidths[1] = 120; + this->paramColumnWidths[2] = 0; + y = this->entityBrowser->y() + this->entityBrowser->h() + 20; - this->attributeInput = new Fl_Input(x+10, y, w-20, 20, "Input:"); - this->attributeInput->align(FL_ALIGN_TOP); - this->attributeInput->labelsize(12); - this->attributeInput->when( FL_WHEN_ENTER_KEY | FL_WHEN_RELEASE ); - this->attributeInput->callback(&Toolbar::AttributeInputCB, this); + this->paramBrowser = new Fl_Hold_Browser(x+10, y, w-20,25*10,"Parameters"); + this->paramBrowser->align(FL_ALIGN_TOP); + this->paramBrowser->column_char('~'); + this->paramBrowser->column_widths( this->paramColumnWidths ); + this->paramBrowser->callback(&Toolbar::ParamBrowserCB, this); + y = this->paramBrowser->y() + this->paramBrowser->h() + 20; + this->paramInput = new Fl_Input(x+10, y, w-20, 20, "Param:"); + this->paramInput->align(FL_ALIGN_TOP); + this->paramInput->labelsize(12); + this->paramInput->when( FL_WHEN_ENTER_KEY | FL_WHEN_RELEASE ); + this->paramInput->callback(&Toolbar::ParamInputCB, this); + this->end(); this->resizable(NULL); } +//////////////////////////////////////////////////////////////////////////////// +// Destructor Toolbar::~Toolbar() { - delete this->attributeInput; + delete this->paramBrowser; + delete this->paramInput; } + + //////////////////////////////////////////////////////////////////////////////// /// Update the toolbar data void Toolbar::Update() { + if (this->entityBrowser->size() == 0) + this->UpdateEntityBrowser(); + Entity *entity = Simulator::Instance()->GetSelectedEntity(); - this->attrCount = 0; + this->paramCount = 0; + if (entity) { std::string value = "@[EMAIL PROTECTED]@[EMAIL PROTECTED] "; - this->AddToBrowser(value); - this->AddEntityToAttributeBrowser(entity, ""); + this->AddToParamBrowser(value); + this->AddEntityToParamBrowser(entity, ""); - Model *model = dynamic_cast<Model *>(entity); + Model *model = dynamic_cast<Model*>(entity); + if (model) { const std::map<std::string, Body *> *bodies = model->GetBodies(); @@ -99,24 +117,24 @@ for (iter = bodies->begin(); iter != bodies->end(); iter++) { value = "@[EMAIL PROTECTED]@s-Body:[EMAIL PROTECTED]@[EMAIL PROTECTED]" + iter->second->GetName(); - this->AddToBrowser(value); - this->AddEntityToAttributeBrowser( iter->second, " " ); + this->AddToParamBrowser(value); + this->AddEntityToParamBrowser( iter->second, " " ); geoms = iter->second->GetGeoms(); for (giter = geoms->begin(); giter != geoms->end(); giter++) { value = "@[EMAIL PROTECTED]@s -Geom:[EMAIL PROTECTED]@[EMAIL PROTECTED]" + giter->second->GetName(); - this->AddToBrowser(value); - this->AddEntityToAttributeBrowser( giter->second, " " ); + this->AddToParamBrowser(value); + this->AddEntityToParamBrowser( giter->second, " " ); } } } // Clear the remaining lines - while ( this->entityBrowser->text(this->attrCount+1) != NULL ) + while ( this->paramBrowser->text(this->paramCount+1) != NULL ) { - this->AddToBrowser(""); + this->AddToParamBrowser(""); } } @@ -125,7 +143,7 @@ //////////////////////////////////////////////////////////////////////////////// // Attribute browser callback -void Toolbar::AttributeBrowserCB( Fl_Widget * w, void *data) +void Toolbar::ParamBrowserCB( Fl_Widget * w, void *data) { Fl_Hold_Browser *browser = (Fl_Hold_Browser*)(w); Toolbar *toolbar = (Toolbar*)(data); @@ -139,11 +157,11 @@ if (lineText.find("-Body") != std::string::npos || lineText.find("-Geom") != std::string::npos) { - toolbar->attributeInput->deactivate(); + toolbar->paramInput->deactivate(); return; } else - toolbar->attributeInput->activate(); + toolbar->paramInput->activate(); endLbl = lineText.find("~"); while (lineText[beginLbl] == '@') beginLbl+=2; @@ -152,22 +170,22 @@ beginValue = endLbl+1; while (lineText[beginValue] == '@') beginValue+=2; - toolbar->attributeInputLbl = lineText.substr(beginLbl, endLbl-beginLbl); + toolbar->paramInputLbl = lineText.substr(beginLbl, endLbl-beginLbl); - toolbar->attributeInput->label(toolbar->attributeInputLbl.c_str()); + toolbar->paramInput->label(toolbar->paramInputLbl.c_str()); - toolbar->attributeInput->value( lineText.substr(beginValue, lineText.size() - beginValue).c_str() ); + toolbar->paramInput->value( lineText.substr(beginValue, lineText.size() - beginValue).c_str() ); - toolbar->attributeInput->redraw(); + toolbar->paramInput->redraw(); } //////////////////////////////////////////////////////////////////////////////// // Attribute modification callback -void Toolbar::AttributeInputCB( Fl_Widget *w, void *data) +void Toolbar::ParamInputCB( Fl_Widget *w, void *data) { Fl_Input *input = (Fl_Input*)(w); Toolbar *toolbar = (Toolbar*)(data); - Fl_Hold_Browser *browser = toolbar->entityBrowser; + Fl_Hold_Browser *browser = toolbar->paramBrowser; int selected = browser->value(); Model *model = dynamic_cast<Model*>(Simulator::Instance()->GetSelectedEntity()); Body *body = NULL; @@ -222,13 +240,23 @@ { param->SetFromString( value, true ); } +} - std::cout << "Label[" << label << "] Value[" << value << "]\n"; +//////////////////////////////////////////////////////////////////////////////// +/// Callback for entity browser +void Toolbar::EntityBrowserCB( Fl_Widget *w, void *data ) +{ + Fl_Hold_Browser *browser = (Fl_Hold_Browser*)(w); + int selected = browser->value(); + std::string lineText = browser->text(selected); + + Model *model = World::Instance()->GetModelByName(lineText); + Simulator::Instance()->SetSelectedEntity(model); } //////////////////////////////////////////////////////////////////////////////// // Add entity to browser -void Toolbar::AddEntityToAttributeBrowser(Entity *entity, std::string prefix) +void Toolbar::AddEntityToParamBrowser(Entity *entity, std::string prefix) { std::vector<Param*> *parameters; std::vector<Param*>::iterator iter; @@ -248,22 +276,35 @@ value = colorStr + "@[EMAIL PROTECTED]" + prefix + (*iter)->GetKey() + ":~" + colorStr + "@s" + (*iter)->GetAsString(); - this->AddToBrowser( value ); + this->AddToParamBrowser( value ); } } //////////////////////////////////////////////////////////////////////////////// // Add a line to the attribute browser -void Toolbar::AddToBrowser(const std::string &line) +void Toolbar::AddToParamBrowser(const std::string &line) { - if (!this->entityBrowser->text(this->attrCount+1)) + if (!this->paramBrowser->text(this->paramCount+1)) { - this->entityBrowser->add( line.c_str() ); + this->paramBrowser->add( line.c_str() ); } - else if (strcmp(this->entityBrowser->text(this->attrCount+1), line.c_str()) != 0) + else if (strcmp(this->paramBrowser->text(this->paramCount+1), line.c_str()) != 0) { - this->entityBrowser->text( this->attrCount+1, line.c_str() ); + this->paramBrowser->text( this->paramCount+1, line.c_str() ); } - this->attrCount++; + this->paramCount++; } + +//////////////////////////////////////////////////////////////////////////////// +/// Update entity browser +void Toolbar::UpdateEntityBrowser() +{ + std::vector<Model*>::iterator iter; + std::vector<Model*> models = World::Instance()->GetModels(); + + for (iter = models.begin(); iter != models.end(); iter++) + { + this->entityBrowser->add( (*iter)->GetName().c_str() ); + } +} Modified: code/gazebo/trunk/server/gui/Toolbar.hh =================================================================== --- code/gazebo/trunk/server/gui/Toolbar.hh 2008-09-09 14:25:39 UTC (rev 7011) +++ code/gazebo/trunk/server/gui/Toolbar.hh 2008-09-09 16:22:53 UTC (rev 7012) @@ -51,19 +51,33 @@ /// \brief Update the toolbar data public: void Update(); - public: static void AttributeBrowserCB( Fl_Widget * w, void *data); - public: static void AttributeInputCB( Fl_Widget * w, void *data); + /// \brief Callback for the parameter browser + public: static void ParamBrowserCB( Fl_Widget * w, void *data); - private: void AddEntityToAttributeBrowser(Entity *ent, std::string prefix); - private: void AddToBrowser(const std::string &line); + /// \brief Callback for parameter modification + public: static void ParamInputCB( Fl_Widget * w, void *data); + /// \brief Callback for entity browser + public: static void EntityBrowserCB( Fl_Widget *w, void *data ); + + /// \brief Add an entity ot the param browser + private: void AddEntityToParamBrowser(Entity *ent, std::string prefix); + + /// \brief Add a line to the param browser + private: void AddToParamBrowser(const std::string &line); + + + /// \brief Update entity browser + private: void UpdateEntityBrowser(); + private: Fl_Hold_Browser *entityBrowser; - private: int columnWidths[3]; - private: int attrCount; + private: Fl_Hold_Browser *paramBrowser; + private: Fl_Input *paramInput; + private: std::string paramInputLbl; - private: Fl_Input *attributeInput; - private: std::string attributeInputLbl; + private: int paramColumnWidths[3]; + private: int paramCount; }; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Playerstage-commit mailing list Playerstage-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/playerstage-commit