1 // Copyright (C) 2009-2012 CEA/DEN, EDF R&D
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License.
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 #include "HEXABLOCKGUI_DocumentItem.hxx"
21 #include "HexShape.hxx"
26 using namespace HEXABLOCK::GUI;
28 // ElementItem --------------------------------------------------
29 ElementItem::ElementItem( HEXA_NS::EltBase* docElement, QString entry, HexaType ttype, HexaTreeRole treeRole):
32 m_DocElt = docElement;
36 setText(m_DocElt->getName());
37 setData( treeRole, HEXA_TREE_ROLE );
38 setData( entry, HEXA_DOC_ENTRY_ROLE);
39 setData( IDptr(), HEXA_ENTRY_ROLE );
42 if (m_DocElt!=NULL && m_DocElt->isAssociated())
45 if (m_type == VERTEXITEM) //Vertex
47 HEXA_NS::Shape* assoc = m_DocElt->getAssociation();
49 entry = QString(assoc->ident.c_str());
50 setData( entry + ";" , HEXA_ASSOC_ENTRY_ROLE );
53 else if (m_type == EDGEITEM)
56 const HEXA_NS::Shapes& assocs = ((HEXA_NS::Edge*)m_DocElt)->getAssociations();
57 for( HEXA_NS::Shapes::const_iterator anAssoc = assocs.begin(); anAssoc != assocs.end(); ++anAssoc ){
58 entry = (*anAssoc)->ident.c_str();
59 entries += entry + ";";
61 if ( !entries.isEmpty() )
62 setData( entries, HEXA_ASSOC_ENTRY_ROLE );
64 else if (m_type == QUADITEM)
67 const HEXA_NS::Shapes& assocs = ((HEXA_NS::Quad*)m_DocElt)->getAssociations();
68 for( HEXA_NS::Shapes::const_iterator anAssoc = assocs.begin(); anAssoc != assocs.end(); ++anAssoc ){
69 entry = (*anAssoc)->ident.c_str();
70 entries += entry + ";";
72 if ( !entries.isEmpty() )
73 setData( entries, HEXA_ASSOC_ENTRY_ROLE );
79 //ElementItem::ElementItem( HEXA_NS::EltBase* docElement, HexaType ttype, HexaTreeRole treeRole):
82 // m_DocElt = docElement;
85 // if (m_DocElt != NULL)
86 // setText(m_DocElt->getName());
87 // setData( treeRole, HEXA_TREE_ROLE );
88 // setData( IDptr(), HEXA_ENTRY_ROLE );
90 //// if (m_DocElt->isAssociated())
91 //// setData( "Y" , HEXA_ASSOC_ENTRY_ROLE );
94 //---------------------------------------------------------------
95 QVariant ElementItem::data( int role ) const
97 if ( role == HEXA_DATA_ROLE ){
100 case VERTEXITEM: return QVariant::fromValue( (HEXA_NS::Vertex*)m_DocElt );
101 case EDGEITEM: return QVariant::fromValue( (HEXA_NS::Edge*)m_DocElt );
102 case QUADITEM: return QVariant::fromValue( (HEXA_NS::Quad*)m_DocElt );
103 case HEXAITEM: return QVariant::fromValue( (HEXA_NS::Hexa*)m_DocElt );
104 case VECTORITEM: return QVariant::fromValue( (HEXA_NS::Vector*)m_DocElt );
105 case CYLINDERITEM: return QVariant::fromValue( (HEXA_NS::Cylinder*)m_DocElt );
106 case PIPEITEM: return QVariant::fromValue( (HEXA_NS::Pipe*)m_DocElt );
107 case ELEMENTSITEM: return QVariant::fromValue( (HEXA_NS::Elements*)m_DocElt );
108 case CROSSELEMENTSITEM: return QVariant::fromValue( (HEXA_NS::CrossElements*)m_DocElt );
109 default: return QVariant::fromValue( m_DocElt );
113 if (role == Qt::ForegroundRole ) {
114 if ( m_DocElt->isAssociated() )
115 return QColor(Qt::darkGreen);
117 return QColor(Qt::black);
119 return QStandardItem::data( role );
122 //---------------------------------------------------------------
123 void ElementItem::setData ( const QVariant& valcont, int role )
125 if ( role == HEXA_DATA_ROLE ){
126 m_DocElt = valcont.value<HEXA_NS::EltBase*>();
130 QStandardItem::setData ( valcont, role );
133 //---------------------------------------------------------------
134 int ElementItem::type () const {return m_type;}
135 //---------------------------------------------------------------
136 bool ElementItem::isAssoc () const {return m_DocElt->isAssociated();}
137 //---------------------------------------------------------------
138 QString ElementItem::IDptr() const { return QString::number( reinterpret_cast<intptr_t>(m_DocElt) ); }
141 // ----------------------- VERTEX (DATA)
142 VertexItem::VertexItem( HEXA_NS::Vertex* hexaVertex, QString entry):
143 GraphicElementItem(hexaVertex, entry, VERTEXITEM, VERTEX_TREE)
147 // ----------------------- EDGE (DATA)
148 EdgeItem::EdgeItem( HEXA_NS::Edge* hexaEdge, QString entry ):
149 GraphicElementItem(hexaEdge, entry, EDGEITEM, EDGE_TREE)
153 // ----------------------- QUAD (DATA)
154 QuadItem::QuadItem( HEXA_NS::Quad* hexaQuad, QString entry):
155 GraphicElementItem(hexaQuad, entry, QUADITEM, QUAD_TREE)
159 // ----------------------- HEXA (DATA)
160 HexaItem::HexaItem( HEXA_NS::Hexa* hexaHexa , QString entry):
161 GraphicElementItem(hexaHexa,entry, HEXAITEM, HEXA_TREE)
165 // ----------------------- VECTOR (BUILDER)
166 VectorItem::VectorItem( HEXA_NS::Vector* hexaVector, QString entry ):
167 StandardElementItem(hexaVector, entry, VECTORITEM, VECTOR_TREE)
171 // ----------------------- CYLINDER (BUILDER)
172 CylinderItem::CylinderItem( HEXA_NS::Cylinder* hexaCylinder, QString entry):
173 StandardElementItem(hexaCylinder, entry, CYLINDERITEM, CYLINDER_TREE)
177 // ----------------------- PIPE (BUILDER)
178 PipeItem::PipeItem( HEXA_NS::Pipe* hexaPipe, QString entry ):
179 StandardElementItem(hexaPipe, entry, PIPEITEM, PIPE_TREE)
183 // ----------------------- ELEMENTS (NOT USED)
184 ElementsItem::ElementsItem( HEXA_NS::Elements* hexaElements, QString entry ):
185 StandardElementItem(hexaElements, entry, ELEMENTSITEM, ELEMENTS_TREE)
189 // ----------------------- CROSSELEMENTS (NOT USED)
190 CrossElementsItem::CrossElementsItem( HEXA_NS::CrossElements* hexaCrossElts, QString entry ):
191 StandardElementItem(hexaCrossElts, entry, CROSSELEMENTSITEM, CROSSELEMENTS_TREE)
195 // ----------------------- GROUP
196 GroupItem::GroupItem( HEXA_NS::Group* hexaGroup ):
198 _hexaGroup( hexaGroup )
201 QString name = _hexaGroup->getName();//pName);
203 setData( GROUP_TREE, HEXA_TREE_ROLE );
204 setData( QString::number(reinterpret_cast<intptr_t>(_hexaGroup)), HEXA_ENTRY_ROLE );
207 int GroupItem::type() const
212 QVariant GroupItem::data( int role ) const
214 if ( role == HEXA_DATA_ROLE ){
215 return QVariant::fromValue( _hexaGroup );
217 return QStandardItem::data( role );
221 void GroupItem::setData ( const QVariant& value, int role )
223 if ( role == HEXA_DATA_ROLE ){
224 _hexaGroup = value.value<HEXA_NS::Group*>();
227 QStandardItem::setData ( value, role );
233 // ----------------------- LAW
234 LawItem::LawItem( HEXA_NS::Law* hexaLaw ):
239 QString name = _hexaLaw->getName();//pName);
241 setData( LAW_TREE, HEXA_TREE_ROLE );
242 setData( QString::number(reinterpret_cast<intptr_t>(_hexaLaw)), HEXA_ENTRY_ROLE );
245 int LawItem::type() const
250 QVariant LawItem::data( int role ) const
252 if ( role == HEXA_DATA_ROLE ){
253 return QVariant::fromValue( _hexaLaw);
255 return QStandardItem::data( role );
259 void LawItem::setData ( const QVariant & value, int role )
261 if ( role == HEXA_DATA_ROLE ){
262 _hexaLaw = value.value<HEXA_NS::Law*>();
265 QStandardItem::setData ( value, role );
271 // ----------------------- PROPAGATIONITEM
272 PropagationItem::PropagationItem( HEXA_NS::Propagation* hexaPropagation ):
274 _hexaPropagation( hexaPropagation )
277 // QString name = _hexaPropagation->getName(pName);
278 QString name = "Propagation";
280 setData( PROPAGATION_TREE, HEXA_TREE_ROLE );
281 setData( QString::number(reinterpret_cast<intptr_t>(_hexaPropagation)), HEXA_ENTRY_ROLE );
284 int PropagationItem::type() const
286 return PROPAGATIONITEM;
289 QVariant PropagationItem::data( int role ) const
291 if ( role == HEXA_DATA_ROLE ){
292 return QVariant::fromValue( _hexaPropagation );
294 return QStandardItem::data( role );
298 void PropagationItem::setData ( const QVariant & value, int role )
300 if ( role == HEXA_DATA_ROLE ){
301 _hexaPropagation = value.value<HEXA_NS::Propagation*>();
304 QStandardItem::setData ( value, role );
307 //-------------------------------------------------