X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2Fhmi%2FguiObservers.hxx;h=62a89b6eecc814bd533041d629706c651618f173;hb=c9208a8ef7f32a620d9650908588320ff159a167;hp=96916aa404b7e3aa74be84bd17f55042b5e1637a;hpb=14ddeddd588b20887c99de78c95d402527062012;p=modules%2Fyacs.git diff --git a/src/hmi/guiObservers.hxx b/src/hmi/guiObservers.hxx index 96916aa40..62a89b6ee 100644 --- a/src/hmi/guiObservers.hxx +++ b/src/hmi/guiObservers.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2006-2014 CEA/DEN, EDF R&D +// Copyright (C) 2006-2019 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -69,6 +69,7 @@ namespace YACS class Catalog; class ComponentInstance; class Container; + class HomogeneousPoolContainer; class TypeCode; class OutGate; class InGate; @@ -338,7 +339,7 @@ namespace YACS std::list _listSubjectControlLink; int _execState; std::list loutgate; - std::set singate; + std::list singate; std::vector< std::pair > dataLinks; std::vector< std::pair > dataflowLinks; }; @@ -411,13 +412,16 @@ namespace YACS }; class SubjectComponent; - class HMI_EXPORT SubjectContainer: public Subject + class HMI_EXPORT SubjectContainerBase : public Subject { public: - SubjectContainer(YACS::ENGINE::Container* container, Subject *parent); - virtual ~SubjectContainer(); + static SubjectContainerBase *New(YACS::ENGINE::Container* container, Subject *parent); + SubjectContainerBase(YACS::ENGINE::Container* container, Subject *parent); + virtual ~SubjectContainerBase(); virtual std::string getName(); + virtual std::string getLabelForHuman() const = 0; virtual bool setName(std::string name); + virtual YACS::ENGINE::Container *getContainer() const { return _container; } virtual std::map getProperties(); virtual bool setProperties(std::map properties); virtual SubjectReference* attachComponent(SubjectComponent* component); @@ -427,18 +431,33 @@ namespace YACS virtual void notifyComponentsChange(GuiEvent event, int type, Subject* son); virtual void clean(Command *command=0); void localclean(Command *command=0); - YACS::ENGINE::Container* getContainer() const; - bool isUsed() {return !_subComponentSet.empty(); }; - virtual TypeOfElem getType(){return CONTAINER;} - void registerUndoDestroy(); + bool isUsed() { return !_subComponentSet.empty(); } + TypeOfElem getType() { return CONTAINER; } protected: YACS::ENGINE::Container* _container; std::set _subComponentSet; std::map _subReferenceMap; }; + class HMI_EXPORT SubjectContainer: public SubjectContainerBase + { + public: + SubjectContainer(YACS::ENGINE::Container *container, Subject *parent); + void registerUndoDestroy(); + std::string getLabelForHuman() const { return std::string("Salome Container"); } + }; + + class HMI_EXPORT SubjectHPContainer : public SubjectContainerBase + { + public: + SubjectHPContainer(YACS::ENGINE::HomogeneousPoolContainer* container, Subject *parent); + void registerUndoDestroy(); + YACS::ENGINE::Container *getContainer() const; + std::string getLabelForHuman() const { return std::string("Salome Homogeneous Pool Container"); } + }; + class SubjectServiceNode; - class HMI_EXPORT SubjectComponent: public Subject + class HMI_EXPORT SubjectComponent : public Subject { public: friend class SubjectNode; @@ -446,7 +465,7 @@ namespace YACS virtual ~SubjectComponent(); virtual std::string getName(); virtual void setContainer(); - virtual bool associateToContainer(SubjectContainer* subcont); + virtual bool associateToContainer(SubjectContainerBase *subcont); virtual SubjectReference* attachService(SubjectServiceNode* service); virtual void detachService(SubjectServiceNode* service); virtual void moveService(SubjectReference* reference); @@ -494,15 +513,15 @@ namespace YACS void loadContainers(); void loadTypes(); virtual SubjectComponent* addComponent(std::string compoName, std::string containerName=""); - virtual SubjectContainer* addContainer(std::string name, std::string ref=""); + virtual SubjectContainerBase* addContainer(std::string name, std::string ref=""); + virtual SubjectContainerBase* addHPContainer(std::string name, std::string ref=""); virtual bool addDataType(YACS::ENGINE::Catalog* catalog, std::string typeName); SubjectComponent* addSubjectComponent(YACS::ENGINE::ComponentInstance* compo); - SubjectContainer* addSubjectContainer(YACS::ENGINE::Container* cont, - std::string name = ""); + SubjectContainerBase* addSubjectContainer(YACS::ENGINE::Container* cont, std::string name = ""); SubjectDataType* addComSubjectDataType(YACS::ENGINE::TypeCode *type, std::string alias); SubjectDataType* addSubjectDataType(YACS::ENGINE::TypeCode *type, std::string alias); void removeSubjectDataType(std::string typeName); - void removeSubjectContainer(SubjectContainer* scont); + void removeSubjectContainer(SubjectContainerBase* scont); virtual void clean(Command *command=0); void localclean(Command *command=0); void addPostErase(Subject* sub) {_postEraseList.push_back(sub); }; @@ -678,7 +697,7 @@ namespace YACS virtual std::string getScript(); virtual void clean(Command *command=0); void localclean(Command *command=0); - virtual bool setContainer(SubjectContainer* scont); + virtual bool setContainer(SubjectContainerBase *scont); virtual bool setExecutionMode(const std::string& mode); protected: YACS::ENGINE::InlineNode *_inlineNode;