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
94
95
96
    // Values
    BaseObjectData* object;
    if ( PluginFunctions::getObject(lastActiveManipulator_ , object) ) {
	if (  object->manipulatorNode()->visible() ) {
	    const TriMesh::Point pos = object->manipulatorNode()->center();

	    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

	    TriMesh::Point 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
}