X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_DataModel.h;h=6cb1fbb63cde7a7846e1916b8ca1d9ff97bca422;hb=cd6ea20d9a76665a24a533d0340385a335961f05;hp=063d0166461cda7a54af1ec9672738a5b4ff8a21;hpb=d6aeef5b61d85b44493cd5d93ed9870cc513e68f;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_DataModel.h b/src/HYDROGUI/HYDROGUI_DataModel.h index 063d0166..6cb1fbb6 100644 --- a/src/HYDROGUI/HYDROGUI_DataModel.h +++ b/src/HYDROGUI/HYDROGUI_DataModel.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -6,7 +6,7 @@ // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -20,14 +20,18 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + #ifndef HYDROGUI_DATAMODEL_H #define HYDROGUI_DATAMODEL_H -#include "HYDROGUI.h" - -#include +#include +#include +#include +#include +#include #include +#include #include #include @@ -35,26 +39,27 @@ class CAM_DataObject; class SUIT_DataObject; class HYDROGUI_DataObject; +class HYDROGUI_Zone; -/*! +/** * \class HYDROGUI_DataModel * \brief The class representing the HYDROGUI data model */ class HYDROGUI_DataModel : public LightApp_DataModel, public SUIT_DataSearcher { public: - /** - * Constructor. - * \param theModule module object - */ + /** + * Constructor. + * \param theModule module object + */ HYDROGUI_DataModel( CAM_Module* theModule ); virtual ~HYDROGUI_DataModel(); /** * Open the document into the data model. Reimplemented. - * /param theURL opened study path - * /param theStudy object study - * /param theFileList list of opened files for this model. + * \param theURL opened study path + * \param theStudy object study + * \param theFileList list of opened files for this model. */ virtual bool open( const QString& theURL, CAM_Study* theStudy, @@ -62,15 +67,15 @@ public: /** * Saves the document. Reimplemented. - * /param returned theFileList list of saved files of this model. + * \param returned theFileList list of saved files of this model. */ virtual bool save( QStringList& theFileList ); /** * Saves as the document. Reimplemented. - * /param theURL saved study path - * /param theStudy object study - * /param returned theFileList list of saved files of this model. + * \param theURL saved study path + * \param theStudy object study + * \param returned theFileList list of saved files of this model. */ virtual bool saveAs( const QString& theURL, CAM_Study* theStudy, @@ -81,9 +86,17 @@ public: */ virtual bool close(); + /** + * Dump study data to Python script. Reimplemented. + */ + virtual bool dumpPython( const QString& theURL, + CAM_Study* theStudy, + bool isMultiFile, + QStringList& theListOfFiles ); + /** * Returns modification status. Reimplemented. - * /return boolean value of modification status + * \return boolean value of modification status */ virtual bool isModified() const; @@ -102,14 +115,14 @@ public: /** * Returns data object corresponding to the model object. * \param the data model object - * \returns the only one object referenced to the given data model object, or null if not found + * \return the only one object referenced to the given data model object, or null if not found */ - virtual HYDROGUI_DataObject* getDataObject( const Handle(HYDROData_Object)& theModelObject ); + virtual HYDROGUI_DataObject* getDataObject( const Handle(HYDROData_Entity)& theModelObject ); /** * Returns a data object referenced to the given data object. * \param the data object - * \returns the object referenced to the given object, or null if not found + * \return the object referenced to the given object, or null if not found */ virtual HYDROGUI_DataObject* getReferencedDataObject( HYDROGUI_DataObject* theObject ); @@ -121,8 +134,8 @@ public: /** * Updates the internal structure of data object tree starting from specified data object \a obj. - * /param theObject start data object - * /param theStudy study object + * \param theObject start data object + * \param theStudy study object */ virtual void update( LightApp_DataObject* theObject = 0, LightApp_Study* theStudy = 0 ); @@ -132,27 +145,205 @@ public: */ CAM_DataObject* createRootModuleObject( SUIT_DataObject* theParent ); + /** + * Create a new region in the given calculation case containing given zones. + */ + bool createNewRegion( Handle(HYDROData_CalculationCase) theCase, const QList& theZonesList ); + /** * Correct an internal model object according to the current document mode */ void updateModel(); + /** + * Find a data object by the specified entry and kind + */ + Handle(HYDROData_Entity) objectByEntry( const QString& theEntry, + const ObjectKind theObjectKind = KIND_UNKNOWN ); + + /** + * Check if it is possible to perform 'undo' operation + */ + bool canUndo() const; + + /** + * Check if it is possible to perform 'redo' operation + */ + bool canRedo() const; + + /** + * Returns the list of names of available 'undo' actions + */ + QStringList undoNames() const; + + /** + * Returns the list of names of available 'redo' actions + */ + QStringList redoNames() const; + + /** + * Clear the list of stored 'undo' actions + */ + void clearUndos(); + + /** + * Clear the list of stored 'redo' actions + */ + void clearRedos(); + + /** + * Perform the 'undo' operation + */ + bool undo(); + + /** + * Perform the 'redo' operation + */ + bool redo(); + + /** + * Check if it is possible to perform 'copy' operation + */ + bool canCopy(); + + /** + * Check if it is possible to perform 'paste' operation + */ + bool canPaste(); + + /** + * Perform the 'copy' operation + */ + bool copy(); + + /** + * Perform the 'paste' operation + */ + bool paste(); + + /** + * Rename the object + */ + bool rename( Handle(HYDROData_Entity) theEntity, const QString& theName ); + + /** + * Creates the Calculation Case subtree for usage within an operation dialog. + * \param theParent a created object will be appended as a child of this GUI object + * \param theCase the calculation case model object + */ + void buildCaseTree( SUIT_DataObject* theParent, + Handle(HYDROData_CalculationCase) theCase ); + + /** + * Updates the object subtree. + * \param theObj the data model entity + */ + void updateObjectTree( Handle(HYDROData_Entity)& theObj ); + + /** + * Update the sequence of the objects to be copied + */ + static void changeCopyingObjects( const HYDROData_SequenceOfObjects& ); + + /** + * Returns name of the partition containing the objects of the specified kind + * \param theObjectKind kind of objects + * \return partition name + */ + static QString partitionName( const ObjectKind theObjectKind ); + protected: + /** + * Returns the document for the current study + */ + Handle(HYDROData_Document) getDocument() const; + /** * Creates the GUI data object according to the model object. * \param theParent a created object will be appended as a child of this object - * \param theObject model object + * \param theModelObject model object + * \param theParentEntry entry of parent object */ - LightApp_DataObject* createObject( SUIT_DataObject* theParent, - Handle(HYDROData_Object) theModelObject ); + LightApp_DataObject* createObject( SUIT_DataObject* theParent, + Handle(HYDROData_Entity) theModelObject, + const QString& theParentEntry = QString(), + const bool theIsBuildTree = true ); /** * Creates the GUI data object without corresponding model object: just by name * \param theParent a created object will be appended as a child of this object * \param theName name of this object + * \param theParentEntry entry of parent object */ LightApp_DataObject* createObject( SUIT_DataObject* theParent, - const QString& theName ); + const QString& theName, + const QString& theParentEntry = QString() ); + + /** + * Build object tree if the flag theIsBuildTree is true. + * This is a conditional wrapper for buildObjectTree method. + * \param theParent a created object will be appended as a child of this object + * \param theObject the GUI object + * \param theParentEntry the entry of parent object + * \param theIsBuildTree if true then build the subtree of the GUI object + * \param theIsInOperation if true then the tree is used for a browser within an operation, it is false by default + */ + LightApp_DataObject* buildObject( SUIT_DataObject* theParent, + HYDROGUI_DataObject* theObject, + const QString& theParentEntry, + const bool theIsBuildTree, + const bool theIsInOperation = false ); + + /** + * Build object tree if the flag theIsBuildTree is true. + * \param theParent a created object will be appended as a child of this GUI object + * \param theModelObject the data model zone object + * \param theParentEntry the entry of parent object + * \param theIsBuildTree if true then build the subtree of the GUI object + * \param theIsInOperation if true then the tree is used for a browser within an operation, it is false by default + */ + LightApp_DataObject* createZone( SUIT_DataObject* theParent, + Handle(HYDROData_Zone) theModelObject, + const QString& theParentEntry, + const bool theIsBuildTree , + const bool theIsInOperation = false ); + + /** + * Build object tree if the flag theIsBuildTree is true. + * \param theParent a created object will be appended as a child of this GUI object + * \param theModelObject the data model region object + * \param theParentEntry the entry of parent object + * \param theIsBuildTree if true then build the subtree of the GUI object + * \param theIsInOperation if true then the tree is used for a browser within an operation, it is false by default + */ + LightApp_DataObject* createRegion( SUIT_DataObject* theParent, + Handle(HYDROData_Region) theModelObject, + const QString& theParentEntry, + const bool theIsBuildTree , + const bool theIsInOperation = false ); + /** + * Build partition for object. + * \param theObject gui object for which the partition will be build + * \param theObjects sequence of builded objects + * \param thePartName name of created partition + * \param theIsCreateEmpty if true then partition will be created in any case + */ + void buildObjectPartition( SUIT_DataObject* theObject, + const HYDROData_SequenceOfObjects& theObjects, + const QString& thePartName, + const bool theIsCreateEmpty ); + + /** + * Build tree of a model object. + * \param theParent a created object will be appended as a child of this object + * \param theObject gui object for which the tree will be build + * \param theParentEntry entry of parent object + * \param theIsInOperation if true then the tree is used for a browser within an operation, it is false by default + */ + void buildObjectTree( SUIT_DataObject* theParent, + SUIT_DataObject* theObject, + const QString& theParentEntry = QString(), + const bool theIsInOperation = false ); /** * Removes data object from the tree. @@ -173,6 +364,7 @@ protected: protected: QString myStudyURL; ///< the saved/opened document URL + QByteArray myStates; }; #endif