1 // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
4 #include "MainWindow.h"
7 #include <QDockWidget.h>
10 #include "BrowserWidget.h"
11 #include "DetailWidget.h"
12 #include "DocGraphView.h"
13 #include "LogWidget.h"
14 #include "PreviewWidget.h"
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();
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
)
65 case eNotify_OnIdleUpdate
:
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
)
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:
104 m_pGraph
->LoadGraph(&pScriptElement
->GetFile(), pScriptGraphExtension
);
105 #endif //CRY_USE_SCHEMATYC2_BRIDGE