copasi API  0.1
copasi/UI/listviews.h
Go to the documentation of this file.
00001 // Begin CVS Header
00002 //   $Source: /fs/turing/cvs/copasi_dev/copasi/UI/listviews.h,v $
00003 //   $Revision: 1.168.2.4 $
00004 //   $Name: Build-33 $
00005 //   $Author: shoops $
00006 //   $Date: 2010/09/29 15:51:31 $
00007 // End CVS Header
00008 
00009 // Copyright (C) 2010 by Pedro Mendes, Virginia Tech Intellectual
00010 // Properties, Inc., University of Heidelberg, and The University
00011 // of Manchester.
00012 // All rights reserved.
00013 
00014 // Copyright (C) 2008 by Pedro Mendes, Virginia Tech Intellectual
00015 // Properties, Inc., EML Research, gGmbH, University of Heidelberg,
00016 // and The University of Manchester.
00017 // All rights reserved.
00018 
00019 // Copyright (C) 2001 - 2007 by Pedro Mendes, Virginia Tech Intellectual
00020 // Properties, Inc. and EML Research, gGmbH.
00021 // All rights reserved.
00022 
00023 /****************************************************************************
00024  **  $ CopasiUI/listviews.h                Modified on : 8th March, 2002
00025  **  $ Author  : Ankur Gupta
00026  *****************************************************************************/
00027 #ifndef LISTVIEWS_H
00028 #define LISTVIEWS_H
00029 
00030 #include <set>
00031 #include <qsplitter.h>
00032 #include <QTreeView>
00033 
00034 #include "copasi.h"
00035 #include "UI/Tree.h"
00036 
00037 class CTabWidget;
00038 
00039 class Refresh;
00040 class CCopasiObject;
00041 
00042 class DataModelGUI;
00043 class CQCompartment;
00044 class CQCompartmentsWidget;
00045 class CQDifferentialEquations;
00046 class CQEventsWidget;
00047 class CQEventWidget1;
00048 class FunctionWidget1;
00049 class CQFunctionsWidget;
00050 class CMathModel;
00051 class CQSpeciesDetail;
00052 class CQSpeciesWidget;
00053 class CQEFMWidget;
00054 class CQEFMResultWidget;
00055 class CQGlobalQuantitiesWidget;
00056 class CQMoietiesTaskResult;
00057 class CQMoietiesTaskWidget;
00058 class ParametersWidget;
00059 class ReactionsWidget1;
00060 class CQReactionsWidget;
00061 class SteadyStateWidget;
00062 class ScanWidget;
00063 class SensitivitiesWidget;
00064 class CQSensResultWidget;
00065 class CQSteadyStateResult;
00066 class CQTrajectoryWidget;
00067 class CQReportsWidget;
00068 
00069 #ifdef COPASI_TSS
00070 class TSSWidget;
00071 #endif // COPASI_TSS
00072 
00073 class CQTSSAWidget;
00074 class CQTSSAResultWidget;
00075 class CQTSSAResultSubWidget;
00076 
00077 #ifdef COPASI_NONLIN_DYN
00078 class CQCrossSectionTaskWidget;
00079 #endif
00080 
00081 #ifdef COPASI_DEBUG
00082 class CQUpdatesWidget;
00083 #endif
00084 
00085 class CQOptimizationWidget;
00086 class CQOptimizationResult;
00087 class CopasiWidget;
00088 class PlotSubwidget;
00089 class CQPlotsWidget;
00090 class CQSplashWidget;
00091 class TimeSeriesWidget;
00092 class CQFittingWidget;
00093 class CQFittingResult;
00094 class CQMCAWidget;
00095 class CMCAResultWidget;
00096 class CQReportDefinition;
00097 class CQLyapWidget;
00098 class CQLyapResultWidget;
00099 class CQModelValue;
00100 class CQMathMatrixWidget;
00101 class CQLayoutsWidget;
00102 
00103 //********************************************************************************
00104 
00105 class ListViews : public QSplitter
00106 {
00107   Q_OBJECT
00108 
00109   friend class CopasiUI3Window;
00110 
00111 public:
00112   ListViews(QWidget *parent = 0, const char *name = 0);
00113   ~ListViews();
00114 
00115 #ifdef DELETE
00116 #undef DELETE
00117 #endif
00118   // CHANGE does not include RENAME
00119   enum Action {CHANGE = 0, ADD, DELETE, RENAME};
00120   enum ObjectType {METABOLITE = 0
00121                                 , COMPARTMENT
00122                    , REACTION
00123                    , FUNCTION
00124                    , MODEL
00125                    , STATE
00126                    , REPORT
00127                    , PLOT
00128                    , MODELVALUE
00129                    , EVENT
00130                    , MIRIAM
00131                    , LAYOUT
00132                   };
00133 
00134   void setDataModel(DataModelGUI* pDM);
00135   DataModelGUI* getDataModel() {return mpDataModelGUI;};
00136   void setFramework(int framework);
00137 
00138   void updateMIRIAMResourceContents();
00139   void commit();
00140 
00141   void switchToOtherWidget(C_INT32 id, const std::string & key);
00142 
00143   void storeCurrentItem();
00144   void restoreCurrentItem();
00145   int getCurrentItemId();
00146   CopasiWidget* findWidgetFromId(const C_INT32 & id) const;
00147 
00148   // return current widget - added 02.07.08
00149   CopasiWidget* getCurrentWidget();
00150 
00151   //TODO these are convenience methods used by SliderDialog. They should be
00152   //replaced by something more generic when the listviews is updated for QT4
00153   CQTrajectoryWidget* getTrajectoryWidget();
00154   SteadyStateWidget* getSteadyStateWidget();
00155   ScanWidget* getScanWidget();
00156   CQMCAWidget* getMCAWidget();
00157 
00158 private:
00159   CopasiWidget* findWidgetFromIndex(const QModelIndex & index) const;
00160 
00161   void ConstructNodeWidgets();
00162   void buildExpandedMap(QMap<int, bool> &isExpandedMap, const IndexedNode *startNode);
00163 
00164 private slots:
00165   void slotFolderChanged(const QModelIndex & index);
00166   void slotUpdateCompleteView();
00167   bool slotNotify(ListViews::ObjectType objectType, ListViews::Action action, const std::string & key = "");
00168 
00169 private:
00170 
00171   DataModelGUI* mpDataModelGUI;
00172 
00173   CMathModel *mpMathModel;
00174   CopasiWidget* currentWidget;
00175   std::string lastKey;
00176 
00177   std::string mSaveObjectKey;
00178   size_t mSaveFolderID;
00179 
00180   bool updateCurrentWidget(ObjectType objectType, Action action, const std::string & key = "");
00181 
00182   void notifyChildWidgets(ObjectType objectType,
00183                           Action action,
00184                           const std::string & key);
00185 
00186 
00187   //the widgets
00188   QTreeView *mpTreeView;
00189 
00190   CMCAResultWidget* mpCMCAResultWidget;
00191   CQMCAWidget* mpCQMCAWidget;
00192   CQCompartmentsWidget *mpCompartmentsWidget;
00193   CTabWidget *compartmentsWidget1;
00194   CQSplashWidget *defaultWidget;
00195   CQDifferentialEquations *differentialEquations;
00196   CQEventsWidget *eventsWidget;
00197   CTabWidget *eventWidget1;
00198   CQFunctionsWidget *mpFunctionsWidget;
00199   CTabWidget *functionWidget1;
00200   CQLyapWidget *lyapWidget;
00201   CQLyapResultWidget *lyapResultWidget;
00202   CQSpeciesWidget *mpSpeciesWidget;
00203   CTabWidget *metabolitesWidget1;
00204   CTabWidget *modelWidget;
00205   CQGlobalQuantitiesWidget *mpGlobalQuantitiesWidget;
00206   CTabWidget *mpModelValueWidget;
00207   CQEFMWidget *mpEFMWidget;
00208   CQEFMResultWidget *mpEFMResultWidget;
00209   CQMoietiesTaskResult *mpMoietiesTaskResult;
00210   CQMoietiesTaskWidget *mpMoietiesTaskWidget;
00211   CQOptimizationWidget *optimizationWidget;
00212   CQOptimizationResult *optResultWidget;
00213   CQFittingWidget *paramFittingWidget;
00214   CQFittingResult *mpFittingResultWidget;
00215   ParametersWidget *parametersWidget;
00216   CQPlotsWidget *mpPlotsWidget;
00217   PlotSubwidget *mpPlotSubwidget;
00218   CQReactionsWidget *mpReactionsWidget;
00219   CTabWidget *reactionsWidget1;
00220   ScanWidget *scanWidget;
00221   SensitivitiesWidget *sensWidget;
00222   CQSensResultWidget *sensResultWidget;
00223   CQSteadyStateResult *stateWidget;
00224   SteadyStateWidget *steadystateWidget;
00225   CQReportsWidget *mpReportsWidget;
00226   CQReportDefinition *tableDefinition1;
00227 
00228 #ifdef COPASI_TSS
00229   TSSWidget *tssWidget;
00230 #endif // COPASI_TSS
00231 
00232   TimeSeriesWidget *timeSeriesWidget;
00233   CQTrajectoryWidget *trajectoryWidget;
00234   CQTSSAWidget *tssaWidget;
00235   CQTSSAResultWidget *tssaResultWidget;
00236 
00237 #ifdef COPASI_NONLIN_DYN
00238   CQCrossSectionTaskWidget *crossSectionTaskWidget;
00239 #endif
00240 
00241 #ifdef COPASI_DEBUG
00242   CQUpdatesWidget *mpUpdatesWidget;
00243 #endif // COPASI_DEBUG
00244 
00245   CQLayoutsWidget * mpLayoutsWidget;
00246   CQMathMatrixWidget * mpMathMatrixWidget;
00247 };
00248 
00249 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines