Version: 9.16.0
YACS::HMI::TablePortsEdition Class Reference

#include <TablePortsEdition.hxx>

Inheritance diagram for YACS::HMI::TablePortsEdition:
Collaboration diagram for YACS::HMI::TablePortsEdition:

Public Slots

void on_pb_up_clicked ()
 
void on_pb_down_clicked ()
 
void on_pb_insert_clicked ()
 
void on_pb_remove_clicked ()
 
void oncb_insert_activated (const QString &text)
 
void oncb_insert_popupHide ()
 
void oncb_insert_popupShow ()
 

Public Member Functions

 TablePortsEdition (bool inPorts, QWidget *parent=0)
 
virtual ~TablePortsEdition ()
 
void setNode (SubjectElementaryNode *node)
 
virtual void setEditablePorts (bool isEditable)
 
virtual void adjustColumns ()
 

Protected Member Functions

void upOrDown (int isUp)
 

Protected Attributes

bool _inPorts
 
SubjectElementaryNode_node
 
int _nbUp
 

Detailed Description

Definition at line 56 of file TablePortsEdition.hxx.

Constructor & Destructor Documentation

◆ TablePortsEdition()

TablePortsEdition::TablePortsEdition ( bool  inPorts,
QWidget parent = 0 
)

Definition at line 86 of file TablePortsEdition.cxx.

87{
88 DEBTRACE("TablePortsEdition::TablePortsEdition");
89 setupUi(this);
90 _inPorts = inPorts;
91 _node = 0;
92 _nbUp = 0;
93 if (tv_ports->horizontalHeader())
94 tv_ports->horizontalHeader()->setStretchLastSection(true);
95
96 delete cb_insert;
97 cb_insert = new YComboBox(layoutWidget);
98 gridLayout1->addWidget(cb_insert, 0, 4, 1, 1);
99 cb_insert->setToolTip("port creation: select a port type");
100
101 connect(cb_insert, SIGNAL(popupHide()),
102 this, SLOT(oncb_insert_popupHide()));
103 connect(cb_insert, SIGNAL(popupShow()),
104 this, SLOT(oncb_insert_popupShow()));
105
106 connect(cb_insert, SIGNAL(activated(const QString&)),
107 this, SLOT(oncb_insert_activated(const QString&)));
108}
#define DEBTRACE(msg)
Definition: YacsTrace.hxx:31
SubjectElementaryNode * _node
void oncb_insert_activated(const QString &text)

References _inPorts, _nbUp, _node, DEBTRACE, oncb_insert_activated(), oncb_insert_popupHide(), and oncb_insert_popupShow().

◆ ~TablePortsEdition()

TablePortsEdition::~TablePortsEdition ( )
virtual

Definition at line 110 of file TablePortsEdition.cxx.

111{
112 DEBTRACE("TablePortsEdition::~TablePortsEdition");
113}

References DEBTRACE.

Member Function Documentation

◆ adjustColumns()

void TablePortsEdition::adjustColumns ( )
virtual

Definition at line 286 of file TablePortsEdition.cxx.

287{
288 DEBTRACE("TablePortsEdition::adjustColumns");
289 if (!tv_ports->isColumnHidden(YLabel))
290 tv_ports->resizeColumnToContents(YLabel);
291 if (!tv_ports->isColumnHidden(YType))
292 tv_ports->resizeColumnToContents(YType);
293}

References DEBTRACE, YACS::HMI::YLabel, and YACS::HMI::YType.

Referenced by YACS::HMI::EditionElementaryNode::synchronize().

◆ on_pb_down_clicked

void TablePortsEdition::on_pb_down_clicked ( )
slot

Definition at line 127 of file TablePortsEdition.cxx.

128{
129 DEBTRACE("TablePortsEdition::on_pb_down_clicked");
130 upOrDown(0); // --- 0 means go down one step
131 _nbUp = 0;
132}

References _nbUp, DEBTRACE, and upOrDown().

◆ on_pb_insert_clicked

void TablePortsEdition::on_pb_insert_clicked ( )
slot

Definition at line 176 of file TablePortsEdition.cxx.

177{
178 DEBTRACE("TablePortsEdition::on_pb_insert_clicked");
180 SubjectDataPort *spBefore = 0;
181 _nbUp = 0;
182
183 QModelIndexList items = tv_ports->selectionModel()->selection().indexes();
184 QModelIndex index;
185 if (!items.isEmpty()) index = items.first();
186 SchemaItem *item = static_cast<SchemaItem*>(index.internalPointer());
187 if (!item)
188 return;
189
190 Subject *sub = item->getSubject();
191 DEBTRACE(sub->getName());
192 spBefore = dynamic_cast<SubjectDataPort*>(sub);
193 DataPort *port = spBefore->getPort();
194
195 bool isInput = false;
196 if (dynamic_cast<SubjectInputPort*>(spBefore))
197 isInput = true;
198
199 sub = item->parent()->getSubject();
200 SubjectElementaryNode* sen = dynamic_cast<SubjectElementaryNode*>(sub);
201 YASSERT(sen);
202 ElementaryNode* father = dynamic_cast<ElementaryNode*>(sen->getNode());
203
204 if (isInput)
205 {
206 int rang = 0;
207 list<InputPort*> plist = father->getSetOfInputPort();
208 list<InputPort*>::iterator pos = plist.begin();
209 for (; (*pos) != port; pos++)
210 rang++;
211 _nbUp = plist.size() -rang;
212 }
213 else
214 {
215 int rang = 0;
216 list<OutputPort*> plist = father->getSetOfOutputPort();
217 list<OutputPort*>::iterator pos = plist.begin();
218 for (; (*pos) != port; pos++)
219 rang++;
220 _nbUp = plist.size() -rang;
221 }
222
224 cb_insert->showPopup();
225}
#define YASSERT(val)
YASSERT macro is always defined, used like assert, but throw a YACS::Exception instead of abort.
Definition: YacsTrace.hxx:59
Base class for all calculation nodes.
std::list< OutputPort * > getSetOfOutputPort() const
std::list< InputPort * > getSetOfInputPort() const
YACS::HMI::SchemaModel * getSchemaModel()
static QtGuiContext * getQtCurrent()
virtual Subject * getSubject()
Definition: SchemaItem.cxx:169
virtual SchemaItem * parent()
Definition: SchemaItem.cxx:163
virtual YACS::ENGINE::DataPort * getPort()
virtual YACS::ENGINE::Node * getNode()
virtual std::string getName()

References _nbUp, DEBTRACE, YACS::HMI::Subject::getName(), YACS::HMI::SubjectNode::getNode(), YACS::HMI::SubjectDataPort::getPort(), YACS::HMI::QtGuiContext::getQtCurrent(), YACS::HMI::QtGuiContext::getSchemaModel(), YACS::ENGINE::ElementaryNode::getSetOfInputPort(), YACS::ENGINE::ElementaryNode::getSetOfOutputPort(), YACS::HMI::SchemaItem::getSubject(), YACS::HMI::SchemaItem::parent(), and YASSERT.

◆ on_pb_remove_clicked

void TablePortsEdition::on_pb_remove_clicked ( )
slot

Definition at line 264 of file TablePortsEdition.cxx.

265{
266 DEBTRACE("TablePortsEdition::on_pb_remove_clicked");
268 SubjectDataPort *spToRemove = 0;
269 QModelIndexList items = tv_ports->selectionModel()->selection().indexes();
270 QModelIndex index;
271 if (!items.isEmpty()) index = items.first();
272 SchemaItem *item = static_cast<SchemaItem*>(index.internalPointer());
273 if (item)
274 {
275 Subject *sub = item->getSubject();
276 DEBTRACE(sub->getName());
277 spToRemove = dynamic_cast<SubjectDataPort*>(sub);
278 }
279 if (spToRemove)
280 {
282 spToRemove);
283 }
284}
YACS::HMI::GuiEditor * _guiEditor
Definition: GenericGui.hxx:201
YACS::HMI::GenericGui * getGMain()
virtual Subject * getParent()

References YACS::HMI::GenericGui::_guiEditor, DEBTRACE, YACS::HMI::GuiEditor::DeleteSubject(), YACS::HMI::QtGuiContext::getGMain(), YACS::HMI::Subject::getName(), YACS::HMI::Subject::getParent(), YACS::HMI::QtGuiContext::getQtCurrent(), YACS::HMI::QtGuiContext::getSchemaModel(), and YACS::HMI::SchemaItem::getSubject().

◆ on_pb_up_clicked

void TablePortsEdition::on_pb_up_clicked ( )
slot

Definition at line 120 of file TablePortsEdition.cxx.

121{
122 DEBTRACE("TablePortsEdition::on_pb_up_clicked");
123 upOrDown(1);// --- n>0 means go up n steps
124 _nbUp = 0;
125}

References _nbUp, DEBTRACE, and upOrDown().

◆ oncb_insert_activated

void TablePortsEdition::oncb_insert_activated ( const QString &  text)
slot

Definition at line 227 of file TablePortsEdition.cxx.

228{
229 DEBTRACE("TablePortsEdition::oncb_insert_activated " << text.toStdString());
230 SubjectDataPort *spBefore = 0;
231 QModelIndexList items = tv_ports->selectionModel()->selection().indexes();
232 QModelIndex index;
233 if (!items.isEmpty()) index = items.first();
234 SchemaItem *item = static_cast<SchemaItem*>(index.internalPointer());
235 if (item)
236 {
237 Subject *sub = item->getSubject();
238 DEBTRACE(sub->getName());
239 spBefore = dynamic_cast<SubjectDataPort*>(sub);
240 }
241 string portType = text.toStdString();
242 QStringList defaultTypes;
243 defaultTypes << "Int" << "Double" << "String" << "Bool";
244 if (defaultTypes.contains(text))
245 portType = text.toLower().toStdString();
246 YACS::ENGINE::Catalog *catalog =
248 if (!catalog) catalog = QtGuiContext::getQtCurrent()->getCurrentCatalog();
249 YASSERT(catalog);
251 SubjectDataPort * sdp = 0;
252 if (_inPorts)
253 sdp = editor->CreateInputPort(_node, "", catalog, portType, spBefore);
254 else
255 sdp = editor->CreateOutputPort(_node, "", catalog, portType, spBefore);
256 if (_nbUp)
257 {
258 DEBTRACE("move up created port " << _nbUp);
260 _nbUp = 0;
261 }
262}
class for YACS catalogs.
Definition: Catalog.hxx:42
virtual YACS::ENGINE::Catalog * getCatalogFromType(std::string typeName)
CatalogWidget * getCatalogWidget()
Definition: GenericGui.hxx:77
YACS::ENGINE::Catalog * getCurrentCatalog()
Definition: guiContext.hxx:48
SubjectDataPort * CreateOutputPort(SubjectElementaryNode *seNode, std::string name, YACS::ENGINE::Catalog *catalog, std::string type="double", SubjectDataPort *before=0)
Definition: GuiEditor.cxx:354
SubjectDataPort * CreateInputPort(SubjectElementaryNode *seNode, std::string name, YACS::ENGINE::Catalog *catalog, std::string type="double", SubjectDataPort *before=0)
Definition: GuiEditor.cxx:319
virtual bool OrderDataPorts(SubjectDataPort *portToMove, int isUp)

References YACS::HMI::GenericGui::_guiEditor, _inPorts, _nbUp, _node, YACS::HMI::GuiEditor::CreateInputPort(), YACS::HMI::GuiEditor::CreateOutputPort(), DEBTRACE, YACS::HMI::CatalogWidget::getCatalogFromType(), YACS::HMI::GenericGui::getCatalogWidget(), YACS::HMI::GuiContext::getCurrentCatalog(), YACS::HMI::QtGuiContext::getGMain(), YACS::HMI::Subject::getName(), YACS::HMI::QtGuiContext::getQtCurrent(), YACS::HMI::SchemaItem::getSubject(), YACS::HMI::SubjectElementaryNode::OrderDataPorts(), and YASSERT.

Referenced by TablePortsEdition().

◆ oncb_insert_popupHide

void TablePortsEdition::oncb_insert_popupHide ( )
slot

Definition at line 338 of file TablePortsEdition.cxx.

339{
340 DEBTRACE("TablePortsEdition::oncb_insert_popupHide");
341 if (cb_insert->currentIndex() < 0)
342 _nbUp = 0; // --- no selection, no port creation, no move
344}

References _nbUp, and DEBTRACE.

Referenced by TablePortsEdition().

◆ oncb_insert_popupShow

void TablePortsEdition::oncb_insert_popupShow ( )
slot

Definition at line 346 of file TablePortsEdition.cxx.

347{
348 DEBTRACE("TablePortsEdition::oncb_insert_popupShow");
349}

References DEBTRACE.

Referenced by TablePortsEdition().

◆ setEditablePorts()

void TablePortsEdition::setEditablePorts ( bool  isEditable)
virtual

Definition at line 296 of file TablePortsEdition.cxx.

297{
298 DEBTRACE("TablePortsEdition::setEditablePorts " << isEditable);
299 if (QtGuiContext::getQtCurrent()->isEdition())
300 {
301 tv_ports->setColumnHidden(YType, false);
302 tv_ports->setColumnHidden(YValue, false);
303 }
304 else
305 {
306 isEditable = false; // --- no edition in execution !
307 tv_ports->setColumnHidden(YType, true);
308 tv_ports->setColumnHidden(YState, false);
309 }
310
311 if (tv_ports->verticalHeader())
312 tv_ports->verticalHeader()->setVisible(false);
313
314
315 pb_up->setEnabled(isEditable);
316 pb_down->setEnabled(isEditable);
317 pb_insert->setEnabled(isEditable);
318 pb_remove->setEnabled(isEditable);
319 cb_insert->setEnabled(isEditable);
320 if (isEditable)
321 {
322 pb_up->show();
323 pb_down->show();
324 pb_insert->show();
325 pb_remove->show();
326 cb_insert->show();
327 }
328 else
329 {
330 pb_up->hide();
331 pb_down->hide();
332 pb_insert->hide();
333 pb_remove->hide();
334 cb_insert->hide();
335 }
336}

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

Referenced by YACS::HMI::EditionElementaryNode::setEditablePorts().

◆ setNode()

void TablePortsEdition::setNode ( SubjectElementaryNode node)

Definition at line 115 of file TablePortsEdition.cxx.

116{
117 _node = node;
118}

References _node.

Referenced by YACS::HMI::EditionElementaryNode::synchronize().

◆ upOrDown()

void TablePortsEdition::upOrDown ( int  isUp)
protected

move up or down the port in the list of ports. when isUp = 0, go down one step, when isUp = n>0, go up n steps.

Definition at line 138 of file TablePortsEdition.cxx.

139{
141 SubjectDataPort *spToMove = 0;
142
143 QModelIndexList items = tv_ports->selectionModel()->selection().indexes();
144 QModelIndex index;
145 if (!items.isEmpty()) index = items.first();
146 SchemaItem *item = static_cast<SchemaItem*>(index.internalPointer());
147
148 if (item)
149 {
150 Subject *sub = item->getSubject();
151 DEBTRACE(sub->getName());
152 spToMove = dynamic_cast<SubjectDataPort*>(sub);
153 }
154
155 if (spToMove)
156 {
157 Subject *sub = item->parent()->getSubject();
158 SubjectElementaryNode* sen = dynamic_cast<SubjectElementaryNode*>(sub);
159 YASSERT(sen);
160 sen->OrderDataPorts(spToMove,isUp);
162 {
165 SceneComposedNodeItem *proc = dynamic_cast<SceneComposedNodeItem*>(item);
166 proc->rebuildLinks();
167 }
168
169 QItemSelectionModel *selectionModel = tv_ports->selectionModel();
170 QModelIndex topLeft=item->modelIndex(0);
171 QItemSelection selection(topLeft, topLeft);
172 selectionModel->select(selection, QItemSelectionModel::Select);
173 }
174}
YACS::HMI::SubjectProc * getSubjectProc()
Definition: guiContext.hxx:52
std::map< YACS::HMI::Subject *, YACS::HMI::SceneItem * > _mapOfSceneItem
static bool _autoComputeLinks
Definition: Scene.hxx:37

References YACS::HMI::Scene::_autoComputeLinks, YACS::HMI::QtGuiContext::_mapOfSceneItem, DEBTRACE, YACS::HMI::Subject::getName(), YACS::HMI::QtGuiContext::getQtCurrent(), YACS::HMI::QtGuiContext::getSchemaModel(), YACS::HMI::SchemaItem::getSubject(), YACS::HMI::GuiContext::getSubjectProc(), YACS::HMI::SchemaItem::modelIndex(), YACS::HMI::SubjectElementaryNode::OrderDataPorts(), YACS::HMI::SchemaItem::parent(), YACS::HMI::SceneComposedNodeItem::rebuildLinks(), and YASSERT.

Referenced by on_pb_down_clicked(), and on_pb_up_clicked().

Member Data Documentation

◆ _inPorts

bool YACS::HMI::TablePortsEdition::_inPorts
protected

Definition at line 78 of file TablePortsEdition.hxx.

Referenced by oncb_insert_activated(), and TablePortsEdition().

◆ _nbUp

int YACS::HMI::TablePortsEdition::_nbUp
protected

◆ _node

SubjectElementaryNode* YACS::HMI::TablePortsEdition::_node
protected

Definition at line 79 of file TablePortsEdition.hxx.

Referenced by oncb_insert_activated(), setNode(), and TablePortsEdition().


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