![]() |
TinkerCell Core 1.0
TinkerCell's Core library providing all basic functionalities
|
00001 /**************************************************************************** 00002 00003 Copyright (c) 2008 Deepak Chandran 00004 Contact: Deepak Chandran (dchandran1@gmail.com) 00005 See COPYRIGHT.TXT 00006 00007 A class that is used to store a network. The network is a collection of Item Handles. 00008 The history stack is also a key component of a network. 00009 00010 A class that is used to store a network. The network is a collection of Item Handles. 00011 The history stack is also a key component of a network. 00012 The network can either be represented as text using TextEditor or visualized with graphical items in the 00013 GraphicsScene. Each node and connection are contained in a handle, and each handle can either be represented as text or as graphics. 00014 The two main components of NetworkWindow are the SymbolsTable and HistoryStack 00015 This class provides functions for inserting items, removing items, and changing information inside the model. 00016 00017 ****************************************************************************/ 00018 00019 #ifndef TINKERCELL_CORENETWORKHANDLE_H 00020 #define TINKERCELL_CORENETWORKHANDLE_H 00021 00022 #include <stdlib.h> 00023 #include <QtGui> 00024 #include <QObject> 00025 #include <QString> 00026 #include <QRegExp> 00027 #include <QHash> 00028 #include <QUndoCommand> 00029 #include <QToolBar> 00030 00031 #include "DataTable.h" 00032 #include "HistoryWindow.h" 00033 #include "SymbolsTable.h" 00034 #include "NetworkWindow.h" 00035 00036 namespace Tinkercell 00037 { 00038 class ItemHandle; 00039 class ItemData; 00040 class MainWindow; 00041 class NetworkWindow; 00042 class ConsoleWindow; 00043 00053 class TINKERCELLCOREEXPORT NetworkHandle : public QObject 00054 { 00055 Q_OBJECT 00056 00057 private: 00059 MainWindow * mainWindow; 00061 QList<NetworkWindow*> networkWindows; 00062 00063 public: 00065 QUndoStack history; 00068 SymbolsTable symbolsTable; 00069 00074 NetworkHandle(MainWindow *); 00076 virtual ~NetworkHandle(); 00077 00087 virtual QList<ItemHandle*> handles(bool sort=false) const; 00089 virtual QList<ItemHandle*> handlesSortedByFamily() const; 00091 virtual ItemHandle* globalHandle(); 00095 virtual QString annotations() const; 00096 00101 virtual GraphicsScene * currentScene() const; 00106 virtual TextEditor * currentTextEditor() const; 00111 virtual NetworkWindow * currentWindow() const; 00116 virtual void showScene(GraphicsScene *); 00121 virtual void showTextEditor(TextEditor *); 00123 ConsoleWindow * console() const; 00124 00133 QList<ItemHandle*> findItem(const QString&) const; 00137 QList<ItemHandle*> findItem(const QRegExp&) const; 00141 QList<ItemHandle*> findItem(const QStringList&) const; 00145 QList< QPair<ItemHandle*,QString> > findData(const QString&) const; 00149 QList< QPair<ItemHandle*,QString> > findData(const QStringList&) const; 00153 QList< QPair<ItemHandle*,QString> > findData(const QRegExp&) const; 00160 virtual void remove(const QString& name, const QList<QGraphicsItem*>& items); 00162 virtual void remove(const QString& name, const QList<ItemHandle*>& items); 00166 virtual QList<GraphicsScene*> scenes() const; 00170 virtual QList<TextEditor*> editors() const; 00175 virtual GraphicsScene * createScene(const QList<QGraphicsItem*>& insertItems = QList<QGraphicsItem*>()); 00181 virtual GraphicsScene * createScene(ItemHandle *, const QRectF& boundingRect=QRectF()); 00186 virtual TextEditor * createTextEditor(const QString& text = QString()); 00190 virtual void setWindowTitle(const QString&); 00194 virtual QString windowTitle() const; 00202 virtual bool parseMath(QString&,QStringList&,QStringList&,QList<ItemHandle*>&); 00208 virtual QString makeUnique(const QString&, const QStringList& doNotUseNames=QStringList()) const; 00216 virtual QString makeUnique(ItemHandle * handle, const QStringList& doNotUseNames=QStringList()) const; 00221 virtual QStringList makeUnique(const QStringList&, const QStringList& doNotUseNames=QStringList()) const; 00231 virtual QString rename(const QString& oldname, const QString& new_name); 00234 virtual QString rename(ItemHandle * item, const QString& new_name); 00237 virtual QStringList rename(const QList<ItemHandle*>& items, const QList<QString>& new_names); 00238 00247 virtual void setParentHandle(const QList<ItemHandle*>& handles, const QList<ItemHandle*>& parentHandles); 00249 virtual void setParentHandle(ItemHandle * child, ItemHandle * parent); 00251 virtual void setParentHandle(const QList<ItemHandle*> children, ItemHandle * parent); 00252 00254 virtual void setHandleFamily(const QList<ItemHandle*>& handles, const QList<ItemFamily*>& newfamilies); 00256 virtual void setHandleFamily(ItemHandle * handle, ItemFamily * newfamily); 00258 virtual void setHandleFamily(const QList<ItemHandle*> handles, ItemFamily * newfamily); 00259 00268 virtual void changeData(const QString& name, ItemHandle* handle, const QString& hashstring, const NumericalDataTable* newdata); 00270 virtual void changeData(const QString& name, const QList<ItemHandle*>& handles, const QList<QString>& hashstring, const QList<NumericalDataTable*>& newdata); 00272 virtual void changeData(const QString& name, const QList<ItemHandle*>& handles, const QString& hashstring, const QList<NumericalDataTable*>& newdata); 00274 virtual void changeData(const QString& name, ItemHandle* handle, const QString& hashstring, const TextDataTable* newdata); 00276 virtual void changeData(const QString& name, const QList<ItemHandle*>& handles, const QList<QString>& hashstring, const QList<TextDataTable*>& newdata); 00278 virtual void changeData(const QString& name, const QList<ItemHandle*>& handles, const QString& hashstring, const QList<TextDataTable*>& newdata); 00280 virtual void changeData(const QString& name, ItemHandle* handle, const QString& hashstring, const NumericalDataTable* newdata1, const TextDataTable* newdata2); 00282 virtual void changeData(const QString& name, const QList<ItemHandle*>& handles, const QList<QString>& hashstring, const QList<NumericalDataTable*>& newdata1, const QList<TextDataTable*>& newdata2); 00284 virtual void changeData(const QString& name, const QList<ItemHandle*>& handles, const QString& hashstring, const QList<NumericalDataTable*>& newdata1, const QList<TextDataTable*>& newdata2); 00286 virtual void changeData(const QString& name, const QList<ItemHandle*>& handles, const QList<NumericalDataTable*>& olddata1, const QList<NumericalDataTable*>& newdata1); 00288 virtual void changeData(const QString& name, const QList<ItemHandle*>& handles, const QList<TextDataTable*>& olddata2, const QList<TextDataTable*>& newdata2); 00290 virtual void changeData(const QString& name, const QList<ItemHandle*>& handles, const QList<NumericalDataTable*>& olddata1, const QList<NumericalDataTable*>& newdata1, const QList<TextDataTable*>& olddata2, const QList<TextDataTable*>& newdata2); 00292 virtual void changeData(const QString& name, const QList<ItemHandle*>& handles, NumericalDataTable* olddata1, const NumericalDataTable* newdata1, TextDataTable* olddata2, const TextDataTable* newdata2); 00294 virtual void changeData(const QString& name, const QList<ItemHandle*>& handles, NumericalDataTable* olddata1, const NumericalDataTable* newdata1); 00296 virtual void changeData(const QString& name, const QList<ItemHandle*>& handles, TextDataTable* olddata1, const TextDataTable* newdata1); 00298 virtual void assignHandles(const QList<QGraphicsItem*>& items, ItemHandle* newHandle); 00300 virtual void mergeHandles(const QList<ItemHandle*>& handles); 00305 virtual void setModelValues(const QStringList& names, const QList<double>& values, int column=0, const QString& defaultDataTable=QString()); 00310 virtual void setModelValues(const QStringList& names, const QStringList& values, int column=0, const QString& defaultDataTable=QString()); 00314 virtual void setModelValues(const NumericalDataTable& newvalues, const QString& defaultDataTable=QString()); 00318 virtual void setModelValues(const TextDataTable& newvalues, const QString& defaultDataTable=QString()); 00325 public slots: 00327 virtual void updateSymbolsTable(); 00329 virtual void updateSymbolsTable(int); 00331 virtual void close(); 00333 virtual void undo(); 00335 virtual void redo(); 00337 virtual void push(QUndoCommand*); 00338 00344 signals: 00345 00352 void itemsRenamed(NetworkHandle * network, const QList<ItemHandle*>& items, const QList<QString>& oldnames, const QList<QString>& newnames); 00353 00359 void parentHandleChanged(NetworkHandle * network, const QList<ItemHandle*>&, const QList<ItemHandle*>&); 00360 00366 void handleFamilyChanged(NetworkHandle * network, const QList<ItemHandle*>&, const QList<ItemFamily*>&); 00367 00371 void dataChanged(const QList<ItemHandle*>& items); 00372 00378 void handlesChanged(NetworkHandle * network, const QList<QGraphicsItem*>& items, const QList<ItemHandle*>& old); 00379 00385 void historyChanged(int i=0); 00386 00387 private: 00388 00389 void emitHistoryChanged(int i=0); 00390 00391 friend class GraphicsView; 00392 friend class GraphicsScene; 00393 friend class TextEditor; 00394 friend class MainWindow; 00395 friend class NetworkWindow; 00396 friend class SymbolsTable; 00397 }; 00398 00399 } 00400 00401 #endif 00402