#include "CodeEdtUI.h" #include #include #include #include #include #include #include #include #include #include #include #include "../../common/RecourceHelper.h" #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); InitBat(); // QMenu* fileMenu = menuBar()->addMenu(tr("&file")); // QAction* openMainAction = new QAction(tr("&Import the 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(u8"bat文件"); dockWidget->SetDockWidgetTitleBar(dockTitleBar); } void CodeEdtUI::InitBat() { { QMenu* fileMenu = menuBar()->addMenu(u8"文件"); QDir dir(RecourceHelper::Get().GetBasePath() + "/bat"); QFileInfoList fileInfoList = dir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot | QDir::NoSymLinks); for (int i = 0; i < fileInfoList.size(); i++) { QFileInfo fileInfo = fileInfoList[i]; QString strSuff = fileInfo.suffix(); strSuff = strSuff.toLower(); if (strSuff == "bat") { QAction* fileAction = new QAction(fileInfo.fileName(), this); fileMenu->addAction(fileAction); connect(fileAction, &QAction::triggered, this, &CodeEdtUI::openMainFile); } } } { QMenu* ctrlMenu = menuBar()->addMenu(u8"控制"); QAction* runAction = new QAction(tr(u8"执行"), this); ctrlMenu->addAction(runAction); QAction* saveAction = new QAction(u8"保存", this); ctrlMenu->addAction(saveAction); connect(runAction, &QAction::triggered, this, &CodeEdtUI::runFile); connect(saveAction, &QAction::triggered, this, &CodeEdtUI::saveFile); } } void CodeEdtUI::openMainFile() { QAction* fileAction = (QAction*)(sender()); QString fileName = RecourceHelper::Get().GetBasePath() + "/bat/" + fileAction->text(); //QFileDialog::getOpenFileName(this, "Open File", "", "Matlab Files (*.bat)"); if (!fileName.isEmpty()) { QFile file(fileName); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { editor->clear(); QTextStream in(&file); in.setCodec("utf-8"); editor->setPlainText(in.readAll()); file.close(); } } m_strCurOpenFile = fileName; } void CodeEdtUI::openLDFile() { QString fileName = ""; //QFileDialog::getOpenFileName(this, "Open File", "", "Matlab Files (*.m)"); if (fileName.isEmpty()) { fileName = QFileDialog::getOpenFileName(this, "Open File", "", "Matlab Files (*.m)"); } 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 = ""; //QFileDialog::getOpenFileName(this, "Open File", "", "Matlab Files (*.m)"); if (fileName.isEmpty()) { fileName = QFileDialog::getOpenFileName(this, "Open File", "", "Matlab Files (*.m)"); } 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::runFile() { if (!m_strCurOpenFile.isEmpty()) { saveFile(); QProcess process; process.start(m_strCurOpenFile); process.waitForFinished(); QString output = process.readAllStandardOutput(); QString errorOutput = process.readAllStandardError(); qDebug() << "Output:" << output; qDebug() << "Error Output:" << errorOutput; } } void CodeEdtUI::saveFile() { if (!m_strCurOpenFile.isEmpty()) { QFile file(m_strCurOpenFile); if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { QTextStream out(&file); out.setCodec("utf-8"); out << editor->toPlainText(); file.close(); } } }