Fix problem with partial loading of files
[vlp.git] / src / edit / editor.cpp
index 59e7f9e53d0eae1885a5bcbb8343e959d60b7907..2315c0e1f5d75b9b66b7e4f6bb409ce7622502a9 100644 (file)
@@ -5,7 +5,6 @@
 #include <QtGui/QFileDialog>
 #include <QtGui/QColor>
 #include <QtGui/QPalette>
-#include <QtGui/QCloseEvent>
 #include <QtGui/QTextDocument>
 #include <QtGui/QMainWindow>
 #include <QtGui/QStatusBar>
 
 #include "ProgramStructureDialog.h"
 #include "UnitStructureDialog.h"
+#include "PreferencesDialog.h"
+#include "FindDialog.h"
 
 #include "editor.h"
 
+namespace loglan {
+namespace vlp {
+
 /**
  * Editor constructor. Initializes and sets variables of Loglan Editor.
  *
@@ -31,6 +35,7 @@ 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 = "";
@@ -83,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();
 
@@ -128,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;
        }
 
@@ -169,7 +175,8 @@ void Editor::compile(int mode)
 void Editor::on_actionNew_triggered()
 {
        on_actionClear_all_triggered();
-       fname.sprintf("%s", "");}
+       fname.sprintf("%s", "");
+}
 
 /**
  * Displays additional window 
@@ -244,44 +251,18 @@ void Editor::on_actionClear_all_triggered()
  */
 void Editor::on_actionFind_triggered()
 {
-       QDialog dlg(this, Qt::Dialog);
-
-       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);
-
-       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()));
+       dialog::FindDialog dialog(this);
 
-       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);
        }
 }
@@ -308,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());
        };
 }
 
@@ -402,7 +330,7 @@ void Editor::on_actionCompile_Gen_triggered()
 
 void Editor::on_actionProgram_structure_triggered()
 {
-       ProgramStructureDialog dialog(this);
+       dialog::ProgramStructureDialog dialog(this);
 
        if (dialog.exec()) {
                editor->textCursor().insertText(dialog.getCode());
@@ -411,13 +339,16 @@ void Editor::on_actionProgram_structure_triggered()
 
 void Editor::on_actionUnit_structure_triggered()
 {
-       UnitStructureDialog dialog(this);
+       dialog::UnitStructureDialog dialog(this);
 
        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
@@ -429,7 +360,7 @@ void Editor::on_actionUnit_structure_triggered()
 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();
 }