X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_FilterLibraryDlg.cxx;h=c4b0465de691d71a1e70b2dec1ff5abfa3b64e97;hp=c5db4023101a6fb79dc95fc13baad8f273e49a37;hb=5ac2bd91a85417fd289aea0907264cb2d155d76d;hpb=e4737e85f0da6d3f90fd08f6be1c2825195fe16f diff --git a/src/SMESHGUI/SMESHGUI_FilterLibraryDlg.cxx b/src/SMESHGUI/SMESHGUI_FilterLibraryDlg.cxx index c5db40231..c4b0465de 100644 --- a/src/SMESHGUI/SMESHGUI_FilterLibraryDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_FilterLibraryDlg.cxx @@ -1,72 +1,84 @@ -// SMESH SMESHGUI : GUI for SMESH component +// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE // -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// Copyright (C) 2003-2007 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, or (at your option) any later version. // +// 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_FilterLibraryDlg.cxx -// Author : Sergey LITONIN -// Module : SMESH +// SMESH SMESHGUI : GUI for SMESH component +// File : SMESHGUI_FilterLibraryDlg.cxx +// Author : Sergey LITONIN, Open CASCADE S.A.S. +// SMESH includes +// #include "SMESHGUI_FilterLibraryDlg.h" + #include "SMESHGUI.h" -#include "SMESHGUI_Utils.h" #include "SMESHGUI_FilterUtils.h" - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define SPACING 5 -#define MARGIN 10 - -/* - Class : SMESHGUI_FilterLibraryDlg::Dialog - Description : Dialog for opening filter library -*/ - -class SMESHGUI_FilterLibraryDlg::Dialog : public QAD_FileDlg +#include "SMESHGUI_FilterDlg.h" +#include "SMESHGUI_VTKUtils.h" + +#include + +// SALOME GUI includes +#include +#include +#include +#include +#include +#include +#include +#include + +// Qt includes +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define SPACING 6 +#define MARGIN 11 + +/*! + * Class : SMESHGUI_FilterLibraryDlg::Dialog + * Description : Dialog for opening filter library + */ + +class SMESHGUI_FilterLibraryDlg::Dialog : public SUIT_FileDlg { public: - Dialog( QWidget* theParent, const bool theToOpen ); + Dialog(QWidget* theParent, const bool theToOpen); virtual ~Dialog(); - + protected: virtual bool acceptData(); }; -SMESHGUI_FilterLibraryDlg::Dialog::Dialog( QWidget* theParent, - const bool theToOpen ) -: QAD_FileDlg( theParent, theToOpen ) +SMESHGUI_FilterLibraryDlg::Dialog::Dialog (QWidget* theParent, + const bool theToOpen) + : SUIT_FileDlg(theParent, theToOpen) { } @@ -76,148 +88,165 @@ SMESHGUI_FilterLibraryDlg::Dialog::~Dialog() bool SMESHGUI_FilterLibraryDlg::Dialog::acceptData() { - if ( mode() != QFileDialogP::AnyFile ) - return QAD_FileDlg::acceptData(); - else - return true; -} +// if (mode() != QFileDialogP::AnyFile) +// return SUIT_FileDlg::acceptData(); + return true; +} -/* - Class : SMESHGUI_FilterLibraryDlg - Description : Dialog to specify filters for VTK viewer -*/ +/*! + * Class : SMESHGUI_FilterLibraryDlg + * Description : Dialog to specify filters for VTK viewer + */ //======================================================================= // name : SMESHGUI_FilterLibraryDlg::SMESHGUI_FilterLibraryDlg // Purpose : Constructor //======================================================================= -SMESHGUI_FilterLibraryDlg::SMESHGUI_FilterLibraryDlg( QWidget* theParent, - const QValueList& theTypes, - const int theMode, - const char* theName ) -: QDialog( theParent, theName, true, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) +SMESHGUI_FilterLibraryDlg::SMESHGUI_FilterLibraryDlg (SMESHGUI* theModule, + QWidget* parent, + const QList& theTypes, + const int theMode) + : QDialog( parent ), + mySMESHGUI( theModule ) { - construct( theTypes, theMode ); + setModal(false); + construct(theTypes, theMode); } //======================================================================= // name : SMESHGUI_FilterLibraryDlg::SMESHGUI_FilterLibraryDlg // Purpose : Constructor //======================================================================= -SMESHGUI_FilterLibraryDlg::SMESHGUI_FilterLibraryDlg( QWidget* theParent, +SMESHGUI_FilterLibraryDlg::SMESHGUI_FilterLibraryDlg (SMESHGUI* theModule, + QWidget* parent, const int theType, - const int theMode, - const char* theName ) -: QDialog( theParent, theName, true, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) + const int theMode) + : QDialog( parent ), + mySMESHGUI( theModule ) { - QValueList aTypes; - aTypes.append( theType ); - construct( aTypes, theMode ); + setModal(true); + QList aTypes; + aTypes.append(theType); + construct(aTypes, theMode); } //======================================================================= // name : SMESHGUI_FilterLibraryDlg::construct -// Purpose : Construct dialog ( called by constructor ) +// Purpose : Construct dialog (called by constructor) //======================================================================= -void SMESHGUI_FilterLibraryDlg::construct( const QValueList& theTypes, const int theMode ) +void SMESHGUI_FilterLibraryDlg::construct (const QList& theTypes, + const int theMode) { myTypes = theTypes; myMode = theMode; - QVBoxLayout* aDlgLay = new QVBoxLayout( this, MARGIN, SPACING ); + QVBoxLayout* aDlgLay = new QVBoxLayout(this); + aDlgLay->setMargin(MARGIN); + aDlgLay->setSpacing(SPACING); - myMainFrame = createMainFrame ( this ); - QFrame* aBtnFrame = createButtonFrame( this ); + myMainFrame = createMainFrame (this); + QWidget* aBtnFrame = createButtonFrame(this); - aDlgLay->addWidget( myMainFrame ); - aDlgLay->addWidget( aBtnFrame ); + aDlgLay->addWidget(myMainFrame); + aDlgLay->addWidget(aBtnFrame); - aDlgLay->setStretchFactor( myMainFrame, 1 ); + aDlgLay->setStretchFactor(myMainFrame, 1); - Init( myTypes, myMode ); + myHelpFileName = "selection_filter_library_page.html"; + + Init(myTypes, myMode); } //======================================================================= // name : SMESHGUI_FilterLibraryDlg::createMainFrame // Purpose : Create frame containing dialog's input fields //======================================================================= -QFrame* SMESHGUI_FilterLibraryDlg::createMainFrame( QWidget* theParent ) +QWidget* SMESHGUI_FilterLibraryDlg::createMainFrame (QWidget* theParent) { - QGroupBox* aMainFrame = new QGroupBox( 1, Qt::Horizontal, theParent ); - aMainFrame->setFrameStyle( QFrame::NoFrame ); - aMainFrame->setInsideMargin( 0 ); + QWidget* aMainFrame = new QWidget(theParent); + QGridLayout* aMainLay = new QGridLayout(aMainFrame); + aMainLay->setMargin(0); + aMainLay->setSpacing(SPACING); // library name - - QGroupBox* aGrp = new QGroupBox( 1, Qt::Vertical, aMainFrame ); - aGrp->setFrameStyle( QFrame::NoFrame ); - aGrp->setInsideMargin( 0 ); - - new QLabel( tr( "LIBRARY_FILE" ), aGrp ); - myFileName = new QLineEdit( aGrp ); - myOpenBtn = new QPushButton( aGrp ); - myOpenBtn->setPixmap( QAD_Desktop::getResourceManager()->loadPixmap( - "QAD", tr("ICON_FILE_OPEN") ) ); - + + QLabel* aFileLab = new QLabel(tr("LIBRARY_FILE"), aMainFrame); + myFileName = new QLineEdit(aMainFrame); + myOpenBtn = new QPushButton(aMainFrame); + myOpenBtn->setIcon(SUIT_Session::session()->resourceMgr()->loadPixmap( + "SUIT", tr("ICON_FILE_OPEN"))); + // filters list box - - aGrp = new QGroupBox( 1, Qt::Vertical, tr( "FILTER_NAMES" ), aMainFrame ); - QFrame* aFrame = new QFrame( aGrp ); - myListBox = new QListBox( aFrame ); - myAddBtn = new QPushButton( tr( "ADD" ), aFrame ); - myDeleteBtn = new QPushButton( tr( "DELETE" ), aFrame ); - - QGridLayout* aLay = new QGridLayout( aFrame, 3, 2, 0, 5 ); - aLay->addMultiCellWidget( myListBox, 0, 2, 0, 0 ); - aLay->addWidget( myAddBtn, 0, 1 ); - aLay->addWidget( myDeleteBtn, 1, 1 ); - QSpacerItem* aVSpacer = new QSpacerItem( 0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding ); - aLay->addItem( aVSpacer, 2, 1 ); + + QGroupBox* aFiltersGrp = new QGroupBox(tr("FILTER_NAMES"), aMainFrame); + QGridLayout* aLay = new QGridLayout(aFiltersGrp); + aLay->setMargin(MARGIN); + aLay->setSpacing(SPACING); + + myListBox = new QListWidget(aFiltersGrp); + + myAddBtn = new QPushButton(tr("ADD"), aFiltersGrp); + myDeleteBtn = new QPushButton(tr("DELETE"), aFiltersGrp); + + aLay->addWidget(myListBox, 0, 0, 3, 1); + aLay->addWidget(myAddBtn, 0, 1); + aLay->addWidget(myDeleteBtn, 1, 1); + aLay->setRowStretch(2, 5); // filter name - - myNameGrp = new QGroupBox( 1, Qt::Vertical, aMainFrame ); - myNameGrp->setFrameStyle( QFrame::NoFrame ); - myNameGrp->setInsideMargin( 0 ); - new QLabel( tr( "FILTER_NAME" ), myNameGrp ); - myName = new QLineEdit( myNameGrp ); + + myNameGrp = new QWidget(aMainFrame); + QHBoxLayout* myNameGrpLayout = new QHBoxLayout(myNameGrp); + myNameGrpLayout->setMargin(0); + myNameGrpLayout->setSpacing(SPACING); + + myNameGrpLayout->addWidget( new QLabel(tr("FILTER_NAME"), myNameGrp) ); + myNameGrpLayout->addWidget( myName = new QLineEdit(myNameGrp) ); // table - - myTable = new SMESHGUI_FilterTable( aMainFrame, myTypes ); - myTable->SetEditable( myMode == EDIT ); - myTable->SetLibsEnabled( false ); - myListBox->setMinimumHeight( ( int )( myTable->sizeHint().height() * 0.5 ) ); - myListBox->setRowMode( QListBox::FitToWidth ); - myListBox->setSelectionMode( QListBox::Single ); + myTable = new SMESHGUI_FilterTable( mySMESHGUI, aMainFrame, myTypes); + myTable->SetEditable(myMode == EDIT); + myTable->SetLibsEnabled(false); + + myListBox->setMinimumHeight((int)(myTable->sizeHint().height() * 0.5)); + //myListBox->setRowMode(QListWidget::FitToWidth); //VSR : TODO ??? + myListBox->setSelectionMode(QListWidget::SingleSelection); + + myOpenBtn->setAutoDefault(false); + myAddBtn->setAutoDefault(false); + myDeleteBtn->setAutoDefault(false); - myOpenBtn->setAutoDefault( false ); - myAddBtn->setAutoDefault( false ); - myDeleteBtn->setAutoDefault( false ); + aMainLay->addWidget(aFileLab, 0, 0); + aMainLay->addWidget(myFileName, 0, 1); + aMainLay->addWidget(myOpenBtn, 0, 2); + aMainLay->addWidget(aFiltersGrp, 1, 0, 1, 3); + aMainLay->addWidget(myNameGrp, 2, 0, 1, 3); + aMainLay->addWidget(myTable, 3, 0, 1, 3); // connect signals and slots - - connect( myFileName, SIGNAL( returnPressed() ), this, SLOT( onReturnPressed() ) ); - connect( myOpenBtn , SIGNAL( clicked() ), this, SLOT( onBrowse() ) ); - connect( myListBox, SIGNAL( highlighted( const QString& ) ), - this, SLOT( onFilterChanged( const QString& ) ) ); + connect(myFileName, SIGNAL(returnPressed()), this, SLOT(onReturnPressed())); + connect(myOpenBtn, SIGNAL(clicked()), this, SLOT(onBrowse())); + + connect(myListBox, SIGNAL(itemSelectionChanged()), + this, SLOT(onFilterChanged())); + + connect(myAddBtn, SIGNAL(clicked()), this, SLOT(onAddBtnPressed())); + connect(myDeleteBtn, SIGNAL(clicked()), this, SLOT(onDeleteBtnPressed())); + + connect(myName, SIGNAL(textChanged(const QString&)), + this, SLOT(onFilterNameChanged(const QString&))); - connect( myAddBtn, SIGNAL( clicked() ), this, SLOT( onAddBtnPressed() ) ); - connect( myDeleteBtn, SIGNAL( clicked() ), this, SLOT( onDeleteBtnPressed() ) ); + connect(myTable, SIGNAL(EntityTypeChanged(const int)), + this, SLOT(onEntityTypeChanged(const int))); - connect( myName, SIGNAL( textChanged( const QString& ) ), - this, SLOT( onFilterNameChanged( const QString& ) ) ); + connect(myTable, SIGNAL(NeedValidation()), this, SLOT(onNeedValidation())); - connect( myTable, SIGNAL( EntityTypeChanged( const int ) ), - this, SLOT( onEntityTypeChanged( const int ) ) ); + LightApp_SelectionMgr* selMgr = SMESH::GetSelectionMgr( mySMESHGUI ); + connect( selMgr, SIGNAL(currentSelectionChanged()), SLOT(onSelectionDone())); - connect( myTable, SIGNAL( NeedValidation() ), this, SLOT( onNeedValidation() ) ); - return aMainFrame; } @@ -225,27 +254,35 @@ QFrame* SMESHGUI_FilterLibraryDlg::createMainFrame( QWidget* theParent ) // name : SMESHGUI_FilterLibraryDlg::createButtonFrame // Purpose : Create frame containing buttons //======================================================================= -QFrame* SMESHGUI_FilterLibraryDlg::createButtonFrame( QWidget* theParent ) +QWidget* SMESHGUI_FilterLibraryDlg::createButtonFrame (QWidget* theParent) { - QGroupBox* aGrp = new QGroupBox( 1, Qt::Vertical, theParent ); - - myButtons[ BTN_OK ] = new QPushButton( tr( "SMESH_BUT_OK" ), aGrp ); - myButtons[ BTN_Apply ] = new QPushButton( tr( "SMESH_BUT_APPLY" ), aGrp ); - - QLabel* aLbl = new QLabel( aGrp ); - aLbl->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - - myButtons[ BTN_Cancel ] = new QPushButton( tr( "SMESH_BUT_CANCEL" ), aGrp ); - myButtons[ BTN_Close ] = new QPushButton( tr( "SMESH_BUT_CLOSE" ), aGrp ); - - connect( myButtons[ BTN_OK ], SIGNAL( clicked() ), SLOT( onOk() ) ); - connect( myButtons[ BTN_Cancel ], SIGNAL( clicked() ), SLOT( onClose() ) ) ; - connect( myButtons[ BTN_Close ], SIGNAL( clicked() ), SLOT( onClose() ) ) ; - connect( myButtons[ BTN_Apply ], SIGNAL( clicked() ), SLOT( onApply() ) ); + QGroupBox* aGrp = new QGroupBox(theParent); + QHBoxLayout* aLay = new QHBoxLayout(aGrp); + aLay->setMargin(MARGIN); + aLay->setSpacing(SPACING); + + myButtons[ BTN_OK ] = new QPushButton(tr("SMESH_BUT_APPLY_AND_CLOSE"), aGrp); + myButtons[ BTN_Apply ] = new QPushButton(tr("SMESH_BUT_APPLY"), aGrp); + + myButtons[ BTN_Close ] = new QPushButton(tr("SMESH_BUT_CLOSE"), aGrp); + myButtons[ BTN_Help ] = new QPushButton(tr("SMESH_BUT_HELP"), aGrp); + + aLay->addWidget(myButtons[ BTN_OK ]); + aLay->addSpacing(10); + aLay->addWidget(myButtons[ BTN_Apply ]); + aLay->addSpacing(10); + aLay->addStretch(); + aLay->addWidget(myButtons[ BTN_Close ]); + aLay->addWidget(myButtons[ BTN_Help ]); + + connect(myButtons[ BTN_OK ], SIGNAL(clicked()), SLOT(onOk())); + connect(myButtons[ BTN_Close ], SIGNAL(clicked()), SLOT(reject())); + connect(myButtons[ BTN_Apply ], SIGNAL(clicked()), SLOT(onApply())); + connect(myButtons[ BTN_Help ], SIGNAL(clicked()), SLOT(onHelp())); QMap::iterator anIter; - for ( anIter = myButtons.begin(); anIter != myButtons.end(); ++anIter ) - anIter.data()->setAutoDefault( false ); + for (anIter = myButtons.begin(); anIter != myButtons.end(); ++anIter) + anIter.value()->setAutoDefault(false); updateMainButtons(); @@ -254,21 +291,15 @@ QFrame* SMESHGUI_FilterLibraryDlg::createButtonFrame( QWidget* theParent ) //======================================================================= // name : SMESHGUI_FilterLibraryDlg::updateMainButtons -// Purpose : Update visibility of main buttons ( OK, Cancel, Close ... ) +// Purpose : Update visibility of main buttons (OK, Cancel, Close ...) //======================================================================= void SMESHGUI_FilterLibraryDlg::updateMainButtons() { - if ( myTypes.count() == 1 ) - { - myButtons[ BTN_Cancel ]->show(); + myButtons[ BTN_Close ]->show(); + if (myTypes.count() == 1) { myButtons[ BTN_Apply ]->hide(); - myButtons[ BTN_Close ]->hide(); - } - else - { - myButtons[ BTN_Cancel ]->hide(); + } else { myButtons[ BTN_Apply ]->show(); - myButtons[ BTN_Close ]->show(); } } @@ -284,70 +315,67 @@ SMESHGUI_FilterLibraryDlg::~SMESHGUI_FilterLibraryDlg() // name : SMESHGUI_FilterLibraryDlg::Init // Purpose : Init dialog fields, connect signals and slots, show dialog //======================================================================= -void SMESHGUI_FilterLibraryDlg::Init( const int type, const int theMode ) +void SMESHGUI_FilterLibraryDlg::Init (const int type, const int theMode) { - QValueList aTypes; - aTypes.append( type ); - Init( aTypes, theMode ); + QList aTypes; + aTypes.append(type); + Init(aTypes, theMode); } //======================================================================= // name : SMESHGUI_FilterLibraryDlg::Init // Purpose : Init dialog fields, connect signals and slots, show dialog //======================================================================= -void SMESHGUI_FilterLibraryDlg::Init( const QValueList& theTypes, const int theMode ) +void SMESHGUI_FilterLibraryDlg::Init (const QList& theTypes, + const int theMode) { myMode = theMode; myTypes = theTypes; - myTable->Init( theTypes ); + myTable->Init(theTypes); myCurrFilterName = ""; myCurrFilter = -1; + myListBox->blockSignals(true); myListBox->clear(); + myListBox->blockSignals(false); myName->clear(); myTable->Clear(); - - updateControlsVisibility(); - setEnabled( true ); - SMESHGUI* aModeler = SMESHGUI::GetSMESHGUI(); + updateControlsVisibility(); + setEnabled(true); - connect( aModeler, SIGNAL( SignalDeactivateActiveDialog() ), SLOT( onDeactivate() ) ); - connect( aModeler, SIGNAL( SignalCloseAllDialogs() ), SLOT( onClose() ) ); + connect( mySMESHGUI, SIGNAL(SignalDeactivateActiveDialog()), SLOT(onDeactivate())); + connect( mySMESHGUI, SIGNAL(SignalCloseAllDialogs()), SLOT(reject())); - if ( myMode == ADD_TO ) + if (myMode == ADD_TO) { - setCaption( tr( "ADD_TO_TLT" ) ); - if ( myFileName->text().isEmpty() ) - myFileName->setText( getDefaultLibraryName() ); + setWindowTitle(tr("ADD_TO_TLT")); + if (myFileName->text().isEmpty()) + myFileName->setText(getDefaultLibraryName()); processNewLibrary(); } - else if ( myMode == COPY_FROM ) + else if (myMode == COPY_FROM) { - setCaption( tr( "COPY_FROM_TLT" ) ); - if ( myFileName->text().isEmpty() ) - myFileName->setText( getDefaultLibraryName() ); + setWindowTitle(tr("COPY_FROM_TLT")); + if (myFileName->text().isEmpty()) + myFileName->setText(getDefaultLibraryName()); processNewLibrary(); - if ( myListBox->count() > 0 ) - myListBox->setCurrentItem( 0 ); + if (myListBox->count() > 0) + myListBox->setCurrentItem(0); } else { - setCaption( tr( "EDIT_LIB_TLT" ) ); - if ( myFileName->text().isEmpty() ) - myFileName->setText( getDefaultLibraryName() ); + setWindowTitle(tr("EDIT_LIB_TLT")); + if (myFileName->text().isEmpty()) + myFileName->setText(getDefaultLibraryName()); processNewLibrary(); - if ( myListBox->count() > 0 ) - myListBox->setCurrentItem( 0 ); + if (myListBox->count() > 0) + myListBox->setCurrentItem(0); } - int x, y ; - aModeler->DefineDlgPosition( this, x, y ); - this->move( x, y ); - this->show(); updateMainButtons(); - isPermissionValid( false ); + isPermissionValid(false); } //======================================================================= @@ -356,29 +384,29 @@ void SMESHGUI_FilterLibraryDlg::Init( const QValueList& theTypes, const int //======================================================================= void SMESHGUI_FilterLibraryDlg::updateControlsVisibility() { - if ( myMode == ADD_TO ) + if (myMode == ADD_TO) { myNameGrp->show(); - myNameGrp->setEnabled( true ); + myNameGrp->setEnabled(true); myAddBtn->hide(); myDeleteBtn->hide(); - myTable->SetEditable( false ); + myTable->SetEditable(false); } - else if ( myMode == COPY_FROM ) + else if (myMode == COPY_FROM) { myNameGrp->hide(); - myNameGrp->setEnabled( false ); + myNameGrp->setEnabled(false); myAddBtn->hide(); myDeleteBtn->hide(); - myTable->SetEditable( false ); + myTable->SetEditable(false); } - else if ( myMode == EDIT ) + else if (myMode == EDIT) { myNameGrp->show(); - myNameGrp->setEnabled( true ); + myNameGrp->setEnabled(true); myAddBtn->show(); myDeleteBtn->show(); - myTable->SetEditable( true ); + myTable->SetEditable(true); } qApp->processEvents(); @@ -392,52 +420,48 @@ void SMESHGUI_FilterLibraryDlg::updateControlsVisibility() //======================================================================= bool SMESHGUI_FilterLibraryDlg::onApply() { - if ( !isValid( true ) || !isPermissionValid( false ) ) + if (!isValid(true) || !isPermissionValid(false)) return false; - if ( myLibrary->_is_nil() ) - { - QMessageBox::information( SMESHGUI::GetSMESHGUI()->GetDesktop(), - tr( "SMESH_WRN_WARNING" ), tr( "LIBRARY_IS_NOT_LOADED" ), QMessageBox::Ok ); + if (myLibrary->_is_nil()) { + SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_WRN_WARNING"), + tr("LIBRARY_IS_NOT_LOADED")); return false; } - const char* aName = myFileName->text().latin1(); - if ( strcmp( myLibrary->GetFileName(), aName ) != 0 ) - myLibrary->SetFileName( aName ); + if (myFileName->text() != myLibrary->GetFileName()) + myLibrary->SetFileName( myFileName->text().toLatin1().constData() ); bool aResult = false; - if ( myMode == COPY_FROM || myListBox->count() == 0 ) - { + if (myMode == COPY_FROM || myListBox->count() == 0) { aResult = true; - } - else if ( myMode == EDIT || myMode == ADD_TO ) - { + } else if (myMode == EDIT || myMode == ADD_TO) { SMESH::Filter_var aFilter = createFilter(); - if ( !myLibrary->Replace( myCurrFilterName, myName->text(), aFilter.in() ) ) - { - QMessageBox::information( SMESHGUI::GetSMESHGUI()->GetDesktop(), - tr( "SMESH_ERROR" ), tr( "ERROR_OF_EDITING" ), QMessageBox::Ok ); + if (!myListBox->selectedItems().empty() && + !myLibrary->Replace(myCurrFilterName.toLatin1().constData(), + myName->text().toLatin1().constData(), + aFilter.in())) { + SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_ERROR"), + tr("ERROR_OF_EDITING")); aResult = false; } else aResult = true; } - if ( aResult && myMode != COPY_FROM ) + if (aResult && myMode != COPY_FROM) aResult = myLibrary->Save(); - if ( aResult ) - { + if (aResult) { char* aFileName = myLibrary->GetFileName(); - getDefaultLibraryName() = QString( aFileName ); + getDefaultLibraryName() = QString(aFileName); delete aFileName; + } else if (myMode != COPY_FROM) { + SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_ERROR"), + tr("ERROR_OF_SAVING")); + } else { } - else if ( myMode != COPY_FROM ) - QMessageBox::information( SMESHGUI::GetSMESHGUI()->GetDesktop(), - tr( "SMESH_ERROR" ), tr( "ERROR_OF_SAVING" ), QMessageBox::Ok ); - return aResult; } @@ -449,23 +473,46 @@ bool SMESHGUI_FilterLibraryDlg::onApply() //======================================================================= void SMESHGUI_FilterLibraryDlg::onOk() { - if ( onApply() ) - { - disconnect( SMESHGUI::GetSMESHGUI(), 0, this, 0 ); - SMESHGUI::GetSMESHGUI()->ResetState() ; + if (onApply()) { + disconnect( mySMESHGUI, 0, this, 0); + mySMESHGUI->ResetState(); accept(); } } //======================================================================= -// name : SMESHGUI_FilterLibraryDlg::onClose +// name : SMESHGUI_FilterLibraryDlg::reject // Purpose : SLOT called when "Close" button pressed. Close dialog //======================================================================= -void SMESHGUI_FilterLibraryDlg::onClose() +void SMESHGUI_FilterLibraryDlg::reject() +{ + disconnect( mySMESHGUI, 0, this, 0); + mySMESHGUI->ResetState(); + QDialog::reject(); +} + +//================================================================================= +// function : onHelp() +// purpose : +//================================================================================= +void SMESHGUI_FilterLibraryDlg::onHelp() { - disconnect( SMESHGUI::GetSMESHGUI(), 0, this, 0 ); - SMESHGUI::GetSMESHGUI()->ResetState() ; - reject() ; + LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication()); + if (app) + app->onHelpContextModule(mySMESHGUI ? app->moduleName(mySMESHGUI->moduleName()) : QString(""), myHelpFileName); + else { + QString platform; +#ifdef WIN32 + platform = "winapplication"; +#else + platform = "application"; +#endif + SUIT_MessageBox::warning(this, tr("WRN_WARNING"), + tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE"). + arg(app->resourceMgr()->stringValue("ExternalBrowser", + platform)). + arg(myHelpFileName)); + } } //======================================================================= @@ -474,25 +521,16 @@ void SMESHGUI_FilterLibraryDlg::onClose() //======================================================================= void SMESHGUI_FilterLibraryDlg::onDeactivate() { - setEnabled( false ); + setEnabled(false); } //======================================================================= // name : SMESHGUI_FilterLibraryDlg::enterEvent // Purpose : Event filter //======================================================================= -void SMESHGUI_FilterLibraryDlg::enterEvent( QEvent* ) -{ - setEnabled( true ); -} - -//================================================================================= -// function : closeEvent() -// purpose : Close dialog -//================================================================================= -void SMESHGUI_FilterLibraryDlg::closeEvent( QCloseEvent* e ) +void SMESHGUI_FilterLibraryDlg::enterEvent(QEvent*) { - onClose() ; + setEnabled(true); } //======================================================================= @@ -508,20 +546,20 @@ QString SMESHGUI_FilterLibraryDlg::getFileName() const // Function : setFileName // Purpose : Set file name to line edit //================================================================ -void SMESHGUI_FilterLibraryDlg::setFileName( const QString& txt, const bool autoExt ) +void SMESHGUI_FilterLibraryDlg::setFileName(const QString& txt, const bool autoExt) { - if ( myFileName == 0 ) + if (myFileName == 0) return; - myFileName->setText( autoExt ? autoExtension( txt ) : txt ); + myFileName->setText(autoExt ? autoExtension(txt) : txt); } //================================================================ // Function : autoExtension // Purpose : Append extension to the file name //================================================================ -QString SMESHGUI_FilterLibraryDlg::autoExtension( const QString& theFileName ) const +QString SMESHGUI_FilterLibraryDlg::autoExtension(const QString& theFileName) const { - QString anExt = theFileName.section( '.', -1 ); + QString anExt = theFileName.section('.', -1); return anExt != "xml" && anExt != "XML" ? theFileName + ".xml" : theFileName; } @@ -529,19 +567,19 @@ QString SMESHGUI_FilterLibraryDlg::autoExtension( const QString& theFileName ) c // Function : filterWildCards // Purpose : //================================================================ -QStringList SMESHGUI_FilterLibraryDlg::filterWildCards( const QString& theFilter ) const +QStringList SMESHGUI_FilterLibraryDlg::filterWildCards(const QString& theFilter) const { QStringList res; - int b = theFilter.findRev( "(" ); - int e = theFilter.findRev( ")" ); - if ( b != -1 && e != -1 ) + int b = theFilter.lastIndexOf("("); + int e = theFilter.lastIndexOf(")"); + if (b != -1 && e != -1) { - QString content = theFilter.mid( b + 1, e - b - 1 ).stripWhiteSpace(); - QStringList lst = QStringList::split( " ", content ); - for ( QStringList::const_iterator it = lst.begin(); it != lst.end(); ++it ) - if ( (*it).find( "." ) != -1 ) - res.append( (*it).stripWhiteSpace() ); + QString content = theFilter.mid(b + 1, e - b - 1).trimmed(); + QStringList lst = content.split(" ", QString::SkipEmptyParts); + for (QStringList::const_iterator it = lst.begin(); it != lst.end(); ++it) + if ((*it).indexOf(".") != -1) + res.append((*it).trimmed()); } return res; } @@ -553,10 +591,10 @@ QStringList SMESHGUI_FilterLibraryDlg::filterWildCards( const QString& theFilter QStringList SMESHGUI_FilterLibraryDlg::prepareFilters() const { static QStringList aList; - if ( aList.isEmpty() ) + if (aList.isEmpty()) { - aList.append( tr( "XML_FILT" ) ); - //aList.append( tr( "ALL_FILES_FILTER" ) ); + aList.append(tr("XML_FILT")); + //aList.append(tr("ALL_FILES_FILTER")); } return aList; @@ -568,48 +606,50 @@ QStringList SMESHGUI_FilterLibraryDlg::prepareFilters() const //================================================================ void SMESHGUI_FilterLibraryDlg::onBrowse() { - Dialog* aDlg = new Dialog( this, true ); - aDlg->setCaption( tr( "OPEN_LIBRARY" ) ); + Dialog* aDlg = new Dialog(this, true); + aDlg->setWindowTitle(tr("OPEN_LIBRARY")); - aDlg->setMode( myMode == COPY_FROM ? QFileDialogP::ExistingFile : QFileDialogP::AnyFile ); - aDlg->setFilters( prepareFilters() ); - aDlg->setSelection( getFileName() ); + //aDlg->setMode(myMode == COPY_FROM ? QFileDialogP::ExistingFile : QFileDialogP::AnyFile); + aDlg->setFileMode(myMode == COPY_FROM ? QFileDialog::ExistingFile : QFileDialog::AnyFile); + aDlg->setFilters(prepareFilters()); + aDlg->selectFile(getFileName()); - QPushButton* anOkBtn = ( QPushButton* )aDlg->child( "OK", "QPushButton" ); - if ( anOkBtn != 0 ) - anOkBtn->setText( tr( "SMESH_BUT_OK" ) ); + QPushButton* anOkBtn = (QPushButton*)aDlg->findChild("OK"); + if (anOkBtn != 0) + anOkBtn->setText(tr("SMESH_BUT_OK")); - if ( aDlg->exec() != Accepted ) + if (aDlg->exec() != Accepted) return; QString fName = aDlg->selectedFile(); - if ( fName.isEmpty() ) + if (fName.isEmpty()) return; - if ( QFileInfo( fName ).extension().isEmpty() ) - fName = autoExtension( fName ); + if (QFileInfo(fName).suffix().isEmpty()) + fName = autoExtension(fName); - fName = QDir::convertSeparators( fName ); - QString prev = QDir::convertSeparators( getFileName() ); + fName = QDir::convertSeparators(fName); + QString prev = QDir::convertSeparators(getFileName()); - if ( prev == fName ) + if (prev == fName) return; - setFileName( fName ); + setFileName(fName); - QString aName = myListBox->text( myListBox->count() - 1 ); + QListWidgetItem* item = myListBox->item( myListBox->count()-1 ); + QString aName = item ? item->text() : QString::null; processNewLibrary(); - if ( myMode == ADD_TO ) + if (myMode == ADD_TO) { - myTable->Copy( (SMESHGUI_FilterTable*)parentWidget() ); + myTable->Copy((SMESHGUI_FilterTable*)parentWidget()); myCurrFilterName = ""; myCurrFilter = -1; - addFilterToLib( aName ); + addFilterToLib(aName); } - isPermissionValid( false ); + isPermissionValid(false); } //======================================================================= @@ -619,22 +659,18 @@ void SMESHGUI_FilterLibraryDlg::onBrowse() void SMESHGUI_FilterLibraryDlg::processNewLibrary() { SMESH::FilterManager_var aFilterMgr = SMESH::GetFilterManager(); - if ( aFilterMgr->_is_nil() ) + if (aFilterMgr->_is_nil()) return; - myLibrary = aFilterMgr->LoadLibrary( autoExtension( getFileName() ) ); - if ( myLibrary->_is_nil() ) - { - if ( myMode == COPY_FROM ) - { - QMessageBox::information( SMESHGUI::GetSMESHGUI()->GetDesktop(), - tr( "SMESH_ERROR" ), tr( "ERROR_LOAD" ), QMessageBox::Ok ); + myLibrary = aFilterMgr->LoadLibrary(autoExtension(getFileName()).toLatin1().constData()); + if (myLibrary->_is_nil()) { + if (myMode == COPY_FROM) { + SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_ERROR"), + tr("ERROR_LOAD")); return; - } - else - { + } else { myLibrary = aFilterMgr->CreateLibrary(); - myLibrary->SetFileName( getFileName().latin1() ); + myLibrary->SetFileName(getFileName().toLatin1().constData()); } } @@ -648,26 +684,28 @@ void SMESHGUI_FilterLibraryDlg::processNewLibrary() void SMESHGUI_FilterLibraryDlg::updateList() { QStringList aList; - SMESH::string_array_var aNames = myLibrary->GetNames( (SMESH::ElementType)myTable->GetType() ); - for ( int i = 0, n = aNames->length(); i < n; i++ ) - aList.append( QString( aNames[ i ] ) ); + SMESH::string_array_var aNames = myLibrary->GetNames((SMESH::ElementType)myTable->GetType()); + for (int i = 0, n = aNames->length(); i < n; i++) + aList.append(QString(aNames[ i ])); + myListBox->blockSignals(true); myListBox->clear(); - myListBox->insertStringList( aList ); - if ( myListBox->count() == 0 ) + myListBox->blockSignals(false); + myListBox->addItems(aList); + if (myListBox->count() == 0) { - myTable->Clear( myTable->GetType() ); + myTable->Clear(myTable->GetType()); myName->clear(); - myName->setEnabled( false ); - myTable->SetEnabled( false ); + myName->setEnabled(false); + myTable->SetEnabled(false); } else { - myName->setEnabled( true ); - myTable->SetEnabled( true ); - if ( myListBox->count() ) + myName->setEnabled(true); + myTable->SetEnabled(true); + if (myListBox->count()) { myCurrFilterName = ""; - myListBox->setCurrentItem( 0 ); + myListBox->setCurrentItem(0); } } } @@ -676,28 +714,24 @@ void SMESHGUI_FilterLibraryDlg::updateList() // name : SMESHGUI_FilterLibraryDlg::isNameValid // Purpose : Verify validity if entered data //======================================================================= -bool SMESHGUI_FilterLibraryDlg::isNameValid( const bool theMess ) const +bool SMESHGUI_FilterLibraryDlg::isNameValid(const bool theMess) const { // verify validity of filter name - if ( myName->isEnabled() && !myCurrFilterName.isEmpty() ) - { + if (myName->isEnabled() && !myCurrFilterName.isEmpty()) { QString aCurrName = myName->text(); - if ( aCurrName.isEmpty() ) - { - if ( theMess ) - QMessageBox::information( SMESHGUI::GetSMESHGUI()->GetDesktop(), - tr( "SMESH_INSUFFICIENT_DATA" ), tr( "EMPTY_FILTER_NAME" ), QMessageBox::Ok ); + if (aCurrName.isEmpty()) { + if (theMess) + SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_INSUFFICIENT_DATA"), + tr("EMPTY_FILTER_NAME")); return false; } SMESH::string_array_var aNames = myLibrary->GetAllNames(); - for ( int f = 0, n = aNames->length(); f < n; f++ ) - { - if ( aNames[ f ] == aCurrName && aNames[ f ] != myCurrFilterName ) - { - if ( theMess ) - QMessageBox::information( SMESHGUI::GetSMESHGUI()->GetDesktop(), - tr( "SMESH_INSUFFICIENT_DATA" ), tr( "ERROR_FILTER_NAME" ), QMessageBox::Ok ); + for (int f = 0, n = aNames->length(); f < n; f++) { + if (aNames[ f ] == aCurrName && aNames[ f ] != myCurrFilterName) { + if (theMess) + SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_INSUFFICIENT_DATA"), + tr("ERROR_FILTER_NAME")); return false; } } @@ -710,44 +744,42 @@ bool SMESHGUI_FilterLibraryDlg::isNameValid( const bool theMess ) const // name : SMESHGUI_FilterLibraryDlg::isPermissionValid // Purpose : Verify write permission on file //======================================================================= -bool SMESHGUI_FilterLibraryDlg::isPermissionValid( const bool theIsExistingOnly ) +bool SMESHGUI_FilterLibraryDlg::isPermissionValid(const bool theIsExistingOnly) { - if ( myMode == COPY_FROM ) + if (myMode == COPY_FROM) return true; - + // Verify write permission bool isWritable = false; - QString fName( myFileName->text() ); - if ( QFileInfo( fName ).extension().isEmpty() ) - fName = autoExtension( fName ); + QString fName(myFileName->text()); + if (QFileInfo(fName).suffix().isEmpty()) + fName = autoExtension(fName); - fName = QDir::convertSeparators( fName ); + fName = QDir::convertSeparators(fName); - if ( QFileInfo( fName ).exists() ) - isWritable = QFileInfo( fName ).isWritable(); - else if ( !theIsExistingOnly ) - { - QFileInfo aDirInfo( QFileInfo( fName ).dirPath( true ) ); + if (QFileInfo(fName).exists()) { + isWritable = QFileInfo(fName).isWritable(); + } else if (!theIsExistingOnly) { + QFileInfo aDirInfo(QFileInfo(fName).absolutePath()); isWritable = aDirInfo.isWritable(); - /*if ( QDir( QFileInfo( fName ).dirPath( true ) ).exists() || - QDir().mkdir( QFileInfo( fName ).dirPath( true ) ) ) + /*if (QDir(QFileInfo(fName).dirPath(true)).exists() || + QDir().mkdir(QFileInfo(fName).dirPath(true))) { - QFile aFile( fName ); - if ( aFile.open( IO_WriteOnly ) ) + QFile aFile(fName); + if (aFile.open(IO_WriteOnly)) isWritable = true; else aFile.close(); } */ - } - else + } else { isWritable = true; + } - if ( !isWritable ) - { - QMessageBox::information( SMESHGUI::GetSMESHGUI()->GetDesktop(), - tr( "SMESH_WRN_WARNING" ), tr( "NO_PERMISSION" ), QMessageBox::Ok ); + if (!isWritable) { + SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_WRN_WARNING"), + tr("NO_PERMISSION")); return false; } @@ -758,10 +790,10 @@ bool SMESHGUI_FilterLibraryDlg::isPermissionValid( const bool theIsExistingOnly // name : SMESHGUI_FilterLibraryDlg::isValid // Purpose : Verify validity if entered data //======================================================================= -bool SMESHGUI_FilterLibraryDlg::isValid( const bool theMess ) const +bool SMESHGUI_FilterLibraryDlg::isValid(const bool theMess) const { // verify validity of table - if ( !myTable->IsValid( theMess ) || !isNameValid( theMess ) ) + if (!myTable->IsValid(theMess) || !isNameValid(theMess)) return false; else return true; @@ -769,48 +801,52 @@ bool SMESHGUI_FilterLibraryDlg::isValid( const bool theMess ) const //======================================================================= // name : SMESHGUI_FilterLibraryDlg::onFilterChanged -// Purpose : SLOT. Called when selected filter of library changed +// Purpose : SLOT. Called when selected filter of library is changed //======================================================================= -void SMESHGUI_FilterLibraryDlg::onFilterChanged( const QString& theName ) +void SMESHGUI_FilterLibraryDlg::onFilterChanged() { - if ( myLibrary->_is_nil() ) + QString theName = myListBox->currentItem() ? myListBox->currentItem()->text() : QString::null; + if (myLibrary->_is_nil()) return; // Save parameters of filter if it was changed - if ( !myCurrFilterName.isEmpty() && myTable->IsEditable() ) + if (!myCurrFilterName.isEmpty() && myTable->IsEditable()) { - if ( !isValid( true ) ) + if (!isValid(true)) { - myListBox->blockSignals( true ); - myListBox->setCurrentItem( myCurrFilter ); - myListBox->blockSignals( false ); + myListBox->blockSignals(true); + myListBox->setCurrentRow(myCurrFilter); + myListBox->blockSignals(false); return; } SMESH::Filter_var aFilter = createFilter(); - myLibrary->Replace( myCurrFilterName.latin1(), myName->text().latin1(), aFilter ); + myLibrary->Replace(myCurrFilterName.toLatin1().constData(), + myName->text().toLatin1().constData(), + aFilter); } // Fill table with filter parameters - SMESH::Filter_var aFilter = myLibrary->Copy( theName ); + SMESH::Filter_var aFilter = myLibrary->Copy(theName.toLatin1().constData()); myCurrFilterName = theName; - myCurrFilter = myListBox->currentItem(); - myName->setText( theName ); + myCurrFilter = myListBox->currentRow(); + myName->setText(theName); + - SMESH::Filter::Criteria_var aCriteria; - myTable->Clear( myTable->GetType() ); + myTable->Clear(myTable->GetType()); - if ( !aFilter->GetCriteria( aCriteria ) ) + if (CORBA::is_nil( aFilter ) || !aFilter->GetCriteria(aCriteria)) return; - for ( int i = 0, n = aCriteria->length(); i < n; i++ ) - myTable->AddCriterion( aCriteria[ i ], myTable->GetType() ); + for (int i = 0, n = aCriteria->length(); i < n; i++) + myTable->AddCriterion(aCriteria[ i ], myTable->GetType()); myTable->Update(); + updateControlsVisibility(); // IPAL19974 } //======================================================================= @@ -820,19 +856,20 @@ void SMESHGUI_FilterLibraryDlg::onFilterChanged( const QString& theName ) //======================================================================= void SMESHGUI_FilterLibraryDlg::onReturnPressed() { - QString aName = myListBox->text( myListBox->count() - 1 ); - + QListWidgetItem* item = myListBox->item( myListBox->count()-1 ); + QString aName = item ? item->text() : QString::null; + processNewLibrary(); - if ( myMode == ADD_TO ) + if (myMode == ADD_TO) { - myTable->Copy( (SMESHGUI_FilterTable*)parentWidget() ); + myTable->Copy((SMESHGUI_FilterTable*)parentWidget()); myCurrFilterName = ""; myCurrFilter = -1; - addFilterToLib( aName ); + addFilterToLib(aName); } - isPermissionValid( false ); + isPermissionValid(false); } //======================================================================= @@ -841,15 +878,15 @@ void SMESHGUI_FilterLibraryDlg::onReturnPressed() //======================================================================= void SMESHGUI_FilterLibraryDlg::enableMainButtons() { - /*bool isEnabled = isValid( false ); - if ( myButtons.contains( BTN_OK ) ) - myButtons[ BTN_OK ]->setEnabled( isEnabled ); - else if ( myButtons.contains( BTN_Apply ) ) - myButtons[ BTN_OK ]->setEnabled( isEnabled ); - if ( myButtons.contains( BTN_Cancel ) ) - myButtons[ BTN_Cancel ]->setEnabled( isEnabled ); - else if ( myButtons.contains( BTN_Close ) ) - myButtons[ BTN_Cancel ]->setEnabled( isEnabled ); + /*bool isEnabled = isValid(false); + if (myButtons.contains(BTN_OK)) + myButtons[ BTN_OK ]->setEnabled(isEnabled); + else if (myButtons.contains(BTN_Apply)) + myButtons[ BTN_OK ]->setEnabled(isEnabled); + if (myButtons.contains(BTN_Cancel)) + myButtons[ BTN_Cancel ]->setEnabled(isEnabled); + else if (myButtons.contains(BTN_Close)) + myButtons[ BTN_Cancel ]->setEnabled(isEnabled); */ } @@ -857,23 +894,23 @@ void SMESHGUI_FilterLibraryDlg::enableMainButtons() // name : SMESHGUI_FilterLibraryDlg::createFilter // Purpose : Cerate filter in accordance with library //======================================================================= -SMESH::Filter_ptr SMESHGUI_FilterLibraryDlg::createFilter( const int theType ) +SMESH::Filter_ptr SMESHGUI_FilterLibraryDlg::createFilter(const int theType) { - int n = myTable->NumRows( theType ); + int n = myTable->NumRows(theType); SMESH::Filter::Criteria_var aCriteria = new SMESH::Filter::Criteria; - aCriteria->length( n ); + aCriteria->length(n); - for ( int i = 0; i < n; i++ ) + for (int i = 0; i < n; i++) { SMESH::Filter::Criterion aCriterion = SMESHGUI_FilterDlg::createCriterion(); - myTable->GetCriterion( i, aCriterion ); + myTable->GetCriterion(i, aCriterion); aCriteria[ i ] = aCriterion; } SMESH::FilterManager_var aFilterMgr = SMESH::GetFilterManager(); SMESH::Filter_var aFilter = aFilterMgr->CreateFilter(); - aFilter->SetCriteria( aCriteria.inout() ); + aFilter->SetCriteria(aCriteria.in()); return aFilter._retn(); } @@ -886,29 +923,31 @@ SMESH::Filter_ptr SMESHGUI_FilterLibraryDlg::createFilter( const int theType ) void SMESHGUI_FilterLibraryDlg::onAddBtnPressed() { // Save parameters of filter if it was changed - if ( !myCurrFilterName.isEmpty() && myTable->IsEditable() ) + if (!myCurrFilterName.isEmpty() && myTable->IsEditable()) { - if ( !isValid( true ) ) + if (!isValid(true)) return; SMESH::Filter_var aFilter = createFilter(); - myLibrary->Replace( myCurrFilterName.latin1(), myName->text().latin1(), aFilter ); + myLibrary->Replace(myCurrFilterName.toLatin1().constData(), + myName->text().toLatin1().constData(), + aFilter); } + myTable->Clear(myTable->GetType()); - addFilterToLib( getDefaultFilterName() ); + addFilterToLib(getDefaultFilterName()); } //======================================================================= -// name : SMESHGUI_FilterLibraryDlg::onAddBtnPressed +// name : onAddBtnPressed() // Purpose : SLOT. Called when "Add" button pressed // Add new filter to the end of library //======================================================================= -void SMESHGUI_FilterLibraryDlg::addFilterToLib( const QString& theName ) +void SMESHGUI_FilterLibraryDlg::addFilterToLib (const QString& theName) { - if ( myLibrary->_is_nil() ) - { - QMessageBox::information( SMESHGUI::GetSMESHGUI()->GetDesktop(), - tr( "SMESH_WRN_WARNING" ), tr( "LIBRARY_IS_NOT_LOADED" ), QMessageBox::Ok ); + if (myLibrary->_is_nil()) { + SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_WRN_WARNING"), + tr("LIBRARY_IS_NOT_LOADED")); return; } @@ -916,10 +955,10 @@ void SMESHGUI_FilterLibraryDlg::addFilterToLib( const QString& theName ) SMESH::Filter_var aFilter = createFilter(); // if name of filter already exist in the library assign default name for the filter - QString aName( theName ); + QString aName(theName); SMESH::string_array_var aNames = myLibrary->GetAllNames(); - for ( int i = 0, n = aNames->length(); i < n; i++ ) - if ( aName == QString( aNames[ i ] ) ) + for (int i = 0, n = aNames->length(); i < n; i++) + if (aName == QString(aNames[ i ])) { aName = getDefaultFilterName(); break; @@ -927,23 +966,22 @@ void SMESHGUI_FilterLibraryDlg::addFilterToLib( const QString& theName ) // add new filter in library bool aResult = !aFilter->GetPredicate()->_is_nil() - ? myLibrary->Add( aName.latin1(), aFilter ) - : myLibrary->AddEmpty( aName.latin1(), (SMESH::ElementType)myTable->GetType() ); - - if ( !aResult ) - { - QMessageBox::information( SMESHGUI::GetSMESHGUI()->GetDesktop(), - tr( "SMESH_ERROR" ), tr( "ERROR_OF_ADDING" ), QMessageBox::Ok ); + ? myLibrary->Add(aName.toLatin1().constData(), aFilter) + : myLibrary->AddEmpty(aName.toLatin1().constData(), (SMESH::ElementType)myTable->GetType()); + + if (!aResult) { + SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_ERROR"), + tr("ERROR_OF_ADDING")); } updateList(); myCurrFilterName = ""; myCurrFilter = -1; - setSelected( aName ); + setSelected(aName); - if ( theName != aName ) - QMessageBox::information( SMESHGUI::GetSMESHGUI()->GetDesktop(), tr( "SMESH_WARNING" ), - tr( "ASSIGN_NEW_NAME" ).arg( theName ).arg( aName ) , QMessageBox::Ok ); + if (theName != aName) + SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_WARNING"), + tr("ASSIGN_NEW_NAME").arg(theName).arg(aName)); } //======================================================================= @@ -953,10 +991,10 @@ void SMESHGUI_FilterLibraryDlg::addFilterToLib( const QString& theName ) QString& SMESHGUI_FilterLibraryDlg::getDefaultLibraryName() const { static QString aName; - if ( aName.isEmpty() ) + if (aName.isEmpty()) { - QString aHomeDir = QDir( QDir::home() ).absPath(); - aName = aHomeDir + "/" + tr ( "LIB_NAME" ); + QString aHomeDir = QDir(QDir::home()).absolutePath(); + aName = aHomeDir + "/" + tr ("LIB_NAME"); } return aName; } @@ -969,35 +1007,35 @@ QString SMESHGUI_FilterLibraryDlg::getDefaultFilterName() const { QString aName; - if ( myTable->GetType() == SMESH::NODE ) - aName = tr( "NODE" ); - else if ( myTable->GetType() == SMESH::EDGE ) - aName = tr( "EDGE" ); - else if ( myTable->GetType() == SMESH::FACE ) - aName = tr( "FACE" ); - else if ( myTable->GetType() == SMESH::VOLUME ) - aName = tr( "VOLUME" ); - else if ( myTable->GetType() == SMESH::ALL ) - aName = tr( "ELEMENT" ); - else - aName = tr( "SELECTION" ); + if (myTable->GetType() == SMESH::NODE) + aName = tr("NODE"); + else if (myTable->GetType() == SMESH::EDGE) + aName = tr("EDGE"); + else if (myTable->GetType() == SMESH::FACE) + aName = tr("FACE"); + else if (myTable->GetType() == SMESH::VOLUME) + aName = tr("VOLUME"); + else if (myTable->GetType() == SMESH::ALL) + aName = tr("ELEMENT"); + else + aName = tr("SELECTION"); - aName += tr( "FILTER" ); + aName += tr("FILTER"); QMap< QString, int > anAllNames; SMESH::string_array_var aNames = myLibrary->GetAllNames(); - for( int i = 0, n = aNames->length(); i < n; i++ ) - anAllNames[ QString( aNames[ i ] ) ] = -1; + for(int i = 0, n = aNames->length(); i < n; i++) + anAllNames[ QString(aNames[ i ]) ] = -1; bool isNotValid = true; int k = 1; QString aNewName; - while ( isNotValid ) + while (isNotValid) { isNotValid = false; - aNewName = aName + "_" + QString( "%1" ).arg( k ); - if ( anAllNames.contains( aNewName ) ) + aNewName = aName + "_" + QString("%1").arg(k); + if (anAllNames.contains(aNewName)) { isNotValid = true; k++; @@ -1011,12 +1049,12 @@ QString SMESHGUI_FilterLibraryDlg::getDefaultFilterName() const // name : SMESHGUI_FilterLibraryDlg::setSelected // Purpose : set selected item in list box containing filters //======================================================================= -bool SMESHGUI_FilterLibraryDlg::setSelected( const QString& theName ) +bool SMESHGUI_FilterLibraryDlg::setSelected(const QString& theName) { - int anIndex = getIndex( theName ); - if ( anIndex != -1 ) + int anIndex = getIndex(theName); + if (anIndex != -1) { - myListBox->setCurrentItem( anIndex ); + myListBox->setCurrentRow(anIndex); myCurrFilterName = theName; myCurrFilter = anIndex; } @@ -1027,10 +1065,10 @@ bool SMESHGUI_FilterLibraryDlg::setSelected( const QString& theName ) // name : SMESHGUI_FilterLibraryDlg::getIndex // Purpose : Get index of the filter in list box //======================================================================= -int SMESHGUI_FilterLibraryDlg::getIndex( const QString& theName ) const +int SMESHGUI_FilterLibraryDlg::getIndex(const QString& theName) const { - for ( int i = 0, n = myListBox->count(); i < n; i++ ) - if ( myListBox->text( i ) == theName) + for (int i = 0, n = myListBox->count(); i < n; i++) + if (myListBox->item(i)->text() == theName) return i; return -1; } @@ -1041,67 +1079,62 @@ int SMESHGUI_FilterLibraryDlg::getIndex( const QString& theName ) const //======================================================================= void SMESHGUI_FilterLibraryDlg::onDeleteBtnPressed() { - if ( myLibrary->_is_nil() ) - { - QMessageBox::information( SMESHGUI::GetSMESHGUI()->GetDesktop(), - tr( "SMESH_WRN_WARNING" ), tr( "LIBRARY_IS_NOT_LOADED" ), QMessageBox::Ok ); + if (myLibrary->_is_nil()) { + SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_WRN_WARNING"), + tr("LIBRARY_IS_NOT_LOADED")); return; } - int anIndex = getIndex( myCurrFilterName ); + int anIndex = getIndex(myCurrFilterName); - if ( anIndex == -1 || !myLibrary->Delete( myCurrFilterName.latin1() ) ) - { - QMessageBox::information( SMESHGUI::GetSMESHGUI()->GetDesktop(), - tr( "SMESH_ERROR" ), tr( "ERROR_OF_DELETING" ), QMessageBox::Ok ); - } - else - { + if (anIndex == -1 || !myLibrary->Delete(myCurrFilterName.toLatin1().constData())) { + SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_ERROR"), + tr("ERROR_OF_DELETING")); + } else { myCurrFilterName = ""; - myCurrFilterName = -1; - myListBox->removeItem( anIndex ); - - if ( anIndex >= 1 ) - myListBox->setSelected( anIndex - 1, true ); - else if ( anIndex == 0 && myListBox->count() > 0 ) - myListBox->setSelected( 0, true ); + myCurrFilter = -1; + delete myListBox->item(anIndex); + + if (anIndex >= 1) + myListBox->item(anIndex - 1)->setSelected(true); + else if (anIndex == 0 && myListBox->count() > 0) + myListBox->item(0)->setSelected(true); else myTable->Clear(); } - myTable->SetEnabled( myListBox->count() > 0 ); - if ( myListBox->count() == 0 ) - { - myName->setText( "" ); - myName->setEnabled( false ); + myTable->SetEnabled(myListBox->count() > 0); + if (myListBox->count() == 0) { + myName->setText(""); + myName->setEnabled(false); } } //======================================================================= -// name : SMESHGUI_FilterLibraryDlg::onFilterNameChanged +// name : onFilterNameChanged() // Purpose : SLOT. Called when name of filter changed // Change filter name in list box //======================================================================= -void SMESHGUI_FilterLibraryDlg::onFilterNameChanged( const QString& theName ) +void SMESHGUI_FilterLibraryDlg::onFilterNameChanged (const QString& theName) { - int aCurrItem = myListBox->currentItem(); - if ( aCurrItem == -1 ) + int aCurrItem = myListBox->currentRow(); + if (aCurrItem == -1) return; - myListBox->blockSignals( true ); - myListBox->changeItem( theName, aCurrItem ); - myListBox->blockSignals( false ); + myListBox->blockSignals(true); + myListBox->item(aCurrItem)->setText(theName); + myListBox->blockSignals(false); } //======================================================================= // name : SMESHGUI_FilterLibraryDlg::SetTable // Purpose : Set table //======================================================================= -void SMESHGUI_FilterLibraryDlg::SetTable( const SMESHGUI_FilterTable* theTable ) +void SMESHGUI_FilterLibraryDlg::SetTable(const SMESHGUI_FilterTable* theTable) { - myTable->Copy( theTable ); - myName->setText( getDefaultFilterName() ); - addFilterToLib( myName->text() ); + myTable->Copy(theTable); + myName->setText(getDefaultFilterName()); + addFilterToLib(myName->text()); myTable->Update(); } @@ -1119,41 +1152,123 @@ const SMESHGUI_FilterTable* SMESHGUI_FilterLibraryDlg::GetTable() const // name : SMESHGUI_FilterLibraryDlg::onEntityTypeChanged // Purpose : SLOT. Called when entiyt type changed //======================================================================= -void SMESHGUI_FilterLibraryDlg::onEntityTypeChanged( const int theType ) +void SMESHGUI_FilterLibraryDlg::onEntityTypeChanged(const int theType) { - if ( myLibrary->_is_nil() ) + if (myLibrary->_is_nil()) return; myName->clear(); myCurrFilterName = ""; myCurrFilter = -1; updateList(); - if ( myListBox->count() ) - myListBox->setCurrentItem( 0 ); + if (myListBox->count()) + myListBox->setCurrentItem(0); } //======================================================================= // name : SMESHGUI_FilterLibraryDlg::onNeedValidation -// Purpose : +// Purpose : //======================================================================= void SMESHGUI_FilterLibraryDlg::onNeedValidation() { - if ( !myCurrFilterName.isEmpty() ) + if (!myCurrFilterName.isEmpty()) { - bool valid = isValid( true ); - myTable->SetValidity( valid ); + bool valid = isValid(true); + myTable->SetValidity(valid); - if ( valid ) + if (valid) { - SMESH::Filter_var aFilter = createFilter( myTable->GetType() ); - myLibrary->Replace( myCurrFilterName.latin1(), myName->text().latin1(), aFilter ); + SMESH::Filter_var aFilter = createFilter(myTable->GetType()); + myLibrary->Replace(myCurrFilterName.toLatin1().constData(), + myName->text().toLatin1().constData(), + aFilter); } } } +//======================================================================= +// name : SMESHGUI_FilterLibraryDlg::onSelectionDone +// Purpose : SLOT called when selection changed. +// If current cell corresponds to the threshold value of +// BelongToGeom criterion name of selected object is set in this cell +//======================================================================= + +void SMESHGUI_FilterLibraryDlg::onSelectionDone() +{ + SALOME_ListIO aList; + if( LightApp_SelectionMgr *aSel = SMESHGUI::selectionMgr() ) + aSel->selectedObjects( aList ); + int aRow, aCol; + if (aList.Extent() != 1 || !myTable->CurrentCell(aRow, aCol)) + return; + const int type = myTable->GetCriterionType(aRow); + QList types; + types << SMESH::FT_BelongToGeom << SMESH::FT_BelongToPlane + << SMESH::FT_BelongToCylinder << SMESH::FT_BelongToGenSurface + << SMESH::FT_LyingOnGeom << SMESH::FT_CoplanarFaces + << SMESH::FT_ConnectedElements << SMESH::FT_BelongToMeshGroup; + if ( !types.contains( type )) + return; + Handle(SALOME_InteractiveObject) anIO = aList.First(); + switch ( type ) + { + case SMESH::FT_CoplanarFaces: // get ID of a selected mesh face + { + QString aString; + int nbElems = SMESH::GetNameOfSelectedElements(SMESH::GetSelector(), anIO, aString); + if (nbElems == 1) + myTable->SetThreshold(aRow, aString); + break; + } + case SMESH::FT_ConnectedElements: // get either VERTEX or a node ID + { + GEOM::GEOM_Object_var anObj = SMESH::IObjectToInterface(anIO); + if (!anObj->_is_nil()) + { + myTable->SetThreshold(aRow, GEOMBase::GetName(anObj)); + myTable->SetID (aRow, anIO->getEntry()); + } + else + { + QString aString; + int nbElems = SMESH::GetNameOfSelectedElements(SMESH::GetSelector(), anIO, aString); + if (nbElems == 1) + myTable->SetThreshold(aRow, aString); + } + break; + } + case SMESH::FT_BelongToMeshGroup: // get a group name and IOR + { + myTable->SetThreshold(aRow, anIO->getName() ); + } + default: // get a GEOM object + { + GEOM::GEOM_Object_var anObj = SMESH::IObjectToInterface(anIO); + if (!anObj->_is_nil()) + { + myTable->SetThreshold(aRow, GEOMBase::GetName(anObj)); + myTable->SetID (aRow, anIO->getEntry()); + } + } + } +} +//================================================================================= +// function : keyPressEvent() +// purpose : +//================================================================================= +void SMESHGUI_FilterLibraryDlg::keyPressEvent( QKeyEvent* e ) +{ + QDialog::keyPressEvent( e ); + if ( e->isAccepted() ) + return; + if ( e->key() == Qt::Key_F1 ) { + e->accept(); + onHelp(); + } +}