TinkerCell Core 1.0
TinkerCell's Core library providing all basic functionalities
AbstractInputWindow.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 an abstract class that is used to create interfaces for C functions.
00008 LPSolveInputWindow is a good example.
00009 
00010 ****************************************************************************/
00011 
00012 #ifndef TINKERCELL_ABSTRACTINPUTWINDOW_H
00013 #define TINKERCELL_ABSTRACTINPUTWINDOW_H
00014 
00015 #include <stdlib.h>
00016 #include <QtGui>
00017 #include <QIcon>
00018 #include <QPixmap>
00019 #include <QString>
00020 #include <QGroupBox>
00021 #include <QGraphicsScene>
00022 #include <QGraphicsView>
00023 #include <QPushButton>
00024 #include <QToolButton>
00025 #include <QTableWidget>
00026 #include <QListWidget>
00027 #include <QAction>
00028 #include <QRadioButton>
00029 #include <QComboBox>
00030 #include <QListWidget>
00031 #include <QHBoxLayout>
00032 #include <QVBoxLayout>
00033 #include <QCheckBox>
00034 #include <QGroupBox>
00035 #include <QFile>
00036 #include <QListWidget>
00037 
00038 #include "MainWindow.h"
00039 #include "NetworkWindow.h"
00040 #include "GraphicsScene.h"
00041 #include "ItemHandle.h"
00042 #include "Tool.h"
00043 #include "ConsoleWindow.h"
00044 #include "ConvertValue.h"
00045 #include "CThread.h"
00046 
00047 namespace Tinkercell
00048 {
00049 
00051         class PopupListWidgetDelegateDialog : public QDialog
00052         {
00053                 Q_OBJECT
00054                 
00055                 public slots:
00056                         void acceptListWidget(QListWidgetItem*)
00057                         {
00058                                 QDialog::accept();
00059                         }
00060         };
00062         class TINKERCELLCOREEXPORT PopupListWidgetDelegate : public QItemDelegate
00063         {
00064         public:
00065                 PopupListWidgetDelegate(QObject *parent = 0);
00067                 DataTable<QStringList> options;
00069                 QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;
00071                 void setEditorData(QWidget *editor, const QModelIndex &index) const;
00073                 void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;
00075                 void updateEditorGeometry(QWidget *editor,const QStyleOptionViewItem &option, const QModelIndex &index) const;
00077                 static QString displayListWidget(const QStringList& list, const QString& current=QString(), bool * dialogOpen=0);
00079                 bool editorEvent ( QEvent * event, QAbstractItemModel * model, const QStyleOptionViewItem & option, const QModelIndex & index );
00081                 bool dialogOpen;
00082         };
00088         class TINKERCELLCOREEXPORT AbstractInputWindow : public Tool
00089         {
00090                 Q_OBJECT
00091 
00092         protected:
00093 
00098                 AbstractInputWindow(const QString& name = tr(""), CThread * thread = 0);
00099 
00103                 virtual bool setMainWindow(MainWindow * main);
00104 
00106                 virtual void setInput(const DataTable<qreal>&);
00107 
00109                 virtual void setThread(CThread *);
00110 
00112                 virtual CThread * thread() const;
00113         
00114         signals:
00115                 
00117                 void updateThread();
00119                 void evalScript(const QString&);
00120 
00121         public slots:
00122 
00126                 virtual void escapeSignal(const QWidget*);
00127 
00132                 virtual void exec();
00133 
00137                 virtual void loadAPI(Tool*);
00138 
00139         protected:
00141                 virtual void enterEvent ( QEvent * event );
00143                 CThread * cthread;
00145                 QDockWidget * dockWidget;
00147                  void (*targetFunction)(tc_matrix);
00148         };
00149 
00153         class TINKERCELLCOREEXPORT SimpleInputWindow : public AbstractInputWindow
00154         {
00155                 Q_OBJECT
00156         public:
00166                 static SimpleInputWindow * CreateWindow(MainWindow * main, const QString& title, const QString& libraryFile, const QString& funcName, const DataTable<qreal>&);
00175                 static SimpleInputWindow * CreateWindow(CThread * cthread, const QString& title, void (*f)(tc_matrix), const DataTable<qreal>&);
00185                 static SimpleInputWindow * CreateWindow(MainWindow * main, const QString& title, const QString& funcName, const DataTable<qreal>&);
00192                 static void AddOptions(const QString& title, int i, int j, const QStringList& options);
00199                 static void AddOptions(SimpleInputWindow *, int i, int j, const QStringList& options);
00200         public slots:
00205                 virtual void exec();
00206         protected:
00215                 SimpleInputWindow(MainWindow * main, const QString& title, const QString& dllName, const QString& funcName, const DataTable<qreal>&);
00223                 SimpleInputWindow(CThread * thread, const QString& title, void (*f)(tc_matrix), const DataTable<qreal>&);
00229                 SimpleInputWindow(MainWindow * main, const QString& title, const DataTable<qreal>&);
00231                 SimpleInputWindow();
00233                 SimpleInputWindow(const SimpleInputWindow&);
00235                 DataTable<qreal> dataTable;
00237                 virtual void setupDisplay(const DataTable<qreal>&);
00239                 QTableWidget tableWidget;
00241                 QList<QComboBox*> comboBoxes;
00242         protected slots:
00244                 virtual void dataChanged(int,int);
00246                 virtual void addRow();
00248                 virtual void removeRow();
00250                 virtual void comboBoxChanged(int);
00251         protected:
00253                 PopupListWidgetDelegate delegate;
00255                 QString scriptCommand;
00257                 void leaveEvent ( QEvent * event );
00259                 void enterEvent ( QEvent * event );
00261                 static QHash<QString,SimpleInputWindow*> inputWindows;
00262         };
00263 }
00264 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines