155 lines
4.7 KiB
C++
155 lines
4.7 KiB
C++
#include "MainFrame.h"
|
|
|
|
#include <assert.h>
|
|
|
|
#include <QStyleOption>
|
|
#include <QPainter>
|
|
#include <QGridLayout>
|
|
#include <QPushButton>
|
|
|
|
#include <qDebug>
|
|
|
|
#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<QPushButton*>(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);
|
|
}
|