Version: 9.16.0
YACS::HMI::SubjectContainerBase Class Referenceabstract

#include <guiObservers.hxx>

Inheritance diagram for YACS::HMI::SubjectContainerBase:
Collaboration diagram for YACS::HMI::SubjectContainerBase:

Public Member Functions

 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::ContainergetContainer () const
 
virtual std::map< std::string, std::string > getProperties ()
 
virtual bool setProperties (std::map< std::string, std::string > properties)
 
virtual SubjectReferenceattachComponent (SubjectComponent *component)
 
virtual void detachComponent (SubjectComponent *component)
 
virtual void moveComponent (SubjectReference *reference)
 
virtual void removeSubComponentFromSet (SubjectComponent *component)
 
virtual void notifyComponentsChange (GuiEvent event, int type, Subject *son)
 
virtual void clean (Command *command=0)
 
void localclean (Command *command=0)
 
bool isUsed ()
 
TypeOfElem getType ()
 
- Public Member Functions inherited from YACS::HMI::Subject
 Subject (Subject *parent=0)
 
virtual ~Subject ()
 
virtual void attach (GuiObserver *obs)
 
virtual void detach (GuiObserver *obs)
 
virtual void select (bool isSelected)
 
virtual void update (GuiEvent event, int type, Subject *son)
 
virtual std::string getName ()
 
virtual bool setName (std::string name)
 
virtual bool setProperties (std::map< std::string, std::string > properties)
 
virtual std::map< std::string, std::string > getProperties ()
 
virtual std::vector< std::string > knownProperties ()
 
virtual SubjectgetParent ()
 
virtual void setParent (Subject *son)
 
virtual bool destroy (Subject *son)
 From user action in Ihm, destroy an object. More...
 
virtual void loadChildren ()
 
virtual void loadLinks ()
 
virtual void addSubjectReference (Subject *ref)
 
virtual void clean (Command *command=0)
 
void localclean (Command *command=0)
 
void registerUndoDestroy ()
 
void askRegisterUndoDestroy ()
 
bool isDestructible ()
 
virtual TypeOfElem getType ()
 
virtual void setProgress (std::string newProgress)
 
virtual std::string getProgress ()
 
- Public Member Functions inherited from YACS::ENGINE::Observer
virtual void notifyObserver (Node *object, const std::string &event)
 
virtual void notifyObserver2 (Node *object, const std::string &event, void *something)
 
virtual void notifyObserverFromClone (Node *originalInstance, const std::string &event, Node *clonedInstanceGeneratingEvent)
 
virtual ~Observer ()
 

Static Public Member Functions

static SubjectContainerBaseNew (YACS::ENGINE::Container *container, Subject *parent)
 
- Static Public Member Functions inherited from YACS::HMI::Subject
static void erase (Subject *sub, Command *command=0, bool post=false)
 

Protected Attributes

YACS::ENGINE::Container_container
 
std::set< SubjectComponent * > _subComponentSet
 
std::map< SubjectComponent *, SubjectReference * > _subReferenceMap
 
- Protected Attributes inherited from YACS::HMI::Subject
std::set< GuiObserver * > _setObs
 
Subject_parent
 
bool _destructible
 
bool _askRegisterUndo
 
std::string _progress
 

Detailed Description

Definition at line 416 of file guiObservers.hxx.

Constructor & Destructor Documentation

◆ SubjectContainerBase()

SubjectContainerBase::SubjectContainerBase ( YACS::ENGINE::Container container,
Subject parent 
)

Definition at line 4412 of file guiObservers.cxx.

4412 :Subject(parent), _container(container)
4413{
4414 _subComponentSet.clear();
4415 _subReferenceMap.clear();
4416}
std::map< SubjectComponent *, SubjectReference * > _subReferenceMap
std::set< SubjectComponent * > _subComponentSet
YACS::ENGINE::Container * _container
Subject(Subject *parent=0)

References _subComponentSet, and _subReferenceMap.

◆ ~SubjectContainerBase()

SubjectContainerBase::~SubjectContainerBase ( )
virtual

Definition at line 4418 of file guiObservers.cxx.

4419{
4420 DEBTRACE("SubjectContainerBase::~SubjectContainerBase");
4421 Proc* aProc = GuiContext::getCurrent()->getProc();
4422 if ( aProc )
4423 {
4424 map<ComponentInstance*,SubjectComponent*> mapOfSubjectComponentCpy
4426 map<ComponentInstance*,SubjectComponent*>::iterator it = mapOfSubjectComponentCpy.begin();
4427 for ( ; it!=mapOfSubjectComponentCpy.end(); it++ )
4428 if ( (*it).first && (*it).first->getContainer() == _container )
4429 {
4430 (*it).first->setContainer(0);
4431 GuiContext::getCurrent()->getSubjectProc()->destroy((*it).second);
4432 }
4433
4436 }
4437}
#define DEBTRACE(msg)
Definition: YacsTrace.hxx:31
Base class for all schema objects.
Definition: Proc.hxx:44
virtual void removeContainer(Container *cont)
Remove a container from the containerMap.
Definition: Proc.cxx:581
static GuiContext * getCurrent()
Definition: guiContext.hxx:67
std::map< YACS::ENGINE::Container *, YACS::HMI::SubjectContainerBase * > _mapOfSubjectContainer
Definition: guiContext.hxx:75
std::map< YACS::ENGINE::ComponentInstance *, YACS::HMI::SubjectComponent * > _mapOfSubjectComponent
Definition: guiContext.hxx:74
YACS::HMI::SubjectProc * getSubjectProc()
Definition: guiContext.hxx:52
YACS::ENGINE::Proc * getProc()
Definition: guiContext.hxx:50
virtual bool destroy(Subject *son)
From user action in Ihm, destroy an object.

References _container, YACS::HMI::GuiContext::_mapOfSubjectComponent, YACS::HMI::GuiContext::_mapOfSubjectContainer, DEBTRACE, YACS::HMI::Subject::destroy(), YACS::HMI::GuiContext::getCurrent(), YACS::HMI::GuiContext::getProc(), YACS::HMI::GuiContext::getSubjectProc(), and YACS::ENGINE::Proc::removeContainer().

Member Function Documentation

◆ attachComponent()

SubjectReference * SubjectContainerBase::attachComponent ( SubjectComponent component)
virtual

Definition at line 4472 of file guiObservers.cxx.

4473{
4474 DEBTRACE("SubjectContainer::attachComponent");
4475 SubjectReference *son = new SubjectReference(component, this);
4476 _subComponentSet.insert(component);
4477 _subReferenceMap[component] = son;
4479 return son;
4480}
virtual void update(GuiEvent event, int type, Subject *son)

References _subComponentSet, _subReferenceMap, YACS::HMI::ADDCHILDREF, YACS::HMI::COMPONENT, DEBTRACE, and YACS::HMI::Subject::update().

Referenced by YACS::HMI::CommandAssociateComponentToContainer::localExecute(), YACS::HMI::CommandAssociateComponentToContainer::localReverse(), and YACS::HMI::SubjectComponent::setContainer().

◆ clean()

void SubjectContainerBase::clean ( Command command = 0)
virtual

Clean process prior to delete is redefined in derived classes: a local clean treatment relative to the derived class, then a call to the parent class clean method.

Reimplemented from YACS::HMI::Subject.

Definition at line 4525 of file guiObservers.cxx.

4526{
4527 if (_askRegisterUndo)
4528 {
4529 _askRegisterUndo = false;
4531 }
4532 localclean(command);
4533 Subject::clean(command);
4534}
void localclean(Command *command=0)
virtual void clean(Command *command=0)

References YACS::HMI::Subject::_askRegisterUndo, YACS::HMI::Subject::clean(), localclean(), and YACS::HMI::Subject::registerUndoDestroy().

◆ detachComponent()

void SubjectContainerBase::detachComponent ( SubjectComponent component)
virtual

Definition at line 4482 of file guiObservers.cxx.

4483{
4484 DEBTRACE("SubjectContainer::detachComponent");
4485 YASSERT(_subReferenceMap.count(component));
4486 SubjectReference *reference = _subReferenceMap[component];
4487 update(REMOVECHILDREF, PYTHONNODE, reference);
4488 _subComponentSet.erase(component);
4489 _subReferenceMap.erase(component);
4490 erase(reference);
4491}
#define YASSERT(val)
YASSERT macro is always defined, used like assert, but throw a YACS::Exception instead of abort.
Definition: YacsTrace.hxx:59
static void erase(Subject *sub, Command *command=0, bool post=false)

References _subComponentSet, _subReferenceMap, DEBTRACE, YACS::HMI::Subject::erase(), YACS::HMI::PYTHONNODE, YACS::HMI::REMOVECHILDREF, YACS::HMI::Subject::update(), and YASSERT.

Referenced by YACS::HMI::CommandAddComponentInstance::localReverse(), and YACS::HMI::CommandAddComponentFromCatalog::localReverse().

◆ getContainer()

virtual YACS::ENGINE::Container * YACS::HMI::SubjectContainerBase::getContainer ( ) const
inlinevirtual

◆ getLabelForHuman()

virtual std::string YACS::HMI::SubjectContainerBase::getLabelForHuman ( ) const
pure virtual

◆ getName()

◆ getProperties()

std::map< std::string, std::string > SubjectContainerBase::getProperties ( )
virtual

Reimplemented from YACS::HMI::Subject.

Definition at line 4439 of file guiObservers.cxx.

4440{
4441 return _container->getProperties();
4442}
virtual std::map< std::string, std::string > getProperties() const =0

References _container, and YACS::ENGINE::Container::getProperties().

◆ getType()

TypeOfElem YACS::HMI::SubjectContainerBase::getType ( )
inlinevirtual

Reimplemented from YACS::HMI::Subject.

Definition at line 436 of file guiObservers.hxx.

436{ return CONTAINER; }

References YACS::HMI::CONTAINER.

◆ isUsed()

bool YACS::HMI::SubjectContainerBase::isUsed ( )
inline

Definition at line 435 of file guiObservers.hxx.

435{ return !_subComponentSet.empty(); }

Referenced by YACS::HMI::CommandAddContainerBase::localReverse().

◆ localclean()

void SubjectContainerBase::localclean ( Command command = 0)

Definition at line 4536 of file guiObservers.cxx.

4537{
4538 DEBTRACE("SubjectContainerBase::localClean ");
4539 Proc* aProc = GuiContext::getCurrent()->getProc();
4540 if ( aProc )
4541 {
4542 SubjectComponent* compo;
4543 map<ComponentInstance*,SubjectComponent*>::iterator it = GuiContext::getCurrent()->_mapOfSubjectComponent.begin();
4544 std::list<SubjectComponent*> compos;
4545 for ( ; it!=GuiContext::getCurrent()->_mapOfSubjectComponent.end(); it++ )
4546 if ( (*it).first && (*it).first->getContainer() == _container )
4547 {
4548 compo=(*it).second;
4549 (*it).first->setContainer(0);
4550 compos.push_back((*it).second);
4551 }
4552 while(!compos.empty())
4553 {
4554 compo=compos.front();
4555 compos.pop_front();
4558 }
4559 }
4560}
virtual TypeOfElem getType()
virtual void update(GuiEvent event, int type, Subject *son)

References _container, YACS::HMI::GuiContext::_mapOfSubjectComponent, DEBTRACE, YACS::HMI::Subject::erase(), YACS::HMI::GuiContext::getCurrent(), YACS::HMI::GuiContext::getProc(), YACS::HMI::GuiContext::getSubjectProc(), YACS::HMI::SubjectComponent::getType(), YACS::HMI::REMOVE, YACS::HMI::SubjectComponent::setContainer(), and YACS::HMI::SubjectNode::update().

Referenced by clean().

◆ moveComponent()

void SubjectContainerBase::moveComponent ( SubjectReference reference)
virtual

Definition at line 4493 of file guiObservers.cxx.

4494{
4495 DEBTRACE("SubjectContainer::moveComponent");
4496 SubjectContainer* oldcont = dynamic_cast<SubjectContainer*>(reference->getParent());
4497 YASSERT(oldcont);
4498 SubjectComponent* component = dynamic_cast<SubjectComponent*>(reference->getReference());
4499 _subComponentSet.insert(component);
4500 _subReferenceMap[component] = reference;
4501 oldcont->removeSubComponentFromSet(component);
4502 oldcont->update(CUT, COMPONENT, reference);
4503 reference->reparent(this);
4504 update(PASTE, COMPONENT, reference);
4505}
virtual void removeSubComponentFromSet(SubjectComponent *component)
virtual void reparent(Subject *parent)
virtual Subject * getReference() const
virtual Subject * getParent()

References _subComponentSet, _subReferenceMap, YACS::HMI::COMPONENT, YACS::HMI::CUT, DEBTRACE, YACS::HMI::Subject::getParent(), YACS::HMI::SubjectReference::getReference(), YACS::HMI::PASTE, removeSubComponentFromSet(), YACS::HMI::SubjectReference::reparent(), YACS::HMI::Subject::update(), and YASSERT.

Referenced by YACS::HMI::CommandAssociateComponentToContainer::localExecute(), YACS::HMI::CommandAssociateComponentToContainer::localReverse(), and YACS::HMI::SubjectComponent::setContainer().

◆ New()

SubjectContainerBase * SubjectContainerBase::New ( YACS::ENGINE::Container container,
Subject parent 
)
static

Definition at line 4402 of file guiObservers.cxx.

4403{
4404 if(!container)
4405 return 0;
4406 if(!dynamic_cast<YACS::ENGINE::HomogeneousPoolContainer *>(container))
4407 return new SubjectContainer(container,parent);
4408 else
4409 return new SubjectHPContainer(dynamic_cast<YACS::ENGINE::HomogeneousPoolContainer *>(container),parent);
4410}

Referenced by YACS::HMI::SubjectProc::addSubjectContainer().

◆ notifyComponentsChange()

void SubjectContainerBase::notifyComponentsChange ( GuiEvent  event,
int  type,
Subject son 
)
virtual

Definition at line 4514 of file guiObservers.cxx.

4515{
4516 DEBTRACE("SubjectContainer::notifyComponentsChange");
4517 set<SubjectComponent*>::iterator it = _subComponentSet.begin();
4518 for(; it != _subComponentSet.end(); ++it)
4519 {
4520 (*it)->update(event, type, son);
4521 (*it)->notifyServicesChange(event, type, son);
4522 }
4523}

References _subComponentSet, and DEBTRACE.

Referenced by YACS::HMI::CommandRenameContainer::localExecute(), YACS::HMI::CommandSetContainerProperties::localExecute(), and YACS::HMI::CommandRenameContainer::localReverse().

◆ removeSubComponentFromSet()

void SubjectContainerBase::removeSubComponentFromSet ( SubjectComponent component)
virtual

Definition at line 4507 of file guiObservers.cxx.

4508{
4509 DEBTRACE("SubjectContainer::removeSubComponentFromSet");
4510 _subComponentSet.erase(component);
4511 _subReferenceMap.erase(component);
4512}

References _subComponentSet, _subReferenceMap, and DEBTRACE.

Referenced by YACS::HMI::SubjectComponent::localclean(), and moveComponent().

◆ setName()

bool SubjectContainerBase::setName ( std::string  name)
virtual

Reimplemented from YACS::HMI::Subject.

Definition at line 4457 of file guiObservers.cxx.

4458{
4459 DEBTRACE("SubjectContainer::setName " << name);
4460 if (name == getName())
4461 return true;
4463 if (command->execute())
4464 {
4465 GuiContext::getCurrent()->getInvoc()->add(command);
4466 return true;
4467 }
4468 else delete command;
4469 return false;
4470}
virtual bool execute()
the command is executed a first time after its registration for undo redo, then on redo
Definition: commands.cxx:51
YACS::HMI::ProcInvoc * getInvoc()
Definition: guiContext.hxx:51
void add(Command *command)
Definition: commands.cxx:156
virtual std::string getName()

References YACS::HMI::Invocator::add(), DEBTRACE, YACS::HMI::Command::execute(), YACS::HMI::GuiContext::getCurrent(), YACS::HMI::GuiContext::getInvoc(), and getName().

Referenced by FormContainerBase::onApply(), and FormHPContainer::onApply().

◆ setProperties()

bool SubjectContainerBase::setProperties ( std::map< std::string, std::string >  properties)
virtual

Reimplemented from YACS::HMI::Subject.

Definition at line 4444 of file guiObservers.cxx.

4445{
4447 if (command->execute())
4448 {
4449 GuiContext::getCurrent()->getInvoc()->add(command);
4450 return true;
4451 }
4452 else
4453 delete command;
4454 return false;
4455}

References YACS::HMI::Invocator::add(), YACS::HMI::Command::execute(), YACS::HMI::GuiContext::getCurrent(), YACS::HMI::GuiContext::getInvoc(), and getName().

Referenced by FormContainerBase::onApply(), and FormHPContainer::onApply().

Member Data Documentation

◆ _container

YACS::ENGINE::Container* YACS::HMI::SubjectContainerBase::_container
protected

◆ _subComponentSet

std::set<SubjectComponent*> YACS::HMI::SubjectContainerBase::_subComponentSet
protected

◆ _subReferenceMap

std::map<SubjectComponent*,SubjectReference*> YACS::HMI::SubjectContainerBase::_subReferenceMap
protected

The documentation for this class was generated from the following files: