!B (Sandbox) (CE-21795) Importing models with multisubmaterials via fbx switches...
[CRYENGINE.git] / Code / Sandbox / Plugins / EditorSchematyc2 / Editor / MainWindow.cpp
blob5db71080142d6f998ab549286f858730021a59be
1 // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
3 #include "StdAfx.h"
4 #include "MainWindow.h"
6 #include <QAction.h>
7 #include <QDockWidget.h>
8 #include <QToolbar.h>
10 #include "BrowserWidget.h"
11 #include "DetailWidget.h"
12 #include "DocGraphView.h"
13 #include "LogWidget.h"
14 #include "PreviewWidget.h"
16 namespace Schematyc2
18 // TODO pavloi 2017.01.24: window gets automatically registered and can't be disabled with sc_ExperimentalFeatures CVar. Disable its registration for now.
19 //REGISTER_VIEWPANE_FACTORY(CMainWindow, "Schematyc Qt", "Tools", false);
21 CMainWindow::CMainWindow()
23 QMainWindow::setWindowFlags(Qt::Widget);
25 m_pBrowser = new CBrowserWidget(this);
26 m_pDetail = new CDetailWidget(this);
27 m_pGraph = new CDocGraphWidget(this, AfxGetMainWnd());
28 m_pLog = new CLogWidget(this);
29 m_pPreview = new CPreviewWidget(this);
31 QToolBar* pToolBar = new QToolBar("Toolbar");
32 pToolBar->setObjectName("Schematyc Toolbar");
34 QAction* pSaveAllAction = pToolBar->addAction(QIcon("editor/icons/save.png"), QString());
35 pSaveAllAction->setToolTip(QString("Save All"));
36 connect(pSaveAllAction, SIGNAL(triggered()), this, SLOT(OnToolbarSaveAll()));
38 QMainWindow::addToolBar(pToolBar);
41 m_pBrowser->InitLayout();
42 m_pDetail->InitLayout();
43 m_pGraph->InitLayout();
44 m_pLog->InitLayout();
45 m_pPreview->InitLayout();
47 QMainWindow::setCentralWidget(m_pGraph);
48 DockWidget(m_pBrowser, "Browser", Qt::LeftDockWidgetArea);
49 DockWidget(m_pDetail, "Detail", Qt::RightDockWidgetArea);
50 DockWidget(m_pPreview, "Preview", Qt::BottomDockWidgetArea);
51 DockWidget(m_pLog, "Log", Qt::BottomDockWidgetArea);
53 m_pBrowser->Signals().selection.Connect(BrowserSelectionSignal::Delegate::FromMemberFunction<CMainWindow, &CMainWindow::OnBrowserSelection>(*this), m_connectionScope);
56 const char* CMainWindow::GetPaneTitle() const
58 return "Schematyc Qt";
61 void CMainWindow::OnEditorNotifyEvent(EEditorNotifyEvent event)
63 switch(event)
65 case eNotify_OnIdleUpdate:
67 m_pPreview->Update();
68 break;
73 void CMainWindow::OnUriReceived(const char* szUri) {}
75 void CMainWindow::Serialize(Serialization::IArchive& archive) {}
77 void CMainWindow::OnToolbarSaveAll()
79 GetSchematyc()->GetScriptRegistry().Save();
82 void CMainWindow::DockWidget(QWidget* pWidget, const char* szName, Qt::DockWidgetArea area)
84 QDockWidget* pDockWidget = new QDockWidget(szName, this);
85 pDockWidget->setObjectName(szName);
86 pDockWidget->setWidget(pWidget);
87 QMainWindow::addDockWidget(area, pDockWidget);
90 void CMainWindow::OnBrowserSelection(IScriptElement* pScriptElement)
92 m_pDetail->Detach();
93 if(pScriptElement)
95 IDetailItemPtr pDetailItem = std::make_shared<CScriptElementDetailItem>(nullptr, pScriptElement);
96 m_pDetail->AttachItem(pDetailItem);
98 IScriptGraphExtension* pScriptGraphExtension = static_cast<IScriptGraphExtension*>(pScriptElement->GetExtensions().QueryExtension(EScriptExtensionId::Graph));
99 if(pScriptGraphExtension)
101 #ifdef CRY_USE_SCHEMATYC2_BRIDGE
102 m_pGraph->LoadGraph(GetSchematyc()->GetScriptRegistry().Wrapfile(&pScriptElement->GetFile()), pScriptGraphExtension); //HARDCODED:
103 #else
104 m_pGraph->LoadGraph(&pScriptElement->GetFile(), pScriptGraphExtension);
105 #endif //CRY_USE_SCHEMATYC2_BRIDGE