690 lines
20 KiB
C++
690 lines
20 KiB
C++
#include "SubWindowManager.h"
|
||
|
||
#include "Common/Types.h"
|
||
#include "Geometry/geometryData.h"
|
||
#include "GeometryCommand/GeoCommandPy.h"
|
||
#include "MainWidgets/ControlPanel.h"
|
||
#include "MainWidgets/preWindow.h"
|
||
#include "MainWindow.h"
|
||
#include "MeshData/meshSingleton.h"
|
||
#include "ModuleBase/graphWindowBase.h"
|
||
#include "PostInterface/PostProcessPy.h"
|
||
#include "PostWidgets/PostWindowBase.h"
|
||
#include "PostWidgets/RealTimeWindowBase.h"
|
||
#include "PythonModule/PyAgent.h"
|
||
#include "SARibbonBar/SARibbonBar.h"
|
||
#include "SARibbonMWUi.h"
|
||
#include "SignalHandler.h"
|
||
#include "XGenerateReport/ReportWindow.h"
|
||
|
||
#include <assert.h>
|
||
#include <QDebug>
|
||
#include <QList>
|
||
#include <QMdiArea>
|
||
#include <QMdiSubWindow>
|
||
#include <QToolBar>
|
||
|
||
namespace GUI {
|
||
SubWindowManager::SubWindowManager(MainWindow* mainwindow, QMdiArea* mdiArea,
|
||
SignalHandler* hander, MainWidget::ControlPanel* cp)
|
||
: _mainWindow(mainwindow)
|
||
, _mdiArea(mdiArea)
|
||
, _signalHander(hander)
|
||
, _controlPanel(cp)
|
||
{
|
||
connect(mainwindow, SIGNAL(closePreWindowSig()), this, SLOT(closePreWindow()));
|
||
connect(mainwindow, SIGNAL(openPostWindowSig(Post::PostWindowBase*)), this,
|
||
SLOT(openPostWindow(Post::PostWindowBase*)));
|
||
connect(mainwindow, SIGNAL(openRealTimeWindowSig(Post::RealTimeWindowBase*, int)), this,
|
||
SLOT(openRealTimeWindow(Post::RealTimeWindowBase*)));
|
||
connect(mainwindow, SIGNAL(showPostWindowInfoSig(int, int)), this,
|
||
SLOT(showPostWindowInfo(int, int)));
|
||
connect(mainwindow, SIGNAL(closePostWindowSig(Post::PostWindowBase*)), this,
|
||
SLOT(closePostWindow(Post::PostWindowBase*)));
|
||
connect(_mdiArea, SIGNAL(subWindowActivated(QMdiSubWindow*)), this,
|
||
SLOT(subWindowActived(QMdiSubWindow*)));
|
||
connect(mainwindow, SIGNAL(closeRealTimeWindowSig(Post::RealTimeWindowBase*)), this,
|
||
SLOT(closeRealTimeWindow(Post::RealTimeWindowBase*)));
|
||
connect(mainwindow, SIGNAL(openReportWindowSig(XReport::ReportWindow*)), this,
|
||
SLOT(openReportWindow(XReport::ReportWindow*)));
|
||
connect(mainwindow, SIGNAL(closeReportWindowSig(XReport::ReportWindow*)), this,
|
||
SLOT(closeReportWindow(XReport::ReportWindow*)));
|
||
connect(mainwindow, SIGNAL(saveImageSig(QString, int, Post::PostWindowBase*, int, int)),
|
||
this, SLOT(saveImage(QString, int, Post::PostWindowBase*, int, int)));
|
||
connect(mainwindow, SIGNAL(saveImage(int, int, QString)), this,
|
||
SLOT(saveImage(int, int, QString)));
|
||
|
||
connect(this, SIGNAL(setViewSig(int, QString, QString)), this,
|
||
SLOT(setView(int, QString, QString)));
|
||
connect(this,
|
||
SIGNAL(setViewValueSig(int, QString, int, int, int, int, int, int, int, int, int)),
|
||
this,
|
||
SLOT(setViewValue(int, QString, int, int, int, int, int, int, int, int, int)));
|
||
connect(this, SIGNAL(saveImageSig(int, int, int, QString, QString)), this,
|
||
SLOT(saveImage(int, int, int, QString, QString)));
|
||
connect(this, SIGNAL(openPreWindowSig()), this, SLOT(openPreWindow()));
|
||
}
|
||
SubWindowManager::~SubWindowManager() {}
|
||
void SubWindowManager::openPreWindow()
|
||
{
|
||
if(isPreWindowOpened()) {
|
||
Py::PythonAgent::getInstance()->unLock();
|
||
return;
|
||
}
|
||
if(_preWindow.first == nullptr || _preWindow.second == nullptr) {
|
||
_preWindow.second = new MainWidget::PreWindow(_mainWindow);
|
||
_preWindow.first = _mdiArea->addSubWindow(_preWindow.second);
|
||
_signalHander->updateActionsStates();
|
||
Command::GeometryCommandPy::init(_mainWindow, _preWindow.second);
|
||
}
|
||
// else
|
||
updatePreActors();
|
||
_preWindow.first->showMaximized();
|
||
_preWindow.first->setFocus();
|
||
_mdiArea->setActiveSubWindow(_preWindow.first);
|
||
_mainWindow->getUi()->actionPre_Window->setEnabled(false);
|
||
emit _mainWindow->preWindowOpenedSig(_preWindow.second);
|
||
Py::PythonAgent::getInstance()->unLock();
|
||
}
|
||
|
||
void SubWindowManager::openGeometryWindow()
|
||
{
|
||
// if (_geometryWindow.first == nullptr || _geometryWindow.second == nullptr)
|
||
//{
|
||
// _geometryWindow.second = new GenerateGeometry::GenerateGeometryWidget(_mainWindow);
|
||
// _geometryWindow.first = _mdiArea->addSubWindow(_geometryWindow.second);
|
||
// }
|
||
//_preWindow.first->showMaximized();
|
||
//_preWindow.first->setFocus();
|
||
}
|
||
|
||
QMdiArea* SubWindowManager::getMdiArea() const
|
||
{
|
||
return _mdiArea;
|
||
}
|
||
|
||
void SubWindowManager::add3dRenderPage(const QList<QToolBar*>& toolbars)
|
||
{
|
||
if(_threeD_render_page || toolbars.size() != 4)
|
||
return;
|
||
QList<QAction*> actions;
|
||
QAction* action{};
|
||
SARibbonBar* ribbon = _mainWindow->ribbonBar();
|
||
_threeD_render_page = ribbon->addCategoryPage(QObject::tr("3D Render"));
|
||
|
||
SARibbonPannel* pannel0 = _threeD_render_page->addPannel(QString());
|
||
QToolBar* toolbar0 = toolbars.at(0);
|
||
actions = toolbar0->actions();
|
||
for(int j = 0; j < actions.size(); j++) {
|
||
action = actions.at(j);
|
||
pannel0->addLargeAction(action);
|
||
}
|
||
|
||
SARibbonPannel* pannel2 = _threeD_render_page->addPannel(QString());
|
||
QToolBar* toolbar2 = toolbars.at(2);
|
||
actions = toolbar2->actions();
|
||
for(int j = 0; j < actions.size(); j++) {
|
||
action = actions.at(j);
|
||
pannel2->addLargeAction(action);
|
||
}
|
||
|
||
SARibbonPannel* pannel3 = _threeD_render_page->addPannel(QString());
|
||
QToolBar* toolbar3 = toolbars.at(3);
|
||
actions = toolbar3->actions();
|
||
for(int j = 0; j < actions.size(); j++) {
|
||
action = actions.at(j);
|
||
pannel3->addLargeAction(action);
|
||
}
|
||
|
||
SARibbonPannel* pannel1 = _threeD_render_page->addPannel(QString());
|
||
QToolBar* toolbar1 = toolbars.at(1);
|
||
actions = toolbar1->actions();
|
||
QList<QAction*> realActions;
|
||
QList<QWidget*> comboxs;
|
||
QWidget* widget{};
|
||
for(int j = 0; j < actions.size(); j++) {
|
||
action = actions.at(j);
|
||
if(action->objectName() == "QComboBox") {
|
||
widget = toolbar1->widgetForAction(action);
|
||
widget->setVisible(true);
|
||
comboxs.append(widget);
|
||
} else if(action->objectName() == "QAction")
|
||
realActions.append(action);
|
||
}
|
||
if(realActions.size() != 4 && comboxs.size() != 3)
|
||
return;
|
||
pannel1->addLargeAction(realActions.at(0));
|
||
pannel1->addLargeAction(realActions.at(1));
|
||
pannel1->addLargeAction(realActions.at(2));
|
||
pannel1->addLargeAction(realActions.at(3));
|
||
pannel1->addSmallWidget(comboxs.at(0));
|
||
pannel1->addSmallWidget(comboxs.at(1));
|
||
pannel1->addLargeWidget(comboxs.at(2));
|
||
|
||
// modify
|
||
/*
|
||
int index = ribbon->tabIndex(_threeD_render_page);
|
||
ribbon->setCurrentIndex(index);
|
||
ribbon->onCurrentRibbonTabChanged(index);
|
||
*/
|
||
|
||
ribbon->raiseCategory(_threeD_render_page);
|
||
}
|
||
|
||
void SubWindowManager::remove3dRenderPage()
|
||
{
|
||
if(_threeD_render_page == nullptr)
|
||
return;
|
||
auto pannels = _threeD_render_page->pannelList();
|
||
for(SARibbonPannel* pannel : pannels) {
|
||
_threeD_render_page->removePannel(pannel);
|
||
pannel = nullptr;
|
||
}
|
||
|
||
SARibbonBar* ribbon = _mainWindow->ribbonBar();
|
||
ribbon->removeCategory(_threeD_render_page);
|
||
_threeD_render_page = nullptr;
|
||
|
||
ribbon->setCurrentIndex(4);
|
||
// ribbon->onCurrentRibbonTabChanged(4);
|
||
}
|
||
|
||
void SubWindowManager::updatePreActors()
|
||
{
|
||
updatePreGeometryActor();
|
||
updatePreMeshActor();
|
||
}
|
||
void SubWindowManager::updatePreMeshActor()
|
||
{
|
||
if(_preWindow.second != nullptr) {
|
||
emit _preWindow.second->updateMeshActorSig();
|
||
}
|
||
}
|
||
void SubWindowManager::updatePreGeometryActor()
|
||
{
|
||
if(_preWindow.second != nullptr) {
|
||
_preWindow.second->updateGeometryActor();
|
||
}
|
||
}
|
||
void SubWindowManager::closePreWindow()
|
||
{
|
||
_preWindow.first = nullptr;
|
||
_preWindow.second = nullptr;
|
||
_mainWindow->getUi()->actionPre_Window->setEnabled(true);
|
||
|
||
emit _mainWindow->updateGeometryTreeSig();
|
||
emit _mainWindow->updateMeshTreeSig();
|
||
emit _mainWindow->updateSetTreeSig();
|
||
emit _mainWindow->updatePhysicsTreeSignal();
|
||
emit _mainWindow->updateProperty(nullptr);
|
||
emit _mainWindow->updateActionStatesSig();
|
||
|
||
// _signalHander->clearData();
|
||
}
|
||
void SubWindowManager::openPostWindow(Post::PostWindowBase* pw)
|
||
{
|
||
if(pw == nullptr) {
|
||
assert(0);
|
||
return;
|
||
}
|
||
QMdiSubWindow* sw = nullptr;
|
||
QList<Post::PostWindowBase*> pwl = _postWindow.values();
|
||
if(pwl.contains(pw)) {
|
||
sw = _postWindow.key(pw);
|
||
} else {
|
||
sw = _mdiArea->addSubWindow(pw);
|
||
_mdiArea->cascadeSubWindows();
|
||
_postWindow[sw] = pw;
|
||
}
|
||
if(sw != nullptr) {
|
||
sw->activateWindow();
|
||
sw->showMaximized();
|
||
sw->setFocus();
|
||
}
|
||
Post::PostProcessPy::init(_mainWindow, _mainWindow->getControlPanel()->getPostTreeWidget());
|
||
Py::PythonAgent::getInstance()->unLock();
|
||
emit _mainWindow->updateActionStatesSig();
|
||
}
|
||
|
||
void SubWindowManager::openRealTimeWindow(Post::RealTimeWindowBase* pw)
|
||
{
|
||
QMdiSubWindow* sw = nullptr;
|
||
QList<Post::RealTimeWindowBase*> pwl = _realTimeWindow.values();
|
||
if(pwl.contains(pw)) {
|
||
sw = _realTimeWindow.key(pw);
|
||
} else {
|
||
sw = _mdiArea->addSubWindow(pw);
|
||
_realTimeWindow[sw] = pw;
|
||
}
|
||
if(sw != nullptr) {
|
||
sw->showMaximized();
|
||
sw->setFocus();
|
||
}
|
||
emit _mainWindow->updateActionStatesSig();
|
||
}
|
||
ModuleBase::GraphWindowBase* SubWindowManager::getCurrentWindow()
|
||
{
|
||
QMdiSubWindow* activeWindow = nullptr;
|
||
|
||
auto subWins = _mdiArea->subWindowList();
|
||
if(subWins.size() == 1) {
|
||
activeWindow = subWins.at(0);
|
||
} else {
|
||
activeWindow = _mdiArea->activeSubWindow();
|
||
}
|
||
if(activeWindow == nullptr)
|
||
return nullptr;
|
||
else if(activeWindow == _preWindow.first)
|
||
return _preWindow.second;
|
||
else if(_postWindow.contains(activeWindow))
|
||
return _postWindow[activeWindow];
|
||
else
|
||
return nullptr;
|
||
}
|
||
Post::PostWindowBase* SubWindowManager::getPostWindowByIDType(int id, int type)
|
||
{
|
||
QList<Post::PostWindowBase*> pwl = _postWindow.values();
|
||
for(int i = 0; i < pwl.size(); ++i) {
|
||
Post::PostWindowBase* w = pwl.at(i);
|
||
if(w == nullptr)
|
||
continue;
|
||
int wid = w->getID();
|
||
int wtype = (int)w->getPostWindowType();
|
||
if(wid == id && wtype == type)
|
||
return w;
|
||
}
|
||
return nullptr;
|
||
}
|
||
void SubWindowManager::removeToolBars()
|
||
{
|
||
const int n = _currentToolBars.size();
|
||
for(int i = 0; i < n; ++i) {
|
||
QToolBar* t = _currentToolBars.at(i);
|
||
_mainWindow->removeToolBar(t);
|
||
}
|
||
_currentToolBars.clear();
|
||
}
|
||
void SubWindowManager::showPostWindowInfo(int id, int type)
|
||
{
|
||
Post::PostWindowBase* pwb = getPostWindowByIDType(id, type);
|
||
if(pwb == nullptr)
|
||
return;
|
||
// QWidget* ptree = pwb->getTreeWidget();
|
||
// QWidget* pprop = pwb->getPropWidget();
|
||
QMdiSubWindow* subWin = _postWindow.key(pwb);
|
||
if(subWin != nullptr) {
|
||
subWin->showMaximized();
|
||
subWin->setFocus();
|
||
}
|
||
//_controlPanel->updatePostWidget(ptree, pprop);
|
||
if(type == 2)
|
||
_controlPanel->updatePostWidget();
|
||
|
||
QList<QToolBar*> toolBars = pwb->getToolBarList();
|
||
if(_mainWindow->isUseRibbon()) {
|
||
if(_threeD_render_page)
|
||
return;
|
||
add3dRenderPage(toolBars);
|
||
} else {
|
||
this->removeToolBars();
|
||
_mainWindow->addToolBarBreak();
|
||
for(int i = 0; i < toolBars.size(); ++i) {
|
||
_mainWindow->addToolBar(toolBars.at(i));
|
||
(toolBars.at(i))->show();
|
||
_currentToolBars.append(toolBars.at(i));
|
||
}
|
||
}
|
||
}
|
||
void SubWindowManager::closePostWindow(Post::PostWindowBase* w)
|
||
{
|
||
QMdiSubWindow* subw = _postWindow.key(w);
|
||
if(subw == nullptr)
|
||
return;
|
||
Post::PostWindowType type = w->getPostWindowType();
|
||
removeToolBars();
|
||
if(type == Post::PostWindowType::D3
|
||
&& _mainWindow->isUseRibbon()) // 使用ribbon,并且关闭的是3维窗口
|
||
remove3dRenderPage();
|
||
|
||
if(_controlPanel != nullptr)
|
||
_controlPanel->updatePostWidget(nullptr, nullptr);
|
||
emit _mainWindow->updateProperty(nullptr);
|
||
|
||
_postWindow.remove(subw);
|
||
QList<Post::PostWindowBase*> postsubwlist = _postWindow.values();
|
||
if(_preWindow.first != nullptr)
|
||
showPreWindow();
|
||
else if(postsubwlist.size() > 0) {
|
||
Post::PostWindowBase* w = postsubwlist.at(0);
|
||
int id = w->getID();
|
||
Post::PostWindowType type = w->getPostWindowType();
|
||
showPostWindowInfo(id, type);
|
||
}
|
||
emit _mainWindow->updateActionStatesSig();
|
||
}
|
||
void SubWindowManager::showPreWindow()
|
||
{
|
||
removeToolBars();
|
||
if(_controlPanel == nullptr)
|
||
return;
|
||
_controlPanel->updatePostWidget(nullptr, nullptr);
|
||
if(_preWindow.first != nullptr) {
|
||
_preWindow.first->showMaximized();
|
||
_preWindow.first->setFocus();
|
||
}
|
||
}
|
||
void SubWindowManager::showRealTimeWindow(QMdiSubWindow* w)
|
||
{
|
||
removeToolBars();
|
||
_controlPanel->updatePostWidget(nullptr, nullptr);
|
||
if(_realTimeWindow.contains(w)) {
|
||
w->showMaximized();
|
||
w->setFocus();
|
||
}
|
||
}
|
||
void SubWindowManager::subWindowActived(QMdiSubWindow* sw)
|
||
{
|
||
if(sw == nullptr)
|
||
return;
|
||
if(sw == _preWindow.first)
|
||
showPreWindow();
|
||
else if(_realTimeWindow.contains(sw))
|
||
showRealTimeWindow(sw);
|
||
else if(_postWindow.contains(sw)) {
|
||
Post::PostWindowBase* pwb = _postWindow.value(sw);
|
||
int id = pwb->getID();
|
||
Post::PostWindowType type = pwb->getPostWindowType();
|
||
showPostWindowInfo(id, type);
|
||
}
|
||
emit _mainWindow->updateActionStatesSig();
|
||
}
|
||
void SubWindowManager::closeRealTimeWindow(Post::RealTimeWindowBase* w)
|
||
{
|
||
QMdiSubWindow* subw = _realTimeWindow.key(w);
|
||
if(subw == nullptr)
|
||
return;
|
||
_realTimeWindow.remove(subw);
|
||
if(_preWindow.first != nullptr)
|
||
showPreWindow();
|
||
emit _mainWindow->updateActionStatesSig();
|
||
}
|
||
void SubWindowManager::setView(QString view)
|
||
{
|
||
/*qDebug() << view;
|
||
ModuleBase::GraphWindowBase* gwb = getCurrentWindow();
|
||
if (gwb == nullptr) return;
|
||
gwb->setView(view);*/
|
||
ModuleBase::GraphWindowBase* gwb = getCurrentWindow();
|
||
if(gwb == nullptr)
|
||
return;
|
||
const int id = gwb->getID();
|
||
QString win = gwb->getStringGraphWindowType();
|
||
qDebug() << win;
|
||
QString pycode = QString("MainWindow.setView(%1,\"%2\",\"%3\")").arg(id).arg(win).arg(view);
|
||
qDebug() << pycode;
|
||
Py::PythonAgent::getInstance()->submit(pycode);
|
||
// gwb->setView(view);
|
||
}
|
||
|
||
MainWidget::PreWindow* SubWindowManager::getPreWindow()
|
||
{
|
||
return _preWindow.second;
|
||
}
|
||
void SubWindowManager::openReportWindow(XReport::ReportWindow* w)
|
||
{
|
||
QMdiSubWindow* sw = nullptr;
|
||
QList<XReport::ReportWindow*> rws = _reportWindow.values();
|
||
if(rws.contains(w)) {
|
||
sw = _reportWindow.key(w);
|
||
} else {
|
||
sw = _mdiArea->addSubWindow(w);
|
||
_reportWindow[sw] = w;
|
||
}
|
||
if(sw != nullptr) {
|
||
sw->showMaximized();
|
||
sw->setFocus();
|
||
}
|
||
emit _mainWindow->updateActionStatesSig();
|
||
}
|
||
void SubWindowManager::closeReportWindow(XReport::ReportWindow* w)
|
||
{
|
||
QMdiSubWindow* s = _reportWindow.key(w);
|
||
if(s != nullptr) {
|
||
_reportWindow.remove(s);
|
||
}
|
||
}
|
||
bool SubWindowManager::isPreWindowOpened()
|
||
{
|
||
if(_preWindow.first == nullptr || _preWindow.second == nullptr)
|
||
return false;
|
||
return true;
|
||
}
|
||
bool SubWindowManager::isPostWindowOpened()
|
||
{
|
||
if(_postWindow.size() > 0)
|
||
return true;
|
||
return false;
|
||
}
|
||
|
||
bool SubWindowManager::isPostWindowOpening()
|
||
{
|
||
QMdiSubWindow* activeWindow = _mdiArea->activeSubWindow();
|
||
if(activeWindow == nullptr)
|
||
return false;
|
||
else if(_postWindow.contains(activeWindow))
|
||
return true;
|
||
else
|
||
return false;
|
||
}
|
||
|
||
void SubWindowManager::saveImage(QString fileName, int winType, Post::PostWindowBase* winhandle,
|
||
int w, int h)
|
||
{
|
||
if(winType == 0) {
|
||
MainWidget::PreWindow* preW = _preWindow.second;
|
||
if(preW == nullptr)
|
||
return;
|
||
preW->saveImage(fileName, w, h, false);
|
||
} else if(winType == 1) {
|
||
if(_postWindow.key(winhandle) == nullptr)
|
||
return;
|
||
winhandle->saveImage(fileName, w, h, false);
|
||
}
|
||
}
|
||
|
||
void SubWindowManager::saveImage(int w, int h, QString f)
|
||
{
|
||
ModuleBase::GraphWindowBase* gw = this->getCurrentWindow();
|
||
if(gw == nullptr) {
|
||
_mainWindow->printMessage(Common::Message::Error, tr("No GraphWindow opened!"));
|
||
return;
|
||
}
|
||
QString type = gw->getStringGraphWindowType();
|
||
const int id = gw->getID();
|
||
QString pycode = QString("MainWindow.saveImage(%1,%2,%3,\"%4\",\"%5\")")
|
||
.arg(w)
|
||
.arg(h)
|
||
.arg(id)
|
||
.arg(type)
|
||
.arg(f);
|
||
qDebug() << pycode;
|
||
Py::PythonAgent::getInstance()->submit(pycode);
|
||
}
|
||
|
||
void SubWindowManager::saveImage(int w, int h, int id, QString winType, QString file)
|
||
{
|
||
ModuleBase::GraphWindowBase* win = this->getWindowByTypeID(winType, id);
|
||
if(win == nullptr)
|
||
return;
|
||
win->saveImage(file, w, h, false);
|
||
Py::PythonAgent::getInstance()->unLock();
|
||
}
|
||
void SubWindowManager::setView(int id, QString winType, QString view) // liu
|
||
{
|
||
ModuleBase::GraphWindowBase* gwb = getWindowByTypeID(winType, id);
|
||
if(gwb == nullptr)
|
||
return;
|
||
gwb->setView(view);
|
||
Py::PythonAgent::getInstance()->unLock();
|
||
}
|
||
void SubWindowManager::setViewValue(int id, QString win, int x1, int x2, int x3, int y1, int y2,
|
||
int y3, int z1, int z2, int z3)
|
||
{
|
||
ModuleBase::GraphWindowBase* gwb = getWindowByTypeID(win, id);
|
||
if(gwb == nullptr)
|
||
return;
|
||
gwb->setViewValue(x1, x2, x3, y1, y2, y3, z1, z2, z3);
|
||
Py::PythonAgent::getInstance()->unLock();
|
||
}
|
||
/*void SubWindowManager::setViewPreValue(int id, QString win, int x1, int x2, int x3, int y1,
|
||
int y2, int y3, int z1, int z2, int z3)
|
||
{
|
||
ModuleBase::GraphWindowBase* gwb = getCurrentWindow();
|
||
if (gwb == nullptr) return;
|
||
gwb->setViewPreValue(x1, x2, x3, y1, y2, y3, z1, z2, z3);
|
||
}*/
|
||
void SubWindowManager::reTranslate()
|
||
{
|
||
MainWidget::PreWindow* prew = _preWindow.second;
|
||
if(prew != nullptr)
|
||
prew->reTranslate();
|
||
|
||
int n = 0;
|
||
QList<Post::PostWindowBase*> postWinList = _postWindow.values();
|
||
n = postWinList.size();
|
||
for(int i = 0; i < n; ++i) {
|
||
Post::PostWindowBase* pw = postWinList.at(i);
|
||
if(pw != nullptr)
|
||
pw->reTranslate();
|
||
}
|
||
QList<Post::RealTimeWindowBase*> rwList = _realTimeWindow.values();
|
||
n = rwList.size();
|
||
for(int i = 0; i < n; ++i) {
|
||
Post::RealTimeWindowBase* rw = rwList.at(i);
|
||
if(rw != nullptr)
|
||
rw->reTranslate();
|
||
}
|
||
QList<XReport::ReportWindow*> repWin = _reportWindow.values();
|
||
n = repWin.size();
|
||
for(int i = 0; i < n; ++i) {
|
||
XReport::ReportWindow* w = repWin.at(i);
|
||
w->reTranslate();
|
||
}
|
||
if(_threeD_render_page != nullptr)
|
||
_threeD_render_page->setWindowTitle(tr("3D Render"));
|
||
}
|
||
|
||
void SubWindowManager::closeGeometryWindow()
|
||
{
|
||
_geometryWindow.first = nullptr;
|
||
_geometryWindow.second = nullptr;
|
||
|
||
_signalHander->clearData(false);
|
||
emit _mainWindow->updateGeometryTreeSig();
|
||
emit _mainWindow->updateMeshTreeSig();
|
||
emit _mainWindow->updatePhysicsTreeSignal();
|
||
emit _mainWindow->updateProperty(nullptr);
|
||
}
|
||
|
||
GenerateGeometry::GenerateGeometryWidget* SubWindowManager::getGeometryWindow()
|
||
{
|
||
if(!_geometryWindow.second) {
|
||
openGeometryWindow();
|
||
}
|
||
return _geometryWindow.second;
|
||
}
|
||
|
||
void SubWindowManager::closeAllSubWindow()
|
||
{
|
||
// _mdiArea->setViewMode(QMdiArea::SubWindowView);
|
||
// _mdiArea->setTabPosition(QTabWidget::North);
|
||
|
||
MainWidget::PreWindow* pre = _preWindow.second;
|
||
if(pre != nullptr) {
|
||
_preWindow.first->close();
|
||
_mdiArea->removeSubWindow(pre);
|
||
pre->close();
|
||
delete pre;
|
||
}
|
||
|
||
QList<Post::PostWindowBase*> postlist = _postWindow.values();
|
||
for(int i = 0; i < postlist.size(); ++i) {
|
||
Post::PostWindowBase* p = postlist.at(i);
|
||
_postWindow.key(p)->close();
|
||
_mdiArea->removeSubWindow(p);
|
||
p->close();
|
||
delete p;
|
||
}
|
||
|
||
QList<Post::RealTimeWindowBase*> realtimelist = _realTimeWindow.values();
|
||
for(int i = 0; i < realtimelist.size(); ++i) {
|
||
Post::RealTimeWindowBase* r = realtimelist.at(i);
|
||
_realTimeWindow.key(r)->close();
|
||
_mdiArea->removeSubWindow(r);
|
||
r->close();
|
||
delete r;
|
||
}
|
||
|
||
QList<XReport::ReportWindow*> reportlist = _reportWindow.values();
|
||
for(int i = 0; i < reportlist.size(); ++i) {
|
||
XReport::ReportWindow* r = reportlist.at(i);
|
||
_reportWindow.key(r)->close();
|
||
_mdiArea->removeSubWindow(r);
|
||
r->close();
|
||
delete r;
|
||
}
|
||
}
|
||
|
||
ModuleBase::GraphWindowBase* SubWindowManager::getWindowByTypeID(QString type, int id)
|
||
{
|
||
ModuleBase::GraphWindowBase* g = nullptr;
|
||
type = type.toLower();
|
||
if(type == "prewindow") {
|
||
g = _preWindow.second;
|
||
} else if(type == "realtime") {
|
||
QList<Post::RealTimeWindowBase*> wlist = _realTimeWindow.values();
|
||
for(int i = 0; i < wlist.size(); ++i) {
|
||
ModuleBase::GraphWindowBase* t = wlist.at(i);
|
||
const int d = t->getID();
|
||
if(id == d) {
|
||
g = t;
|
||
break;
|
||
}
|
||
}
|
||
} else if(type == "post2d") {
|
||
QList<Post::PostWindowBase*> wlist = _postWindow.values();
|
||
for(int i = 0; i < wlist.size(); ++i) {
|
||
ModuleBase::GraphWindowBase* t = wlist.at(i);
|
||
const int d = t->getID();
|
||
if(id == d && t->getGraphWindowType() == ModuleBase::Post2D) {
|
||
g = t;
|
||
break;
|
||
}
|
||
}
|
||
} else if(type == "post3d") {
|
||
QList<Post::PostWindowBase*> wlist = _postWindow.values();
|
||
for(int i = 0; i < wlist.size(); ++i) {
|
||
ModuleBase::GraphWindowBase* t = wlist.at(i);
|
||
const int d = t->getID();
|
||
if(id == d && t->getGraphWindowType() == ModuleBase::Post3D) {
|
||
g = t;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
return g;
|
||
}
|
||
|
||
void SubWindowManager::setIcon(QString icon)
|
||
{
|
||
if(_preWindow.first != nullptr)
|
||
_preWindow.first->setWindowIcon(QIcon(icon));
|
||
QList<QMdiSubWindow*> subw =
|
||
_postWindow.keys() + _realTimeWindow.keys() + _reportWindow.keys();
|
||
for(auto w : subw) {
|
||
w->setWindowIcon(QIcon(icon));
|
||
}
|
||
}
|
||
|
||
} // namespace GUI
|