diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user index d3552f0..00a6111 100644 --- a/CMakeLists.txt.user +++ b/CMakeLists.txt.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -101,7 +101,7 @@ Desktop Qt 6.7.2 MinGW 64-bit Desktop Qt 6.7.2 MinGW 64-bit qt.qt6.672.win64_mingw_kit - 0 + 1 0 0 @@ -109,14 +109,14 @@ 2 false - -DCMAKE_BUILD_TYPE:STRING=Debug + -DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_GENERATOR:STRING=Ninja -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} -DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_BUILD_TYPE:STRING=Debug 0 C:\Users\14354\Documents\Qt Projects\MicrologicIDE\build\Desktop_Qt_6_7_2_MinGW_64_bit-Debug @@ -166,14 +166,14 @@ 2 false - -DCMAKE_BUILD_TYPE:STRING=Release + -DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_GENERATOR:STRING=Ninja -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} -DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_BUILD_TYPE:STRING=Release C:\Users\14354\Documents\Qt Projects\MicrologicIDE\build\Desktop_Qt_6_7_2_MinGW_64_bit-Release @@ -222,14 +222,14 @@ 2 false - -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo + -DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_GENERATOR:STRING=Ninja -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} -DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo C:\Users\14354\Documents\Qt Projects\MicrologicIDE\build\Desktop_Qt_6_7_2_MinGW_64_bit-RelWithDebInfo @@ -276,14 +276,14 @@ 2 false - -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo + -DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_GENERATOR:STRING=Ninja -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} -DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo 0 C:\Users\14354\Documents\Qt Projects\MicrologicIDE\build\Desktop_Qt_6_7_2_MinGW_64_bit-Profile @@ -331,14 +331,14 @@ 2 false - -DCMAKE_BUILD_TYPE:STRING=MinSizeRel + -DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_GENERATOR:STRING=Ninja -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} -DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_BUILD_TYPE:STRING=MinSizeRel C:\Users\14354\Documents\Qt Projects\MicrologicIDE\build\Desktop_Qt_6_7_2_MinGW_64_bit-MinSizeRel @@ -413,7 +413,7 @@ true true true - C:/Users/14354/Documents/Qt Projects/MicrologicIDE/build/Desktop_Qt_6_7_2_MinGW_64_bit-Debug + C:/Users/14354/Documents/Qt Projects/MicrologicIDE/build/Desktop_Qt_6_7_2_MinGW_64_bit-Release 1 diff --git a/MicrologicIDE.cpp b/MicrologicIDE.cpp index c3b77f5..c537d84 100644 --- a/MicrologicIDE.cpp +++ b/MicrologicIDE.cpp @@ -19,10 +19,7 @@ std::string exepath=""; -MicrologicIDE::MicrologicIDE(QWidget *parent) : - QMainWindow(parent), - ui(new Ui::MicrologicIDE) -{ +MicrologicIDE::MicrologicIDE(QWidget *parent) : QMainWindow(parent), ui(new Ui::MicrologicIDE){ currentContent=""; path=""; @@ -30,6 +27,8 @@ MicrologicIDE::MicrologicIDE(QWidget *parent) : ui->textEdit->setDocumentTitle("untitled -- MicrologicIDE"); setWindowTitle(ui->textEdit->documentTitle()); + lightMode(); + debugger = new QFileSystemWatcher(); QByteArray b=(QString::fromStdString(exepath+"\\debug.log")+currentfileName).toLatin1(); debugger->addPath(b.data()); @@ -50,6 +49,9 @@ MicrologicIDE::MicrologicIDE(QWidget *parent) : connect(ui->undoAction, &QAction::triggered, ui->textEdit, &QTextEdit::undo); connect(ui->selectAllAction, &QAction::triggered, ui->textEdit, &QTextEdit::selectAll); + connect(ui->darkModeAction, &QAction::triggered, this, &MicrologicIDE::darkMode); + connect(ui->lightModeAction, &QAction::triggered, this, &MicrologicIDE::lightMode); + connect(ui->runAction, &QAction::triggered, this, &MicrologicIDE::runFile); connect(debugger, SIGNAL(fileChanged(QString)), this, SLOT(updateDebug())); @@ -57,13 +59,11 @@ MicrologicIDE::MicrologicIDE(QWidget *parent) : } -MicrologicIDE::~MicrologicIDE() -{ +MicrologicIDE::~MicrologicIDE(){ delete ui; } -void MicrologicIDE::newFile(void) -{ +void MicrologicIDE::newFile(void){ switch (requestIsSave()) { case QMessageBox::Yes : @@ -88,8 +88,7 @@ void MicrologicIDE::newFile(void) } } -void MicrologicIDE::openFile(void) -{ +void MicrologicIDE::openFile(void){ //saveDocumentText(); getDocumentText(); setDocumentTitile(currentfileName); @@ -99,23 +98,20 @@ void MicrologicIDE::openFile(void) }catch(...){} } -void MicrologicIDE::saveFile(void) -{ +void MicrologicIDE::saveFile(void){ QString tmpFileName = saveDocumentText(); setDocumentTitile(tmpFileName); currentfileName = tmpFileName; } -void MicrologicIDE::saveAsFile() -{ +void MicrologicIDE::saveAsFile(){ QString tmpFileName = currentfileName; currentfileName.clear(); saveDocumentText(); currentfileName = tmpFileName; } -void MicrologicIDE::exitNotepad() -{ +void MicrologicIDE::exitNotepad(){ switch (requestIsSave()) { case QMessageBox::Yes : @@ -133,8 +129,7 @@ void MicrologicIDE::exitNotepad() } } -void MicrologicIDE::doForAboutAction() -{ +void MicrologicIDE::doForAboutAction(){ AboutDialog about; about.exec(); } @@ -144,15 +139,13 @@ void MicrologicIDE::setDateTime() ui->textEdit->append(QDateTime::currentDateTime().toString()); } -void MicrologicIDE::seeHelp(void) -{ +void MicrologicIDE::seeHelp(void){ QUrl url("https://github.com/HZZcode/MicrologicIDE"); QDesktopServices::openUrl(url); } -QString MicrologicIDE::saveDocumentText(void) -{ +QString MicrologicIDE::saveDocumentText(void){ QString fileName; QFile file; QTextStream *out; @@ -177,8 +170,7 @@ QString MicrologicIDE::saveDocumentText(void) return fileName; } -void MicrologicIDE::getDocumentText() -{ +void MicrologicIDE::getDocumentText(){ QString fileName; QFile file; QTextStream *in; @@ -194,21 +186,18 @@ void MicrologicIDE::getDocumentText() } } -int MicrologicIDE::requestIsSave() -{ +int MicrologicIDE::requestIsSave(){ int answer = QMessageBox::question(this, tr("MicrologicIDE"), tr("是否将更改保存?"), QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel); return answer; } -void MicrologicIDE::setDocumentTitile(QString title) -{ +void MicrologicIDE::setDocumentTitile(QString title){ ui->textEdit->setDocumentTitle(title); setWindowTitle(ui->textEdit->documentTitle()); } -void MicrologicIDE::runFile() -{ +void MicrologicIDE::runFile(){ qDebug()< MicrologicIDE::content(){ return lines; } -void MicrologicIDE::mark(std::vector errorList={}) -{ +void MicrologicIDE::mark(std::vector errorList={}){ std::string text{}; std::vector lines=content(); @@ -312,8 +300,7 @@ void MicrologicIDE::mark(std::vector errorList={}) ui->textEdit->setText(text.c_str()); } -void MicrologicIDE::unmark() -{ +void MicrologicIDE::unmark(){ std::string text=ui->textEdit->document()->toPlainText().toStdString(); ui->textEdit->setText(text.c_str()); } @@ -334,6 +321,44 @@ void MicrologicIDE::makeMarks(){ } } +void MicrologicIDE::lightMode(){ + this->setStyleSheet("background-color: white; color: black;"); + ui->textEdit->setStyleSheet("border-top-style: solid; border-bottom-style: solid; border-width: 1px; border-color: black;"); + ui->debugText->setStyleSheet("border-bottom-style: solid; border-width: 1px; border-color: black;"); + + errorStart="";errorEnd=""; + keyStart="";keyEnd=""; + numStart="";numEnd=""; + modStart="";modEnd=""; + + debugStart="";debugEnd=""; + IStart="";IEnd=""; + OStart="";OEnd=""; + IOStart="";IOEnd=""; + debugInfo="====[DEBUG INFO] "+IStart+"input "+IEnd+OStart+"output "+OEnd+IOStart+"input&output "+IOEnd+"===="; + + blankChars={" ","\n",errorStart,errorEnd,"
"}; +} + +void MicrologicIDE::darkMode(){ + this->setStyleSheet("background-color: black; color: white;"); + ui->textEdit->setStyleSheet("border-top-style: solid; border-bottom-style: solid; border-width: 1px; border-color: white;"); + ui->debugText->setStyleSheet("border-bottom-style: solid; border-width: 1px; border-color: white;"); + + errorStart="";errorEnd=""; + keyStart="";keyEnd=""; + numStart="";numEnd=""; + modStart="";modEnd=""; + + debugStart="";debugEnd=""; + IStart="";IEnd=""; + OStart="";OEnd=""; + IOStart="";IOEnd=""; + debugInfo="====[DEBUG INFO] "+IStart+"input "+IEnd+OStart+"output "+OEnd+IOStart+"input&output "+IOEnd+"===="; + + blankChars={" ","\n",errorStart,errorEnd,"
"}; +} + int countInput(std::vector lines){ int ans=0; for(int i=0;i> MicrologicIDE::findMods(std::vector MicrologicIDE::grammarCheck(std::vector lines) -{ +std::vector MicrologicIDE::grammarCheck(std::vector lines){ std::vector ans(lines.size()); std::vector Ls{}; //line order->is wide std::vector ins{}; //input line order->is wide @@ -573,6 +597,23 @@ std::vector MicrologicIDE::grammarCheck(std::vector lines) } else ans[i]=false; } + else if((args[0]=="type"||args[0]=="tag")&&args.size()==2){ + if(isNumber(args[1])){ + if(atoi(args[1].c_str()) MicrologicIDE::grammarCheck(std::vector lines) return ans; } -void MicrologicIDE::on_textEdit_textChanged() -{ +void MicrologicIDE::on_textEdit_textChanged(){ } -void MicrologicIDE::updateDebug() -{ +void MicrologicIDE::updateDebug(){ std::ifstream debug; debug.open(exepath+"\\debug.log",std::ios::in); if(!debug.good()){ diff --git a/MicrologicIDE.h b/MicrologicIDE.h index 6746174..affe2a0 100644 --- a/MicrologicIDE.h +++ b/MicrologicIDE.h @@ -18,18 +18,18 @@ class MicrologicIDE : public QMainWindow std::string currentContent; std::string path; - const std::string errorStart="",errorEnd=""; - const std::string keyStart="",keyEnd=""; - const std::string numStart="",numEnd=""; - const std::string modStart="",modEnd=""; - - const std::string debugStart="",debugEnd=""; - const std::string IStart="",IEnd=""; - const std::string OStart="",OEnd=""; - const std::string IOStart="",IOEnd=""; - const std::string debugInfo="====[DEBUG INFO] "+IStart+"input "+IEnd+OStart+"output "+OEnd+IOStart+"input&output "+IOEnd+"===="; - - const std::vector blankChars={" ","\n",errorStart,errorEnd,"
"}; + std::string errorStart{},errorEnd{}; + std::string keyStart{},keyEnd{}; + std::string numStart{},numEnd{}; + std::string modStart{},modEnd{}; + + std::string debugStart{},debugEnd{}; + std::string IStart{},IEnd{}; + std::string OStart{},OEnd{}; + std::string IOStart{},IOEnd{}; + std::string debugInfo{}; + + std::vector blankChars; const std::vector keys={"end","line","wline","N","A","R","T","C","P","set","check","input:","input","output:","output","tick","tick!","speed","path","open","mod","block","inspect","echo","@echo","clear","help","clear"}; const std::vector nums={"0","1","2","3","4","5","6","7","8","9"}; @@ -64,6 +64,9 @@ class MicrologicIDE : public QMainWindow std::vector grammarCheck(std::vector); void makeMarks(); + void lightMode(); + void darkMode(); + int charCount(int,int); inline bool isBlank(const std::string str){ diff --git a/MicrologicIDE.ui b/MicrologicIDE.ui index 73ec9cf..683036d 100644 --- a/MicrologicIDE.ui +++ b/MicrologicIDE.ui @@ -36,7 +36,7 @@ 16777215 - 54 + 72 @@ -89,7 +89,8 @@ 查看(&V) - + + @@ -250,11 +251,6 @@ 颜色 - - - 状态栏(S) - - 查看帮助(H) @@ -283,6 +279,16 @@ test + + + 深色模式 + + + + + 浅色模式 + +