X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=src%2Fedit%2Feditor.cpp;h=2315c0e1f5d75b9b66b7e4f6bb409ce7622502a9;hb=HEAD;hp=ed71939e4ede9ddab0d62c92198384364bcffedf;hpb=7a277153cc72eed9f152af09f22e680db3ec6563;p=vlp.git diff --git a/src/edit/editor.cpp b/src/edit/editor.cpp index ed71939..2315c0e 100644 --- a/src/edit/editor.cpp +++ b/src/edit/editor.cpp @@ -1,604 +1,367 @@ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ProgramStructureDialog.h" +#include "UnitStructureDialog.h" +#include "PreferencesDialog.h" +#include "FindDialog.h" #include "editor.h" -#define TYPENUM 5 - - -Editor *e; +namespace loglan { +namespace vlp { +/** + * Editor constructor. Initializes and sets variables of Loglan Editor. + * + * @param argc command line argc parameter + * @param argv command line argv parameter + */ +Editor::Editor(int argc, char **argv) +{ + setupUi(this); -char *UnitTypes[5] = {"CLASS","PROCEDURE","FUNCTION","PROCESS","COROUTINE"}; - + if (argc > 1) { + strcpy(HomeDir, argv[1]); + fprintf(stderr, "EDIT: HomeDir inited with: %s (%s)\n", HomeDir, argv[1]); + } + find_text = ""; + sensitive = FALSE; + compiler_path.sprintf("%s/%s", HomeDir, "compile/logcomp"); + gen_path.sprintf("%s/%s", HomeDir, "compile/gen"); + file_path.sprintf("%s", HomeDir); + + + connect(editor, SIGNAL(cursorPositionChanged()), this, SLOT(on_editor_cursorPositionChanged())); +} -My_Edit::My_Edit(QWidget *parent,const char *name) -: QMultiLineEdit(parent,name) +/** + * Editor destructor + */ +Editor::~Editor() { - parent = NULL; - name = NULL; } -void My_Edit::keyPressEvent(QKeyEvent *ev) +/** + * Displays line:column position of cursor + */ +void Editor::on_editor_cursorPositionChanged() { - QMultiLineEdit::keyPressEvent(ev); - emit cursorMove(); -} + QString position; + int cx; + int cy; + cx = editor->textCursor().blockNumber(); + cy = editor->textCursor().columnNumber(); + position.sprintf("%d:%d", cx, cy); -void Editor::closeEvent ( QCloseEvent * e ) { - e->ignore(); + statusBar()->showMessage(position); } -Editor::Editor( char *hdir,QWidget * parent , const char * name) - : QWidget( parent, name ) +/** + * Loads given file content to the editor. + * + * @param fileName Filename of file which will be read. + */ +void Editor::load(const char *fileName) { - QFont f1("Helvetica",10,QFont::Bold); - - - strcpy(HomeDir,hdir); - strcpy(find_text,""); - sensitive=FALSE; - m = new QMenuBar( this, "menu" ); - m->setFont(f1); - QPopupMenu * file = new QPopupMenu(); - QPopupMenu * comp = new QPopupMenu(); - QPopupMenu * loglan = new QPopupMenu(); - QPopupMenu *medit = new QPopupMenu(); - - file->setFont(f1); - comp->setFont(f1); - loglan->setFont(f1); - medit->setFont(f1); - CHECK_PTR( file ); - CHECK_PTR( comp ); - m->insertItem( "&File ", file ); - m->insertItem( "&Edit", medit ); - m->insertItem( "&Compile", this,SLOT(cmp()) ); - -// m->insertItem( "&LOGLAN ", loglan ); - m->insertItem( "&Properties", this, SLOT(props())); - - - - - file->insertItem( "New ", this, SLOT(create()), CTRL+Key_N); - file->insertItem( "Open ", this, SLOT(load()), CTRL+Key_O); - file->insertItem( "Save ", this, SLOT(save()),CTRL+Key_S); - file->insertItem( "Save as", this, SLOT(save_as()),CTRL+Key_A); - file->insertSeparator(); - file->insertItem( "Quit ", qApp, SLOT(quit())); - -// comp->insertItem( "Compile ", this, SLOT(cmp()), CTRL+Key_C); -// comp->insertItem( "Gen ", this, SLOT(gen()), CTRL+Key_G); -// comp->insertItem( "Compile & Gen ", this, SLOT(comp_all())); - -// loglan->insertItem( "Program structure", this, SLOT(log_prog())); -// loglan->insertItem( "Unit structure", this, SLOT(log_unit())); - - - - e = new My_Edit( this, "editor" ); - connect(e,SIGNAL(cursorMove()),this,SLOT(updateline())); - medit->insertItem("Copy ",e,SLOT(copy()),CTRL+Key_Insert); - medit->insertItem("Paste ",e,SLOT(paste()), SHIFT+Key_Insert); - medit->insertItem("Cut ",e,SLOT(cut()), CTRL+Key_Delete); - medit->insertItem("Clear All ",e,SLOT(clear())); - medit->insertSeparator(); - medit->insertItem("Find ",this,SLOT(findText()), CTRL+Key_F); - medit->insertItem("Find Next ",this,SLOT(find_next()),CTRL+Key_L); - - msg = new QMultiLineEdit( this, "messages" ); - msg->setReadOnly(TRUE); - compiler_path.sprintf("%s/%s",HomeDir,"compile/logcomp"); - gen_path.sprintf("%s/%s",HomeDir,"compile/gen"); - file_path.sprintf("%s",HomeDir); - - QFont f2("Times",14,QFont::Bold); - e->setFont(f1); - QColor col(200,200,200); - QColorGroup grp(black,col,col.light(),col.dark(),col.dark(),black,col); - - msg->setPalette(QPalette(grp,grp,grp)); - position = new QLabel(this); - position->setFont(f2); - position->setFrameStyle(QFrame::NoFrame); - position->setAutoResize(TRUE); - resize(400,300); - -} - + fname.sprintf("%s", fileName); -Editor::~Editor() -{ - -} + QFile file(fileName); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) + return; + editor->clear(); + QTextStream textStream(&file); + editor->append(textStream.readAll()); +// while (!file.atEnd()) { +// editor->append(textStream.readLine()); +// } + file.close(); -void Editor::updateline() -{ - char pom[255]; - int cx,cy; - - e->getCursorPosition(&cx,&cy); - sprintf(pom," %d:%d ",cx,cy); - position->setText(pom); + editor->repaint(); + setWindowTitle(fileName); } -void Editor::resizeEvent( QResizeEvent * ) +/** + * Saves editor content to the given filename. + * @param fileName File name of the file where content should be saved. + */ +void Editor::save(const char *fileName) { - if ( e && m ) - { - e->setGeometry( 0, m->height(), width(), 3*(int)(( height() - m->height() )/4) ); - msg->setGeometry( 0, m->height()+ e->height(), width(), (int)(( height() - m->height() )/4) ); - position->setGeometry(width()-80,m->height()+ e->height()-10, - position->width(),position->height()); - } -} - + QFile file(fileName); + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) + return; -void Editor::load() -{ - QString fn = QFileDialog::getOpenFileName(file_path.data(),"*.log"); - if ( !fn.isEmpty() ) - load( fn ); + file.reset(); + file.write(editor->toPlainText().toAscii().data(), editor->toPlainText().length()); + file.close(); } - -void Editor::load( const char *fileName ) +/** + * Invokes compiler in the giving mode. + * @param mode Mode of compilation. Possible values: + * - COMP_MODE - compilation mode + * - GEN_MODE - program generation mode + * - ALL_MODE - compilation & generation mode. + */ +void Editor::compile(int mode) { - fname.sprintf("%s",fileName); - + char cmd[255]; + messages->setReadOnly(FALSE); + messages->clear(); + messages->repaint(); + + /*i = fname.find('.');*/ + /* if (i>=0) {*/ + + /* fn.truncate(i);*/ + switch(mode) { + case COMP_MODE: + 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.toStdString().c_str(), + fname.toStdString().c_str()); + break; + case ALL_MODE: + 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.toStdString().c_str(), + fname.toStdString().c_str()); + break; + } - QFile f( fileName ); - if ( !f.open( IO_ReadOnly ) ) - return; + system(cmd); + QFile f("comp_data!"); + if (!f.open(QIODevice::ReadOnly | QIODevice::Text)) + return; - e->setAutoUpdate( FALSE ); - e->clear(); + QTextStream t(&f); + while (!t.atEnd()) { + QString s = t.readLine(); + messages->append(s); + } + f.close(); - QTextStream t(&f); - while ( !t.eof() ) { - QString s = t.readLine(); - e->append( s ); - } - f.close(); + messages->setReadOnly(TRUE); - e->setAutoUpdate( TRUE ); - e->repaint(); - setCaption( fileName ); + messages->repaint(); + unlink("comp_data!"); + /*}*/ } - -void Editor::save() +/** + * Empties editor content. + */ +void Editor::on_actionNew_triggered() { - if (fname.isEmpty()) - { - QString fn = QFileDialog::getSaveFileName(file_path.data(),"*.log"); - if ( !fn.isEmpty() ) - { - fname.sprintf("%s",fn.data()); - save( fn ); - } - } - else - save(fname); - setCaption(fname); + on_actionClear_all_triggered(); + fname.sprintf("%s", ""); } -void Editor::save_as() +/** + * Displays additional window + */ +void Editor::on_actionOpen_triggered() { - QString fn = QFileDialog::getSaveFileName(file_path.data(),"*.log"); - if ( !fn.isEmpty() ) - { - fname.sprintf("%s",fn.data()); - save( fn ); - } - setCaption(fname); + QString fn = QFileDialog::getOpenFileName(this, "Load file", file_path, "*.log"); + if (!fn.isEmpty()) + load(fn.toAscii().data()); } -void Editor::save(const char *fileName) +/** + * Saves editor content to the file. + * If content has been read from file, it is written to this file. Otherwise + * dialog is shown to save content to the specified by user, file. + */ +void Editor::on_actionSave_triggered() { - - QFile f(fileName); - if (!f.open(IO_WriteOnly)) return; - f.reset(); - f.writeBlock( e->text().data(),e->text().length() ); - f.close(); - - + if (fname.isEmpty()) { + QString fn = QFileDialog::getSaveFileName(this, "Save file", + file_path, "*.log"); + if (!fn.isEmpty()) { + fname.sprintf("%s", fn.toAscii().data()); + save(fn.toAscii().data()); + } + } else { + save(fname.toAscii().data()); + } + setWindowTitle(fname); } - -void Editor::create() +/** + * Saves editor content to the file. + * Forces saving editor content to the new file. Special dialog is shown for + * that purpose. + */ +void Editor::on_actionSave_as_triggered() { - e->clear(); - fname.sprintf("%s",""); + QString fn = QFileDialog::getSaveFileName(this, "Save file as", + file_path, "*.log"); + if (!fn.isEmpty()) { + fname.sprintf("%s", fn.toAscii().data()); + save(fn.toAscii().data()); + } + setWindowTitle(fname); } - - -void Editor::print() +void Editor::on_actionQuit_triggered() { - + QApplication::instance()->quit(); } - - - -void Editor::cmp() +void Editor::on_actionCopy_triggered() { - save(); - compile(COMP_MODE); + editor->copy(); } - -void Editor::gen() +void Editor::on_actionPaste_triggered() { - compile(GEN_MODE); + editor->paste(); } - -void Editor::comp_all() +void Editor::on_actionCut_triggered() +{ + editor->cut(); +} +void Editor::on_actionClear_all_triggered() { - save(); - compile(ALL_MODE); + editor->clear(); } +/** + * Searches for given text in editor content. + * Displays window to set search parameters. If text is found sets cursor + * position on it. + */ +void Editor::on_actionFind_triggered() +{ + dialog::FindDialog dialog(this); + + if (dialog.exec()) { + sensitive = dialog.isCaseSensitive(); + find_text = dialog.getSearchText(); + + QTextDocument::FindFlags flags = 0; + + if (sensitive) { + flags |= QTextDocument::FindCaseSensitively; + } + + editor->find(find_text, flags); + } +} -void Editor::compile(int mode) +/** + * Searches for next occurence of given text in editor content. + * Displays window to set search parameters. If text is found sets cursor + * position on it. + */ +void Editor::on_actionFind_Next_triggered() { - char cmd[255]; - - msg->setAutoUpdate( FALSE ); - msg->setReadOnly(FALSE); - msg->clear(); - msg->repaint(); - - - //i = fname.find('.'); -// if (i>=0) - { - QString fn = fname.data(); -// fn.truncate(i); - - switch(mode) - { - - case COMP_MODE: - sprintf(cmd,"%s %s > comp_data!",compiler_path.data(),fname.data()); - break; - case GEN_MODE: - sprintf(cmd,"%s %s > comp_data!",gen_path.data(),fn.data()); - break; - case ALL_MODE: - sprintf(cmd,"%s %s > comp_data!",compiler_path.data(),fn.data()); - system(cmd); - sprintf(cmd,"%s %s >> comp_data!",gen_path.data(),fn.data()); - break; - - } /*switch */ - - system(cmd); - QFile f( "comp_data!" ); - if ( !f.open( IO_ReadOnly ) ) - return; - - - QTextStream t(&f); - while ( !t.eof() ) { - QString s = t.readLine(); - msg->append( s ); - } - f.close(); - msg->setReadOnly(TRUE); - msg->setAutoUpdate( TRUE ); - msg->repaint(); - unlink("comp_data!"); - } + if (!find_text.isEmpty()) { + QTextDocument::FindFlags flags = 0; + + if (sensitive) { + flags |= QTextDocument::FindCaseSensitively; + } + editor->find(find_text, flags); + } } +/** + * Displays window with editor properties + */ +void Editor::on_actionPreferences_triggered() +{ + 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()); + }; +} -void Editor::props() +/** + * Saves and compiles code. + */ +void Editor::on_actionCompile_triggered() { - QDialog dlg(this,"Properties",TRUE); - - - QLineEdit* files; - files = new QLineEdit( &dlg, "f_path" ); - files->setGeometry( 130, 20, 250, 30 ); - files->setText( file_path.data() ); - 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( "Path to files:" ); - tmpQLabel->setAlignment( 289 ); - tmpQLabel->setMargin( -1 ); - - tmpQLabel = new QLabel( &dlg, "Label_2" ); - tmpQLabel->setGeometry( 10, 60, 100, 30 ); - tmpQLabel->setText( "Path to compiler:" ); - tmpQLabel->setAlignment( 289 ); - 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( &dlg, "l_path" ); - compp->setGeometry( 130, 60, 250, 30 ); - compp->setText( compiler_path.data() ); - 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( &dlg, "OkBtn" ); - tmpQPushButton->setGeometry( 90, 100, 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( 180, 100, 70, 30 ); - tmpQPushButton->setText( "Cancel" ); - tmpQPushButton->setAutoRepeat( FALSE ); - tmpQPushButton->setAutoResize( FALSE ); - connect(tmpQPushButton,SIGNAL(clicked()),&dlg,SLOT(reject())); - dlg.resize(400,140); - - if (dlg.exec()) - { - compiler_path.sprintf("%s",compp->text().ascii()); -// gen_path.sprintf("%s",genp->text()); - file_path.sprintf("%s",files->text().ascii()); - }; - } - -/* --------------------------------------- */ - - - - - -void Editor::log_unit() + on_actionSave_triggered(); + compile(COMP_MODE); +} + +/** + * Generates program. + */ +void Editor::on_actionGen_triggered() { - QString txt; - QDialog dlg(this,"unit",TRUE); - 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;itext()); - e->getCursorPosition(&cx,&cy); - - txt.sprintf("UNIT %s : %s( );\nBEGIN\n\nEND %s;",uname, - lst.text(lst.currentItem()).ascii(), uname); - e->insertAt(txt,cx,cy); - }; + compile(GEN_MODE); } +/** + * Saves, compiles and generates code. + */ +void Editor::on_actionCompile_Gen_triggered() +{ + on_actionSave_triggered(); + compile(ALL_MODE); +} -void Editor::log_prog() +void Editor::on_actionProgram_structure_triggered() { - 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::findText() +void Editor::on_actionUnit_structure_triggered() { - QDialog dlg(this,"",TRUE); - QString *txt; - int res,line,pom; - - - QLineEdit* tmpQLineEdit; - tmpQLineEdit = new QLineEdit( &dlg, "LineEdit_1" ); - tmpQLineEdit->setGeometry( 60, 10, 180, 30 ); - tmpQLineEdit->setText( "" ); - - QLabel* tmpQLabel; - tmpQLabel = new QLabel( &dlg, "Label_1" ); - tmpQLabel->setGeometry( 10, 10, 50, 30 ); - { - QFont font( "helvetica", 12, 75, 0 ); - font.setStyleHint( (QFont::StyleHint)0 ); - //font.setCharSet( (QFont::CharSet)0 ); - tmpQLabel->setFont( font ); - } - tmpQLabel->setText( "Text:" ); - - QCheckBox* tmpQRadioButton; - tmpQRadioButton = new QCheckBox( &dlg, "RadioButton_1" ); - tmpQRadioButton->setGeometry( 70, 50, 150, 30 ); - tmpQRadioButton->setText( "Case sensitive" ); - tmpQRadioButton->setAutoRepeat( FALSE ); - tmpQRadioButton->setAutoResize( FALSE ); - - QPushButton *okbtn, *cbtn; - okbtn = new QPushButton( &dlg, "PushButton_1" ); - okbtn->setGeometry( 260, 10, 100, 30 ); - okbtn->setText( "Find" ); - okbtn->setDefault(TRUE); - connect(okbtn,SIGNAL(clicked()),&dlg,SLOT(accept())); - - cbtn = new QPushButton( &dlg, "PushButton_2" ); - cbtn->setGeometry( 260, 50, 100, 30 ); - cbtn->setText( "Close" ); - connect(cbtn,SIGNAL(clicked()),&dlg,SLOT(reject())); - dlg.resize( 380, 90 ); - - if (dlg.exec()) - { - e->getCursorPosition(&pom,&res); - sensitive=tmpQRadioButton->isChecked(); - for(line=pom+1;linenumLines();line++) - { - txt = new QString(e->textLine(line)); - if (tmpQRadioButton->isChecked()) - res=txt->find(tmpQLineEdit->text(),0,TRUE); - else - res=txt->find(tmpQLineEdit->text(),0,FALSE); - delete txt; - if (res>=0) { e->setCursorPosition(line,1);strcpy(find_text,tmpQLineEdit->text()); - break;} - } //for - } + dialog::UnitStructureDialog dialog(this); + if (dialog.exec()) { + editor->textCursor().insertText(dialog.getCode()); + } } -void Editor::find_next() -{ - int pom,res,line; - QString *txt; - - e->getCursorPosition(&pom,&res); - for(line=pom+1;linenumLines();line++) - { - txt = new QString(e->textLine(line)); - if (sensitive) - res=txt->find(find_text,0,TRUE); - else - res=txt->find(find_text,0,FALSE); - delete txt; - if (res>=0) { e->setCursorPosition(line,1); - break;} - } //for - +} } -int main( int argc, char **argv ) +/** + * 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 a( argc, argv ); - //a.setStyle(WindowsStyle); - e = new Editor(argv[1]); - e->resize( 600, 400 ); - e->show(); - return a.exec(); + QApplication app(argc, argv); + loglan::vlp::Editor * editor = new loglan::vlp::Editor(argc, argv); + editor->show(); + return app.exec(); }