Version: 9.16.0
YACS::HMI::SchemaNodeItem Class Reference

#include <SchemaNodeItem.hxx>

Inheritance diagram for YACS::HMI::SchemaNodeItem:
Collaboration diagram for YACS::HMI::SchemaNodeItem:

Public Member Functions

 SchemaNodeItem (SchemaItem *parent, QString label, Subject *subject)
 
virtual ~SchemaNodeItem ()
 
virtual void update (GuiEvent event, int type, Subject *son)
 
virtual void popupMenu (QWidget *caller, const QPoint &globalPos)
 
virtual Qt::ItemFlags flags (const QModelIndex &index)
 
virtual bool dropMimeData (const QMimeData *data, Qt::DropAction action)
 
virtual void toggleState ()
 
virtual void setCaseValue ()
 used in node derived classes More...
 
- Public Member Functions inherited from YACS::HMI::SchemaItem
 SchemaItem (SchemaItem *parent, QString label, Subject *subject)
 
virtual ~SchemaItem ()
 
virtual void appendChild (SchemaItem *child)
 
virtual void removeChild (SchemaItem *child)
 
virtual void insertChild (int row, SchemaItem *child)
 
virtual SchemaItemchild (int row)
 
virtual int childCount () const
 
virtual int columnCount () const
 
virtual QVariant data (int column, int role) const
 
virtual Qt::ItemFlags flags (const QModelIndex &index)
 
virtual int row () const
 
virtual SchemaItemparent ()
 
virtual SubjectgetSubject ()
 
virtual void update (GuiEvent event, int type, Subject *son)
 
virtual void select (bool isSelected)
 
virtual void toggleState ()
 
QModelIndex modelIndex (int column=0)
 
virtual void popupMenu (QWidget *caller, const QPoint &globalPos)
 
virtual ItemMimeDatamimeData (ItemMimeData *mime)
 
virtual bool dropMimeData (const QMimeData *data, Qt::DropAction action)
 
virtual void reparent (SchemaItem *parent)
 
virtual void setCaseValue ()
 used in node derived classes More...
 
bool isEmphasized ()
 
void setEmphasize (bool emphasize)
 
- Public Member Functions inherited from YACS::HMI::GuiObserver
 GuiObserver ()
 
virtual ~GuiObserver ()
 
virtual void select (bool isSelected)
 
virtual void update (GuiEvent event, int type, Subject *son)
 
virtual void incrementSubjects (Subject *subject)
 
virtual void decrementSubjects (Subject *subject)
 
int getNbSubjects ()
 
bool isDestructible ()
 

Protected Member Functions

virtual QString getMimeFormat ()
 
virtual QVariant editionWhatsThis (int column) const
 
- Protected Member Functions inherited from YACS::HMI::SchemaItem
virtual QVariant editionToolTip (int column) const
 
virtual QVariant runToolTip (int column) const
 
virtual QVariant editionWhatsThis (int column) const
 
virtual QVariant runWhatsThis (int column) const
 
virtual QString getMimeFormat ()
 
virtual void setExecState (int execState)
 

Additional Inherited Members

- Static Public Member Functions inherited from YACS::HMI::GuiObserver
static std::string eventName (GuiEvent event)
 
static void setEventMap ()
 
- Protected Attributes inherited from YACS::HMI::SchemaItem
QList< SchemaItem * > _childItems
 
QList< QVariant > _itemData
 
QList< QVariant > _itemDeco
 
QList< QVariant > _itemForeground
 
QList< QVariant > _itemBackground
 
QList< QVariant > _itemCheckState
 
QList< QVariant > _itemToolTip
 
QList< QVariant > _itemWhatsThis
 
QString _label
 
SchemaItem_parentItem
 
Subject_subject
 
int _execState
 
bool _emphasized
 
- Protected Attributes inherited from YACS::HMI::GuiObserver
std::set< Subject * > _subjectSet
 
bool _destructible
 
- Static Protected Attributes inherited from YACS::HMI::GuiObserver
static std::map< int, std::string > _eventNameMap
 

Detailed Description

Definition at line 29 of file SchemaNodeItem.hxx.

Constructor & Destructor Documentation

◆ SchemaNodeItem()

SchemaNodeItem::SchemaNodeItem ( SchemaItem parent,
QString  label,
Subject subject 
)

Definition at line 45 of file SchemaNodeItem.cxx.

46 : SchemaItem(parent, label, subject)
47{
48 DEBTRACE("SchemaNodeItem::SchemaNodeItem");
49 _itemDeco.replace(YLabel, QIcon("icons:node.png"));
51 if (!model->isEdition())
52 {
53 _itemCheckState.replace(YLabel, Qt::Unchecked);
55 }
57}
#define DEBTRACE(msg)
Definition: YacsTrace.hxx:31
YACS::HMI::SchemaModel * getSchemaModel()
static QtGuiContext * getQtCurrent()
virtual void setExecState(int execState)
Definition: SchemaItem.cxx:338
QList< QVariant > _itemCheckState
Definition: SchemaItem.hxx:81
QList< QVariant > _itemDeco
Definition: SchemaItem.hxx:78
virtual SchemaItem * parent()
Definition: SchemaItem.cxx:163
SchemaItem(SchemaItem *parent, QString label, Subject *subject)
Definition: SchemaItem.cxx:39
virtual void setCaseValue()
used in node derived classes
@ UNDEFINED
Definition: define.hxx:35

References YACS::HMI::SchemaItem::_itemCheckState, YACS::HMI::SchemaItem::_itemDeco, DEBTRACE, YACS::HMI::QtGuiContext::getQtCurrent(), YACS::HMI::QtGuiContext::getSchemaModel(), YACS::HMI::SchemaModel::isEdition(), setCaseValue(), YACS::HMI::SchemaItem::setExecState(), YACS::UNDEFINED, and YACS::HMI::YLabel.

◆ ~SchemaNodeItem()

SchemaNodeItem::~SchemaNodeItem ( )
virtual

Definition at line 59 of file SchemaNodeItem.cxx.

60{
61 DEBTRACE("SchemaNodeItem::~SchemaNodeItem");
62}

References DEBTRACE.

Member Function Documentation

◆ dropMimeData()

bool SchemaNodeItem::dropMimeData ( const QMimeData data,
Qt::DropAction  action 
)
virtual

drop in nodes are used for control link

Reimplemented from YACS::HMI::SchemaItem.

Definition at line 237 of file SchemaNodeItem.cxx.

238{
239 DEBTRACE("SchemaNodeItem::dropMimeData");
240 if (!data) return false;
241 const ItemMimeData* myData = dynamic_cast<const ItemMimeData*>(data);
242 if (!myData) return false;
243 if(!myData->hasFormat("yacs/subjectOutGate")) return false;
244
245 Subject *subFrom = myData->getSubject();
246 if (!subFrom) return false;
247 SubjectNode* from = dynamic_cast<SubjectNode*>(subFrom);
248
249 SubjectNode *to = dynamic_cast<SubjectNode*>(getSubject());
250 if (!to) return false;
251
252 bool ret =false;
253 if (from && to)
254 {
255 ret =true;
256 if (!SubjectNode::tryCreateLink(from, to))
257 Message mess;
258 }
259 return ret;
260}
virtual Subject * getSubject(int i=0) const
virtual Subject * getSubject()
Definition: SchemaItem.cxx:169
virtual QVariant data(int column, int role) const
Definition: SchemaItem.cxx:123
static bool tryCreateLink(SubjectNode *subOutNode, SubjectNode *subInNode)

References YACS::HMI::SchemaItem::data(), DEBTRACE, YACS::HMI::SchemaItem::getSubject(), YACS::HMI::ItemMimeData::getSubject(), and YACS::HMI::SubjectNode::tryCreateLink().

◆ editionWhatsThis()

QVariant SchemaNodeItem::editionWhatsThis ( int  column) const
protectedvirtual

Reimplemented from YACS::HMI::SchemaItem.

Definition at line 282 of file SchemaNodeItem.cxx.

283{
284 return "<p>To edit the node properties, select the node and use the input panel. <a href=\"modification.html#property-page-for-node\">More...</a></p>";
285}

◆ flags()

Qt::ItemFlags SchemaNodeItem::flags ( const QModelIndex &  index)
virtual

Reimplemented from YACS::HMI::SchemaItem.

Definition at line 185 of file SchemaNodeItem.cxx.

186{
187 Qt::ItemFlags pflag = Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsDropEnabled;
189 return pflag;
190
191 if (QtGuiContext::getQtCurrent()->isEdition())
192 pflag = pflag | Qt::ItemIsDragEnabled;
193 Qt::ItemFlags flagEdit = 0;
194 int column = index.column();
195 switch (column)
196 {
197 case YValue:
198 flagEdit = Qt::ItemIsEditable; // --- item value editable in model view (for node case in switch)
199 break;
200 }
201
202 return pflag | flagEdit;
203}

References YACS::HMI::QtGuiContext::getQtCurrent(), and YACS::HMI::YValue.

◆ getMimeFormat()

QString SchemaNodeItem::getMimeFormat ( )
protectedvirtual

drag for nodes in tree are used for control link with Left Mouse Button and for reparent with Middle Mouse Button

Reimplemented from YACS::HMI::SchemaItem.

Definition at line 209 of file SchemaNodeItem.cxx.

210{
211 if (QApplication::mouseButtons() == Qt::MidButton)
212 return "yacs/subjectNode";
213 else
214 return "yacs/subjectOutGate";
215}

◆ popupMenu()

void SchemaNodeItem::popupMenu ( QWidget caller,
const QPoint &  globalPos 
)
virtual

Reimplemented from YACS::HMI::SchemaItem.

Definition at line 179 of file SchemaNodeItem.cxx.

180{
182 m.popupMenu(caller, globalPos);
183}

References gui.GraphViewer::m.

◆ setCaseValue()

void SchemaNodeItem::setCaseValue ( )
virtual

used in node derived classes

Reimplemented from YACS::HMI::SchemaItem.

Definition at line 262 of file SchemaNodeItem.cxx.

263{
264 DEBTRACE("SchemaNodeItem::setCaseValue");
266 SubjectSwitch *sSwitch = dynamic_cast<SubjectSwitch*>(sub);
267 if (!sSwitch) return;
268
270 Switch *aSwitch = dynamic_cast<Switch*>(sSwitch->getNode());
271 YASSERT(aSwitch);
272 SubjectNode *sNode = dynamic_cast<SubjectNode*>(_subject);
273 YASSERT(sNode);
274 int rank = aSwitch->getRankOfNode(sNode->getNode());
275 if (rank == Switch::ID_FOR_DEFAULT_NODE)
276 _itemData.replace(YValue, "default");
277 else
278 _itemData.replace(YValue, rank);
279 model->setData(modelIndex(YValue), 0);
280}
#define YASSERT(val)
YASSERT macro is always defined, used like assert, but throw a YACS::Exception instead of abort.
Definition: YacsTrace.hxx:59
Control node that emulates the C switch.
Definition: Switch.hxx:85
int getRankOfNode(Node *node) const
Definition: Switch.cxx:752
QModelIndex modelIndex(int column=0)
Definition: SchemaItem.cxx:253
SchemaItem * _parentItem
Definition: SchemaItem.hxx:85
QList< QVariant > _itemData
Definition: SchemaItem.hxx:77
virtual bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole)
virtual YACS::ENGINE::Node * getNode()

References YACS::HMI::SchemaItem::_itemData, YACS::HMI::SchemaItem::_parentItem, YACS::HMI::SchemaItem::_subject, DEBTRACE, YACS::HMI::SubjectNode::getNode(), YACS::HMI::QtGuiContext::getQtCurrent(), YACS::ENGINE::Switch::getRankOfNode(), YACS::HMI::QtGuiContext::getSchemaModel(), YACS::HMI::SchemaItem::getSubject(), YACS::HMI::SchemaItem::modelIndex(), YACS::HMI::SchemaModel::setData(), YASSERT, and YACS::HMI::YValue.

Referenced by SchemaNodeItem().

◆ toggleState()

void SchemaNodeItem::toggleState ( )
virtual

Reimplemented from YACS::HMI::SchemaItem.

Definition at line 217 of file SchemaNodeItem.cxx.

218{
219 DEBTRACE("SchemaNodeItem::toggleState");
222 YASSERT(guiExec);
223 SubjectNode *subjectNode = dynamic_cast<SubjectNode*>(getSubject());
224 YASSERT(subjectNode);
225 string nodeName = QtGuiContext::getQtCurrent()->getProc()->getChildName(subjectNode->getNode());
226 DEBTRACE("nodeName=" << nodeName);
227
228 if (_itemCheckState.value(YLabel) == Qt::Checked) // already toggled
229 guiExec->addBreakpoint(nodeName);
230 else
231 guiExec->removeBreakpoint(nodeName);
232}
std::string getChildName(const Node *node) const
YACS::ENGINE::Proc * getProc()
Definition: guiContext.hxx:50
void removeBreakpoint(std::string breakpoint)
void addBreakpoint(std::string breakpoint)
YACS::HMI::GuiExecutor * getGuiExecutor()
virtual void toggleState()
Definition: SchemaItem.cxx:239

References YACS::HMI::SchemaItem::_itemCheckState, YACS::HMI::GuiExecutor::addBreakpoint(), DEBTRACE, YACS::ENGINE::ComposedNode::getChildName(), YACS::HMI::QtGuiContext::getGuiExecutor(), YACS::HMI::SubjectNode::getNode(), YACS::HMI::GuiContext::getProc(), YACS::HMI::QtGuiContext::getQtCurrent(), YACS::HMI::SchemaItem::getSubject(), YACS::HMI::GuiExecutor::removeBreakpoint(), YACS::HMI::SchemaItem::toggleState(), YASSERT, and YACS::HMI::YLabel.

◆ update()

void SchemaNodeItem::update ( GuiEvent  event,
int  type,
Subject son 
)
virtual

Reimplemented from YACS::HMI::SchemaItem.

Definition at line 64 of file SchemaNodeItem.cxx.

65{
66 DEBTRACE("SchemaNodeItem::update "<<eventName(event)<<" "<<type<<" "<<son);
68 SchemaItem *item = 0;
69 SubjectNode *snode = 0;
70 Node* node = 0;
71 switch (event)
72 {
73 case YACS::HMI::ADD:
74 switch (type)
75 {
78 {
79 int nbsons = childCount();
80 model->beginInsertRows(modelIndex(), nbsons, nbsons);
81 item = new SchemaInPortItem(this,
82 son->getName().c_str(),
83 son);
84 model->endInsertRows();
85 }
86 break;
89 {
90 int nbsons = childCount();
91 model->beginInsertRows(modelIndex(), nbsons, nbsons);
92 item = new SchemaOutPortItem(this,
93 son->getName().c_str(),
94 son);
95 model->endInsertRows();
96 }
97 break;
98// default:
99// DEBTRACE("SchemaNodeItem::update(), ADD, type not handled: " << type);
100 }
101 break;
102 case YACS::HMI::ORDER:
103 {
104 YASSERT(QtGuiContext::getQtCurrent()->_mapOfSchemaItem.count(son));
105 //bool isInput = dynamic_cast<SubjectInputPort*>(son);
106
107 snode = dynamic_cast<SubjectNode*>(_subject);
108 YASSERT(snode);
109 Node* node = snode->getNode();
110 ElementaryNode* father = dynamic_cast<ElementaryNode*>(node);
111 YASSERT(father);
112 int nbChildren = childCount();
113
114 model->beginRemoveRows(modelIndex(), 0, nbChildren-1);
115 for (int i = nbChildren; i >= 0; i--)
117 model->endRemoveRows();
118
119 list<InputPort*> plisti = father->getSetOfInputPort();
120 int nbIn = plisti.size();
121 if (nbIn)
122 {
123 model->beginInsertRows(modelIndex(), 0, nbIn-1);
124 list<InputPort*>::iterator iti = plisti.begin();
125 for(; iti != plisti.end(); iti++)
126 {
129 appendChild(item);
130 }
131 model->endInsertRows();
132 }
133
134 list<OutputPort*> plisto = father->getSetOfOutputPort();
135 int nbOut = plisto.size();
136 if (nbOut)
137 {
138 model->beginInsertRows(modelIndex(), nbIn, nbIn + nbOut -1);
139 list<OutputPort*>::iterator ito = plisto.begin();
140 for(; ito != plisto.end(); ito++)
141 {
144 appendChild(item);
145 }
146 model->endInsertRows();
147 }
148 }
149 break;
151 snode = dynamic_cast<SubjectNode*>(_subject);
152 YASSERT(snode);
153 node = snode->getNode();
154 YASSERT(node);
155 switch (node->getState())
156 {
157 case YACS::INVALID:
158 _itemForeground.replace(YLabel, QColor("red"));
159 model->setData(modelIndex(YLabel), 0); // --- to emit dataChanged signal
160 break;
161 case YACS::READY:
162 _itemForeground.replace(YLabel, QColor("blue"));
163 model->setData(modelIndex(YLabel), 0);
164 break;
165 default:
166 break;
167 }
168 break;
170 setExecState(type);
171 model->setData(modelIndex(YState), 0);
172 break;
173 default:
174 //DEBTRACE("SchemaNodeItem::update(), event not handled: " << eventName(event));
175 SchemaItem::update(event, type, son);
176 }
177}
Base class for all calculation nodes.
std::list< OutputPort * > getSetOfOutputPort() const
std::list< InputPort * > getSetOfInputPort() const
Base class for all nodes.
Definition: Node.hxx:70
virtual YACS::StatesForNode getState() const
Definition: Node.hxx:118
std::map< YACS::ENGINE::DataPort *, YACS::HMI::SubjectDataPort * > _mapOfSubjectDataPort
Definition: guiContext.hxx:71
static std::string eventName(GuiEvent event)
std::map< YACS::HMI::Subject *, YACS::HMI::SchemaItem * > _mapOfSchemaItem
virtual void appendChild(SchemaItem *child)
Definition: SchemaItem.cxx:87
virtual void update(GuiEvent event, int type, Subject *son)
Definition: SchemaItem.cxx:174
virtual SchemaItem * child(int row)
Definition: SchemaItem.cxx:105
QList< QVariant > _itemForeground
Definition: SchemaItem.hxx:79
virtual void removeChild(SchemaItem *child)
Definition: SchemaItem.cxx:93
virtual int childCount() const
Definition: SchemaItem.cxx:111
virtual std::string getName()
@ OUTPUTDATASTREAMPORT
@ INPUTDATASTREAMPORT
@ INVALID
Definition: define.hxx:36
@ READY
Definition: define.hxx:37

References YACS::HMI::SchemaItem::_itemForeground, YACS::HMI::QtGuiContext::_mapOfSchemaItem, YACS::HMI::GuiContext::_mapOfSubjectDataPort, YACS::HMI::SchemaItem::_subject, YACS::HMI::ADD, YACS::HMI::SchemaItem::appendChild(), YACS::HMI::SchemaItem::child(), YACS::HMI::SchemaItem::childCount(), DEBTRACE, YACS::HMI::GuiObserver::eventName(), YACS::HMI::Subject::getName(), YACS::HMI::SubjectNode::getNode(), YACS::HMI::QtGuiContext::getQtCurrent(), YACS::HMI::QtGuiContext::getSchemaModel(), YACS::ENGINE::ElementaryNode::getSetOfInputPort(), YACS::ENGINE::ElementaryNode::getSetOfOutputPort(), YACS::ENGINE::Node::getState(), yacsorb.CORBAEngineTest::i, YACS::HMI::INPUTDATASTREAMPORT, YACS::HMI::INPUTPORT, YACS::INVALID, YACS::HMI::SchemaItem::modelIndex(), YACS::HMI::ORDER, YACS::HMI::OUTPUTDATASTREAMPORT, YACS::HMI::OUTPUTPORT, YACS::READY, YACS::HMI::SchemaItem::removeChild(), YACS::HMI::SchemaModel::setData(), YACS::HMI::SchemaItem::setExecState(), YACS::HMI::SchemaItem::update(), YACS::HMI::UPDATE, YACS::HMI::UPDATEPROGRESS, YASSERT, YACS::HMI::YLabel, and YACS::HMI::YState.

Referenced by gui.graph.MyCanvas::customEvent().


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