X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=src%2Fedit%2Feditor.cpp;h=2315c0e1f5d75b9b66b7e4f6bb409ce7622502a9;hb=HEAD;hp=1daa7e7a8640212a1f6e134d9dded156566f0275;hpb=2790becf11abd500425493a9f3751b39292213d2;p=vlp.git diff --git a/src/edit/editor.cpp b/src/edit/editor.cpp index 1daa7e7..2315c0e 100644 --- a/src/edit/editor.cpp +++ b/src/edit/editor.cpp @@ -5,27 +5,23 @@ #include #include #include -#include #include #include #include #include #include +#include +#include -#include "editor.h" +#include "ProgramStructureDialog.h" +#include "UnitStructureDialog.h" +#include "PreferencesDialog.h" +#include "FindDialog.h" -#define TYPENUM 5 +#include "editor.h" -/** - * @attention Currently not in use - */ -char *UnitTypes[TYPENUM] = { - "CLASS", - "PROCEDURE", - "FUNCTION", - "PROCESS", - "COROUTINE" -}; +namespace loglan { +namespace vlp { /** * Editor constructor. Initializes and sets variables of Loglan Editor. @@ -39,14 +35,12 @@ Editor::Editor(int argc, char **argv) if (argc > 1) { strcpy(HomeDir, argv[1]); + fprintf(stderr, "EDIT: HomeDir inited with: %s (%s)\n", HomeDir, argv[1]); } find_text = ""; sensitive = FALSE; - /* loglan->insertItem( "Program structure", this, SLOT(log_prog()));*/ - /* loglan->insertItem( "Unit structure", this, SLOT(log_unit()));*/ - compiler_path.sprintf("%s/%s", HomeDir, "compile/logcomp"); gen_path.sprintf("%s/%s", HomeDir, "compile/gen"); file_path.sprintf("%s", HomeDir); @@ -94,9 +88,10 @@ void Editor::load(const char *fileName) editor->clear(); QTextStream textStream(&file); - while (!file.atEnd()) { - editor->append(textStream.readLine()); - } + editor->append(textStream.readAll()); +// while (!file.atEnd()) { +// editor->append(textStream.readLine()); +// } file.close(); @@ -139,19 +134,19 @@ void Editor::compile(int mode) /* fn.truncate(i);*/ switch(mode) { case COMP_MODE: - sprintf(cmd, "%s %s > comp_data!", compiler_path.toAscii().data(), - fname.toAscii().data()); + sprintf(cmd, "%s %s > comp_data!", compiler_path.toStdString().c_str(), + fname.toStdString().c_str()); break; case GEN_MODE: - sprintf(cmd, "%s %s > comp_data!", gen_path.toAscii().data(), - fname.toAscii().data()); + sprintf(cmd, "%s %s > comp_data!", gen_path.toStdString().c_str(), + fname.toStdString().c_str()); break; case ALL_MODE: - sprintf(cmd, "%s %s > comp_data!", compiler_path.toAscii().data(), - fname.toAscii().data()); + sprintf(cmd, "%s %s > comp_data!", compiler_path.toStdString().c_str(), + fname.toStdString().c_str()); system(cmd); - sprintf(cmd, "%s %s >> comp_data!", gen_path.toAscii().data(), - fname.toAscii().data()); + sprintf(cmd, "%s %s >> comp_data!", gen_path.toStdString().c_str(), + fname.toStdString().c_str()); break; } @@ -179,8 +174,9 @@ void Editor::compile(int mode) */ void Editor::on_actionNew_triggered() { - editor->clear(); - fname.sprintf("%s", "");} + on_actionClear_all_triggered(); + fname.sprintf("%s", ""); +} /** * Displays additional window @@ -233,15 +229,19 @@ void Editor::on_actionQuit_triggered() } void Editor::on_actionCopy_triggered() { + editor->copy(); } void Editor::on_actionPaste_triggered() { + editor->paste(); } void Editor::on_actionCut_triggered() { + editor->cut(); } void Editor::on_actionClear_all_triggered() { + editor->clear(); } /** @@ -251,46 +251,18 @@ void Editor::on_actionClear_all_triggered() */ void Editor::on_actionFind_triggered() { - QDialog dlg(this, Qt::Dialog); - QString *txt; - int res, line, pom; - - QLineEdit *tmpQLineEdit; - tmpQLineEdit = new QLineEdit("", &dlg); - tmpQLineEdit->setGeometry(60, 10, 180, 30); - - QLabel *tmpQLabel; - tmpQLabel = new QLabel(&dlg); - tmpQLabel->setGeometry(10, 10, 50, 30); - - tmpQLabel->setText("Text:"); - - QCheckBox *tmpQRadioButton; - tmpQRadioButton = new QCheckBox("Case sensitive", &dlg); - tmpQRadioButton->setGeometry(70, 50, 150, 30); - tmpQRadioButton->setAutoRepeat(FALSE); + dialog::FindDialog dialog(this); - QPushButton *okbtn, *cbtn; - okbtn = new QPushButton("Find", &dlg); - okbtn->setGeometry(260, 10, 100, 30); - okbtn->setDefault(TRUE); - connect(okbtn,SIGNAL(clicked()), &dlg, SLOT(accept())); - - cbtn = new QPushButton("Close", &dlg); - cbtn->setGeometry(260, 50, 100, 30); - connect(cbtn, SIGNAL(clicked()), &dlg, SLOT(reject())); - - dlg.resize(380, 90); - - if (dlg.exec()) { - sensitive = tmpQRadioButton->isChecked(); - find_text = tmpQLineEdit->text(); + if (dialog.exec()) { + sensitive = dialog.isCaseSensitive(); + find_text = dialog.getSearchText(); QTextDocument::FindFlags flags = 0; if (sensitive) { flags |= QTextDocument::FindCaseSensitively; } + editor->find(find_text, flags); } } @@ -317,69 +289,16 @@ void Editor::on_actionFind_Next_triggered() */ void Editor::on_actionPreferences_triggered() { - QDialog dlg(this, Qt::Dialog); - - QLineEdit *files; - files = new QLineEdit(&dlg); - files->setGeometry(130, 20, 250, 30); - files->setText(file_path); - files->setMaxLength(32767); - files->setEchoMode(QLineEdit::Normal); - files->setFrame(TRUE); - - QLabel *tmpQLabel; - tmpQLabel = new QLabel("Path to files:", &dlg); - tmpQLabel->setGeometry(10, 20, 100, 30); - tmpQLabel->setAlignment(Qt::AlignLeft); - tmpQLabel->setMargin(-1); - - tmpQLabel = new QLabel("Path to compiler:", &dlg); - tmpQLabel->setGeometry(10, 60, 100, 30); - tmpQLabel->setAlignment(Qt::AlignLeft); - tmpQLabel->setMargin(-1); - - /* - tmpQLabel = new QLabel(&dlg, "Label_3"); - tmpQLabel->setGeometry(10, 100, 100, 30); - tmpQLabel->setText("Path to gen:"); - tmpQLabel->setAlignment(289); - tmpQLabel->setMargin(-1); - */ - - QLineEdit *compp; - compp = new QLineEdit(compiler_path, &dlg); - compp->setGeometry(130, 60, 250, 30); - compp->setMaxLength(32767); - compp->setEchoMode(QLineEdit::Normal); - compp->setFrame(TRUE); - - /* - QLineEdit* genp; - genp = new QLineEdit(&dlg, "g_path"); - genp->setGeometry(130, 100, 250, 30); - genp->setText(gen_path.data()); - genp->setMaxLength(32767); - genp->setEchoMode(QLineEdit::Normal); - genp->setFrame(TRUE); - */ - - QPushButton* tmpQPushButton; - tmpQPushButton = new QPushButton("Ok", &dlg); - tmpQPushButton->setGeometry(90, 100, 70, 30); - tmpQPushButton->setAutoRepeat(FALSE); - connect(tmpQPushButton,SIGNAL(clicked()), &dlg, SLOT(accept())); - - tmpQPushButton = new QPushButton("Cancel", &dlg); - tmpQPushButton->setGeometry(180, 100, 70, 30); - tmpQPushButton->setAutoRepeat(FALSE); - connect(tmpQPushButton,SIGNAL(clicked()), &dlg, SLOT(reject())); - - dlg.resize(400, 140); - - if (dlg.exec()) { - compiler_path.sprintf("%s", compp->text().toAscii().data()); - /* gen_path.sprintf("%s",genp->text()); */ - file_path.sprintf("%s", files->text().toAscii().data()); + dialog::PreferencesDialog dialog(this); + + dialog.setCompilerPath(compiler_path); + dialog.setFilesPath(file_path); + dialog.setGenPath(gen_path); + + if (dialog.exec()) { + compiler_path.sprintf("%s", dialog.getCompilerPath().toStdString().c_str()); + gen_path.sprintf("%s",dialog.getGenPath().toStdString().c_str()); + file_path.sprintf("%s", dialog.getFilesPath().toStdString().c_str()); }; } @@ -411,129 +330,37 @@ void Editor::on_actionCompile_Gen_triggered() void Editor::on_actionProgram_structure_triggered() { - /* - Code commented during Qt4 migration. - Code is not used, so there is no rush with this... - */ - /* - QString txt; - QDialog dlg(this, "unit", TRUE); - int cx, cy; - char uname[255]; - - QLineEdit *files; - files = new QLineEdit(&dlg, "f_path"); - files->setGeometry(130, 20, 250, 30); - files->setText(""); - files->setMaxLength(32767); - files->setEchoMode(QLineEdit::Normal); - files->setFrame(TRUE); - - QLabel *tmpQLabel; - tmpQLabel = new QLabel(&dlg, "Label_1"); - tmpQLabel->setGeometry(10, 20, 100, 30); - tmpQLabel->setText("Program name:"); - - QPushButton* tmpQPushButton; - tmpQPushButton = new QPushButton(&dlg, "OkBtn"); - tmpQPushButton->setGeometry(40, 70, 70, 30); - tmpQPushButton->setText("Ok"); - tmpQPushButton->setAutoRepeat(FALSE); - tmpQPushButton->setAutoResize(FALSE); - connect(tmpQPushButton,SIGNAL(clicked()), &dlg, SLOT(accept())); - - tmpQPushButton = new QPushButton(&dlg, "CancelBtn"); - tmpQPushButton->setGeometry(130, 70, 100, 30); - tmpQPushButton->setText("Cancel"); - tmpQPushButton->setAutoRepeat(FALSE); - tmpQPushButton->setAutoResize(FALSE); - connect(tmpQPushButton,SIGNAL(clicked()), &dlg, SLOT(reject())); - - if (dlg.exec()) { - strcpy(uname, files->text()); - e->getCursorPosition(&cx, &cy); - - txt.sprintf("PROGRAM %s\n\nBEGIN\n\nEND ", uname); - e->insertAt(txt, cx, cy); + dialog::ProgramStructureDialog dialog(this); + + if (dialog.exec()) { + editor->textCursor().insertText(dialog.getCode()); } - */ } void Editor::on_actionUnit_structure_triggered() { - /* - Code commented during Qt4 migration. - Code is not used, so there is no rush with this... - */ - /* - QString txt; - QDialog dlg(this, Qt::Dialog); - int cx, cy, i; - char uname[255]; - - QLineEdit* files; - files = new QLineEdit(&dlg, "f_path"); - files->setGeometry(130, 20, 250, 30); - files->setText(""); - files->setMaxLength(32767); - files->setEchoMode(QLineEdit::Normal); - files->setFrame(TRUE); - - QLabel* tmpQLabel; - tmpQLabel = new QLabel(&dlg, "Label_1"); - tmpQLabel->setGeometry(10, 20, 100, 30); - tmpQLabel->setText("Unit name:"); - tmpQLabel->setAlignment(289); - tmpQLabel->setMargin(-1); - - QPushButton* tmpQPushButton; - tmpQPushButton = new QPushButton(&dlg, "OkBtn"); - tmpQPushButton->setGeometry(40, 170, 70, 30); - tmpQPushButton->setText("Ok"); - tmpQPushButton->setAutoRepeat(FALSE); - tmpQPushButton->setAutoResize(FALSE); - connect(tmpQPushButton,SIGNAL(clicked()), &dlg, SLOT(accept())); - - tmpQPushButton = new QPushButton(&dlg, "CancelBtn"); - tmpQPushButton->setGeometry(130, 170, 100, 30); - tmpQPushButton->setText("Cancel"); - tmpQPushButton->setAutoRepeat(FALSE); - tmpQPushButton->setAutoResize(FALSE); - connect(tmpQPushButton,SIGNAL(clicked()), &dlg, SLOT(reject())); - - tmpQLabel = new QLabel(&dlg, "Label_1"); - tmpQLabel->setGeometry(10, 50, 100, 60); - tmpQLabel->setText("Unit type:"); - - QListBox lst(&dlg, "type"); - for(i = 0; i < TYPENUM; i++) { - lst.insertItem(UnitTypes[i]); - } - lst.setGeometry(130, 60, 180, 80); - lst.setCurrentItem(0); - - if (dlg.exec()) { - strcpy(uname, files->text()); - e->getCursorPosition(&cx, &cy); + dialog::UnitStructureDialog dialog(this); - txt.sprintf("UNIT %s : %s( );\nBEGIN\n\nEND %s;", - uname, lst.text(lst.currentItem()).ascii(), uname); - e->insertAt(txt, cx, cy); + if (dialog.exec()) { + editor->textCursor().insertText(dialog.getCode()); } - */ +} + +} } /** * Program main function. * argv[1] is mandatory and should be a path to the home directory of * application (same as in configuration file). + * * @param argc Number of program arguments * @param argv Program arguments */ int main(int argc, char **argv) { QApplication app(argc, argv); - Editor * editor = new Editor(argc, argv); + loglan::vlp::Editor * editor = new loglan::vlp::Editor(argc, argv); editor->show(); return app.exec(); }