You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AppFlow/CFDStruct/CFDStructGUI/CFDStructMainWindow.cpp

286 lines
11 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include "CFDStructMainWindow.h"
#include "CFDMainTreeWidget.h"
#include "GUIFrame/PropertyWidget.h"
#include "GUIFrame/MainTreeWidget.h"
#include "GUIFrame/RenderWidget.h"
#include "GUIFrame/TabWidget.h"
#include "CUIProperty/CUIConfig.h"
#include "CUIProperty/CUI.h"
#include "FITK_Kernel/FITKCore/FITKAbstractGUIObject.h"
#include "Tools/Win64/SARibbon/include/SARibbon-2.0.1/SARibbonMainWindow.h"
#include "Tools/Win64/SARibbon/include/SARibbon-2.0.1/SARibbonPannelItem.h"
#include "Tools/Win64/SARibbon/include/SARibbon-2.0.1/SARibbonBar.h"
#include <Tools/Win64/SARibbon/include/SARibbon-2.0.1/SARibbonApplicationButton.h>
#include <Tools/Win64/SARibbon/include/SARibbon-2.0.1/SARibbonQuickAccessBar.h>
#include <Tools/Win64/SARibbon/include/SARibbon-2.0.1/SARibbonTabBar.h>
#include <QDebug>
#include <QGroupBox>
#include <QRadioButton>
#include <QSplitter>
#include <QTreeWidgetItem>
//CFDStructMainWindow::CFDStructMainWindow() : GUI::MainWindow()
//{
// qDebug()<<"new CFSStructMainWindow";
//}
//
//void CFDStructMainWindow::initCentralWidget() {
// qDebug() << "CFDStruct iniCentralWidget";
//
//}
using namespace GUI;
CFDStructMainWindow::CFDStructMainWindow() {
qDebug() << "new Empty CFDStructMainWindow";
initMainWindowMenu();
initCentralWidget();
initPropertyWidget();
setWindowTitle("AreoFlow");
}
void CFDStructMainWindow::initCentralWidget()
{
// 子部件水平排布
QSplitter* spliterLayout = new QSplitter(Qt::Horizontal);
spliterLayout->setMouseTracking(true);
spliterLayout->setHandleWidth(5);
int mainWindSize = QMainWindow::width();
// _treeWidget = new MainTreeWidget(this);
_treeWidget = new CFDMainTreeWidget(this,m_PropertyWidget);
_treeWidget->setMinimumWidth(mainWindSize * 0.4);
_treeWidget->setMaximumWidth(mainWindSize * 0.4);
m_PropertyWidget = new PropertyWidget(this);
m_PropertyWidget->setMinimumWidth(mainWindSize * 0.65);
m_RenderWidget = new RenderWidget(this);
_tabWidgete = new TabWidget(this);
//m_GroupPropertyWidget = new GroupPropertyWidget(this);
//添加树界面
spliterLayout->addWidget(_treeWidget);
//添加属性界面
spliterLayout->addWidget(m_PropertyWidget);
QSplitter* verLayout = new QSplitter(Qt::Vertical);
spliterLayout->setMouseTracking(true);
spliterLayout->setHandleWidth(5);
verLayout->addWidget(m_RenderWidget);
verLayout->addWidget(_tabWidgete);
spliterLayout->addWidget(verLayout);
//spliterLayout->addWidget(m_GroupPropertyWidget);
// 设置大小
spliterLayout->setSizes({ 200, 300, 1000, 200 });
auto mainLayout = new QGridLayout();
mainLayout->setObjectName("CentralGridLayout");
mainLayout->setContentsMargins(5, 5, 5, 10);
mainLayout->addWidget(spliterLayout);
_currentWidget->setLayout(mainLayout);
setCentralWidget(_currentWidget);
}
void CFDStructMainWindow::initPropertyWidget() {
//CUI* cuiWidget = new CUI(new CUIConfig({
// "type", "Widget",
// "name", "main_widget"
//}, {
// new CUIConfig({
// {"type", "GroupBox"},
// {"name", "模型"},
// }, {}),
// new CUIConfig({}, {}),
// new CUIConfig({}, {})
//}));
QWidget* cuiwidget = new QWidget();
QVBoxLayout* cuilayout = new QVBoxLayout();
cuiwidget->setLayout(cuilayout);
QGroupBox* gb1 = new QGroupBox("Model");
cuilayout->addWidget(gb1);
gb1->setLayout(new QVBoxLayout());
gb1->layout()->addWidget(new QRadioButton("Inviscid"));
gb1->layout()->addWidget(new QRadioButton("Laminar"));
gb1->layout()->addWidget(new QRadioButton("RANS"));
gb1->layout()->addWidget(new QRadioButton("DES"));
gb1->layout()->addWidget(new QRadioButton("CLES"));
QGroupBox* gb2 = new QGroupBox("RANS");
cuilayout->addWidget(gb2);
gb2->setLayout(new QVBoxLayout());
gb2->layout()->addWidget(new QRadioButton("S-A"));
gb2->layout()->addWidget(new QRadioButton("Menters's κ-ω"));
gb2->layout()->addWidget(new QRadioButton("κ-ε"));
QGroupBox* gb3 = new QGroupBox("S-A type");
cuilayout->addWidget(gb3);
gb3->setLayout(new QVBoxLayout());
gb3->layout()->addWidget(new QRadioButton("standard"));
gb3->layout()->addWidget(new QRadioButton("Edwards"));
QWidget* spacer = new QWidget;
spacer->setFixedHeight(400);
// 将弹簧添加到布局中
cuilayout->addWidget(spacer);
CUI* cui = new CUI(new CUIConfig({
{"type", "Widget"}
}, {
new CUIConfig({
{"type", "GroupBox"},
{"name", "GroupBox_name"}
}, {})
}));
// CUIConfig* cuiconfig = new CUIConfig({
// {"type","type"},
// {"name","name"}
// });
// cuiconfig->printConfig();
cuilayout->addWidget(cui->getUI());
m_PropertyWidget->setWidget(cuiwidget);
}
void CFDStructMainWindow::initMainWindowMenu() {
initApplicationButton();
addSARibbonCategoryGeometry();
addSARibbonCategoryMesh();
addSARibbonCategoryCalculation();
addSARibbonCategoryPostProcessing();
addSARibbonCategoryTool();
addSARibbonCategoryCivilAircraftTemplateLibrary();
_ribbonBar->setCurrentIndex(0);
}
void CFDStructMainWindow::addSARibbonCategoryGeometry() {
QString type = tr("Geometry");
SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type);
_ribbonBar->raiseCategory(gategory);
}
void CFDStructMainWindow::addSARibbonCategoryMesh() {
QString type = tr("Mesh");
SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type);
_ribbonBar->raiseCategory(gategory);
}
void CFDStructMainWindow::addSARibbonCategoryCalculation() {
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>µı<C2B5>ǩ
QString type = tr("Calculation");
SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type);
_ribbonBar->raiseCategory(gategory);
QAction* action = nullptr;
//pannel <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
SARibbonPannel* pannel = gategory->addPannel(tr("Simulation Run"));
//action = getAction("actionImportGeometry");
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ͼ<EFBFBD><CDBC> "<22><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>"
action = createAction(tr("Start Calculation"), "actionStartCalculation", ":/icons/createbox.png", tr("Start Calculation"));
//<2F><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>С
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>"
pannel = gategory->addPannel(tr("Import and Export"));
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
action = createAction(tr("Mesh Import"), "actionMeshImport", ":/icons/createbox.png", tr("Mesh Import"));
//"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<22><><EFBFBD><EFBFBD>"<22><><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>"
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>"<22><><EFBFBD><EFBFBD>"
action = createAction(tr("Import"), "actionImport", ":/icons/createsphere.png", tr("Import"));
//"<22><><EFBFBD><EFBFBD>"<22><><EFBFBD><EFBFBD>"<22><><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>"
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
pannel = gategory->addPannel(tr("Solver Settings"));
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC> ʱ<><CAB1>ģʽ
action = createAction(tr("Time Mode"), "actionTimeMode", ":/icons/BoolFause.png", tr("Time Mode"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC> <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
action = createAction(tr("Basic Model"), "actionBasicModel", ":/icons/BoolCut.png", tr("Basic Model"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC> ճ<><D5B3>ģ<EFBFBD><C4A3>
action = createAction(tr("Viscosity Model"), "actionViscosityModel", ":/icons/BoolCommon.png", tr("Viscosity Model"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC> <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
action = createAction(tr("Numerical Method"), "actionNumericalMethod", ":/icons/BoolCommon.png", tr("Numerical Method"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC> <20>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>
action = createAction(tr("Motion Properties"), "actionMotionProperties", ":/icons/BoolCommon.png", tr("Motion Properties"));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<22>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>"
pannel = gategory->addPannel(tr("Boundary Conditions and Initial Conditions"));
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC> <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>
action = createAction(tr("Boundary Conditions"), "actionBoundaryConditions", ":/icons/BoolCommon.png", tr("Boundary Conditions"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC> <20>ο<EFBFBD><CEBF><EFBFBD>
action = createAction(tr("Reference Quantities"), "actionReferenceQuantities", ":/icons/BoolCommon.png", tr("Reference Quantities"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC> <20><>ʼ<EFBFBD><CABC>
action = createAction(tr("Initialization"), "actionInitialization", ":/icons/BoolCommon.png", tr("Initialization"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
pannel = gategory->addPannel(tr("Computational Control"));
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
action = createAction(tr("Computational Control"), "actionComputational Control", ":/icons/Computational Control.png", tr("Computational Control"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<22><><EFBFBD><EFBFBD><EFBFBD>"
pannel = gategory->addPannel(tr("Monitors"));
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC> <20>в<EFBFBD>
action = createAction(tr("Residuals"), "actionResiduals", ":/icons/Residuals.png", tr("Residuals"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
action = createAction(tr("Aerodynamic Forces"), "actionAerodynamicForces", ":/icons/AerodynamicForces.png", tr("Aerodynamic Forces"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC> <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
action = createAction(tr("Summary"), "actionSummary", ":/icons/Summary.png", tr("Summary"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
}
void CFDStructMainWindow::addSARibbonCategoryPostProcessing() {
QString type = tr("Post Processing");
SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type);
_ribbonBar->raiseCategory(gategory);
}
void CFDStructMainWindow::addSARibbonCategoryTool() {
QString type = tr("Tool");
SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type);
_ribbonBar->raiseCategory(gategory);
}
void CFDStructMainWindow::addSARibbonCategoryCivilAircraftTemplateLibrary() {
QString type = tr("CivilAircraft Template sLibrary");
SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type);
_ribbonBar->raiseCategory(gategory);
}