Revision: 8416
http://playerstage.svn.sourceforge.net/playerstage/?rev=8416&view=rev
Author: natepak
Date: 2009-11-17 21:50:42 +0000 (Tue, 17 Nov 2009)
Log Message:
-----------
Fixed up gui
Modified Paths:
--------------
code/gazebo/trunk/server/Entity.cc
code/gazebo/trunk/server/physics/Body.cc
code/gazebo/trunk/server/physics/Body.hh
code/gazebo/trunk/server/physics/bullet/BulletBody.cc
Added Paths:
-----------
code/gazebo/trunk/server/gui/Toolbar.cc
code/gazebo/trunk/server/gui/Toolbar.hh
Modified: code/gazebo/trunk/server/Entity.cc
===================================================================
--- code/gazebo/trunk/server/Entity.cc 2009-11-17 19:15:17 UTC (rev 8415)
+++ code/gazebo/trunk/server/Entity.cc 2009-11-17 21:50:42 UTC (rev 8416)
@@ -174,17 +174,11 @@
Body *body = NULL;
this->selected = s;
- //std::cout << " SetSelected Entity : " << this->GetName() << " selected("
<< s << ")" << std::endl;
for (iter = this->children.begin(); iter != this->children.end(); iter++)
{
- //std::cout << " SetSelected Entity Children: " << (*iter)->GetName() <<
std::endl;
(*iter)->SetSelected(s);
body = dynamic_cast<Body*>(*iter);
-
- //enabling SetEnabled(!s) makes body unstabel upon unselection
- //if (body)
- //body->SetEnabled(!s);
}
return true;
Added: code/gazebo/trunk/server/gui/Toolbar.cc
===================================================================
--- code/gazebo/trunk/server/gui/Toolbar.cc (rev 0)
+++ code/gazebo/trunk/server/gui/Toolbar.cc 2009-11-17 21:50:42 UTC (rev
8416)
@@ -0,0 +1,212 @@
+/*
+ * Gazebo - Outdoor Multi-Robot Simulator
+ * Copyright (C) 2003
+ * Nate Koenig & Andrew Howard
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+/* Desc: Toolbar
+ * Author: Nate Koenig
+ * Date: 13 Feb 2006
+ * SVN: $Id$
+ */
+
+#include <stdio.h>
+
+#include <FL/Fl_Button.H>
+#include <FL/Fl_Box.H>
+#include <FL/Fl_Bitmap.H>
+#include <FL/Fl_RGB_Image.H>
+
+#include "Image.hh"
+#include "Gui.hh"
+#include "Global.hh"
+#include "Simulator.hh"
+#include "Toolbar.hh"
+
+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_THIN_DOWN_BOX);
+
+ this->color(BG_COLOR);
+
+ unsigned char *data = NULL;
+ unsigned int dataCount;
+
+ Image image;
+ image.Load("blue_play_button.png");
+ image.Rescale(20,20);
+ image.GetData(&data, dataCount);
+
+ this->playImage[0] = new Fl_RGB_Image(data, image.GetWidth(),
+ image.GetHeight(), 4);
+
+ data = NULL;
+ image.Load("grey_play_button.png");
+ image.Rescale(20,20);
+ image.GetData(&data, dataCount);
+ this->playImage[1] = new Fl_RGB_Image(data, image.GetWidth(),
+ image.GetHeight(), 4);
+
+ data = NULL;
+ image.Load("blue_pause_button.png");
+ image.Rescale(20,20);
+ image.GetData(&data, dataCount);
+ this->pauseImage[0] = new Fl_RGB_Image(data, image.GetWidth(),
+ image.GetHeight(), 4);
+
+ data = NULL;
+ image.Load("grey_pause_button.png");
+ image.Rescale(20,20);
+ image.GetData(&data, dataCount);
+ this->pauseImage[1] = new Fl_RGB_Image(data, image.GetWidth(),
+ image.GetHeight(), 4);
+
+ data = NULL;
+ image.Load("blue_step_button.png");
+ image.Rescale(20,20);
+ image.GetData(&data, dataCount);
+ this->stepImage[0] = new Fl_RGB_Image(data, image.GetWidth(),
+ image.GetHeight(), 4);
+
+ data = NULL;
+ image.Load("grey_step_button.png");
+ image.Rescale(20,20);
+ image.GetData(&data, dataCount);
+ this->stepImage[1] = new Fl_RGB_Image(data, image.GetWidth(),
+ image.GetHeight(), 4);
+
+
+ x += 5;
+ y += 5;
+ this->playButton = new Fl_Button(x, y, 30, 20);
+ this->playButton->callback( &gazebo::Toolbar::PlayButtonCB, this );
+ this->playButton->color(BG_COLOR, BG_COLOR);
+ this->playButton->image(this->playImage[1]);
+ this->playButton->box(FL_NO_BOX);
+ this->playButton->deactivate();
+
+ x = this->playButton->x() + this->playButton->w() + 10;
+ this->pauseButton = new Fl_Button(x, y, 30, 20);
+ this->pauseButton->callback( &gazebo::Toolbar::PauseButtonCB, this );
+ this->pauseButton->color(BG_COLOR, BG_COLOR);
+ this->pauseButton->image(this->pauseImage[0]);
+ this->pauseButton->box(FL_NO_BOX);
+
+ x = this->pauseButton->x() + this->pauseButton->w() + 10;
+ this->stepButton = new Fl_Button(x, y, 30, 20);
+ this->stepButton->callback( &gazebo::Toolbar::StepButtonCB, this );
+ this->stepButton->color(BG_COLOR, BG_COLOR);
+ this->stepButton->image(this->stepImage[1]);
+ this->stepButton->box(FL_NO_BOX);
+ this->stepButton->deactivate();
+
+ this->end();
+ this->resizable(NULL);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Destructor
+Toolbar::~Toolbar()
+{
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Update the toolbar data
+void Toolbar::Update()
+{
+ if (Simulator::Instance()->IsPaused())
+ {
+ //this->playButton->label("@>");
+ //this->stepButton->activate();
+ }
+ else
+ {
+ //this->playButton->label("@||");
+ //this->stepButton->deactivate();
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Play pause button callback
+void Toolbar::PlayButtonCB( Fl_Widget *w, void *data )
+{
+ Toolbar *tb = (Toolbar*)(data);
+/*
+ if (strcmp(w->label(), "@||") == 0)
+ {
+ Simulator::Instance()->SetPaused(true);
+
+ tb->stepButton->activate();
+ w->label("@>");
+ }
+ else
+ {
+ w->label("@||");
+ }*/
+
+ if (Simulator::Instance()->IsPaused())
+ {
+ Simulator::Instance()->SetPaused(false);
+
+ tb->stepButton->deactivate();
+ tb->stepButton->image(tb->stepImage[1]);
+
+ tb->pauseButton->activate();
+ tb->pauseButton->image(tb->pauseImage[0]);
+
+ tb->playButton->image( tb->playImage[1] );
+ tb->playButton->deactivate();
+ }
+
+ w->clear_visible_focus();
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Play pause button callback
+void Toolbar::PauseButtonCB( Fl_Widget *w, void *data )
+{
+ Toolbar *tb = (Toolbar*)(data);
+
+ if (!Simulator::Instance()->IsPaused())
+ {
+ Simulator::Instance()->SetPaused(true);
+
+ tb->stepButton->image( tb->stepImage[0] );
+ tb->stepButton->activate();
+
+ tb->playButton->image( tb->playImage[0] );
+ tb->playButton->activate();
+
+ tb->pauseButton->image( tb->pauseImage[1] );
+ tb->pauseButton->deactivate();
+ }
+
+ w->clear_visible_focus();
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Set button callback
+void Toolbar::StepButtonCB( Fl_Widget *w, void * /*data*/ )
+{
+ Simulator::Instance()->SetStepInc( true );
+ w->clear_visible_focus();
+}
Added: code/gazebo/trunk/server/gui/Toolbar.hh
===================================================================
--- code/gazebo/trunk/server/gui/Toolbar.hh (rev 0)
+++ code/gazebo/trunk/server/gui/Toolbar.hh 2009-11-17 21:50:42 UTC (rev
8416)
@@ -0,0 +1,71 @@
+/*
+ * Gazebo - Outdoor Multi-Robot Simulator
+ * Copyright (C) 2003
+ * Nate Koenig & Andrew Howard
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+/* Desc: Toolbar
+ * Author: Nate Koenig
+ * Date: 13 Feb 2006
+ * SVN: $Id: Toolbar.hh 8381 2009-11-10 17:10:09Z natepak $
+ */
+
+#ifndef TOOLBAR_HH
+#define TOOLBAR_HH
+
+#include <FL/Fl_Group.H>
+
+class Fl_Button;
+class Fl_Box;
+
+namespace gazebo
+{
+ class Common;
+
+ /// \brief Toolbar
+ class Toolbar : public Fl_Group
+ {
+ /// \brief Constructor
+ public: Toolbar (int x, int y, int w, int h, const char *l=0);
+
+ /// \brief Destructor
+ public: virtual ~Toolbar();
+
+ /// \brief Update the toolbar data
+ public: void Update();
+
+ /// \brief Play pause button callback
+ public: static void PlayButtonCB( Fl_Widget *w, void *data );
+
+ /// \brief Pause pause button callback
+ public: static void PauseButtonCB( Fl_Widget *w, void *data );
+
+ /// \brief Set button callback
+ public: static void StepButtonCB( Fl_Widget * /*w*/, void * /*data*/ );
+
+ private: Fl_Button *playButton;
+ private: Fl_Button *pauseButton;
+ private: Fl_Button *stepButton;
+
+ private: Fl_RGB_Image *playImage[2];
+ private: Fl_RGB_Image *pauseImage[2];
+ private: Fl_RGB_Image *stepImage[2];
+ };
+
+}
+
+#endif
Modified: code/gazebo/trunk/server/physics/Body.cc
===================================================================
--- code/gazebo/trunk/server/physics/Body.cc 2009-11-17 19:15:17 UTC (rev
8415)
+++ code/gazebo/trunk/server/physics/Body.cc 2009-11-17 21:50:42 UTC (rev
8416)
@@ -687,4 +687,12 @@
this->cgVisual->SetVisible(show);
}
+////////////////////////////////////////////////////////////////////////////////
+/// Set whether this entity has been selected by the user through the gui
+bool Body::SetSelected( bool s )
+{
+ Entity::SetSelected(s);
+ if (s == false)
+ this->SetEnabled(true);
+}
Modified: code/gazebo/trunk/server/physics/Body.hh
===================================================================
--- code/gazebo/trunk/server/physics/Body.hh 2009-11-17 19:15:17 UTC (rev
8415)
+++ code/gazebo/trunk/server/physics/Body.hh 2009-11-17 21:50:42 UTC (rev
8416)
@@ -91,6 +91,10 @@
/// \brief Set whether this body is enabled
public: virtual void SetEnabled(bool enable) const = 0;
+ /// \brief Set whether this entity has been selected by the user
+ /// through the gui
+ public: virtual bool SetSelected( bool s );
+
/// \brief Update the center of mass
public: virtual void UpdateCoM();
Modified: code/gazebo/trunk/server/physics/bullet/BulletBody.cc
===================================================================
--- code/gazebo/trunk/server/physics/bullet/BulletBody.cc 2009-11-17
19:15:17 UTC (rev 8415)
+++ code/gazebo/trunk/server/physics/bullet/BulletBody.cc 2009-11-17
21:50:42 UTC (rev 8416)
@@ -290,7 +290,10 @@
if (!this->rigidBody)
return;
- this->rigidBody->setActivationState(WANTS_DEACTIVATION);
+ if (enable)
+ this->rigidBody->activate(true);
+ else
+ this->rigidBody->setActivationState(WANTS_DEACTIVATION);
}
/////////////////////////////////////////////////////////////////////
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit