TinkerCell Core 1.0
TinkerCell's Core library providing all basic functionalities
TextEditor.h
Go to the documentation of this file.
00001 /****************************************************************************
00002 
00003 Copyright (c) 2008 Deepak Chandran
00004 Contact: Deepak Chandran (dchandran1@gmail.com)
00005 See COPYRIGHT.TXT
00006 
00007 This file defines the TextEditor class. The TextEditor and Canvas are two ways to define a network.
00008 The Canvas is used for graphical reprentation of a network, whereas the TextEditor is used for
00009 text-based representation of a network.
00010 
00011 ****************************************************************************/
00012 
00013 #ifndef TINKERCELL_TEXTEDITOR_H
00014 #define TINKERCELL_TEXTEDITOR_H
00015 
00016 #include <stdlib.h>
00017 #include <QtGui>
00018 #include <QMdiArea>
00019 #include <QMdiSubWindow>
00020 #include <QString>
00021 #include <QFileDialog>
00022 #include <QtDebug>
00023 #include <QTextEdit>
00024 #include <QAction>
00025 #include <QMenu>
00026 #include <QFile>
00027 #include <QHBoxLayout>
00028 #include <QMainWindow>
00029 #include <QHash>
00030 #include <QPair>
00031 #include <QSet>
00032 #include <QLabel>
00033 #include <QSplitter>
00034 #include <QGridLayout>
00035 #include <QScrollArea>
00036 #include <QListWidget>
00037 #include <QSyntaxHighlighter>
00038 #include <QUndoCommand>
00039 
00040 #include "DataTable.h"
00041 #include "CodeEditor.h"
00042 #include "HistoryWindow.h"
00043 #include "SymbolsTable.h"
00044 #include "Tool.h"
00045 
00046 namespace Tinkercell
00047 {
00048         class ItemHandle;
00049         class ItemData;
00050         class TextEditor;
00051         class TextUndoCommand;
00052         class MainWindow;
00053         class ConsoleWindow;
00054 
00061         class TINKERCELLCOREEXPORT TextEditor : public CodeEditor
00062         {
00063                 Q_OBJECT
00064                 
00065                 friend class TextUndoCommand;
00066                 friend class NetworkWindow;
00067                 friend class NetworkHandle;
00068                 friend class SymbolsTable;
00069                 friend class MainWindow;
00070 
00071         public:
00072 
00073                 static bool SideBarEnabled;
00074 
00076                 TextEditor( NetworkHandle * , QWidget * parent = 0);
00078                 ~TextEditor();
00081                 void insert( ItemHandle* );
00084                 void insert( const QList<ItemHandle*>& );
00087                 void remove( ItemHandle* );
00090                 void remove( const QList<ItemHandle*>& );
00093                 void setItems( const QList<ItemHandle*>& );
00095                 QList<ItemHandle*>& items();
00098                 void push(QUndoCommand*);
00100                 QString selectedText() const;
00105                 QMenu * contextSelectionMenu;
00110                 QMenu * contextEditorMenu;
00112                 NetworkHandle * network;
00114                 NetworkWindow * networkWindow;
00116                 MainWindow * mainWindow() const;
00118                 ConsoleWindow * console() const;
00120                 ItemHandle * localHandle() const;
00122                 ItemHandle * globalHandle() const;
00123 
00124         signals:
00129                 void textChanged(TextEditor *, const QString&, const QString&, const QString&);
00134                 void lineChanged(TextEditor *, int, const QString&);
00140                 void itemsInserted(NetworkHandle *, const QList<ItemHandle*>&);
00146                 void itemsRemoved(NetworkHandle *, const QList<ItemHandle*>& );
00150                 void parse(TextEditor *);
00151 
00152         public slots:
00153 
00156                 virtual void popOut();
00159                 virtual void popIn();
00161                 virtual void undo();
00163                 virtual void redo();
00165                 virtual void selectAll();
00167                 virtual void copy();
00169                 virtual void cut();
00171                 virtual void paste();
00174                 virtual void print(QPrinter * printer);
00175 
00176         protected:
00178                 int prevBlockNumber;
00180                 int changedBlockNumber;
00182                 QString prevBlockText;
00184                 QString changedBlockText;
00186                 QString prevText;
00188                 virtual void keyPressEvent ( QKeyEvent * event );
00190                 virtual void mousePressEvent ( QMouseEvent * event );
00191 
00193                 QList<ItemHandle*> allItems;
00195                 virtual void contextMenuEvent ( QContextMenuEvent * event );
00197                 virtual void mouseReleaseEvent ( QMouseEvent * event );
00198 
00199         private slots:
00201                 void textChangedSlot();
00202         };
00203 
00206         class TINKERCELLCOREEXPORT TextUndoCommand : public QUndoCommand
00207         {
00208 
00209         public:
00214                 TextUndoCommand(TextEditor *, const QString&, const QString&);
00216                 void redo();
00218                 void undo();
00219 
00220         private:
00222                 QString oldText;
00224                 QString newText;
00226                 TextEditor * textEdit;
00227         };
00228 }
00229 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines