206 lines
5.7 KiB
C++
206 lines
5.7 KiB
C++
#include "CodeEdtUI.h"
|
|
|
|
#include <QPlainTextEdit>
|
|
#include <QMenuBar>
|
|
#include <QAction>
|
|
#include <QStatusBar>
|
|
#include <QFileDialog>
|
|
#include <QTextStream>
|
|
#include <QVBoxLayout>
|
|
#include <QFont>
|
|
#include <qdebug.h>
|
|
#include <QDir>
|
|
#include <QProcess>
|
|
|
|
#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();
|
|
}
|
|
}
|
|
} |