40 #include <QGraphicsSceneHoverEvent>
56 QString label,
Subject *subject)
81 parent->removeChildFromList(
this);
88 prepareGeometryChange();
92 QGraphicsItem::update();
100 prepareGeometryChange();
103 QGraphicsItem::update();
128 DEBTRACE(
"SceneNodeItem::addProgressItem ");
141 const QStyleOptionGraphicsItem *option,
201 m.popupMenu(caller, globalPos);
249 return "yacs/subjectNode";
254 DEBTRACE(
"SceneNodeItem::mousePressEvent " <<
_label.toStdString());
288 QPointF oldPos = pos();
289 QPointF aPos = oldPos +
event->scenePos() -
event->lastScenePos();
292 if (aPos.x() > oldPos.x())
_blocX =
false;
293 if (aPos.y() > oldPos.y())
_blocY =
false;
299 if ( aPos.y() < bloc->getHeaderBottom() )
301 aPos.setY(bloc->getHeaderBottom());
305 bloc->collisionResolv(
this, oldPos);
312 DEBTRACE(
"SceneNodeItem::mouseDoubleClickEvent");
322 QPointF oldPos = pos();
331 bloc->collisionResolv(
this, oldPos);
363 DEBTRACE(
"SceneNodeItem::setExecState " << execState);
370 DEBTRACE(
"SceneNodeItem::getHeaderLabel");
384 if (idcase == Switch::ID_FOR_DEFAULT_NODE)
390 extLabel += caseid.str().c_str();
401 std::list<SubjectControlLink*> lscl=
dynamic_cast<SubjectNode*
>(
_subject)->getSubjectControlLinks();
402 for (std::list<SubjectControlLink*>::const_iterator it = lscl.begin(); it != lscl.end(); ++it)
429 sci->shrinkExpandLink(se);
442 vector<pair<OutPort *, InPort *> > outScope = listLeaving;
443 vector<pair<InPort *, OutPort *> >::iterator it1;
444 for (it1 = listIncoming.begin(); it1 != listIncoming.end(); ++it1)
446 pair<OutPort *, InPort *> outin = pair<OutPort *, InPort *>((*it1).second, (*it1).first);
447 outScope.push_back(outin);
449 vector<pair<OutPort*, InPort*> >::const_iterator it = outScope.begin();
450 for( ; it != outScope.end(); ++it)
#define YASSERT(val)
YASSERT macro is always defined, used like assert, but throw a YACS::Exception instead of abort.
Base class for all nodes.
virtual std::vector< std::pair< InPort *, OutPort * > > getSetOfLinksComingInCurrentScope() const =0
virtual YACS::StatesForNode getState() const
virtual std::vector< std::pair< OutPort *, InPort * > > getSetOfLinksLeavingCurrentScope() const =0
Control node that emulates the C switch.
int getRankOfNode(Node *node) const
YACS::HMI::Scene * _scene
enum Qt::MouseButton _dragButton
YACS::HMI::GuiEditor * _guiEditor
YACS::HMI::SubjectProc * getSubjectProc()
std::map< std::pair< YACS::ENGINE::OutPort *, YACS::ENGINE::InPort * >, YACS::HMI::SubjectLink * > _mapOfSubjectLink
void shrinkExpand(Qt::KeyboardModifiers kbModifiers=Qt::NoModifier)
static std::string eventName(GuiEvent event)
static QtGuiContext * getQtCurrent()
YACS::HMI::GraphicsView * getView()
YACS::HMI::GenericGui * getGMain()
std::map< YACS::HMI::Subject *, YACS::HMI::SceneItem * > _mapOfSceneItem
static bool ensureVisibleWhenMoved
virtual void rebuildLinks()
virtual void checkGeometryChange()
virtual void updateShape()
virtual void setTopLeft(QPointF topLeft)
virtual qreal getHeaderBottom()
SceneHeaderNodeItem * _header
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event)
virtual void reorganizeShrinkExpand(ShrinkMode theShrinkMode)
virtual void shrinkExpandLink(bool se)
virtual void arrangeNodes(bool isRecursive)
generic method to compute a graph for child nodes. implemented in some derived classes
virtual void popupMenu(QWidget *caller, const QPoint &globalPos)
SceneProgressItem * _progressItem
virtual void addProgressItem()
virtual void updateState()
virtual void setExecState(int execState)
virtual void updateName()
virtual void update(GuiEvent event, int type, Subject *son)
virtual ScenePortItem * getCtrlInPortItem()
bool hasProgressBar() const
std::list< AbstractSceneItem * > _outPorts
virtual void setHeight(qreal height)
AbstractSceneItem cannot be resized (only ComposedNodeItem can)
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
virtual void updateLinks()
virtual SceneComposedNodeItem * getParent()
virtual void setShownState(shownState ss)
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event)
virtual void removeOutPortFromList(AbstractSceneItem *outPort)
virtual SceneHeaderItem * getHeader()
virtual void updateChildItems()
virtual void removeInPortFromList(AbstractSceneItem *inPort)
virtual void adjustHeader()
virtual void setMoving(bool moving)
virtual void showOutScopeLinks()
virtual QString getMimeFormat()
virtual void arrangeChildNodes()
virtual void autoPosNewPort(AbstractSceneItem *item, int nbPorts)
virtual void setWidth(qreal width)
AbstractSceneItem cannot be resized (only ComposedNodeItem can)
std::list< AbstractSceneItem * > _inPorts
virtual ScenePortItem * getCtrlOutPortItem()
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event)
virtual Subject * getSubject()
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event)
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
virtual void update(GuiEvent event, int type, Subject *son)
virtual void setText(QString label)
static bool _autoComputeLinks
virtual YACS::ENGINE::Node * getNode()
virtual std::string getName()