TinkerCell Core 1.0
TinkerCell's Core library providing all basic functionalities
NetworkHandle.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 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 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines