Fix PAL7951

This commit is contained in:
vsr 2005-02-01 14:55:30 +00:00
parent 2c23c066a7
commit 2177157cb7
2 changed files with 49 additions and 16 deletions

View File

@ -148,6 +148,7 @@ QFrame* SMESHGUI_MultiEditDlg::createMainFrame( QWidget* theParent, const bool t
myListBox->setSelectionMode( QListBox::Extended ); myListBox->setSelectionMode( QListBox::Extended );
myListBox->setSizePolicy( QSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding) ); myListBox->setSizePolicy( QSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding) );
// myListBox->setColumnMode( QListBox::FitToHeight ); // myListBox->setColumnMode( QListBox::FitToHeight );
myListBox->installEventFilter( this );
myFilterBtn = new QPushButton( tr( "FILTER" ) , aFrame ); myFilterBtn = new QPushButton( tr( "FILTER" ) , aFrame );
myAddBtn = new QPushButton( tr( "ADD" ) , aFrame ); myAddBtn = new QPushButton( tr( "ADD" ) , aFrame );
@ -213,10 +214,11 @@ QFrame* SMESHGUI_MultiEditDlg::createButtonFrame( QWidget* theParent )
// name : SMESHGUI_MultiEditDlg::isValid // name : SMESHGUI_MultiEditDlg::isValid
// Purpose : Verify validity of input data // 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() && 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 // name : SMESHGUI_MultiEditDlg::Init
// Purpose : Init dialog fields, connect signals and slots, show dialog // 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() ) ); connect( myListBox, SIGNAL( selectionChanged() ), SLOT( onListSelectionChanged() ) );
onSelectionDone(); int nbSel = mySelection->IObjectCount();
if ( nbSel == 1 )
myIO = mySelection->firstIObject();
// set selection mode // set selection mode
setSelectionMode(); setSelectionMode();
// process selection
//onSelectionDone();
updateButtons(); updateButtons();
} }
@ -431,13 +453,19 @@ void SMESHGUI_MultiEditDlg::onSelectionDone()
if ( nbSel == 1 ) { if ( nbSel == 1 ) {
myActor = SMESH::FindActorByEntry(mySelection->firstIObject()->getEntry()); myActor = SMESH::FindActorByEntry(mySelection->firstIObject()->getEntry());
if ( !myActor && !myMesh->_is_nil() ) //if ( !myActor && !myMesh->_is_nil() )
myActor = SMESH::FindActorByObject( myMesh ); // myActor = SMESH::FindActorByObject( myMesh );
VTKViewer_InteractorStyleSALOME* aStyle = SMESH::GetInteractorStyle(); VTKViewer_InteractorStyleSALOME* aStyle = SMESH::GetInteractorStyle();
Handle(VTKViewer_Filter) aFilter = aStyle->GetFilter( myFilterType ); Handle(VTKViewer_Filter) aFilter = aStyle->GetFilter( myFilterType );
if ( !aFilter.IsNull() && myActor ) { if ( myActor ) {
aFilter->SetActor( myActor ); if ( !aFilter.IsNull() ) {
//SMESH::SetPickable( myActor ); aFilter->SetActor( myActor );
//SMESH::SetPickable( myActor );
myIO = myActor->getIO();
}
}
else {
myIO.Nullify();
} }
} }
myBusy = false; myBusy = false;
@ -817,11 +845,11 @@ void SMESHGUI_MultiEditDlg::onToAllChk()
emit ListContensChanged(); emit ListContensChanged();
updateButtons();
setSelectionMode(); setSelectionMode();
if ( myActor ) //if ( !myIO.IsNull() )
mySelection->AddIObject( myActor->getIO(), true ); //mySelection->AddIObject( myIO, true );
updateButtons();
} }
@ -864,6 +892,8 @@ void SMESHGUI_MultiEditDlg::setSelectionMode()
else else
SMESH::SetFilter( new SMESHGUI_FacesFilter() ); SMESH::SetFilter( new SMESHGUI_FacesFilter() );
} }
if ( !myIO.IsNull() )
mySelection->AddIObject( myIO, true );
} }
//======================================================================= //=======================================================================
@ -920,15 +950,15 @@ void SMESHGUI_MultiEditDlg::on3d2dChanged(int type)
emit ListContensChanged(); emit ListContensChanged();
updateButtons();
if ( type ) if ( type )
myFilterType = SMESHGUI_VolumeFilter; myFilterType = SMESHGUI_VolumeFilter;
else else
myFilterType = SMESHGUI_FaceFilter; myFilterType = SMESHGUI_FaceFilter;
setSelectionMode(); setSelectionMode();
myActor = 0; updateButtons();
//myActor = 0;
} }
} }

View File

@ -34,7 +34,6 @@
#include <SALOMEconfig.h> #include <SALOMEconfig.h>
#include CORBA_SERVER_HEADER(SMESH_Mesh) #include CORBA_SERVER_HEADER(SMESH_Mesh)
class QCloseEvent;
class SMESHGUI_FilterDlg; class SMESHGUI_FilterDlg;
class QCheckBox; class QCheckBox;
class QGroupBox; class QGroupBox;
@ -47,6 +46,7 @@ class SALOME_Selection;
class SMESH_Actor; class SMESH_Actor;
class SALOME_Actor; class SALOME_Actor;
class QButtonGroup; class QButtonGroup;
class QObject;
/* /*
Class : SMESHGUI_MultiEditDlg Class : SMESHGUI_MultiEditDlg
@ -68,6 +68,8 @@ public:
void Init( SALOME_Selection* ) ; void Init( SALOME_Selection* ) ;
bool eventFilter( QObject* object, QEvent* event );
signals: signals:
void ListContensChanged(); void ListContensChanged();
@ -98,7 +100,7 @@ protected:
void hideEvent ( QHideEvent * ); /* ESC key */ void hideEvent ( QHideEvent * ); /* ESC key */
QFrame* createButtonFrame( QWidget* ); QFrame* createButtonFrame( QWidget* );
QFrame* createMainFrame ( QWidget*, const bool ); QFrame* createMainFrame ( QWidget*, const bool );
bool isValid( const bool ) const; bool isValid( const bool );
SMESH::long_array_var getIds(); SMESH::long_array_var getIds();
void updateButtons(); void updateButtons();
void setSelectionMode(); void setSelectionMode();
@ -141,6 +143,7 @@ protected:
Handle(SMESH_TypeFilter) myGroupFilter; Handle(SMESH_TypeFilter) myGroupFilter;
bool myBusy; bool myBusy;
int myEntityType; int myEntityType;
Handle(SALOME_InteractiveObject) myIO;
}; };
/* /*