Salome HOME
PAL20885 EDF 607 SMESH: Measure tools
authorvsr <vsr@opencascade.com>
Sat, 30 Oct 2010 09:12:30 +0000 (09:12 +0000)
committervsr <vsr@opencascade.com>
Sat, 30 Oct 2010 09:12:30 +0000 (09:12 +0000)
Improve mesh element information dialog box

src/SMESHGUI/SMESHGUI.cxx
src/SMESHGUI/SMESHGUI_MeshInfo.cxx
src/SMESHGUI/SMESHGUI_MeshInfo.h
src/SMESHGUI/SMESH_msg_en.ts

index 53f493edd46d87ecbc195a83ced90650d3e07f42..4d3383376164c5e9dc9b1c75e91d3e2d78150b2e 100644 (file)
@@ -4092,9 +4092,9 @@ void SMESHGUI::createPreferences()
   setPreferenceProperty( computeGroup, "columns", 2 );
   int notifyMode = addPreference( tr( "PREF_NOTIFY_MODE" ), computeGroup, LightApp_Preferences::Selector, "SMESH", "show_result_notification" );
   modes.clear();
-  modes.append( "Never" );
-  modes.append( "Errors only" );
-  modes.append( "Always" );
+  modes.append( tr( "PREF_NOTIFY_NEVER" ) );
+  modes.append( tr( "PREF_NOTIFY_ERROR" ) );
+  modes.append( tr( "PREF_NOTIFY_ALWAYS" ) );
   indices.clear();
   indices.append( 0 );
   indices.append( 1 );
@@ -4102,6 +4102,18 @@ void SMESHGUI::createPreferences()
   setPreferenceProperty( notifyMode, "strings", modes );
   setPreferenceProperty( notifyMode, "indexes", indices );
 
+  int infoGroup = addPreference( tr( "PREF_GROUP_INFO" ), genTab );
+  setPreferenceProperty( computeGroup, "columns", 2 );
+  int elemInfo = addPreference( tr( "PREF_ELEM_INFO" ), infoGroup, LightApp_Preferences::Selector, "SMESH", "mesh_elem_info" );
+  modes.clear();
+  modes.append( tr( "PREF_ELEM_INFO_SIMPLE" ) );
+  modes.append( tr( "PREF_ELEM_INFO_TREE" ) );
+  indices.clear();
+  indices.append( 0 );
+  indices.append( 1 );
+  setPreferenceProperty( elemInfo, "strings", modes );
+  setPreferenceProperty( elemInfo, "indexes", indices );
+
   int segGroup = addPreference( tr( "PREF_GROUP_SEGMENT_LENGTH" ), genTab );
   setPreferenceProperty( segGroup, "columns", 2 );
   int segLen = addPreference( tr( "PREF_SEGMENT_LENGTH" ), segGroup, LightApp_Preferences::IntSpin,
index f4549ea299f4fa320cd00be25e1b2b4d88497094..3cb15f1de86ef1d948406b1322b0d219cb5c4a29 100644 (file)
@@ -44,6 +44,8 @@
 #include <QButtonGroup>
 #include <QGridLayout>
 #include <QHBoxLayout>
+#include <QHeaderView>
+#include <QItemDelegate>
 #include <QKeyEvent>
 #include <QLabel>
 #include <QLineEdit>
@@ -51,6 +53,7 @@
 #include <QRadioButton>
 #include <QTabWidget>
 #include <QTextBrowser>
+#include <QTreeWidget>
 #include <QVBoxLayout>
 
 #include <SALOMEconfig.h>
@@ -461,7 +464,7 @@ void SMESHGUI_MeshInfo::setFieldsVisible( int start, int end, bool on )
   \param parent parent widget
 */
 SMESHGUI_ElemInfo::SMESHGUI_ElemInfo( QWidget* parent )
-: QWidget( parent ), myActor( 0 )
+: QWidget( parent ), myActor( 0 ), myID( 0 ), myIsElement( -1 )
 {
 }
 
@@ -478,10 +481,30 @@ SMESHGUI_ElemInfo::~SMESHGUI_ElemInfo()
 */
 void SMESHGUI_ElemInfo::setSource( SMESH_Actor* actor )
 {
-  myActor = actor;
-  clear();
+  if ( myActor != actor ) {
+    myActor = actor;
+    myID = 0;
+    myIsElement = -1;
+    clear();
+  }
+}
+
+/*!
+  \brief Show mesh element information
+  \param long id mesh node / element ID
+  \param isElem show mesh element information if \c true or mesh node information if \c false
+*/
+void SMESHGUI_ElemInfo::showInfo( long id, bool isElem )
+{
+  myID = id;
+  myIsElement = isElem;
 }
 
+/*!
+  \fn void SMESHGUI_ElemInfo::clear()
+  \brief Clear mesh element information widget
+*/
+
 /*!
   \brief Get node connectivity
   \param node mesh node
@@ -500,6 +523,24 @@ SMESHGUI_ElemInfo::Connectivity SMESHGUI_ElemInfo::nodeConnectivity( const SMDS_
   return elmap;
 }
 
+/*!
+  \brief Format connectivity data to string representation
+  \param connectivity connetivity map
+  \param type element type
+  \return string representation of the connectivity
+*/
+QString SMESHGUI_ElemInfo::formatConnectivity( Connectivity connectivity, int type )
+{
+  QStringList str;
+  if ( connectivity.contains( type ) ) {
+    QList<int> elements = connectivity[ type ];
+    qSort( elements );
+    foreach( int id, elements )
+      str << QString::number( id );
+  }
+  return str.join( " " );
+}
+
 /*!
   \brief Calculate gravity center of the mesh element
   \param element mesh element
@@ -518,18 +559,6 @@ SMESHGUI_ElemInfo::XYZ SMESHGUI_ElemInfo::gravityCenter( const SMDS_MeshElement*
   return xyz;
 }
 
-/*!
-  \fn void SMESHGUI_ElemInfo::showInfo( long id, bool isElem )
-  \brief Show mesh element information
-  \param long id mesh node / element ID
-  \param isElem show mesh element information if \c true or mesh node information if \c false
-*/
-
-/*!
-  \fn void SMESHGUI_ElemInfo::clear()
-  \brief Clear mesh element information widget
-*/
-
 /*!
   \class SMESHGUI_SimpleElemInfo
   \brief Represents mesh element information in the simple text area.
@@ -555,6 +584,10 @@ SMESHGUI_SimpleElemInfo::SMESHGUI_SimpleElemInfo( QWidget* parent )
 */
 void SMESHGUI_SimpleElemInfo::showInfo( long id, bool isElem )
 {
+  if ( myID == id && myIsElement == isElem ) return;
+
+  SMESHGUI_ElemInfo::showInfo( id, isElem );
+
   clear();
   
   if ( myActor ) {
@@ -567,7 +600,7 @@ void SMESHGUI_SimpleElemInfo::showInfo( long id, bool isElem )
       if ( !e ) return;
       const SMDS_MeshNode* node = static_cast<const SMDS_MeshNode*>( e );
       
-      // node number
+      // node ID
       myInfo->append( QString( "<b>%1 #%2</b>" ).arg( tr( "NODE" ) ).arg( id ) );
       // separator
       myInfo->append( "" );
@@ -606,7 +639,7 @@ void SMESHGUI_SimpleElemInfo::showInfo( long id, bool isElem )
       const SMDS_MeshElement* e = myActor->GetObject()->GetMesh()->FindElement( id );
       if ( !e ) return;
 
-      // element type
+      // element ID && type
       QString stype;
       switch( e->GetType() ) {
       case SMDSAbs_0DElement:
@@ -672,14 +705,14 @@ void SMESHGUI_SimpleElemInfo::showInfo( long id, bool isElem )
       SMDS_ElemIteratorPtr nodeIt = e->nodesIterator();
       for ( int idx = 1; nodeIt->more(); idx++ ) {
        const SMDS_MeshNode* node = static_cast<const SMDS_MeshNode*>( nodeIt->next() );
-       // node number and id
+       // node number and ID
        myInfo->append( QString( "<b>%1 %2/%3</b> - #%4" ).arg( tr( "NODE" ) ).arg( idx ).arg( e->NbNodes() ).arg( node->GetID() ) );
-       // coordinates
+       // node coordinates
        myInfo->append( QString( "<b>%1:</b> (%2, %3, %4)" ).arg( tr( "COORDINATES" ) ).
                        arg( node->X(), 0, precision > 0 ? 'f' : 'g', qAbs( precision ) ).
                        arg( node->Y(), 0, precision > 0 ? 'f' : 'g', qAbs( precision ) ).
                        arg( node->Z(), 0, precision > 0 ? 'f' : 'g', qAbs( precision ) ) );
-       // connectivity
+       // node connectivity
        Connectivity connectivity = nodeConnectivity( node );
        if ( !connectivity.isEmpty() ) {
          myInfo->append( QString( "<b>%1:</b>" ).arg( tr( "CONNECTIVITY" ) ) );
@@ -715,26 +748,39 @@ void SMESHGUI_SimpleElemInfo::clear()
 }
 
 /*!
-  \brief Format connectivity data to string representation
-  \param connectivity connetivity map
-  \param type element type
-  \return string representation of the connectivity
+  \class SMESHGUI_TreeElemInfo::ItemDelegate
+  \brief Item delegate for tree mesh info widget
+  \internal
 */
-QString SMESHGUI_SimpleElemInfo::formatConnectivity( Connectivity connectivity, int type )
+class SMESHGUI_TreeElemInfo::ItemDelegate : public QItemDelegate
+{
+public:
+  ItemDelegate( QObject* );
+  QWidget* createEditor( QWidget*, const QStyleOptionViewItem&, const QModelIndex& ) const;
+};
+
+/*!
+  \brief Constructor
+  \internal
+*/
+SMESHGUI_TreeElemInfo::ItemDelegate::ItemDelegate( QObject* parent ) : QItemDelegate( parent )
 {
-  QStringList str;
-  if ( connectivity.contains( type ) ) {
-    QList<int> elements = connectivity[ type ];
-    qSort( elements );
-    foreach( int id, elements )
-      str << QString::number( id );
-  }
-  return str.join( " " );
+}
+
+/*!
+  \brief Create item editor widget
+  \internal
+*/
+QWidget* SMESHGUI_TreeElemInfo::ItemDelegate::createEditor( QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index ) const
+{
+  QWidget* w = index.column() == 0 ? 0: QItemDelegate::createEditor( parent, option, index );
+  if ( qobject_cast<QLineEdit*>( w ) ) qobject_cast<QLineEdit*>( w )->setReadOnly(  true );
+  return w;
 }
 
 /*!
   \class SMESHGUI_TreeElemInfo
-  \brief Simple mesh element information representation widget
+  \brief Represents mesh element information in the tree-like form.
 */
 
 /*!
@@ -744,6 +790,15 @@ QString SMESHGUI_SimpleElemInfo::formatConnectivity( Connectivity connectivity,
 SMESHGUI_TreeElemInfo::SMESHGUI_TreeElemInfo( QWidget* parent )
 : SMESHGUI_ElemInfo( parent )
 {
+  myInfo = new QTreeWidget( this );
+  myInfo->setColumnCount( 2 );
+  myInfo->setHeaderLabels( QStringList() << tr( "PROPERTY" ) << tr( "VALUE" ) );
+  myInfo->header()->setStretchLastSection( true );
+  myInfo->header()->setResizeMode( 0, QHeaderView::ResizeToContents );
+  myInfo->setItemDelegate( new ItemDelegate( myInfo ) );
+  QVBoxLayout* l = new QVBoxLayout( this );
+  l->setMargin( 0 );
+  l->addWidget( myInfo );
 }
 
 /*!
@@ -753,6 +808,216 @@ SMESHGUI_TreeElemInfo::SMESHGUI_TreeElemInfo( QWidget* parent )
 */
 void SMESHGUI_TreeElemInfo::showInfo( long id, bool isElem )
 {
+  if ( myID == id && myIsElement == isElem ) return;
+
+  SMESHGUI_ElemInfo::showInfo( id, isElem );
+
+  clear();
+  
+  if ( myActor ) {
+    int precision = SMESHGUI::resourceMgr()->integerValue( "SMESH", "length_precision", 6 );
+    if ( !isElem ) {
+      //
+      // show node info
+      //
+      const SMDS_MeshElement* e = myActor->GetObject()->GetMesh()->FindNode( id );
+      if ( !e ) return;
+      const SMDS_MeshNode* node = static_cast<const SMDS_MeshNode*>( e );
+      
+      // node ID
+      QTreeWidgetItem* nodeItem = createItem( 0, -1 );
+      nodeItem->setText( 0, tr( "NODE" ) );
+      nodeItem->setText( 1, QString( "#%1" ).arg( id ) );
+      nodeItem->setExpanded( true );
+      // coordinates
+      QTreeWidgetItem* coordItem = createItem( nodeItem, 0 );
+      coordItem->setText( 0, tr( "COORDINATES" ) );
+      coordItem->setExpanded( true );
+      QTreeWidgetItem* xItem = createItem( coordItem );
+      xItem->setText( 0, "X" );
+      xItem->setText( 1, QString::number( node->X(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) );
+      QTreeWidgetItem* yItem = createItem( coordItem );
+      yItem->setText( 0, "Y" );
+      yItem->setText( 1, QString::number( node->Y(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) );
+      QTreeWidgetItem* zItem = createItem( coordItem );
+      zItem->setText( 0, "Z" );
+      zItem->setText( 1, QString::number( node->Z(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) );
+      // connectivity
+      QTreeWidgetItem* conItem = createItem( nodeItem, 0 );
+      conItem->setText( 0, tr( "CONNECTIVITY" ) );
+      conItem->setExpanded( true );
+      Connectivity connectivity = nodeConnectivity( node );
+      if ( !connectivity.isEmpty() ) {
+       QString con = formatConnectivity( connectivity, SMDSAbs_0DElement );
+       if ( !con.isEmpty() ) {
+         QTreeWidgetItem* i = createItem( conItem );
+         i->setText( 0, tr( "0D_ELEMENTS" ) );
+         i->setText( 1, con );
+       }
+       con = formatConnectivity( connectivity, SMDSAbs_Edge );
+       if ( !con.isEmpty() ) {
+         QTreeWidgetItem* i = createItem( conItem );
+         i->setText( 0, tr( "EDGES" ) );
+         i->setText( 1, con );
+       }
+       con = formatConnectivity( connectivity, SMDSAbs_Face );
+       if ( !con.isEmpty() ) {
+         QTreeWidgetItem* i = createItem( conItem );
+         i->setText( 0, tr( "FACES" ) );
+         i->setText( 1, con );
+       }
+       con = formatConnectivity( connectivity, SMDSAbs_Volume );
+       if ( !con.isEmpty() ) {
+         QTreeWidgetItem* i = createItem( conItem );
+         i->setText( 0, tr( "VOLUMES" ) );
+         i->setText( 1, con );
+       }
+      }
+      else {
+       conItem->setText( 1, tr( "FREE_NODE" ) );
+      }
+    }
+    else {
+      //
+      // show element info
+      // 
+      const SMDS_MeshElement* e = myActor->GetObject()->GetMesh()->FindElement( id );
+      if ( !e ) return;
+
+      // element ID && type
+      QString stype;
+      switch( e->GetType() ) {
+      case SMDSAbs_0DElement:
+       stype = tr( "0D ELEMENT" ); break;
+      case SMDSAbs_Edge:
+       stype = tr( "EDGE" ); break;
+      case SMDSAbs_Face:
+       stype = tr( "FACE" ); break;
+      case SMDSAbs_Volume:
+       stype = tr( "VOLUME" ); break;
+      default: 
+       break;
+      }
+      if ( stype.isEmpty() ) return;
+      QTreeWidgetItem* elemItem = createItem( 0, -1 );
+      elemItem->setText( 0, stype );
+      elemItem->setText( 1, QString( "#%1" ).arg( id ) );
+      elemItem->setExpanded( true );
+      // geometry type
+      QString gtype;
+      switch( e->GetEntityType() ) {
+      case SMDSEntity_Triangle:
+      case SMDSEntity_Quad_Triangle:
+       gtype = tr( "TRIANGLE" ); break;
+      case SMDSEntity_Quadrangle:
+      case SMDSEntity_Quad_Quadrangle:
+       gtype = tr( "QUADRANGLE" ); break;
+      case SMDSEntity_Polygon:
+      case SMDSEntity_Quad_Polygon:
+       gtype = tr( "QUADRANGLE" ); break;
+      case SMDSEntity_Tetra:
+      case SMDSEntity_Quad_Tetra:
+       gtype = tr( "TETRAHEDRON" ); break;
+      case SMDSEntity_Pyramid:
+      case SMDSEntity_Quad_Pyramid:
+       gtype = tr( "PYRAMID" ); break;
+      case SMDSEntity_Hexa:
+      case SMDSEntity_Quad_Hexa:
+       gtype = tr( "HEXAHEDRON" ); break;
+      case SMDSEntity_Penta:
+      case SMDSEntity_Quad_Penta:
+       gtype = tr( "PRISM" ); break;
+      case SMDSEntity_Polyhedra:
+      case SMDSEntity_Quad_Polyhedra:
+       gtype = tr( "POLYHEDRON" ); break;
+      default: 
+       break;
+      }
+      if ( !gtype.isEmpty() ) {
+       QTreeWidgetItem* typeItem = createItem( elemItem, 0 );
+       typeItem->setText( 0, tr( "TYPE" ) );
+       typeItem->setText( 1, gtype );
+      }
+      // quadratic flag and gravity center (any element except 0D)
+      if ( e->GetEntityType() > SMDSEntity_0D && e->GetEntityType() < SMDSEntity_Last ) {
+       // quadratic flag
+       QTreeWidgetItem* quadItem = createItem( elemItem, 0 );
+       quadItem->setText( 0, tr( "QUADRATIC" ) );
+       quadItem->setText( 1, e->IsQuadratic() ? tr( "YES" ) : tr( "NO" ) );
+       // gravity center
+       XYZ gc = gravityCenter( e );
+       QTreeWidgetItem* gcItem = createItem( elemItem, 0 );
+       gcItem->setText( 0, tr( "GRAVITY_CENTER" ) );
+       gcItem->setExpanded( true );
+       QTreeWidgetItem* xItem = createItem( gcItem );
+       xItem->setText( 0, "X" );
+       xItem->setText( 1, QString::number( gc.x(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) );
+       QTreeWidgetItem* yItem = createItem( gcItem );
+       yItem->setText( 0, "Y" );
+       yItem->setText( 1, QString::number( gc.y(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) );
+       QTreeWidgetItem* zItem = createItem( gcItem );
+       zItem->setText( 0, "Z" );
+       zItem->setText( 1, QString::number( gc.z(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) );
+      }
+      // connectivity
+      QTreeWidgetItem* conItem = createItem( elemItem, 0 );
+      conItem->setText( 0, tr( "CONNECTIVITY" ) );
+      conItem->setExpanded( true );
+      SMDS_ElemIteratorPtr nodeIt = e->nodesIterator();
+      for ( int idx = 1; nodeIt->more(); idx++ ) {
+       const SMDS_MeshNode* node = static_cast<const SMDS_MeshNode*>( nodeIt->next() );
+       // node number and ID
+       QTreeWidgetItem* nodeItem = createItem( conItem, 0 );
+       nodeItem->setText( 0, QString( "%1 %2/%3" ).arg( tr( "NODE" ) ).arg( idx ).arg( e->NbNodes() ) );
+       nodeItem->setText( 1, QString( "#%1" ).arg( node->GetID() ) );
+       //nodeItem->setExpanded( true );
+       // node coordinates
+       QTreeWidgetItem* coordItem = createItem( nodeItem );
+       coordItem->setText( 0, tr( "COORDINATES" ) );
+       coordItem->setExpanded( true );
+       QTreeWidgetItem* xItem = createItem( coordItem );
+       xItem->setText( 0, "X" );
+       xItem->setText( 1, QString::number( node->X(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) );
+       QTreeWidgetItem* yItem = createItem( coordItem );
+       yItem->setText( 0, "Y" );
+       yItem->setText( 1, QString::number( node->Y(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) );
+       QTreeWidgetItem* zItem = createItem( coordItem );
+       zItem->setText( 0, "Z" );
+       zItem->setText( 1, QString::number( node->Z(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) );
+       // node connectivity
+       QTreeWidgetItem* nconItem = createItem( nodeItem );
+       nconItem->setText( 0, tr( "CONNECTIVITY" ) );
+       nconItem->setExpanded( true );
+       Connectivity connectivity = nodeConnectivity( node );
+       if ( !connectivity.isEmpty() ) {
+         QString con = formatConnectivity( connectivity, SMDSAbs_0DElement );
+         if ( !con.isEmpty() ) {
+           QTreeWidgetItem* i = createItem( nconItem );
+           i->setText( 0, tr( "0D_ELEMENTS" ) );
+           i->setText( 1, con );
+         }
+         con = formatConnectivity( connectivity, SMDSAbs_Edge );
+         if ( !con.isEmpty() ) {
+           QTreeWidgetItem* i = createItem( nconItem );
+           i->setText( 0, tr( "EDGES" ) );
+           i->setText( 1, con );
+         }
+         con = formatConnectivity( connectivity, SMDSAbs_Face );
+         if ( !con.isEmpty() ) {
+           QTreeWidgetItem* i = createItem( nconItem );
+           i->setText( 0, tr( "FACES" ) );
+           i->setText( 1, con );
+         }
+         con = formatConnectivity( connectivity, SMDSAbs_Volume );
+         if ( !con.isEmpty() ) {
+           QTreeWidgetItem* i = createItem( nconItem );
+           i->setText( 0, tr( "VOLUMES" ) );
+           i->setText( 1, con );
+         }
+       }
+      }
+    }
+  }
 }
 
 /*!
@@ -760,6 +1025,36 @@ void SMESHGUI_TreeElemInfo::showInfo( long id, bool isElem )
 */
 void SMESHGUI_TreeElemInfo::clear()
 {
+  myInfo->clear();
+  myInfo->repaint();
+}
+
+/*!
+  \brief Create new tree item.
+  \param parnt parent tree widget item
+  \param column item column to be set bold, if it is -1, bold font will be set for all columns
+  \return new tree widget item
+*/
+QTreeWidgetItem* SMESHGUI_TreeElemInfo::createItem( QTreeWidgetItem* parent, int column )
+{
+  QTreeWidgetItem* item;
+  if ( parent )
+    item = new QTreeWidgetItem( parent );
+  else
+    item = new QTreeWidgetItem( myInfo );
+
+  item->setFlags( item->flags() | Qt::ItemIsEditable );
+
+  QFont f = item->font( 0 );
+  f.setBold( true );
+  if ( column >= 0 && column < myInfo->columnCount() ) {
+    item->setFont( column, f );
+  }
+  else if ( column == -1 ) {
+    for ( int i = 0; i < myInfo->columnCount(); i++ )
+      item->setFont( i, f );
+  }
+  return item;
 }
 
 /*!
@@ -798,7 +1093,7 @@ SMESHGUI_MeshInfoDlg::SMESHGUI_MeshInfoDlg( QWidget* parent, int page )
   myID = new QLineEdit( w );
   myID->setValidator( new SMESHGUI_IdValidator( this, 1 ) );
 
-  int mode = SMESHGUI::resourceMgr()->integerValue( "SMESH", "mesh_elem_info", 0 );
+  int mode = SMESHGUI::resourceMgr()->integerValue( "SMESH", "mesh_elem_info", 1 );
   mode = qMin( 1, qMax( 0, mode ) );
   
   if ( mode == 0 ) 
index a6b6d7dc3c3be3b3fa954fec3f83dd98376ec69d..ae22e5ac0eb3947e95722d16d34c611d9550e74d 100644 (file)
@@ -42,6 +42,8 @@ class QLabel;
 class QLineEdit;
 class QTabWidget;
 class QTextBrowser;
+class QTreeWidget;
+class QTreeWidgetItem;
 class SMESH_Actor;
 class SMDS_MeshNode;
 class SMDS_MeshElement;
@@ -119,8 +121,7 @@ public:
   ~SMESHGUI_ElemInfo();
 
   void         setSource( SMESH_Actor* );
-
-  virtual void showInfo( long, bool ) = 0;
+  virtual void showInfo( long, bool );
   virtual void clear() = 0;
 
 protected:
@@ -137,10 +138,13 @@ protected:
   typedef QMap< int, QList<int> > Connectivity;
 
   Connectivity nodeConnectivity( const SMDS_MeshNode* );
+  QString      formatConnectivity( Connectivity, int );
   XYZ          gravityCenter( const SMDS_MeshElement* );
 
 protected:
   SMESH_Actor* myActor;
+  long         myID;
+  int          myIsElement;
 };
 
 class SMESHGUI_EXPORT SMESHGUI_SimpleElemInfo : public SMESHGUI_ElemInfo
@@ -151,20 +155,25 @@ public:
   void          showInfo( long, bool );
   void          clear();
 
-protected:
-  QString       formatConnectivity( Connectivity, int );
-
 private:
   QTextBrowser* myInfo;
 };
 
 class SMESHGUI_EXPORT SMESHGUI_TreeElemInfo : public SMESHGUI_ElemInfo
 {
+  class ItemDelegate;
+
 public:
   SMESHGUI_TreeElemInfo( QWidget* = 0 );
 
-  void showInfo( long, bool );
-  void clear();
+  void             showInfo( long, bool );
+  void             clear();
+
+private:
+  QTreeWidgetItem* createItem( QTreeWidgetItem* = 0, int = 100 );
+  
+private:
+  QTreeWidget*     myInfo;
 };
 
 class SMESHGUI_EXPORT SMESHGUI_MeshInfoDlg : public QDialog
index bf71dcded70ea623eb0e358f9f6698562ff7f72c..6f5139439c6b399cd0d6e2e2759acf1f45bc019e 100644 (file)
@@ -3402,6 +3402,30 @@ Please, create VTK viewer and try again</translation>
         <source>PREF_NOTIFY_MODE</source>
         <translation>Show a computation result notification</translation>
     </message>
+    <message>
+        <source>PREF_NOTIFY_NEVER</source>
+        <translation>Never</translation>
+    </message>
+    <message>
+        <source>PREF_NOTIFY_ERROR</source>
+        <translation>Errors only</translation>
+    </message>
+    <message>
+        <source>PREF_NOTIFY_ALWAYS</source>
+        <translation>Always</translation>
+    </message>
+    <message>
+        <source>PREF_ELEM_INFO</source>
+        <translation>Mesh element information</translation>
+    </message>
+    <message>
+        <source>PREF_ELEM_INFO_SIMPLE</source>
+        <translation>Simple</translation>
+    </message>
+    <message>
+        <source>PREF_ELEM_INFO_TREE</source>
+        <translation>Tree</translation>
+    </message>
     <message>
         <source>SMESH_PREF_GROUP_PRECISION</source>
         <translation>Input fields precision</translation>
@@ -3454,6 +3478,10 @@ Please, create VTK viewer and try again</translation>
         <source>PREF_GROUP_UPDATE</source>
         <translation>Update</translation>
     </message>
+    <message>
+        <source>PREF_GROUP_INFO</source>
+        <translation>Mesh information</translation>
+    </message>
     <message>
         <source>PREF_HIGHLIGHT_COLOR</source>
         <translation>Highlight color</translation>
@@ -5608,5 +5636,13 @@ It is impossible to read point coordinates from file</translation>
         <source>GRAVITY_CENTER</source>
         <translation>GRAVITY CENTER</translation>
     </message>
+    <message>
+        <source>PROPERTY</source>
+        <translation>Property</translation>
+    </message>
+    <message>
+        <source>VALUE</source>
+        <translation>Value</translation>
+    </message>
 </context>
 </TS>