]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
NPAL16812: Elements Info dialog is added
authorvtn <vtn@opencascade.com>
Thu, 29 Nov 2007 13:27:03 +0000 (13:27 +0000)
committervtn <vtn@opencascade.com>
Thu, 29 Nov 2007 13:27:03 +0000 (13:27 +0000)
Makefile.in
resources/SMESH_en.xml
resources/mesh_whatis.png [new file with mode: 0755]
src/SMESHGUI/Makefile.in
src/SMESHGUI/SMESHGUI.cxx
src/SMESHGUI/SMESHGUI_WhatIsDlg.cxx [new file with mode: 0755]
src/SMESHGUI/SMESHGUI_WhatIsDlg.h [new file with mode: 0755]
src/SMESHGUI/SMESH_images.po
src/SMESHGUI/SMESH_msg_en.po

index e1fc2839fba5876e1e6fab06e8ca2dc5e22ad453..56914c46ca375f7a2ca67f26c50338ddfcfecc44 100644 (file)
@@ -62,6 +62,7 @@ mesh_hypo_edit.png \
 mesh_info.png \
 advanced_mesh_info.png \
 standard_mesh_info.png \
+mesh_whatis.png \
 mesh_init.png \
 mesh_length.png \
 mesh_length_2d.png \
index 6702d3e213e59e0f8008ae3cb298a8f408ff32f0..5cc16ddaf34f8dc0042494ae1cecf6c3fc4835cf 100644 (file)
@@ -70,6 +70,7 @@
      <separator pos-id=""/>
      <popup-item item-id="900" pos-id="" label-id="Advanced Mesh Infos" icon-id="advanced_mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
      <popup-item item-id="902" pos-id="" label-id="Standard Mesh Infos" icon-id="standard_mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
+     <popup-item item-id="903" pos-id="" label-id="Mesh Element Info" icon-id="mesh_whatis.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
 </menu-item>
 
 <!-- ************************** Control  (menubar)  ************************************ -->
    <popup-item item-id="701" pos-id="" label-id="Compute" icon-id="mesh_compute.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
    <popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
    <popup-item item-id="900" pos-id="" label-id="Show Advanced Info" icon-id="advanced_mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
-   <popup-item item-id="902" pos-id="" label-id="Show Standard Info" icon-id="standard_mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
+   <popup-item item-id="902" pos-id="" label-id="Show Standard Info" icon-id="standard_mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
+   <popup-item item-id="903" pos-id="" label-id="Mesh Element Info" icon-id="mesh_whatis.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
    <separator pos-id=""/>
    <popup-item item-id="801" pos-id="" label-id="Create Group" icon-id="mesh_tree_group.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
    <separator pos-id=""/>
    <separator pos-id=""/>
    <popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
    <popup-item item-id="900" pos-id="" label-id="Show Info" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
+   <popup-item item-id="903" pos-id="" label-id="Mesh Element Info" icon-id="mesh_whatis.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
    <separator pos-id=""/>
    <popup-item item-id="802" pos-id="" label-id="Construct Group" icon-id="mesh_make_group.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
    <separator pos-id=""/>
    <separator pos-id=""/>
    <popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
    <popup-item item-id="900" pos-id="" label-id="Show Info" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
+   <popup-item item-id="903" pos-id="" label-id="Mesh Element Info" icon-id="mesh_whatis.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
    <separator pos-id=""/>
    <popup-item item-id="1101" pos-id="" label-id="Rename" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
    <separator pos-id=""/>
    <popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/> 
    <popup-item item-id="900" pos-id="" label-id="Show Advanced Info" icon-id="advanced_mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
    <popup-item item-id="902" pos-id="" label-id="Show Standard Info" icon-id="standard_mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
+   <popup-item item-id="903" pos-id="" label-id="Mesh Element Info" icon-id="mesh_whatis.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
    <separator pos-id=""/>   
    <submenu label-id="Numbering" item-id="114" pos-id="">
      <popup-item item-id="9010" pos-id="" label-id="Display Nodes #" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
 <popupmenu label-id="Popup for Viewer" context-id="" parent-id="Viewer" object-id="SubMesh">
    <popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/> 
    <popup-item item-id="900" pos-id="" label-id="Show Info" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
+   <popup-item item-id="903" pos-id="" label-id="Mesh Element Info" icon-id="mesh_whatis.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
    <separator pos-id=""/>   
    <submenu label-id="Numbering" item-id="114" pos-id="">
      <popup-item item-id="9010" pos-id="" label-id="Display Nodes #" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
    <separator pos-id=""/>
    <popup-item item-id="214" pos-id="" label-id="Update" icon-id="mesh_update.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/> 
    <popup-item item-id="900" pos-id="" label-id="Show Info" icon-id="mesh_info.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
+   <popup-item item-id="903" pos-id="" label-id="Mesh Element Info" icon-id="mesh_whatis.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>   
    <separator pos-id=""/>   
    <submenu label-id="Numbering" item-id="114" pos-id="">
      <popup-item item-id="9010" pos-id="" label-id="Display Nodes #" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
    <separatorTB/>
    <toolbutton-item item-id="900" pos-id="" label-id="Advanced Mesh Infos" icon-id="advanced_mesh_info.png" tooltip-id="Advanced Mesh Infos" accel-id="" toggle-id="" execute-action=""/>
    <toolbutton-item item-id="902" pos-id="" label-id="Standard Mesh Infos" icon-id="standard_mesh_info.png" tooltip-id="Standard Mesh Infos" accel-id="" toggle-id="" execute-action=""/>    
+   <toolbutton-item item-id="903" pos-id="" label-id="Mesh Element Info" icon-id="mesh_whatis.png" tooltip-id="Mesh Element Info" accel-id="" toggle-id="" execute-action=""/>    
 </toolbar>
 
 <toolbar label-id="Hypotheses Toolbar">
diff --git a/resources/mesh_whatis.png b/resources/mesh_whatis.png
new file mode 100755 (executable)
index 0000000..1b39f35
Binary files /dev/null and b/resources/mesh_whatis.png differ
index f15154112a53d80a81eea13074befcd345a42a13..03b996a2dae170e6e00e0a1387b5379514ae0e7b 100644 (file)
@@ -66,6 +66,7 @@ LIB_SRC =     SMESHGUI.cxx \
                SMESHGUI_RemoveElementsDlg.cxx \
                SMESHGUI_MeshInfosDlg.cxx \
                SMESHGUI_StandardMeshInfosDlg.cxx \
+               SMESHGUI_WhatIsDlg.cxx \
                SMESHGUI_Preferences_ColorDlg.cxx \
                SMESHGUI_Preferences_ScalarBarDlg.cxx \
                SMESHGUI_Preferences_SelectionDlg.cxx \
@@ -131,6 +132,7 @@ LIB_MOC = \
                SMESHGUI_RemoveElementsDlg.h \
                SMESHGUI_MeshInfosDlg.h \
                SMESHGUI_StandardMeshInfosDlg.h \
+               SMESHGUI_WhatIsDlg.h \
                SMESHGUI_Preferences_ColorDlg.h \
                SMESHGUI_Preferences_ScalarBarDlg.h \
                SMESHGUI_Preferences_SelectionDlg.h \
index 0fa2fa1f26689a88556c890fc05628b365c989fd..10072eced87818ab3bea3ef420b12cc69758a6e0 100644 (file)
@@ -35,6 +35,7 @@
 #include "SMESHGUI_RemoveElementsDlg.h"
 #include "SMESHGUI_MeshInfosDlg.h"
 #include "SMESHGUI_StandardMeshInfosDlg.h"
+#include "SMESHGUI_WhatIsDlg.h"
 #include "SMESHGUI_Preferences_ColorDlg.h"
 #include "SMESHGUI_Preferences_ScalarBarDlg.h"
 #include "SMESHGUI_Preferences_SelectionDlg.h"
@@ -1791,6 +1792,13 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
       break;
     }
 
+  case 903:                                    // WHAT IS
+    {
+      EmitSignalDeactivateDialog();
+      new SMESHGUI_WhatIsDlg( this, "", false);
+      break;
+    }
+
   case 1100:                                   // EDIT HYPOTHESIS
     {
       if(checkLock(aStudy)) break;
@@ -2374,6 +2382,7 @@ void SMESHGUI::initialize( CAM_Application* app )
   createSMESHAction(  813, "DEL_GROUP",       "ICON_DEL_GROUP" );
   createSMESHAction(  900, "ADV_INFO",        "ICON_ADV_INFO" );
   createSMESHAction(  902, "STD_INFO",        "ICON_STD_INFO" );
+  createSMESHAction(  903, "WHAT_IS",         "ICON_WHAT_IS" );
   createSMESHAction( 6001, "LENGTH",          "ICON_LENGTH" ,       0, true );
   createSMESHAction( 6002, "FREE_EDGE",       "ICON_FREE_EDGE" ,    0, true );
   createSMESHAction( 6003, "FREE_BORDER",     "ICON_FREE_EDGE_2D" , 0, true );
@@ -2505,6 +2514,7 @@ void SMESHGUI::initialize( CAM_Application* app )
   createMenu( separator(), meshId, -1 );
   createMenu( 900, meshId, -1 );
   createMenu( 902, meshId, -1 );
+  createMenu( 903, meshId, -1 );
   createMenu( separator(), meshId, -1 );
 
   createMenu( 6003, ctrlId, -1 );
@@ -2591,6 +2601,7 @@ void SMESHGUI::initialize( CAM_Application* app )
   createTool( separator(), meshTb );
   createTool( 900, meshTb );
   createTool( 902, meshTb );
+  createTool( 903, meshTb );
   createTool( separator(), meshTb );
 
   createTool( 6001, ctrlTb );
@@ -2688,6 +2699,7 @@ void SMESHGUI::initialize( CAM_Application* app )
   createPopupItem( 214, OB, mesh_group );                  // UPDATE
   createPopupItem( 900, OB, mesh_group );                  // ADV_INFO
   createPopupItem( 902, OB, mesh );                        // STD_INFO
+  createPopupItem( 903, OB, mesh_group );                  // WHAT_IS
   popupMgr()->insert( separator(), -1, 0 );
   createPopupItem( 801, OB, mesh );                        // CREATE_GROUP
   createPopupItem( 802, OB, subMesh );                     // CONSTRUCT_GROUP
@@ -2713,6 +2725,7 @@ void SMESHGUI::initialize( CAM_Application* app )
   createPopupItem( 214, View, mesh_group ); // UPDATE
   createPopupItem( 900, View, mesh_group ); // ADV_INFO
   createPopupItem( 902, View, mesh );       // STD_INFO
+  createPopupItem( 903, View, mesh_group ); // WHAT_IS
   popupMgr()->insert( separator(), -1, 0 );
 
   int anId;
diff --git a/src/SMESHGUI/SMESHGUI_WhatIsDlg.cxx b/src/SMESHGUI/SMESHGUI_WhatIsDlg.cxx
new file mode 100755 (executable)
index 0000000..d7d10ea
--- /dev/null
@@ -0,0 +1,626 @@
+//  SMESH SMESHGUI : GUI for SMESH component
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+//
+//  File   : SMESHGUI_WhatIsDlg.cxx
+//  Author : Vladimir TURIN
+//  Module : SMESH
+//  $Header: 
+
+#include "SMESHGUI_WhatIsDlg.h"
+
+#include "SMESHGUI.h"
+#include "SMESHGUI_SpinBox.h"
+#include "SMESHGUI_Utils.h"
+#include "SMESHGUI_VTKUtils.h"
+#include "SMESHGUI_MeshUtils.h"
+#include "SMESHGUI_IdValidator.h"
+
+#include "SMESH_Actor.h"
+#include "SMESH_TypeFilter.hxx"
+#include "SMESH_LogicalFilter.hxx"
+#include "SMDS_Mesh.hxx"
+#include "SMDS_VolumeTool.hxx"
+
+#include "SUIT_Desktop.h"
+#include "SUIT_ResourceMgr.h"
+#include "SUIT_Session.h"
+#include "SUIT_MessageBox.h"
+
+#include "LightApp_Application.h"
+
+#include "SVTK_ViewModel.h"
+#include "SVTK_Selection.h"
+#include "SVTK_ViewWindow.h"
+#include "SVTK_Selector.h"
+#include "SALOME_ListIO.hxx"
+
+#include "utilities.h"
+
+// OCCT Includes
+#include <TColStd_MapOfInteger.hxx>
+#include <TColStd_IndexedMapOfInteger.hxx>
+#include <gp_XYZ.hxx>
+
+// QT Includes
+#include <qapplication.h>
+#include <qbuttongroup.h>
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qpushbutton.h>
+#include <qradiobutton.h>
+#include <qcheckbox.h>
+#include <qlayout.h>
+#include <qspinbox.h>
+#include <qpixmap.h>
+#include <qtextbrowser.h>
+
+// IDL Headers
+#include "SALOMEconfig.h"
+#include CORBA_SERVER_HEADER(SMESH_Group)
+#include CORBA_SERVER_HEADER(SMESH_MeshEditor)
+
+using namespace std;
+
+//=================================================================================
+// class    : SMESHGUI_WhatIsDlg()
+// purpose  :
+//=================================================================================
+SMESHGUI_WhatIsDlg::SMESHGUI_WhatIsDlg( SMESHGUI* theModule, const char* name,
+                                       bool modal, WFlags fl)
+  : QDialog( SMESH::GetDesktop( theModule ), name, modal, WStyle_Customize | WStyle_NormalBorder |
+            WStyle_Title | WStyle_SysMenu | Qt::WDestructiveClose),
+    mySMESHGUI( theModule ),
+    mySelectionMgr( SMESH::GetSelectionMgr( theModule ) )
+{
+  if (!name)
+    setName("SMESHGUI_WhatIsDlg");
+  resize(100, 450);
+  setCaption(tr("SMESH_WHAT_IS_TITLE"));
+  setSizeGripEnabled(TRUE);
+  SMESHGUI_WhatIsDlgLayout = new QGridLayout(this);
+  SMESHGUI_WhatIsDlgLayout->setSpacing(6);
+  SMESHGUI_WhatIsDlgLayout->setMargin(11);
+  
+  /***************************************************************/
+  GroupMesh = new QButtonGroup(this, "GroupSelections");
+  GroupMesh->setSizePolicy(QSizePolicy((QSizePolicy::SizeType)5, (QSizePolicy::SizeType)0, 0, 0, GroupMesh->sizePolicy().hasHeightForWidth()));
+  GroupMesh->setTitle(tr(""));
+  GroupMesh->setColumnLayout(0, Qt::Vertical);
+  GroupMesh->layout()->setSpacing(0);
+  GroupMesh->layout()->setMargin(0);
+  GroupMeshLayout = new QGridLayout(GroupMesh->layout());
+  GroupMeshLayout->setAlignment(Qt::AlignTop);
+  GroupMeshLayout->setSpacing(6);
+  GroupMeshLayout->setMargin(11);
+  MeshLabel = new QLabel(GroupMesh, "MeshLabel");
+  MeshLabel->setText(tr("SMESH_NAME"));
+  GroupMeshLayout->addWidget(MeshLabel, 0, 0);
+  MeshName = new QLabel(GroupMesh, "MeshName");
+  MeshName->setText(tr(""));
+  GroupMeshLayout->addWidget(MeshName, 0, 1);
+  SMESHGUI_WhatIsDlgLayout->addWidget(GroupMesh, 0, 0);
+
+  /***************************************************************/
+  GroupSelections = new QButtonGroup(this, "GroupSelections");
+  GroupSelections->setSizePolicy(QSizePolicy((QSizePolicy::SizeType)5, (QSizePolicy::SizeType)0, 0, 0, GroupSelections->sizePolicy().hasHeightForWidth()));
+  GroupSelections->setTitle(tr("ENTITY_TYPE" ));
+  GroupSelections->setExclusive(TRUE);
+  GroupSelections->setColumnLayout(0, Qt::Vertical);
+  GroupSelections->layout()->setSpacing(0);
+  GroupSelections->layout()->setMargin(0);
+  GroupSelectionsLayout = new QGridLayout(GroupSelections->layout());
+  GroupSelectionsLayout->setAlignment(Qt::AlignTop);
+  GroupSelectionsLayout->setSpacing(6);
+  GroupSelectionsLayout->setMargin(11);
+  RadioButtonNodes = new QRadioButton(GroupSelections, "RadioButtonNodes");
+  RadioButtonNodes->setText(tr("SMESH_NODES"));
+  GroupSelectionsLayout->addWidget(RadioButtonNodes, 0, 0);
+  RadioButtonElements = new QRadioButton(GroupSelections, "RadioButtonElements");
+  RadioButtonElements->setText(tr("SMESH_ELEMENTS"));
+  GroupSelectionsLayout->addWidget(RadioButtonElements, 0, 1 );
+  SMESHGUI_WhatIsDlgLayout->addWidget(GroupSelections, 1, 0);
+
+  /***************************************************************/
+  GroupArguments = new QGroupBox(this, "GroupArguments");
+  GroupArguments->setTitle(tr("SMESH_INFORMATION"));
+  GroupArguments->setColumnLayout(0, Qt::Vertical);
+  GroupArguments->layout()->setSpacing(0);
+  GroupArguments->layout()->setMargin(0);
+  GroupArgumentsLayout = new QGridLayout(GroupArguments->layout());
+  GroupArgumentsLayout->setAlignment(Qt::AlignTop);
+  GroupArgumentsLayout->setSpacing(6);
+  GroupArgumentsLayout->setMargin(11);
+
+  // Controls for elements selection
+  TextLabelElements  = new QLabel(GroupArguments, "TextLabelElements");
+  TextLabelElements->setText(tr("SMESH_ID_ELEMENTS" ));
+  TextLabelElements->setFixedWidth(74);
+  GroupArgumentsLayout->addWidget(TextLabelElements, 0, 0);
+
+  LineEditElements  = new QLineEdit(GroupArguments, "LineEditElements");
+  LineEditElements->setValidator(new SMESHGUI_IdValidator(this, "validator"));
+  GroupArgumentsLayout->addMultiCellWidget(LineEditElements, 0, 0, 2, 7);
+
+  // information text browser
+  Info = new QTextBrowser(GroupArguments, "Info");
+  Info->setHScrollBarMode(QScrollView::AlwaysOff);
+  Info->setVScrollBarMode(QScrollView::AlwaysOff);
+  GroupArgumentsLayout->addMultiCellWidget(Info, 1, 1, 0, 7);
+
+  SMESHGUI_WhatIsDlgLayout->addWidget(GroupArguments, 2, 0);
+
+  /***************************************************************/
+  GroupButtons = new QGroupBox(this, "GroupButtons");
+  GroupButtons->setSizePolicy(QSizePolicy((QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, GroupButtons->sizePolicy().hasHeightForWidth()));
+  GroupButtons->setTitle(tr("" ));
+  GroupButtons->setColumnLayout(0, Qt::Vertical);
+  GroupButtons->layout()->setSpacing(0);
+  GroupButtons->layout()->setMargin(0);
+  GroupButtonsLayout = new QGridLayout(GroupButtons->layout());
+  GroupButtonsLayout->setAlignment(Qt::AlignTop);
+  GroupButtonsLayout->setSpacing(6);
+  GroupButtonsLayout->setMargin(11);
+  buttonHelp = new QPushButton(GroupButtons, "buttonHelp");
+  buttonHelp->setText(tr("SMESH_BUT_HELP" ));
+  buttonHelp->setAutoDefault(TRUE);
+  GroupButtonsLayout->addWidget(buttonHelp, 0, 3);
+  QSpacerItem* spacer_9 = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
+  GroupButtonsLayout->addItem(spacer_9, 0, 1);
+  buttonOk = new QPushButton(GroupButtons, "buttonOk");
+  buttonOk->setText(tr("SMESH_BUT_OK" ));
+  buttonOk->setAutoDefault(TRUE);
+  buttonOk->setDefault(TRUE);
+  GroupButtonsLayout->addWidget(buttonOk, 0, 0);
+  SMESHGUI_WhatIsDlgLayout->addWidget(GroupButtons, 3, 0);
+
+  GroupArguments->show();
+  RadioButtonNodes->setChecked(TRUE);
+
+  mySelector = (SMESH::GetViewWindow( mySMESHGUI ))->GetSelector();
+
+  mySMESHGUI->SetActiveDialogBox((QDialog*)this);
+
+  // Costruction of the logical filter
+  SMESH_TypeFilter* aMeshOrSubMeshFilter = new SMESH_TypeFilter (MESHorSUBMESH);
+  SMESH_TypeFilter* aSmeshGroupFilter    = new SMESH_TypeFilter (GROUP);
+
+  QPtrList<SUIT_SelectionFilter> aListOfFilters;
+  if (aMeshOrSubMeshFilter) aListOfFilters.append(aMeshOrSubMeshFilter);
+  if (aSmeshGroupFilter)    aListOfFilters.append(aSmeshGroupFilter);
+
+  myMeshOrSubMeshOrGroupFilter =
+    new SMESH_LogicalFilter(aListOfFilters, SMESH_LogicalFilter::LO_OR);
+
+  myHelpFileName = "/files/viewing_mesh_info.htm#what_is";
+
+  Init();
+
+  /* signals and slots connections */
+  connect(buttonOk, SIGNAL(clicked()),     this, SLOT(ClickOnOk()));
+  connect(buttonHelp, SIGNAL(clicked()),   this, SLOT(ClickOnHelp()));
+  connect(GroupSelections, SIGNAL(clicked(int)), SLOT(SelectionsClicked(int)));
+
+  connect(mySMESHGUI, SIGNAL (SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog()));
+  connect(mySelectionMgr, SIGNAL(currentSelectionChanged()),   this, SLOT(SelectionIntoArgument()));
+  /* to close dialog if study change */
+  connect(mySMESHGUI,       SIGNAL (SignalCloseAllDialogs()), this, SLOT(ClickOnCancel()));
+  connect(LineEditElements, SIGNAL(textChanged(const QString&)),    SLOT(onTextChange(const QString&)));
+  this->show(); /* displays Dialog */
+
+  SelectionsClicked(0);
+  SelectionIntoArgument();
+}
+
+//=================================================================================
+// function : ~SMESHGUI_WhatIsDlg()
+// purpose  : Destroys the object and frees any allocated resources
+//=================================================================================
+SMESHGUI_WhatIsDlg::~SMESHGUI_WhatIsDlg()
+{
+  // no need to delete child widgets, Qt does it all for us
+}
+
+//=================================================================================
+// function : Init()
+// purpose  :
+//=================================================================================
+void SMESHGUI_WhatIsDlg::Init (bool ResetControls)
+{
+  myBusy = false;
+
+  LineEditElements->clear();
+
+  myActor = 0;
+  myMesh = SMESH::SMESH_Mesh::_nil();
+
+  if (ResetControls) {
+    if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+      aViewWindow->SetSelectionMode( CellSelection );
+    onTextChange(LineEditElements->text());
+    
+    SelectionIntoArgument();
+  }
+}
+
+//=================================================================================
+// function : SelectionsClicked()
+// purpose  : Radio button management
+//=================================================================================
+void SMESHGUI_WhatIsDlg::SelectionsClicked (int selectionId)
+{
+  disconnect(mySelectionMgr, 0, this, 0);
+
+  mySelectionMgr->clearFilters();
+
+  switch (selectionId) {
+  case 0:
+    {
+      SMESH::SetPointRepresentation(true);
+      if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+       aViewWindow->SetSelectionMode( NodeSelection );
+      break;
+    }    
+  case 1:
+    {
+      SMESH::SetPointRepresentation(false);
+      if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+       aViewWindow->SetSelectionMode( CellSelection );
+      break;
+    }
+  }
+
+  connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
+  SelectionIntoArgument();
+}
+
+//=================================================================================
+// function : ClickOnOk()
+// purpose  :
+//=================================================================================
+void SMESHGUI_WhatIsDlg::ClickOnOk()
+{
+  if (mySMESHGUI->isActiveStudyLocked())
+    return;
+
+  SMESH::UpdateView();
+  Init(false);
+  SelectionIntoArgument();
+  ClickOnCancel();
+}
+
+//=================================================================================
+// function : ClickOnCancel()
+// purpose  :
+//=================================================================================
+void SMESHGUI_WhatIsDlg::ClickOnCancel()
+{
+  disconnect(mySelectionMgr, 0, this, 0);
+  mySelectionMgr->clearFilters();
+  SMESH::SetPointRepresentation(false);
+  if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+    aViewWindow->SetSelectionMode( ActorSelection );
+  mySMESHGUI->ResetState();
+  reject();
+}
+
+//=================================================================================
+// function : ClickOnHelp()
+// purpose  :
+//=================================================================================
+void SMESHGUI_WhatIsDlg::ClickOnHelp()
+{
+  LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication());
+  if (app) 
+    app->onHelpContextModule(mySMESHGUI ? app->moduleName(mySMESHGUI->moduleName()) : QString(""), myHelpFileName);
+  else {
+    SUIT_MessageBox::warn1(0, QObject::tr("WRN_WARNING"),
+                          QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE").
+                          arg(app->resourceMgr()->stringValue("ExternalBrowser", "application")).arg(myHelpFileName),
+                          QObject::tr("BUT_OK"));
+  }
+}
+
+//=======================================================================
+// function : onTextChange()
+// purpose  :
+//=======================================================================
+void SMESHGUI_WhatIsDlg::onTextChange (const QString& theNewText)
+{
+  if (myBusy) return;
+  myBusy = true;
+
+  // hilight entered elements
+  SMDS_Mesh* aMesh = 0;
+  if (myActor)
+    aMesh = myActor->GetObject()->GetMesh();
+
+  if (aMesh) {
+    Handle(SALOME_InteractiveObject) anIO = myActor->getIO();
+    
+    TColStd_MapOfInteger newIndices;
+
+    QStringList aListId = QStringList::split(" ", theNewText, false);
+
+    for (int i = 0; i < aListId.count(); i++) {
+      const SMDS_MeshElement * e = RadioButtonNodes->isChecked()?
+       aMesh->FindNode(aListId[ i ].toInt()):
+       aMesh->FindElement(aListId[ i ].toInt());
+      if (e)
+       newIndices.Add(e->GetID());
+    }
+
+    mySelector->AddOrRemoveIndex( anIO, newIndices, false );
+    if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+      aViewWindow->highlight( anIO, true, true );
+  }
+
+  SelectionIntoArgument();
+
+  myBusy = false;
+}
+
+//=================================================================================
+// function : SelectionIntoArgument()
+// purpose  : Called when selection as changed or other case
+//=================================================================================
+void SMESHGUI_WhatIsDlg::SelectionIntoArgument()
+{
+  int curBusy = myBusy;
+
+  // clear
+  myActor = 0;
+  QString aString = "";
+
+  myBusy = true;
+  if(!curBusy)
+    LineEditElements->setText(aString);
+  MeshName->setText(aString);
+  GroupMesh->setTitle(tr(""));
+  Info->clear();
+  myBusy = curBusy;
+
+  if (!GroupButtons->isEnabled()) // inactive
+    return;
+
+  // get selected mesh
+  SALOME_ListIO aList;
+  mySelectionMgr->selectedObjects(aList,SVTK_Viewer::Type());
+
+  int nbSel = aList.Extent();
+
+  if (nbSel != 1)
+    return;
+
+  Handle(SALOME_InteractiveObject) IO = aList.First();
+  myMesh = SMESH::GetMeshByIO(IO);
+  if (myMesh->_is_nil())
+    return;
+
+  myActor = SMESH::FindActorByObject(myMesh);
+  if (!myActor)
+    myActor = SMESH::FindActorByEntry(IO->getEntry());
+  if (!myActor)
+    return;
+
+  QString aName;
+  SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aName);
+  MeshName->setText(aName);
+  if(!SMESH::IObjectToInterface<SMESH::SMESH_Mesh>(IO)->_is_nil()) {
+    GroupMesh->setTitle(tr("SMESH_MESH"));
+  } else if(!SMESH::IObjectToInterface<SMESH::SMESH_subMesh>(IO)->_is_nil()) {
+    GroupMesh->setTitle(tr("SMESH_SUBMESH"));
+  } else if(!SMESH::IObjectToInterface<SMESH::SMESH_GroupBase>(IO)->_is_nil()) {
+    GroupMesh->setTitle(tr("SMESH_GROUP"));
+  }
+
+  int aNbUnits = 0;
+  
+  aNbUnits = SMESH::GetNameOfSelectedElements(mySelector, IO, aString);
+  
+  if (aNbUnits < 1)
+    return;
+
+  const SMDS_MeshElement * e = RadioButtonNodes->isChecked()?
+    myActor->GetObject()->GetMesh()->FindNode(aString.toInt()):
+    myActor->GetObject()->GetMesh()->FindElement(aString.toInt());
+  if (e) {
+    QString anInfo;
+    anInfo=tr("ENTITY_TYPE") + ": ";
+    if(e->GetType() == SMDSAbs_Node) {
+      anInfo+=tr("MESH_NODE")+"\n";
+      const SMDS_MeshNode *en = (SMDS_MeshNode*) e;
+    } else if(e->GetType() == SMDSAbs_Edge) {
+      anInfo+=tr("SMESH_EDGE")+"\n";
+      anInfo+=tr("SMESH_MESHINFO_TYPE")+": ";
+      const SMDS_MeshEdge *ee = (SMDS_MeshEdge*) e;
+      anInfo+=(ee->IsQuadratic()?tr("SMESH_MESHINFO_ORDER2"):tr("SMESH_MESHINFO_ORDER1"))+"\n";
+    } else if(e->GetType() == SMDSAbs_Face) {
+      const SMDS_MeshFace *ef = (SMDS_MeshFace*) e;
+      anInfo+=tr("SMESH_FACE")+"\n";
+      anInfo+=tr("SMESH_MESHINFO_TYPE")+": ";
+      if(!ef->IsPoly())
+       anInfo+=(ef->IsQuadratic()?tr("SMESH_MESHINFO_ORDER2"):tr("SMESH_MESHINFO_ORDER1"))+" ";
+      switch(ef->NbNodes()) {
+      case 3:
+      case 6:
+       {
+         anInfo+=tr("SMESH_TRIANGLE");
+         break;
+       }
+      case 4:
+      case 8:
+       {
+         anInfo+=tr("SMESH_QUADRANGLE");
+         break;
+       }
+      default:
+       break;
+      }
+      anInfo+="\n";
+    } else if(e->GetType() == SMDSAbs_Volume) {
+      anInfo+=tr("SMESH_VOLUME")+"\n";
+      anInfo+=tr("SMESH_MESHINFO_TYPE")+": ";
+      const SMDS_MeshVolume *ev = (SMDS_MeshVolume*) e;
+      SMDS_VolumeTool vt(ev);
+      if(vt.GetVolumeType() != SMDS_VolumeTool::POLYHEDA)
+       anInfo+=(ev->IsQuadratic()?tr("SMESH_MESHINFO_ORDER2"):tr("SMESH_MESHINFO_ORDER1"))+" ";
+      switch(vt.GetVolumeType()) {
+      case SMDS_VolumeTool::TETRA:
+      case SMDS_VolumeTool::QUAD_TETRA:
+       {
+         anInfo+=tr("SMESH_TETRAS");
+         break;
+       }
+      case SMDS_VolumeTool::PYRAM:
+      case SMDS_VolumeTool::QUAD_PYRAM:
+       {
+         anInfo+=tr("SMESH_PYRAMID");
+         break;
+       }
+      case SMDS_VolumeTool::PENTA:
+      case SMDS_VolumeTool::QUAD_PENTA:
+       {
+         anInfo+=tr("SMESH_PRISM");
+         break;
+       }
+      case SMDS_VolumeTool::HEXA:
+      case SMDS_VolumeTool::QUAD_HEXA:
+       {
+         anInfo+=tr("SMESH_HEXAS");
+         break;
+       }
+      case SMDS_VolumeTool::POLYHEDA:
+       {
+         anInfo+=tr("SMESH_POLYEDRON");
+         break;
+       }
+      default:
+       break;
+      }
+      anInfo+="\n";
+    }
+    if(e->GetType() != SMDSAbs_Node)
+      anInfo+=tr("GRAVITY_CENTER") + ":\n";
+    gp_XYZ anXYZ(0.,0.,0.);
+    SMDS_ElemIteratorPtr nodeIt = e->nodesIterator();
+    int nbNodes = 0;
+    for(; nodeIt->more(); nbNodes++) {
+      const SMDS_MeshNode* node = static_cast<const SMDS_MeshNode*>( nodeIt->next() );
+      anXYZ.Add( gp_XYZ( node->X(), node->Y(), node->Z() ) );
+    }
+    anXYZ.Divide(e->NbNodes()) ;
+    anInfo+=QString("X=%1\nY=%2\nZ=%3\n").arg(anXYZ.X()).arg(anXYZ.Y()).arg(anXYZ.Z());
+    Info->setText(anInfo);
+  }
+
+  if(!curBusy) {
+    myBusy = true;
+    LineEditElements->setText(aString);
+    myBusy = false;
+  }
+}
+
+//=================================================================================
+// function : DeactivateActiveDialog()
+// purpose  :
+//=================================================================================
+void SMESHGUI_WhatIsDlg::DeactivateActiveDialog()
+{
+  if (GroupArguments->isEnabled()) {
+    GroupSelections->setEnabled(false);
+    GroupMesh->setEnabled(false);
+    GroupArguments->setEnabled(false);
+    GroupButtons->setEnabled(false);
+    mySMESHGUI->ResetState();
+    mySMESHGUI->SetActiveDialogBox(0);
+  }
+}
+
+//=================================================================================
+// function : ActivateThisDialog()
+// purpose  :
+//=================================================================================
+void SMESHGUI_WhatIsDlg::ActivateThisDialog()
+{
+  /* Emit a signal to deactivate the active dialog */
+  mySMESHGUI->EmitSignalDeactivateDialog();
+  GroupArguments->setEnabled(true);
+  GroupButtons->setEnabled(true);
+  GroupSelections->setEnabled(true);
+  GroupMesh->setEnabled(true);
+
+  mySMESHGUI->SetActiveDialogBox((QDialog*)this);
+
+  if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+    SelectionsClicked(RadioButtonNodes->isChecked()?0:1);
+
+  SelectionIntoArgument();
+}
+
+//=================================================================================
+// function : enterEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_WhatIsDlg::enterEvent (QEvent*)
+{
+  if (!GroupArguments->isEnabled())
+    ActivateThisDialog();
+}
+
+//=================================================================================
+// function : closeEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_WhatIsDlg::closeEvent (QCloseEvent*)
+{
+  /* same than click on cancel button */
+  this->ClickOnCancel();
+}
+
+//=======================================================================
+//function : hideEvent
+//purpose  : caused by ESC key
+//=======================================================================
+void SMESHGUI_WhatIsDlg::hideEvent (QHideEvent*)
+{
+  if (!isMinimized())
+    ClickOnCancel();
+}
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_WhatIsDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      ClickOnHelp();
+    }
+}
diff --git a/src/SMESHGUI/SMESHGUI_WhatIsDlg.h b/src/SMESHGUI/SMESHGUI_WhatIsDlg.h
new file mode 100755 (executable)
index 0000000..af1c4ef
--- /dev/null
@@ -0,0 +1,130 @@
+//  SMESH SMESHGUI : GUI for SMESH component
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+//
+//  File   : SMESHGUI_WhatIsDlg.h
+//  Author : Vladimir TURIN
+//  Module : SMESH
+//  $Header: 
+
+#ifndef SMESHGUI_WHATISDLG_H
+#define SMESHGUI_WHATISDLG_H
+
+#include "LightApp_SelectionMgr.h"
+
+#include "SMESH_LogicalFilter.hxx"
+
+// QT Includes
+#include <qdialog.h>
+
+class QGridLayout; 
+class QButtonGroup;
+class QGroupBox;
+class QLabel;
+class QLineEdit;
+class QPushButton;
+class QRadioButton;
+class QCheckBox;
+class QTextBrowser;
+class SMESHGUI;
+class SMESHGUI_SpinBox;
+class SMESH_Actor;
+class SVTK_ViewWindow;
+class SVTK_Selector;
+
+// IDL Headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SMESH_Mesh)
+
+
+//=================================================================================
+// class    : SMESHGUI_WhatIsDlg
+// purpose  :
+//=================================================================================
+class SMESHGUI_WhatIsDlg : public QDialog
+{ 
+  Q_OBJECT
+    
+public:
+
+  SMESHGUI_WhatIsDlg( SMESHGUI*,
+                     const char* name = 0,
+                     bool modal = FALSE,
+                     WFlags fl = 0);
+  ~SMESHGUI_WhatIsDlg();
+  
+private:
+
+  void Init (bool ResetControls = true);
+  void closeEvent (QCloseEvent*);
+  void enterEvent (QEvent*);                             /* mouse enter the QWidget */
+  void hideEvent (QHideEvent*);                          /* ESC key */
+  void keyPressEvent(QKeyEvent*);
+
+  SMESHGUI*                     mySMESHGUI;              /* Current SMESHGUI object */
+  LightApp_SelectionMgr*        mySelectionMgr;          /* User shape selection */
+
+  SVTK_Selector*                mySelector;
+
+  bool                          myBusy;
+  SMESH::SMESH_Mesh_var         myMesh;
+  SMESH_Actor*                  myActor;
+  SMESH_LogicalFilter*          myMeshOrSubMeshOrGroupFilter;
+
+  QButtonGroup* GroupSelections;
+  QRadioButton* RadioButtonNodes;
+  QRadioButton* RadioButtonElements;
+  QGroupBox* GroupButtons;
+  QPushButton* buttonOk;
+  QPushButton* buttonHelp;
+  QGroupBox* GroupArguments;
+  QGroupBox* GroupMesh;
+  QLabel* TextLabelElements;
+  QLineEdit* LineEditElements;
+  QLabel* MeshLabel;
+  QLabel* MeshName;
+
+  QTextBrowser* Info;
+    
+  QString myHelpFileName;
+
+private slots:
+
+  void SelectionsClicked(int selectionId);
+  void ClickOnOk();
+  void ClickOnCancel();
+  void ClickOnHelp();
+  void SelectionIntoArgument() ;
+  void DeactivateActiveDialog() ;
+  void ActivateThisDialog() ;
+  void onTextChange(const QString&);
+    
+protected:
+
+  QGridLayout* SMESHGUI_WhatIsDlgLayout;
+  QGridLayout* GroupSelectionsLayout;
+  QGridLayout* GroupMeshLayout;
+  QGridLayout* GroupButtonsLayout;
+  QGridLayout* GroupArgumentsLayout;
+};
+
+#endif // SMESHGUI_WHATISDLG_H
index a9980d0cf8ca87ee2a35c31764aa67fbac45a362..fa3443962a0eb2a5961b046560353bc9b0a8a679 100644 (file)
@@ -322,6 +322,9 @@ msgstr "advanced_mesh_info.png"
 msgid "ICON_STD_INFO"
 msgstr "standard_mesh_info.png"
 
+msgid "ICON_WHAT_IS"
+msgstr "mesh_whatis.png"
+
 msgid "ICON_LENGTH"
 msgstr "mesh_length.png"
 
index 97c783f34f861f60f394f16f80317abd327a0d49..86a9a09e31ec60c5332788dbe04a7d89069da716 100644 (file)
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2007-01-19 10:44+0300\n"
+"PO-Revision-Date: 2007-11-29 15:55+0300\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -499,6 +499,14 @@ msgstr "Quadrangle"
 msgid "SMESH_EDGE"
 msgstr "Edge"
 
+#Pyramid
+msgid "SMESH_PYRAMID"
+msgstr "Pyramid"
+
+#Prism
+msgid "SMESH_PRISM"
+msgstr "Prism"
+
 #Tetrahedron
 msgid "SMESH_TETRAS"
 msgstr "Tetrahedron"
@@ -507,6 +515,10 @@ msgstr "Tetrahedron"
 msgid "SMESH_HEXAS"
 msgstr "Hexahedron"
 
+#Polyhedron
+msgid "SMESH_POLYEDRON"
+msgstr "Polyhedron"
+
 #Add Triangle
 msgid "SMESH_ADD_TRIANGLE"
 msgstr "Add Triangle"
@@ -821,6 +833,10 @@ msgstr "Mesh Infos"
 msgid "SMESH_STANDARD_MESHINFO_TITLE"
 msgstr "Standard Mesh Infos"
 
+#What Is
+msgid "SMESH_WHAT_IS_TITLE"
+msgstr "Mesh Element Info"
+
 #Mesh Infos
 msgid "SMESH_MESHINFO_NAME"
 msgstr "Name"
@@ -2239,6 +2255,9 @@ msgstr "Advanced Mesh Infos"
 msgid "MEN_STD_INFO"
 msgstr "Standard Mesh Infos"
 
+msgid "MEN_WHAT_IS"
+msgstr "Mesh Element Info"
+
 msgid "MEN_LENGTH"
 msgstr "Length"
 
@@ -2601,6 +2620,9 @@ msgstr "Advanced Mesh Infos"
 msgid "TOP_STD_INFO"
 msgstr "Standard Mesh Infos"
 
+msgid "TOP_WHAT_IS"
+msgstr "Mesh Element Info"
+
 msgid "TOP_LENGTH"
 msgstr "Length"
 
@@ -2914,6 +2936,9 @@ msgstr "Advanced Mesh Infos"
 msgid "STB_STD_INFO"
 msgstr "Standard Mesh Infos"
 
+msgid "STB_WHAT_IS"
+msgstr "Mesh Element Info"
+
 msgid "STB_LENGTH"
 msgstr "Length"
 
@@ -3448,6 +3473,12 @@ msgstr "Publish SubShape"
 msgid "SMESHGUI_ComputeDlg::MEMORY_LACK"
 msgstr "Memory allocation problem"
 
+msgid "SMESHGUI_WhatIsDlg::ENTITY_TYPE"
+msgstr "Element type"
+
+msgid "SMESHGUI_WhatIsDlg::GRAVITY_CENTER"
+msgstr "Gravity center"
+
 msgid "COMPERR_OK"
 msgstr "No errors"