#include "CodeEdtUI.h" #include #include #include #include #include #include #include #include #include #include "../../workspace/WorkSpaceManager.h" #include "SyntaxHighlighter.h" #include "../DockTitleBar.h" #include "../DockWidget.h" CodeEdtUI::CodeEdtUI(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); // 创建代码编辑器 editor = new QPlainTextEdit(this); QFont serifFont("Times", 20, QFont::Bold); editor->setFont(serifFont); syntaxHighlighter = new SyntaxHighlighter(editor->document()); setCentralWidget(editor); // 创建菜单 QMenu* fileMenu = menuBar()->addMenu(tr("&file")); QAction* openMainAction = new QAction(tr("&Import the Main template"), this); QAction* openLDAction = new QAction(tr("&Import the LD template"), this); QAction* openSeekerSimAction = new QAction(tr("&Import the SeekerSim template"), this); QAction* saveAction = new QAction(tr("&save"), this); fileMenu->addAction(openMainAction); fileMenu->addAction(openLDAction); fileMenu->addAction(openSeekerSimAction); fileMenu->addAction(saveAction); connect(openMainAction, &QAction::triggered, this, &CodeEdtUI::openMainFile); connect(openLDAction, &QAction::triggered, this, &CodeEdtUI::openLDFile); connect(openSeekerSimAction, &QAction::triggered, this, &CodeEdtUI::openSeekerSimFile); connect(saveAction, &QAction::triggered, this, &CodeEdtUI::saveFile); // 状态栏 statusBar(); } void CodeEdtUI::AttachDock(DockWidget* dockWidget) { if (nullptr == dockWidget) { qDebug() << __FUNCTION__ << "dockwidget is nullptr"; return; } dockWidget->SetDockWidgetTitleBar(nullptr); dockWidget->setWidget(this); DockTitleBar* dockTitleBar = new DockTitleBar; dockTitleBar->SetTitle(tr("matlab editor")); dockWidget->SetDockWidgetTitleBar(dockTitleBar); } void CodeEdtUI::openMainFile() { QString fileName = WorkSpaceManager::Get().GetDYTMMainFile(); //QFileDialog::getOpenFileName(this, "Open File", "", "Matlab Files (*.m)"); if (fileName.isEmpty()) { fileName = QFileDialog::getOpenFileName(this, "Open File", "", "Matlab Files (*.m)"); WorkSpaceManager::Get().SetDYTMMainFile(fileName); } if (!fileName.isEmpty()) { QFile file(fileName); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { editor->clear(); QTextStream in(&file); editor->setPlainText(in.readAll()); file.close(); } } } void CodeEdtUI::openLDFile() { QString fileName = WorkSpaceManager::Get().GetDYTMLDFile(); //QFileDialog::getOpenFileName(this, "Open File", "", "Matlab Files (*.m)"); if (fileName.isEmpty()) { fileName = QFileDialog::getOpenFileName(this, "Open File", "", "Matlab Files (*.m)"); WorkSpaceManager::Get().SetDYTMLDFile(fileName); } if (!fileName.isEmpty()) { QFile file(fileName); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { editor->clear(); QTextStream in(&file); editor->setPlainText(in.readAll()); file.close(); m_strCurOpenFile = fileName; } } } void CodeEdtUI::openSeekerSimFile() { QString fileName = WorkSpaceManager::Get().GetDYTMSeekerSimFile(); //QFileDialog::getOpenFileName(this, "Open File", "", "Matlab Files (*.m)"); if (fileName.isEmpty()) { fileName = QFileDialog::getOpenFileName(this, "Open File", "", "Matlab Files (*.m)"); WorkSpaceManager::Get().SetDYTMSeekerSimFile(fileName); } if (!fileName.isEmpty()) { QFile file(fileName); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { editor->clear(); QTextStream in(&file); editor->setPlainText(in.readAll()); file.close(); m_strCurOpenFile = fileName; } } } void CodeEdtUI::saveFile() { //QString fileName = QFileDialog::getSaveFileName(this, "Save File", "", "Matlab Files (*.m)"); if (!m_strCurOpenFile.isEmpty()) { QFile file(m_strCurOpenFile); if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { QTextStream out(&file); out << editor->toPlainText(); file.close(); } } }