-
-
-#include <qapp.h>
-#include <qmenubar.h>
-#include <qpopmenu.h>
-#include <qlabel.h>
-#include <qlistbox.h>
-#include <qfile.h>
-#include <qfiledlg.h>
-#include <qfontmet.h>
-#include <qtooltip.h>
-#include <qfont.h>
-#include <qpixmap.h>
-#include <qmsgbox.h>
-#include <stdio.h>
-#include <stdlib.h>
#include <unistd.h>
-#include <qscrbar.h>
-#include <qpainter.h>
-#include <qcolor.h>
-#include <qpoint.h>
-#include <qtstream.h>
-#include <qchkbox.h>
-#include <qkeycode.h>
+#include <QtCore/QTextStream>
+#include <QtGui/QApplication>
+#include <QtGui/QMenuBar>
+#include <QtGui/QFileDialog>
+#include <QtGui/QColor>
+#include <QtGui/QPalette>
+#include <QtGui/QTextDocument>
+#include <QtGui/QMainWindow>
+#include <QtGui/QStatusBar>
+#include <QtGui/QCheckBox>
+#include <QtGui/QVBoxLayout>
+#include <QtGui/QListWidget>
+#include <QtGui/QListWidgetItem>
+
+#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;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);
-
- txt.sprintf("UNIT %s : %s( <params> );\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;line<e->numLines();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;line<e->numLines();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();
}