Version: 9.15.0
YACS::HMI::SubjectControlLink Class Reference

#include <guiObservers.hxx>

Inheritance diagram for YACS::HMI::SubjectControlLink:
Collaboration diagram for YACS::HMI::SubjectControlLink:

Public Member Functions

 SubjectControlLink (SubjectNode *subOutNode, SubjectNode *subInNode, Subject *parent)
 
virtual ~SubjectControlLink ()
 
virtual std::string getName ()
 
virtual void clean (Command *command=0)
 
void localclean (Command *command=0)
 
SubjectNodegetSubjectOutNode ()
 
SubjectNodegetSubjectInNode ()
 
virtual TypeOfElem getType ()
 
void registerUndoDestroy ()
 
- 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 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)
 
void localclean (Command *command=0)
 
void registerUndoDestroy ()
 
void askRegisterUndoDestroy ()
 
bool isDestructible ()
 
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 ()
 

Protected Attributes

SubjectNode_subOutNode
 
SubjectNode_subInNode
 
std::string _name
 
YACS::ENGINE::ComposedNode_cla
 
- Protected Attributes inherited from YACS::HMI::Subject
std::set< GuiObserver * > _setObs
 
Subject_parent
 
bool _destructible
 
bool _askRegisterUndo
 
std::string _progress
 

Additional Inherited Members

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

Detailed Description

Definition at line 921 of file guiObservers.hxx.

Constructor & Destructor Documentation

◆ SubjectControlLink()

SubjectControlLink::SubjectControlLink ( SubjectNode subOutNode,
SubjectNode subInNode,
Subject parent 
)

Definition at line 4122 of file guiObservers.cxx.

4125  : Subject(parent),
4126  _subOutNode(subOutNode), _subInNode(subInNode)
4127 {
4128  _name = "";
4129  ComposedNode *cla = ComposedNode::getLowestCommonAncestor(_subOutNode->getNode()->getFather(),
4130  _subInNode->getNode()->getFather());
4133  DEBTRACE(cla->getName());
4134  _name += cla->getChildName(_subOutNode->getNode());
4135  _name += "-->>";
4136  _name += cla->getChildName(_subInNode->getNode());
4137  DEBTRACE("SubjectControlLink::SubjectControlLink " << _name);
4138 }
#define DEBTRACE(msg)
Definition: YacsTrace.hxx:31
Base class for all composed nodes.
std::string getChildName(const Node *node) const
std::string getName() const
ComposedNode * getFather() const
Definition: Node.hxx:127
virtual std::string getName()
virtual YACS::ENGINE::Node * getNode()
Subject(Subject *parent=0)

References _name, _subInNode, _subOutNode, DEBTRACE, YACS::ENGINE::ComposedNode::getChildName(), YACS::ENGINE::Node::getFather(), YACS::HMI::SubjectNode::getName(), YACS::ENGINE::ComposedNode::getName(), and YACS::HMI::SubjectNode::getNode().

◆ ~SubjectControlLink()

SubjectControlLink::~SubjectControlLink ( )
virtual

Definition at line 4140 of file guiObservers.cxx.

4141 {
4142  DEBTRACE("SubjectControlLink::~SubjectControlLink " << getName());
4143  if (isDestructible())
4144  {
4145  try
4146  {
4147 
4149  }
4150  catch (YACS::Exception &e)
4151  {
4152  DEBTRACE("------------------------------------------------------------------------------");
4153  DEBTRACE("SubjectControlLink::~SubjectControlLink: edRemoveLink YACS exception " << e.what());
4154  DEBTRACE("------------------------------------------------------------------------------");
4155  }
4156  }
4157 }
void edRemoveCFLink(Node *nodeS, Node *nodeE)
Remove a controlflow link.
const char * what(void) const noexcept
Definition: Exception.cxx:50

References _cla, _subInNode, _subOutNode, DEBTRACE, YACS::ENGINE::ComposedNode::edRemoveCFLink(), getName(), YACS::HMI::SubjectNode::getNode(), YACS::HMI::Subject::isDestructible(), and YACS::Exception::what().

Member Function Documentation

◆ clean()

void SubjectControlLink::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 4159 of file guiObservers.cxx.

4160 {
4161  if (_askRegisterUndo)
4162  {
4163  _askRegisterUndo = false;
4165  }
4166  localclean(command);
4167  Subject::clean(command);
4168 }
virtual void clean(Command *command=0)

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

◆ getName()

std::string SubjectControlLink::getName ( )
virtual

Reimplemented from YACS::HMI::Subject.

Definition at line 4184 of file guiObservers.cxx.

4185 {
4186  return _name;
4187 }

References _name.

Referenced by YACS::HMI::SubjectComposedNode::addSubjectControlLink(), localclean(), and ~SubjectControlLink().

◆ getSubjectInNode()

SubjectNode* YACS::HMI::SubjectControlLink::getSubjectInNode ( )
inline

◆ getSubjectOutNode()

SubjectNode* YACS::HMI::SubjectControlLink::getSubjectOutNode ( )
inline

◆ getType()

virtual TypeOfElem YACS::HMI::SubjectControlLink::getType ( )
inlinevirtual

Reimplemented from YACS::HMI::Subject.

Definition at line 933 of file guiObservers.hxx.

933 {return CONTROLLINK;}

References YACS::HMI::CONTROLLINK.

◆ localclean()

void SubjectControlLink::localclean ( Command command = 0)

Definition at line 4170 of file guiObservers.cxx.

4171 {
4172  DEBTRACE("SubjectControlLink::localClean ");
4173  if (_parent)
4174  {
4175  DEBTRACE("clean control link: " << _parent->getName() << " " << getName());
4176  SubjectComposedNode* father = dynamic_cast<SubjectComposedNode*>(_parent);
4177  YASSERT(father);
4178  father->removeControlLink(this); // --- clean subjects first
4179  _cla = dynamic_cast<ComposedNode*>(father->getNode());
4180  YASSERT(_cla);
4181  }
4182 }
#define YASSERT(val)
YASSERT macro is always defined, used like assert, but throw a YACS::Exception instead of abort.
Definition: YacsTrace.hxx:59
virtual void removeControlLink(SubjectControlLink *link)
virtual std::string getName()

References _cla, YACS::HMI::Subject::_parent, DEBTRACE, YACS::HMI::Subject::getName(), getName(), YACS::HMI::SubjectNode::getNode(), YACS::HMI::SubjectComposedNode::removeControlLink(), and YASSERT.

Referenced by clean().

◆ registerUndoDestroy()

void SubjectControlLink::registerUndoDestroy ( )

Definition at line 4189 of file guiObservers.cxx.

4190 {
4191  DEBTRACE("SubjectControlLink::registerUndoDestroy");
4192  Proc *proc = GuiContext::getCurrent()->getProc();
4193  Node *outn = getSubjectOutNode()->getNode();
4194  Node *inn = getSubjectInNode()->getNode();
4195  CommandAddControlLink *command = new CommandAddControlLink(proc->getChildName(outn),
4196  proc->getChildName(inn));
4197  GuiContext::getCurrent()->getInvoc()->add(command);
4198 }
Base class for all nodes.
Definition: Node.hxx:70
Base class for all schema objects.
Definition: Proc.hxx:44
YACS::ENGINE::Proc * getProc()
Definition: guiContext.hxx:50
YACS::HMI::ProcInvoc * getInvoc()
Definition: guiContext.hxx:51
static GuiContext * getCurrent()
Definition: guiContext.hxx:67
void add(Command *command)
Definition: commands.cxx:156

References YACS::HMI::Invocator::add(), DEBTRACE, YACS::ENGINE::ComposedNode::getChildName(), YACS::HMI::GuiContext::getCurrent(), YACS::HMI::GuiContext::getInvoc(), YACS::HMI::SubjectNode::getNode(), YACS::HMI::GuiContext::getProc(), getSubjectInNode(), and getSubjectOutNode().

Referenced by clean().

Member Data Documentation

◆ _cla

YACS::ENGINE::ComposedNode* YACS::HMI::SubjectControlLink::_cla
protected

Definition at line 939 of file guiObservers.hxx.

Referenced by localclean(), and ~SubjectControlLink().

◆ _name

std::string YACS::HMI::SubjectControlLink::_name
protected

Definition at line 938 of file guiObservers.hxx.

Referenced by getName(), and SubjectControlLink().

◆ _subInNode

SubjectNode* YACS::HMI::SubjectControlLink::_subInNode
protected

Definition at line 937 of file guiObservers.hxx.

Referenced by getSubjectInNode(), SubjectControlLink(), and ~SubjectControlLink().

◆ _subOutNode

SubjectNode* YACS::HMI::SubjectControlLink::_subOutNode
protected

Definition at line 936 of file guiObservers.hxx.

Referenced by getSubjectOutNode(), SubjectControlLink(), and ~SubjectControlLink().


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