MoveContextMenu.cc 5.99 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
/*===========================================================================*\
 *                                                                           *
 *                              OpenFlipper                                  *
 *      Copyright (C) 2001-2009 by Computer Graphics Group, RWTH Aachen      *
 *                           www.openflipper.org                             *
 *                                                                           *
 *---------------------------------------------------------------------------*
 *  This file is part of OpenFlipper.                                        *
 *                                                                           *
 *  OpenFlipper is free software: you can redistribute it and/or modify      *
 *  it under the terms of the GNU Lesser General Public License as           *
 *  published by the Free Software Foundation, either version 3 of           *
 *  the License, or (at your option) any later version with the              *
 *  following exceptions:                                                    *
 *                                                                           *
 *  If other files instantiate templates or use macros                       *
 *  or inline functions from this file, or you compile this file and         *
 *  link it with other files to produce an executable, this file does        *
 *  not by itself cause the resulting executable to be covered by the        *
 *  GNU Lesser General Public License. This exception does not however       *
 *  invalidate any other reasons why the executable file might be            *
 *  covered by the GNU Lesser General Public License.                        *
 *                                                                           *
 *  OpenFlipper 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 Lesser General Public License for more details.                      *
 *                                                                           *
 *  You should have received a copy of the GNU LesserGeneral Public          *
 *  License along with OpenFlipper. If not,                                  *
 *  see <http://www.gnu.org/licenses/>.                                      *
 *                                                                           *
\*===========================================================================*/

/*===========================================================================*\
 *                                                                           *
 *   $Revision: 83 $                                                         *
 *   $Author: moebius $                                                      *
 *   $Date: 2009-02-27 17:31:45 +0100 (Fr, 27. Feb 2009) $                   *
 *                                                                           *
\*===========================================================================*/
42 43 44 45 46 47 48 49

#include "MovePlugin.hh"
#include <ACG/QtScenegraph/QtManipulatorNode.hh>

#include <OpenFlipper/BasePlugin/PluginFunctions.hh>

//***********************************************************************************

50
void MovePlugin::showProps(){
51

52
    QVariant contextObject = contextAction_->data();
53
    int objectId = contextObject.toInt();
54

55 56
    if ( objectId == -1)
	return;
57

58 59
    // Get Node
    ACG::SceneGraph::BaseNode* node = ACG::SceneGraph::find_node( PluginFunctions::getSceneGraphRootNode(), objectId );
60

61 62
    ACG::SceneGraph::QtTranslationManipulatorNode* mNode;
    mNode = dynamic_cast<ACG::SceneGraph::QtTranslationManipulatorNode*>(node);
63

64 65 66 67
    if(mNode == 0) {
	// Not a manipulator node
	return;
    }
68

69
    int meshID = mNode->getIdentifier();
70 71 72 73

    BaseObjectData* obj;
    if ( ! PluginFunctions::getObject(meshID,obj) )
        return;
74

75
    movePropsWidget* pW = new movePropsWidget(obj);
Mike Kremer's avatar
Mike Kremer committed
76
    pW->setWindowTitle(QString((mNode->name()).c_str()));
77

78 79 80 81
    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()));
82

83
    connect(pW->transButton,SIGNAL(clicked() ),this,SLOT(slotTranslation()));
84 85
    connect(pW->rotButton,SIGNAL(clicked() ),this,SLOT(slotRotate()));
    connect(pW->scaleButton,SIGNAL(clicked() ),this,SLOT(slotScale()));
86

87 88
    connect(pW->projectTangentButton,SIGNAL(clicked() ),this,SLOT(slotProjectToTangentPlane()));
    connect(pW->moveManipToCOG,SIGNAL(clicked() ),this,SLOT(slotMoveManipToCOG()));
89

90 91 92 93
    // Values
    BaseObjectData* object;
    if ( PluginFunctions::getObject(lastActiveManipulator_ , object) ) {
	if (  object->manipulatorNode()->visible() ) {
94
	    const OpenMesh::Vec3d pos = object->manipulatorNode()->center();
95 96

	    QString num;
97

98 99 100
	    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);
101

102
	    OpenMesh::Vec3d direction = object->manipulatorNode()->directionX();
103 104 105
	    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);
106

107
	    direction = object->manipulatorNode()->directionY();
108 109 110
	    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);
111

112
	    direction = object->manipulatorNode()->directionZ();
113 114 115
	    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);
116

117 118 119
	}
    }

120 121
    pW->show();
    propsWindows_.append(pW);
122
}