99#include < QWidgetAction>
1010#include < QFormLayout>
1111#include < QLineEdit>
12- #include < QDoubleValidator >
12+ #include < QToolButton >
1313
1414#include < json.h>
1515#include < bson.h>
@@ -65,12 +65,12 @@ class WorldObserver : public Object {
6565 void setSceneComposer (SceneComposer *composer) {
6666 m_sceneComposer = composer;
6767
68- World *world = m_sceneComposer-> currentWorld ();
68+ World *world = Engine::world ();
6969 if (m_world != world) {
7070 if (m_world) {
7171 disconnect (m_world, 0 , 0 , 0 );
7272 }
73- m_world = m_sceneComposer-> currentWorld () ;
73+ m_world = world ;
7474
7575 connect (m_world, _SIGNAL (sceneLoaded ()), this , _SLOT (onSceneUpdated ()));
7676 connect (m_world, _SIGNAL (sceneUnloaded ()), this , _SLOT (onSceneUpdated ()));
@@ -81,7 +81,7 @@ class WorldObserver : public Object {
8181
8282private:
8383 void onSceneUpdated () {
84- m_sceneComposer->worldUpdated (m_world );
84+ m_sceneComposer->updated ( );
8585 }
8686
8787private:
@@ -131,45 +131,27 @@ SceneComposer::SceneComposer(QWidget *parent) :
131131
132132 m_worldObserver->setSceneComposer (this );
133133
134- QDoubleValidator *validator = new QDoubleValidator (0 .01f , DBL_MAX, 4 , this );
135- validator->setLocale (QLocale (" C" ));
136-
137134 QWidget *snapWidget = new QWidget ();
138135
139136 QFormLayout *formLayout = new QFormLayout (snapWidget);
140137 snapWidget->setLayout (formLayout);
141138
142139 int index = 0 ;
143140 for (auto &it : m_controller->tools ()) {
144- QPushButton *tool = new QPushButton ();
145- tool->setProperty (" blue" , true );
146- tool->setProperty (" checkred" , true );
147- tool->setCheckable (true );
148- tool->setAutoExclusive (true );
149- tool->setIcon (QIcon (it->icon ()));
150- tool->setObjectName (it->name ());
151- QString shortcut = it->shortcut ();
152- tool->setShortcut (QKeySequence (shortcut));
153- tool->setToolTip (it->toolTip () + (!shortcut.isEmpty () ? (" (" + shortcut + " )" ) : " " ));
141+ QPushButton *tool = it->button ();
154142
155143 ui->viewportLayout ->insertWidget (index, tool);
156144
157- connect (tool, SIGNAL (clicked ()), m_controller, SLOT (onChangeTool ()));
158145 if (index == 0 ) {
159146 tool->click ();
160147 }
161148
162- float snap = it->snap ();
163- if (snap > 0 .0f ) {
164- QLineEdit *editor = new QLineEdit (snapWidget);
165- editor->setValidator (validator);
166- editor->setObjectName (it->name ());
167- editor->setText (QString::number ((double )snap, ' f' , 2 ));
168- formLayout->addRow (it->name (), editor);
169-
170- m_snapSettings[it->name ()] = editor;
171-
149+ QLineEdit *editor = it->snapWidget ();
150+ if (editor) {
172151 connect (editor, &QLineEdit::editingFinished, this , &SceneComposer::onChangeSnap);
152+
153+ editor->setParent (snapWidget);
154+ formLayout->addRow (editor->objectName (), editor);
173155 }
174156
175157 index++;
@@ -230,7 +212,6 @@ SceneComposer::SceneComposer(QWidget *parent) :
230212 m_sceneMenu.addSeparator ();
231213 m_sceneMenu.addAction (createAction (tr (" Add New Scene" ), SLOT (onNewAsset ()), false ));
232214
233-
234215 // Add Component Button
235216 m_componentButton->setProperty (" blue" , true );
236217 m_componentButton->setPopupMode (QToolButton::InstantPopup);
@@ -280,7 +261,7 @@ void SceneComposer::restoreState(const VariantMap &data) {
280261 float snap = field->second .toFloat ();
281262 it->setSnap (snap);
282263
283- QLineEdit *editor = m_snapSettings. value ( it->name (), nullptr );
264+ QLineEdit *editor = it->snapWidget ( );
284265 if (editor) {
285266 editor->setText (QString::number ((double )snap, ' f' , 2 ));
286267 }
@@ -295,14 +276,6 @@ void SceneComposer::takeScreenshot() {
295276 result.save (" MainWindow-" + QDateTime::currentDateTime ().toString (" ddMMyy-HHmmss" ) + " .png" );
296277}
297278
298- World *SceneComposer::currentWorld () const {
299- return Engine::world ();
300- }
301-
302- void SceneComposer::worldUpdated (World *graph) {
303- emit updated ();
304- }
305-
306279void SceneComposer::onDrop (QDropEvent *event) {
307280 m_controller->onDrop (event);
308281}
@@ -547,7 +520,7 @@ void SceneComposer::onNewAsset() {
547520void SceneComposer::loadAsset (AssetConverterSettings *settings) {
548521 AssetEditor::loadAsset (settings);
549522
550- if (settings->typeName () == " Map" ) {
523+ if (settings->typeName () == MetaType::name< Map>() ) {
551524 if (loadScene (settings->source (), false )) {
552525 UndoManager::instance ()->clear ();
553526 }
@@ -581,7 +554,7 @@ void SceneComposer::onCreateActor() {
581554 Scene *scene = m_controller->isolatedActor () ? m_isolationScene : Engine::world ()->activeScene ();
582555
583556 if (scene) {
584- UndoManager::instance ()->push (new CreateObject (" Actor" , scene, m_controller));
557+ UndoManager::instance ()->push (new CreateObject (MetaType::name< Actor>() , scene, m_controller));
585558 }
586559}
587560
@@ -753,7 +726,7 @@ bool SceneComposer::loadScene(QString path, bool additive) {
753726 }
754727
755728 emit objectsHierarchyChanged (Engine::world ());
756- worldUpdated ( Engine::world () );
729+ emit updated ( );
757730 return true ;
758731 }
759732 }
0 commit comments