Version: 9.16.0
YACS::HMI::TreeView Class Reference

#include <TreeView.hxx>

Inheritance diagram for YACS::HMI::TreeView:
Collaboration diagram for YACS::HMI::TreeView:

Public Slots

void viewSelection (const QModelIndex &ind)
 
void resizeColumns ()
 
virtual void onCommitData (QWidget *editor)
 

Public Member Functions

 TreeView (QWidget *parent=0)
 
virtual ~TreeView ()
 
virtual void setModel (QAbstractItemModel *model)
 

Protected Member Functions

virtual bool event (QEvent *event)
 
void contextMenuEvent (QContextMenuEvent *event)
 

Protected Attributes

bool _isEdition
 
ValueDelegate_valueDelegate
 

Detailed Description

Definition at line 33 of file TreeView.hxx.

Constructor & Destructor Documentation

◆ TreeView()

TreeView::TreeView ( QWidget parent = 0)

Definition at line 41 of file TreeView.cxx.

42 : QTreeView(parent)
43{
44 setDragDropMode(QAbstractItemView::DragDrop);
45 setDragEnabled(true);
46 setAcceptDrops(true);
47 setDropIndicatorShown(true);
48 _isEdition = true;
49
50 _valueDelegate = new ValueDelegate(parent);
51
52 connect(_valueDelegate, SIGNAL(commitData(QWidget*)),
53 this, SLOT(onCommitData(QWidget*)));
54
55 setItemDelegateForColumn(YLabel, _valueDelegate); // --- port label
56 setItemDelegateForColumn(YValue, _valueDelegate); // --- port value
57}
ValueDelegate * _valueDelegate
Definition: TreeView.hxx:51
virtual void onCommitData(QWidget *editor)
Definition: TreeView.cxx:143

References _isEdition, _valueDelegate, onCommitData(), YACS::HMI::YLabel, and YACS::HMI::YValue.

◆ ~TreeView()

TreeView::~TreeView ( )
virtual

Definition at line 59 of file TreeView.cxx.

60{
61}

Member Function Documentation

◆ contextMenuEvent()

void TreeView::contextMenuEvent ( QContextMenuEvent *  event)
protected

Definition at line 123 of file TreeView.cxx.

124{
125 QModelIndexList selList = selectedIndexes();
126 if (selList.isEmpty())
127 return;
128 QModelIndex selected = selList.front();
129 if (selected.isValid())
130 {
131 SchemaItem* item = static_cast<SchemaItem*>(selected.internalPointer());
132 item->popupMenu(this, event->globalPos());
133 }
134}
virtual void popupMenu(QWidget *caller, const QPoint &globalPos)
Definition: SchemaItem.cxx:267
virtual bool event(QEvent *event)
Definition: TreeView.cxx:99

References event(), and YACS::HMI::SchemaItem::popupMenu().

◆ event()

bool TreeView::event ( QEvent event)
protectedvirtual

Definition at line 99 of file TreeView.cxx.

100{
101 if (event->type() == QEvent::WhatsThisClicked)
102 {
103 QWhatsThisClickedEvent* clicked = static_cast<QWhatsThisClickedEvent*>(event);
104 QtGuiContext::getQtCurrent()->getGMain()->onHelpContextModule("YACS",clicked->href());
105 return true; // what's this remains open if true is returned
106 }
107
108 if (event->type() == QEvent::ToolTip)
109 {
110 QHelpEvent *helpEvent = static_cast<QHelpEvent *>(event);
111 QModelIndex index = indexAt(helpEvent->pos());
112 if (index.isValid())
113 {
114 QString valtip = model()->data(index, Qt::ToolTipRole).toString();
115 QToolTip::showText(helpEvent->globalPos(), valtip);
116 }
117 else
118 QToolTip::hideText();
119 }
120 return QTreeView::event(event);
121}
virtual void onHelpContextModule(const QString &, const QString &, const QString &=QString())
static QtGuiContext * getQtCurrent()
YACS::HMI::GenericGui * getGMain()

References event(), YACS::HMI::QtGuiContext::getGMain(), YACS::HMI::QtGuiContext::getQtCurrent(), and YACS::HMI::GenericGui::onHelpContextModule().

Referenced by contextMenuEvent(), and event().

◆ onCommitData

void TreeView::onCommitData ( QWidget editor)
virtualslot

After edition with a specific editor created by ValueDelegate for a cell of Tree item, the resulting string is tested for setValue on the corresponding subject. Result of the setValue (succes or failure) is transmitted to ValueDelegate for further action in case of failure.

Definition at line 143 of file TreeView.cxx.

144{
145 DEBTRACE("TreeView::onCommitData " << editor);
146 GenericEditor* gedit = dynamic_cast<GenericEditor*>(editor);
147 YASSERT(gedit);
148 QString val = gedit->GetStrValue();
149 string strval = val.toStdString();
150 DEBTRACE(strval);
151 bool isOk = false;
152
153 Subject *sub = gedit->getSubject();
154 YASSERT(sub);
155 SubjectDataPort *sdp = dynamic_cast<SubjectDataPort*>(sub);
156 if (sdp)
157 {
158 if (gedit->getColumnInSubject() == YValue)
159 {
160 if (sdp->getPort()->edGetType()->kind() == YACS::ENGINE::String)
161 strval = "\"" + strval + "\"";
162 DEBTRACE(strval);
163 isOk = sdp->setValue(strval);
164
166 if (executor) executor->setInPortValue(sdp->getPort(), strval);
167 }
168 else // --- YLabel
169 {
170 isOk = sdp->setName(strval);
171 }
172 }
173 else
174 {
175 SubjectNode *snode = dynamic_cast<SubjectNode*>(sub);
176 YASSERT(snode);
177 sub = snode->getParent();
178 SubjectSwitch *sswitch = dynamic_cast<SubjectSwitch*>(sub);
179 YASSERT(sswitch);
180 isOk = sswitch->setCase(strval, snode);
181 }
182
183 if (_valueDelegate)
184 _valueDelegate->setResultEditing(editor, isOk);
185 }
#define YASSERT(val)
YASSERT macro is always defined, used like assert, but throw a YACS::Exception instead of abort.
Definition: YacsTrace.hxx:59
#define DEBTRACE(msg)
Definition: YacsTrace.hxx:31
TypeCode * edGetType() const
Definition: DataPort.hxx:53
DynType kind() const
Definition: TypeCode.cxx:47
virtual int getColumnInSubject()
virtual Subject * getSubject()
virtual QString GetStrValue()
void setInPortValue(YACS::ENGINE::DataPort *port, std::string value)
YACS::HMI::GuiExecutor * getGuiExecutor()
virtual bool setName(std::string name)
virtual bool setValue(std::string value)
virtual YACS::ENGINE::DataPort * getPort()
virtual bool setCase(std::string caseId, SubjectNode *snode)
virtual Subject * getParent()
virtual void setResultEditing(QWidget *editor, bool isOk)

References _valueDelegate, DEBTRACE, YACS::ENGINE::DataPort::edGetType(), YACS::HMI::GenericEditor::getColumnInSubject(), YACS::HMI::QtGuiContext::getGuiExecutor(), YACS::HMI::Subject::getParent(), YACS::HMI::SubjectDataPort::getPort(), YACS::HMI::QtGuiContext::getQtCurrent(), YACS::HMI::GenericEditor::GetStrValue(), YACS::HMI::GenericEditor::getSubject(), YACS::ENGINE::TypeCode::kind(), YACS::HMI::SubjectSwitch::setCase(), YACS::HMI::GuiExecutor::setInPortValue(), YACS::HMI::SubjectDataPort::setName(), YACS::HMI::ValueDelegate::setResultEditing(), YACS::HMI::SubjectDataPort::setValue(), YACS::ENGINE::String, YASSERT, and YACS::HMI::YValue.

Referenced by TreeView().

◆ resizeColumns

void TreeView::resizeColumns ( )
slot

Definition at line 77 of file TreeView.cxx.

78{
81 QModelIndex index = item->modelIndex();
82 setExpanded(index, true);
83 resizeColumnToContents(0);
84 if (_isEdition)
85 {
86 setColumnHidden(YType, false);
87 setColumnHidden(YValue, false);
88 setColumnWidth(YType, 100);
89 setColumnWidth(YValue, 100);
90 }
91 else
92 {
93 setColumnHidden(YType, true);
94 setColumnHidden(YState, false);
95 setColumnWidth(YState, 100);
96 }
97}
YACS::HMI::SubjectProc * getSubjectProc()
Definition: guiContext.hxx:52
std::map< YACS::HMI::Subject *, YACS::HMI::SchemaItem * > _mapOfSchemaItem
QModelIndex modelIndex(int column=0)
Definition: SchemaItem.cxx:253

References _isEdition, YACS::HMI::QtGuiContext::_mapOfSchemaItem, YACS::HMI::QtGuiContext::getQtCurrent(), YACS::HMI::GuiContext::getSubjectProc(), YACS::HMI::SchemaItem::modelIndex(), YACS::HMI::YState, YACS::HMI::YType, and YACS::HMI::YValue.

Referenced by YACS::HMI::GenericGui::createContext().

◆ setModel()

void TreeView::setModel ( QAbstractItemModel model)
virtual

Definition at line 63 of file TreeView.cxx.

64{
65 QTreeView::setModel(model);
67 DEBTRACE("_isEdition=" << _isEdition);
68}

References _isEdition, DEBTRACE, YACS::HMI::QtGuiContext::getQtCurrent(), and YACS::HMI::QtGuiContext::isEdition().

◆ viewSelection

void TreeView::viewSelection ( const QModelIndex &  ind)
slot

Definition at line 70 of file TreeView.cxx.

71{
72 QModelIndex ind0 = ind.sibling(ind.row(), 0);
73 //DEBTRACE("TreeView::viewSelection " << ind.row() << " " << ind.column() << " / " << ind0.row() << " " << ind0.column());
74 scrollTo(ind0);
75}

Member Data Documentation

◆ _isEdition

bool YACS::HMI::TreeView::_isEdition
protected

Definition at line 50 of file TreeView.hxx.

Referenced by resizeColumns(), setModel(), and TreeView().

◆ _valueDelegate

ValueDelegate* YACS::HMI::TreeView::_valueDelegate
protected

Definition at line 51 of file TreeView.hxx.

Referenced by onCommitData(), and TreeView().


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