#include "MainFrame.h" #include #include #include #include #include #include #include "ui/MainWindow.h" #include "ui/Menu/FileManagerMenu.h" #include "ui/Menu/ViewManagerMenu.h" #include "ui/Menu/PlanManagerMenu.h" #include "ui/Menu/DynamicDisplayMenu.h" #include "ui/Menu/SystemManagerMenu.h" #include "ui/Menu/PlayManagerMenu.h" #include "viewer/QtOsgViewWidget.h" #include "chartPlot/FitCurveDialog.h" #include "chartPlot/SurfaceDialog.h" #include "ui/Menu/ChartPlotMenu.h" // lz 20140914 #include "ui_MainFrame.h" MainFrame* s_instance { nullptr }; MainFrame::MainFrame(QWidget *parent) : FramelessWindow(parent), ui(new Ui::MainFrame) { ui->setupUi(this); assert(nullptr == s_instance); s_instance = this; ui->titleFrame->SetMainWidget(this); ui->titleFrame->SetTitle(tr("Dyt")); ui->titleFrame->InitMenuWidget(); ui->titleFrame->InitSkinMemu(); ui->titleFrame->SetSysButton(FrameTitleBar::FTB_ICON | FrameTitleBar::FTB_MENU | FrameTitleBar::FTB_SKIN | FrameTitleBar::FTB_MIN | FrameTitleBar::FTB_MAX | FrameTitleBar::FTB_CLOSE); InitUI(); SetTitleBar(ui->titleFrame); } MainFrame::~MainFrame() { delete ui; assert(nullptr != s_instance); s_instance = nullptr; } MainFrame& MainFrame::Get() { return *s_instance; } void MainFrame::paintEvent(QPaintEvent* event) { QStyleOption opt; opt.initFrom(this); QPainter p(this); style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); } void MainFrame::OnMenuTrigged() { qDebug() << __FUNCTION__; QPushButton* btn = reinterpret_cast(sender()); if (!menuWidget_.contains(btn)) { qDebug() << __FUNCTION__ << "not find btn:" << btn->objectName(); return; } int index = menuWidget_.value(btn, -1); SetCurrentMenu(index); } void MainFrame::SetCurrentMenu(int index) { if (index < 0 || index >= ui->menuWidget->count()) { qDebug() << __FUNCTION__ << "index:" << index << " menu widget count:" << ui->menuWidget->count(); return; } ui->menuWidget->setCurrentIndex(index); } void MainFrame::InitUI() { QGridLayout* layout = new QGridLayout(ui->mainWindow); layout->setContentsMargins(0, 0, 0, 0); FileManagerMenu* fileMenu = new FileManagerMenu(this); AddMenuWidget("file_manager", tr("file manager"), fileMenu); AddMenuWidget("view_manager", tr("view manager"), new ViewManagerMenu(this)); AddMenuWidget("plan_manager", tr("plan manager"), new PlanManagerMenu(this)); AddMenuWidget("dynamic_display", tr("dynamic display"), new DynamicDisplayMenu(this)); SystemManagerMenu* system_ = new SystemManagerMenu(this); AddMenuWidget("system_manager", tr("system manager"), system_); PlayManagerMenu* playMenu = new PlayManagerMenu(this); AddMenuWidget("play_manager", tr("play manager"), playMenu); // ChartPlotMenu *chartMenu = new ChartPlotMenu(this); // AddMenuWidget("chartPlot_manager", tr("chartPlot manager"), chartMenu); MainWindow* mainWindow = new MainWindow(this); layout->addWidget(mainWindow); QtOsgViewWidget* viewWidget = mainWindow->GetViewWidget(); connect(fileMenu, &FileManagerMenu::LoadDyt, viewWidget, &QtOsgViewWidget::OnLoadDyt); //connect(chartMenu, &ChartPlotMenu::signalAddCurve, mainWindow->GetFitCurveDlg(), &FitCurveDialog::slotAddSeries); //connect(chartMenu, &ChartPlotMenu::signalDelCurve, mainWindow->GetFitCurveDlg(), &FitCurveDialog::slotDelCurve); //connect(chartMenu, &ChartPlotMenu::signalAddLgCurve, mainWindow->GetFitYLgCurveDlg(), &FitCurveDialog::slotAddSeries); //connect(chartMenu, &ChartPlotMenu::signalDelLgCurve, mainWindow->GetFitYLgCurveDlg(), &FitCurveDialog::slotDelCurve); //connect(chartMenu, &ChartPlotMenu::signalAddSurfaceCurve, mainWindow->GetSurfaceDlg(), &SurfaceDialog::slotAddSeries); connect(system_, &SystemManagerMenu::signalShowUISetting, mainWindow, &MainWindow::slotShowUISetting); if (ui->menuWidget->count() > 0) { ui->menuWidget->setCurrentIndex(0); menuWidget_.isEmpty() ? assert(false) : menuWidget_.key(0)->setChecked(true); qDebug() << __FUNCTION__ << "menu set current"; } } void MainFrame::AddMenuWidget(const QString& name, const QString& text, QWidget* widget) { if (nullptr == widget) { qDebug() << __FUNCTION__ << "widget is nullptr"; return; } QPushButton* btn = ui->titleFrame->InsertPushButtonMenu(text, menuWidget_.count()); if (nullptr == btn) { return; } btn->setObjectName(name); connect(btn, &QPushButton::clicked, this, &MainFrame::OnMenuTrigged); int index = ui->menuWidget->addWidget(widget); menuWidget_.insert(btn, index); }