Skip to content
Snippets Groups Projects
Commit 529fef35 authored by Joseph Mirabel's avatar Joseph Mirabel Committed by Joseph Mirabel
Browse files

PickHandler also returns position of mouse click on world frame.

parent 9b2c34c3
No related branches found
No related tags found
No related merge requests found
......@@ -58,7 +58,7 @@ namespace gepetto {
WindowsManager::WindowID windowID () const;
signals:
void selected (QString name);
void selected (QString name, QVector3D positionInWorldFrame);
void requestMotion (graphics::NodePtr_t node, graphics::Node::Arrow direction,
float speed);
......@@ -85,10 +85,8 @@ signals:
virtual void paintEvent( QPaintEvent* paintEvent );
private slots:
void transferSelected (QString name);
private:
void emitSelected (QString name, QVector3D positionInWorldFrame);
osgGA::EventQueue* getEventQueue() const;
osg::ref_ptr<osgQt::GraphicsWindowQt> graphicsWindow_;
......
......@@ -16,7 +16,7 @@ namespace gepetto {
Q_OBJECT
public:
PickHandler (WindowsManagerPtr_t wsm);
PickHandler (OSGWidget* parent, WindowsManagerPtr_t wsm);
virtual ~PickHandler();
......@@ -31,9 +31,6 @@ namespace gepetto {
void bodyTreeCurrentChanged (const QModelIndex &current,
const QModelIndex &previous);
signals:
void selected (QString name);
private:
std::list <graphics::NodePtr_t> computeIntersection (osgGA::GUIActionAdapter& aa,
const float& x, const float& y);
......
......@@ -85,7 +85,7 @@ class Plugin(QtGui.QDockWidget):
### If present, this function is called when a new OSG Widget is created.
def osgWidget(self, osgWindow):
osgWindow.connect('selected(QString)', self.selected)
osgWindow.connect('selected(QString,QVector3D)', self.selected)
def resetConnection(self):
self.client = Client()
......@@ -93,5 +93,5 @@ class Plugin(QtGui.QDockWidget):
def refresh(self):
self.nodeCreator.update()
def selected(self, name):
QtGui.QMessageBox.information(self, "Selected object", name)
def selected(self, name, posInWorldFrame):
QtGui.QMessageBox.information(self, "Selected object", name + " " + str(posInWorldFrame))
......@@ -81,7 +81,7 @@ namespace gepetto {
: QWidget( parent, f )
, graphicsWindow_()
, wsm_ (wm)
, pickHandler_ (new PickHandler (wsm_))
, pickHandler_ (new PickHandler (this, wsm_))
, wid_ (-1)
, wm_ ()
, viewer_ (new osgViewer::Viewer)
......@@ -134,8 +134,6 @@ namespace gepetto {
1);
viewer_->addEventHandler(screenCapture_);
viewer_->addEventHandler(new osgViewer::HelpHandler);
connect(pickHandler_, SIGNAL(selected(QString)), SLOT(transferSelected(QString)));
viewer_->addEventHandler(pickHandler_);
wid_ = wm->createWindow (name.c_str(), viewer_, graphicsWindow_.get());
......@@ -155,8 +153,8 @@ namespace gepetto {
render_.start ();
parent->bodyTree()->connect(this,
SIGNAL (selected(QString)), SLOT (selectBodyByName(QString)));
parent->connect(this, SIGNAL (selected(QString)),
SIGNAL (selected(QString,QVector3D)), SLOT (selectBodyByName(QString)));
parent->connect(this, SIGNAL (selected(QString,QVector3D)),
SLOT (requestSelectJointFromBodyName(QString)));
}
......@@ -198,9 +196,9 @@ namespace gepetto {
// wsm_->lock().unlock();
}
void gepetto::gui::OSGWidget::transferSelected(QString name)
void OSGWidget::emitSelected(QString name, QVector3D positionInWorldFrame)
{
emit selected (name);
emit selected (name, positionInWorldFrame);
}
void OSGWidget::onHome()
......
......@@ -20,8 +20,10 @@
namespace gepetto {
namespace gui {
PickHandler::PickHandler(WindowsManagerPtr_t wsm)
: wsm_ (wsm)
PickHandler::PickHandler(OSGWidget *parent, WindowsManagerPtr_t wsm)
: QObject (parent)
, wsm_ (wsm)
, parent_ (parent)
, last_ ()
, pushed_ (false)
, lastX_ (0)
......@@ -130,7 +132,9 @@ namespace gepetto {
if (boost::regex_match (n->getID(), boost::regex ("^.*_[0-9]+$")))
continue;
select (n);
emit selected (QString::fromStdString(n->getID ()));
osg::Vec3d p = it->getWorldIntersectPoint();
QVector3D pWF (p[0],p[1],p[2]);
parent_->emitSelected(QString::fromStdString(n->getID ()), pWF);
return nodes;
// nodes.push_back(n);
// break;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment