From e4483cb287e103a0afc547a5372acaef1422173d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20M=C3=B6bius?= Date: Mon, 19 Mar 2012 15:07:17 +0000 Subject: [PATCH] Always bring property widget to front when Set Properties is clicked. refs #485 part 2 git-svn-id: http://www.openflipper.org/svnrepo/OpenFlipper/branches/Free@14161 383ad7c9-94d9-4d36-a494-682f7c89f535 --- MoveContextMenu.cc | 145 ++++++++++++++++++++++++--------------------- 1 file changed, 79 insertions(+), 66 deletions(-) diff --git a/MoveContextMenu.cc b/MoveContextMenu.cc index 4867ea2..f075e53 100644 --- a/MoveContextMenu.cc +++ b/MoveContextMenu.cc @@ -88,81 +88,94 @@ void MovePlugin::hideManipulator() { void MovePlugin::showProps(){ - QVariant contextObject = contextAction_->data(); - int nodeId = contextObject.toInt(); + QVariant contextObject = contextAction_->data(); + int nodeId = contextObject.toInt(); - if ( nodeId == -1) - return; + if (nodeId == -1) + return; - // Get Node - ACG::SceneGraph::BaseNode* node = ACG::SceneGraph::find_node( PluginFunctions::getSceneGraphRootNode(), nodeId ); + // Get Node + ACG::SceneGraph::BaseNode* node = ACG::SceneGraph::find_node(PluginFunctions::getSceneGraphRootNode(), nodeId); - ACG::SceneGraph::QtTranslationManipulatorNode* mNode; - mNode = dynamic_cast(node); + ACG::SceneGraph::QtTranslationManipulatorNode* mNode; + mNode = dynamic_cast(node); - if(mNode == 0) { - // Not a manipulator node - return; - } + if (mNode == 0) { + // Not a manipulator node + return; + } - int objectId = mNode->getIdentifier(); + int objectId = mNode->getIdentifier(); - BaseObjectData* obj; - if ( ! PluginFunctions::getObject(objectId,obj) ) - return; + BaseObjectData* obj; + if (!PluginFunctions::getObject(objectId, obj)) + return; - // Check if the widget has been created and show it. - movePropsWidget* pW = getDialogWidget(obj); - if ( pW != 0 ) { - pW->show(); - return; - } + // Check if the widget has been created and show it. + movePropsWidget* pW = getDialogWidget(obj); + if (pW != 0) { + pW->show(); + pW->raise(); + return; + } - pW = new movePropsWidget(obj->id()); - pW->setWindowTitle(QString((mNode->name()).c_str())); - - connect(pW->posButton,SIGNAL(clicked() ),this,SLOT(slotSetPosition())); - connect(pW->axisAButton,SIGNAL(clicked() ),this,SLOT(slotToggleAxisA())); - connect(pW->axisBButton,SIGNAL(clicked() ),this,SLOT(slotToggleAxisB())); - connect(pW->dirButton,SIGNAL(clicked() ),this,SLOT(slotSetDirection())); - - connect(pW->transButton,SIGNAL(clicked() ),this,SLOT(slotTranslation())); - connect(pW->rotButton,SIGNAL(clicked() ),this,SLOT(slotRotate())); - connect(pW->scaleButton,SIGNAL(clicked() ),this,SLOT(slotScale())); - - connect(pW->projectTangentButton,SIGNAL(clicked() ),this,SLOT(slotProjectToTangentPlane())); - connect(pW->moveManipToCOG,SIGNAL(clicked() ),this,SLOT(slotMoveManipToCOG())); - - // Values - BaseObjectData* object; - if ( PluginFunctions::getObject(lastActiveManipulator_ , object) ) { - if ( object->manipulatorNode()->visible() ) { - const OpenMesh::Vec3d pos = object->manipulatorNode()->center(); - - QString num; + pW = new movePropsWidget(obj->id()); + pW->setWindowTitle(QString((mNode->name()).c_str())); + + connect(pW->posButton, SIGNAL(clicked() ), this, SLOT(slotSetPosition())); + connect(pW->axisAButton, SIGNAL(clicked() ), this, SLOT(slotToggleAxisA())); + connect(pW->axisBButton, SIGNAL(clicked() ), this, SLOT(slotToggleAxisB())); + connect(pW->dirButton, SIGNAL(clicked() ), this, SLOT(slotSetDirection())); + + connect(pW->transButton, SIGNAL(clicked() ), this, SLOT(slotTranslation())); + connect(pW->rotButton, SIGNAL(clicked() ), this, SLOT(slotRotate())); + connect(pW->scaleButton, SIGNAL(clicked() ), this, SLOT(slotScale())); + + connect(pW->projectTangentButton, SIGNAL(clicked() ), this, SLOT(slotProjectToTangentPlane())); + connect(pW->moveManipToCOG, SIGNAL(clicked() ), this, SLOT(slotMoveManipToCOG())); + + // Values + BaseObjectData* object; + if (PluginFunctions::getObject(lastActiveManipulator_, object)) { + if (object->manipulatorNode()->visible()) { + const OpenMesh::Vec3d pos = object->manipulatorNode()->center(); + + QString num; + + num = QString::number(pos[0]); + pW->posx->setText(num); + num = QString::number(pos[1]); + pW->posy->setText(num); + num = QString::number(pos[2]); + pW->posz->setText(num); + + OpenMesh::Vec3d direction = object->manipulatorNode()->directionX(); + num = QString::number(direction[0]); + pW->dirxx->setText(num); + num = QString::number(direction[1]); + pW->dirxy->setText(num); + num = QString::number(direction[2]); + pW->dirxz->setText(num); + + direction = object->manipulatorNode()->directionY(); + num = QString::number(direction[0]); + pW->diryx->setText(num); + num = QString::number(direction[1]); + pW->diryy->setText(num); + num = QString::number(direction[2]); + pW->diryz->setText(num); + + direction = object->manipulatorNode()->directionZ(); + num = QString::number(direction[0]); + pW->dirzx->setText(num); + num = QString::number(direction[1]); + pW->dirzy->setText(num); + num = QString::number(direction[2]); + pW->dirzz->setText(num); - num = QString::number(pos[0]); pW->posx->setText(num); - num = QString::number(pos[1]); pW->posy->setText(num); - num = QString::number(pos[2]); pW->posz->setText(num); - - OpenMesh::Vec3d direction = object->manipulatorNode()->directionX(); - num = QString::number(direction[0]); pW->dirxx->setText(num); - num = QString::number(direction[1]); pW->dirxy->setText(num); - num = QString::number(direction[2]); pW->dirxz->setText(num); - - direction = object->manipulatorNode()->directionY(); - num = QString::number(direction[0]); pW->diryx->setText(num); - num = QString::number(direction[1]); pW->diryy->setText(num); - num = QString::number(direction[2]); pW->diryz->setText(num); - - direction = object->manipulatorNode()->directionZ(); - num = QString::number(direction[0]); pW->dirzx->setText(num); - num = QString::number(direction[1]); pW->dirzy->setText(num); - num = QString::number(direction[2]); pW->dirzz->setText(num); - - } } + } - pW->show(); - propsWindows_.append(pW); + pW->show(); + propsWindows_.append(pW); } -- GitLab