MoveContextMenu.cc 4.28 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//=============================================================================
//
//                               OpenFlipper
//        Copyright (C) 2008 by Computer Graphics Group, RWTH Aachen
//                           www.openflipper.org
//
//-----------------------------------------------------------------------------
//
//                                License
//
//  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.
15
//
16
17
18
19
//  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.
20
//
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//  You should have received a copy of the GNU Lesser General Public License
//  along with OpenFlipper.  If not, see <http://www.gnu.org/licenses/>.
//
//-----------------------------------------------------------------------------
//
//   $Revision: 4795 $
//   $Author: moebius $
//   $Date: 2009-02-12 10:05:59 +0100 (Thu, 12 Feb 2009) $
//
//=============================================================================

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

#include <OpenFlipper/BasePlugin/PluginFunctions.hh>

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

39
void MovePlugin::showProps(){
40

41
    QVariant contextObject = contextAction_->data();
42
    int objectId = contextObject.toInt();
43

44
45
    if ( objectId == -1)
	return;
46

47
48
    // Get Node
    ACG::SceneGraph::BaseNode* node = ACG::SceneGraph::find_node( PluginFunctions::getSceneGraphRootNode(), objectId );
49

50
51
    ACG::SceneGraph::QtTranslationManipulatorNode* mNode;
    mNode = dynamic_cast<ACG::SceneGraph::QtTranslationManipulatorNode*>(node);
52

53
54
55
56
    if(mNode == 0) {
	// Not a manipulator node
	return;
    }
57

58
    int meshID = mNode->getIdentifier();
59
60
61
62

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

64
    movePropsWidget* pW = new movePropsWidget(obj);
Mike Kremer's avatar
Mike Kremer committed
65
    pW->setWindowTitle(QString((mNode->name()).c_str()));
66

67
68
    connect(pW->targetObjects,SIGNAL(stateChanged(int) ),this,SLOT(setAllTargets(int)));

69
70
71
72
    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()));
73

74
    connect(pW->transButton,SIGNAL(clicked() ),this,SLOT(slotTranslation()));
75
76
    connect(pW->rotButton,SIGNAL(clicked() ),this,SLOT(slotRotate()));
    connect(pW->scaleButton,SIGNAL(clicked() ),this,SLOT(slotScale()));
77

78
79
    connect(pW->projectTangentButton,SIGNAL(clicked() ),this,SLOT(slotProjectToTangentPlane()));
    connect(pW->moveManipToCOG,SIGNAL(clicked() ),this,SLOT(slotMoveManipToCOG()));
80

81
82
83
84
85
86
87
    // Values
    BaseObjectData* object;
    if ( PluginFunctions::getObject(lastActiveManipulator_ , object) ) {
	if (  object->manipulatorNode()->visible() ) {
	    const TriMesh::Point pos = object->manipulatorNode()->center();

	    QString num;
88

89
90
91
	    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);
92
93

	    TriMesh::Point direction = object->manipulatorNode()->directionX();
94
95
96
	    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);
97

98
	    direction = object->manipulatorNode()->directionY();
99
100
101
	    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);
102

103
	    direction = object->manipulatorNode()->directionZ();
104
105
106
	    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);
107

108
109
110
	}
    }

111
112
    pW->show();
    propsWindows_.append(pW);
113
}