X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_MultiEditDlg.cxx;h=36660f1eb71422ddc6ef3e686c6526e29e7b363f;hp=77bffa19132eac4418998a1883f56887bc165961;hb=refs%2Ftags%2FV2_2_0b2;hpb=2c23c066a72c031c846ae5d4721d3035cd2691c3 diff --git a/src/SMESHGUI/SMESHGUI_MultiEditDlg.cxx b/src/SMESHGUI/SMESHGUI_MultiEditDlg.cxx index 77bffa191..36660f1eb 100755 --- a/src/SMESHGUI/SMESHGUI_MultiEditDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_MultiEditDlg.cxx @@ -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); } //======================================================================= @@ -232,6 +234,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; } }