38 collisionMeshToggleButton(new QPushButton(this)),
39 rotateManipulatorToggleButton(new QPushButton(this)),
40 translateManipulatorToggleButton(new QPushButton(this)),
41 undoButton(new QPushButton(this)),
42 redoButton(new QPushButton(this)),
43 removeSelectedObjectsButton(new QPushButton(this)),
44 editorToggleButton(new QPushButton(this)),
45 viewerToggleButton(new QPushButton(this)),
46 editorViewerButtonGroup(new QButtonGroup(this)),
47 mainLayout(new QVBoxLayout(this)),
48 leftButtonsSize(30, 30),
49 buttonColor(
"lightgray"),
52 showCollisionMesh(false),
53 showTranslateManipulator(false),
54 showRotateManipulator(false)
56 setPalette(Qt::transparent);
58 setObjectName(QString::fromUtf8(
"SceneEditorWidget"));
60 mainLayout->addWidget(sceneGraph);
62 this->setLayout(mainLayout);
64 editorViewerButtonGroup->setExclusive(
true);
66 QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
67 sizePolicy.setHorizontalStretch(0);
68 sizePolicy.setVerticalStretch(0);
70 collisionMeshToggleButton->setObjectName(QString::fromUtf8(
"collisionMeshToggleButton"));
71 sizePolicy.setHeightForWidth(collisionMeshToggleButton->sizePolicy().hasHeightForWidth());
72 collisionMeshToggleButton->setSizePolicy(sizePolicy);
74 icon1.addFile(QString::fromUtf8(
":/images/Collision.png"), QSize(), QIcon::Normal, QIcon::Off);
75 collisionMeshToggleButton->setIcon(icon1);
76 collisionMeshToggleButton->setToolTip(tr(
"Toggle Collisionmesh"));
77 collisionMeshToggleButton->setIconSize(leftButtonsSize);
78 collisionMeshToggleButton->setCheckable(
true);
79 collisionMeshToggleButton->setFixedSize(leftButtonsSize);
80 collisionMeshToggleButton->setStyleSheet(
"background-color: " + buttonColor);
81 collisionMeshToggleButton->move(margin, margin);
82 collisionMeshToggleButton->show();
84 rotateManipulatorToggleButton->setObjectName(
85 QString::fromUtf8(
"rotateManipulatorToggleButton"));
86 sizePolicy.setHeightForWidth(rotateManipulatorToggleButton->sizePolicy().hasHeightForWidth());
87 rotateManipulatorToggleButton->setSizePolicy(sizePolicy);
89 icon2.addFile(QString::fromUtf8(
":/images/Rotate.png"), QSize(), QIcon::Normal, QIcon::Off);
90 rotateManipulatorToggleButton->setIcon(icon2);
91 rotateManipulatorToggleButton->setToolTip(tr(
"Toggle Rotationmanipulator"));
92 rotateManipulatorToggleButton->setIconSize(leftButtonsSize);
93 rotateManipulatorToggleButton->setCheckable(
true);
94 rotateManipulatorToggleButton->setFixedSize(leftButtonsSize);
95 rotateManipulatorToggleButton->setStyleSheet(
"background-color: " + buttonColor);
96 rotateManipulatorToggleButton->move(
97 margin, collisionMeshToggleButton->pos().y() + leftButtonsSize.height() + spacing);
98 rotateManipulatorToggleButton->show();
100 translateManipulatorToggleButton->setObjectName(
101 QString::fromUtf8(
"translateManipulatorToggleButton"));
102 sizePolicy.setHeightForWidth(
103 translateManipulatorToggleButton->sizePolicy().hasHeightForWidth());
104 translateManipulatorToggleButton->setSizePolicy(sizePolicy);
106 icon3.addFile(QString::fromUtf8(
":/images/Translate.png"), QSize(), QIcon::Normal, QIcon::Off);
107 translateManipulatorToggleButton->setIcon(icon3);
108 translateManipulatorToggleButton->setToolTip(tr(
"Toggle Translationmanipulator"));
109 translateManipulatorToggleButton->setIconSize(leftButtonsSize);
110 translateManipulatorToggleButton->setCheckable(
true);
111 translateManipulatorToggleButton->setFixedSize(leftButtonsSize);
112 translateManipulatorToggleButton->setStyleSheet(
"background-color: " + buttonColor);
113 translateManipulatorToggleButton->move(
114 margin, rotateManipulatorToggleButton->pos().y() + leftButtonsSize.height() + spacing);
115 translateManipulatorToggleButton->show();
118 undoButton->setObjectName(QString::fromUtf8(
"undoButton"));
119 sizePolicy.setHeightForWidth(undoButton->sizePolicy().hasHeightForWidth());
120 undoButton->setSizePolicy(sizePolicy);
122 icon4.addFile(QString::fromUtf8(
":/icons/edit-undo-3.svg"), QSize(), QIcon::Normal, QIcon::Off);
123 undoButton->setIcon(icon4);
124 undoButton->setToolTip(tr(
"Undo last Action"));
125 undoButton->setIconSize(leftButtonsSize);
126 undoButton->setFixedSize(leftButtonsSize);
127 undoButton->setStyleSheet(
"background-color: " + buttonColor);
129 margin, translateManipulatorToggleButton->pos().y() + leftButtonsSize.height() + spacing);
132 redoButton =
new QPushButton(
this);
133 redoButton->setObjectName(QString::fromUtf8(
"redoButton"));
134 sizePolicy.setHeightForWidth(redoButton->sizePolicy().hasHeightForWidth());
135 redoButton->setSizePolicy(sizePolicy);
137 icon5.addFile(QString::fromUtf8(
":/icons/edit-redo-3.svg"), QSize(), QIcon::Normal, QIcon::Off);
138 redoButton->setIcon(icon5);
139 redoButton->setToolTip(tr(
"Redo last Action"));
140 redoButton->setIconSize(leftButtonsSize);
141 redoButton->setFixedSize(leftButtonsSize);
142 redoButton->setStyleSheet(
"background-color: " + buttonColor);
143 redoButton->move(margin, undoButton->pos().y() + leftButtonsSize.height() + spacing);
146 removeSelectedObjectsButton =
new QPushButton(
this);
147 removeSelectedObjectsButton->setObjectName(QString::fromUtf8(
"removeSelectedObjectsButton"));
148 sizePolicy.setHeightForWidth(removeSelectedObjectsButton->sizePolicy().hasHeightForWidth());
149 removeSelectedObjectsButton->setSizePolicy(sizePolicy);
152 QString::fromUtf8(
":/icons/dialog-close.ico"), QSize(), QIcon::Normal, QIcon::Off);
153 removeSelectedObjectsButton->setIcon(icon6);
154 removeSelectedObjectsButton->setToolTip(tr(
"Remove selected Objects from scene"));
155 removeSelectedObjectsButton->setIconSize(leftButtonsSize);
156 removeSelectedObjectsButton->setFixedSize(leftButtonsSize);
157 removeSelectedObjectsButton->setStyleSheet(
"background-color: " + buttonColor);
158 removeSelectedObjectsButton->move(margin,
159 redoButton->pos().y() + leftButtonsSize.height() + spacing);
160 removeSelectedObjectsButton->show();
162 viewerToggleButton->setObjectName(QString::fromUtf8(
"viewerToggleButton"));
163 viewerToggleButton->setText(tr(
"Viewer"));
164 viewerToggleButton->setCheckable(
true);
165 viewerToggleButton->adjustSize();
166 viewerToggleButton->setStyleSheet(
"background-color: " + buttonColor);
167 viewerToggleButton->show();
168 editorViewerButtonGroup->addButton(viewerToggleButton, VIEWER_BUTTON_ID);
170 editorToggleButton->setObjectName(QString::fromUtf8(
"editorToggleButton"));
171 editorToggleButton->setText(tr(
"Editor"));
172 editorToggleButton->setCheckable(
true);
173 editorToggleButton->setChecked(
true);
174 editorToggleButton->adjustSize();
175 editorToggleButton->setStyleSheet(
"background-color: " + buttonColor);
176 editorToggleButton->show();
177 editorViewerButtonGroup->addButton(editorToggleButton, EDITOR_BUTTON_ID);
180 connect(undoButton, SIGNAL(released()),
this, SLOT(undoButtonReleased()));
181 connect(redoButton, SIGNAL(released()),
this, SLOT(redoButtonReleased()));
182 connect(removeSelectedObjectsButton,
185 SLOT(removeSelectedObjectsButtonReleased()));
186 connect(collisionMeshToggleButton,
187 SIGNAL(toggled(
bool)),
189 SLOT(collisionMeshToggleButtonToggled(
bool)));
190 connect(rotateManipulatorToggleButton,
191 SIGNAL(toggled(
bool)),
193 SLOT(rotateManipulatorToggleButtonToggled(
bool)));
194 connect(translateManipulatorToggleButton,
195 SIGNAL(toggled(
bool)),
197 SLOT(translateManipulatorToggleButtonToggled(
bool)));
198 connect(editorViewerButtonGroup,
199 SIGNAL(buttonClicked(
int)),
201 SLOT(editorViewerButtonGroupButtonClicked(
int)));
203 std::shared_ptr<gui::ShortcutController> shortcutController =
control->getShortcutController();
205 QPointer<QAction> undoAction(
new OverrideAction(
"Scene: Undo last Action",
this));
206 this->addAction(undoAction);
207 connect(undoAction, SIGNAL(triggered()), undoButton, SLOT(click()));
208 shortcutController->registerAction(undoAction->text(), undoAction);
210 QPointer<QAction> redoAction(
new OverrideAction(
"Scene: Redo last Action",
this));
211 this->addAction(redoAction);
212 connect(redoAction, SIGNAL(triggered()), redoButton, SLOT(click()));
213 shortcutController->registerAction(redoAction->text(), redoAction);
215 QPointer<QAction> removeSelectedObjectsAction(
217 this->addAction(removeSelectedObjectsAction);
218 connect(removeSelectedObjectsAction,
220 removeSelectedObjectsButton,
222 shortcutController->registerAction(removeSelectedObjectsAction->text(),
223 removeSelectedObjectsAction);
225 QPointer<QAction> collisionAction(
new OverrideAction(
"Scene: Toggle Collision Meshes",
this));
226 this->addAction(collisionAction);
227 connect(collisionAction, SIGNAL(triggered()), collisionMeshToggleButton, SLOT(toggle()));
228 shortcutController->registerAction(collisionAction->text(), collisionAction);
230 QPointer<QAction> rotateAction(
new OverrideAction(
"Scene: Toggle Rotation Manipulator",
this));
231 this->addAction(rotateAction);
232 connect(rotateAction, SIGNAL(triggered()), rotateManipulatorToggleButton, SLOT(toggle()));
233 shortcutController->registerAction(rotateAction->text(), rotateAction);
235 QPointer<QAction> translateAction(
236 new OverrideAction(
"Scene: Toggle Translation Manipulator",
this));
237 this->addAction(translateAction);
238 connect(translateAction, SIGNAL(triggered()), translateManipulatorToggleButton, SLOT(toggle()));
239 shortcutController->registerAction(translateAction->text(), translateAction);
241 QPointer<QAction> editorAction(
new OverrideAction(
"Scene: Switch to Editor Mode",
this));
242 this->addAction(editorAction);
243 connect(editorAction, SIGNAL(triggered()), editorToggleButton, SLOT(click()));
244 shortcutController->registerAction(editorAction->text(), editorAction);
246 QPointer<QAction> viewerAction(
new OverrideAction(
"Scene: Switch to Viewer Mode",
this));
247 this->addAction(viewerAction);
248 connect(viewerAction, SIGNAL(triggered()), viewerToggleButton, SLOT(click()));
249 shortcutController->registerAction(viewerAction->text(), viewerAction);
251 QPointer<QAction> switchEditorViewerAction(
252 new OverrideAction(
"Scene: Switch between Editor and Viewer Mode",
this));
253 this->addAction(switchEditorViewerAction);
254 connect(switchEditorViewerAction, SIGNAL(triggered()),
this, SLOT(toggleEditorViewerMode()));
255 shortcutController->registerAction(switchEditorViewerAction->text(), switchEditorViewerAction);
257 emit sizeChanged(this->size());