![]() |
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 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