Salome HOME
Fix PAL7951 V2_2_0b2
authorvsr <vsr@opencascade.com>
Tue, 1 Feb 2005 14:55:30 +0000 (14:55 +0000)
committervsr <vsr@opencascade.com>
Tue, 1 Feb 2005 14:55:30 +0000 (14:55 +0000)
src/SMESHGUI/SMESHGUI_MultiEditDlg.cxx
src/SMESHGUI/SMESHGUI_MultiEditDlg.h

index 77bffa1..36660f1 100755 (executable)
@@ -148,6 +148,7 @@ QFrame* SMESHGUI_MultiEditDlg::createMainFrame( QWidget* theParent, const bool t
   myListBox->setSelectionMode( QListBox::Extended );
   myListBox->setSizePolicy( QSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding) );
 //  myListBox->setColumnMode( QListBox::FitToHeight );
+  myListBox->installEventFilter( this );
   
   myFilterBtn = new QPushButton( tr( "FILTER" )   , aFrame );
   myAddBtn    = new QPushButton( tr( "ADD" )      , aFrame );
@@ -213,10 +214,11 @@ QFrame* SMESHGUI_MultiEditDlg::createButtonFrame( QWidget* theParent )
 // name    : SMESHGUI_MultiEditDlg::isValid
 // Purpose : Verify validity of input data
 //=======================================================================
-bool SMESHGUI_MultiEditDlg::isValid( const bool /*theMess*/ ) const
+bool SMESHGUI_MultiEditDlg::isValid( const bool /*theMess*/ )
 {
+  SMESH::long_array_var anIds = getIds();
   return (!myMesh->_is_nil() &&
-          (myListBox->count() > 0 || (myToAllChk->isChecked() && myActor)));
+          (myListBox->count() > 0 || (myToAllChk->isChecked() && myActor)) && anIds->length() > 0);
 }
 
 //=======================================================================
@@ -233,6 +235,20 @@ SMESHGUI_MultiEditDlg::~SMESHGUI_MultiEditDlg()
 }
 
 //=======================================================================
+// name    : SMESHGUI_MultiEditDlg::eventFilter
+// Purpose : event filter
+//=======================================================================
+bool SMESHGUI_MultiEditDlg::eventFilter( QObject* object, QEvent* event )
+{
+  if ( object == myListBox && event->type() == QEvent::KeyPress ) {
+    QKeyEvent* ke = (QKeyEvent*)event;
+    if ( ke->key() == Key_Delete )
+      onRemoveBtn();
+  }
+  return QDialog::eventFilter( object, event );
+}
+
+//=======================================================================
 // name    : SMESHGUI_MultiEditDlg::Init
 // Purpose : Init dialog fields, connect signals and slots, show dialog
 //=======================================================================
@@ -272,10 +288,16 @@ void SMESHGUI_MultiEditDlg::Init( SALOME_Selection* theSelection )
 
   connect( myListBox, SIGNAL( selectionChanged() ), SLOT( onListSelectionChanged() ) );
 
-  onSelectionDone();
+  int nbSel = mySelection->IObjectCount();
+  if ( nbSel == 1 )
+    myIO = mySelection->firstIObject();
 
   // set selection mode
   setSelectionMode();
+
+  // process selection
+  //onSelectionDone();
+
   updateButtons();
 }
 
@@ -431,13 +453,19 @@ void SMESHGUI_MultiEditDlg::onSelectionDone()
 
   if ( nbSel == 1 ) {
     myActor = SMESH::FindActorByEntry(mySelection->firstIObject()->getEntry());
-    if ( !myActor && !myMesh->_is_nil() )
-      myActor = SMESH::FindActorByObject( myMesh );
+    //if ( !myActor && !myMesh->_is_nil() )
+    //  myActor = SMESH::FindActorByObject( myMesh );
     VTKViewer_InteractorStyleSALOME* aStyle = SMESH::GetInteractorStyle();
     Handle(VTKViewer_Filter) aFilter = aStyle->GetFilter( myFilterType );
-    if ( !aFilter.IsNull() && myActor ) {
-      aFilter->SetActor( myActor );
-      //SMESH::SetPickable( myActor );
+    if ( myActor ) {
+      if ( !aFilter.IsNull() ) {
+       aFilter->SetActor( myActor );
+       //SMESH::SetPickable( myActor );
+       myIO = myActor->getIO();
+      }
+    }
+    else {
+      myIO.Nullify();
     }
   }
   myBusy = false;
@@ -817,11 +845,11 @@ void SMESHGUI_MultiEditDlg::onToAllChk()
 
   emit ListContensChanged();
     
-  updateButtons();
   setSelectionMode();
 
-  if ( myActor )
-    mySelection->AddIObject( myActor->getIO(), true );
+  //if ( !myIO.IsNull() )
+  //mySelection->AddIObject( myIO, true );
+  updateButtons();
 }
 
 
@@ -864,6 +892,8 @@ void SMESHGUI_MultiEditDlg::setSelectionMode()
     else
       SMESH::SetFilter( new SMESHGUI_FacesFilter() );
   }
+  if ( !myIO.IsNull() )
+    mySelection->AddIObject( myIO, true );
 }
 
 //=======================================================================
@@ -920,15 +950,15 @@ void SMESHGUI_MultiEditDlg::on3d2dChanged(int type)
 
     emit ListContensChanged();
     
-    updateButtons();
-
     if ( type )
       myFilterType = SMESHGUI_VolumeFilter;
     else 
       myFilterType = SMESHGUI_FaceFilter;
     setSelectionMode();
 
-    myActor = 0;
+    updateButtons();
+
+    //myActor = 0;
   }
 }
 
index 0ec4126..0f69a5d 100755 (executable)
@@ -34,7 +34,6 @@
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SMESH_Mesh)
 
-class QCloseEvent;
 class SMESHGUI_FilterDlg;
 class QCheckBox;
 class QGroupBox;
@@ -47,6 +46,7 @@ class SALOME_Selection;
 class SMESH_Actor;
 class SALOME_Actor;
 class QButtonGroup;
+class QObject;
 
 /*
   Class       : SMESHGUI_MultiEditDlg
@@ -68,6 +68,8 @@ public:
 
   void                      Init( SALOME_Selection* ) ;
 
+  bool                      eventFilter( QObject* object, QEvent* event );
+
 signals:
   void                      ListContensChanged();
 
@@ -98,7 +100,7 @@ protected:
   void                      hideEvent ( QHideEvent * );                        /* ESC key */
   QFrame*                   createButtonFrame( QWidget* );
   QFrame*                   createMainFrame  ( QWidget*, const bool );
-  bool                      isValid( const bool ) const;
+  bool                      isValid( const bool );
   SMESH::long_array_var     getIds();
   void                      updateButtons();
   void                      setSelectionMode();
@@ -141,6 +143,7 @@ protected:
   Handle(SMESH_TypeFilter)  myGroupFilter;
   bool                      myBusy;
   int                       myEntityType;
+  Handle(SALOME_InteractiveObject) myIO;
 };
 
 /*