X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_CreateHypothesesDlg.cxx;h=68d2f10c8844c1230c7f31d15ee8c5e6d80de649;hp=fd494fb60bc3562132467df521c9021614ae3fa6;hb=d89db6381da9e4b1a7827239bd6997b06992a73d;hpb=c3bf92bd87b770fd81631a3853f7f5bb1ac6a4e8 diff --git a/src/SMESHGUI/SMESHGUI_CreateHypothesesDlg.cxx b/src/SMESHGUI/SMESHGUI_CreateHypothesesDlg.cxx index fd494fb60..68d2f10c8 100644 --- a/src/SMESHGUI/SMESHGUI_CreateHypothesesDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_CreateHypothesesDlg.cxx @@ -1,21 +1,21 @@ // SMESH SMESHGUI : GUI for SMESH component // // Copyright (C) 2003 CEA -// -// 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 -// +// +// 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.org // // @@ -25,13 +25,18 @@ // Module : SMESH // $Header$ -using namespace std; #include "SMESHGUI_CreateHypothesesDlg.h" + +#include "SMESHGUI_HypothesesUtils.h" +#include "SMESHGUI_Hypotheses.h" +#include "SMESHGUI_Utils.h" #include "SMESHGUI.h" + +#include "SUIT_Desktop.h" +#include "SUIT_ResourceMgr.h" + #include "SALOME_ListIteratorOfListIO.hxx" -#include "QAD_Application.h" -#include "QAD_Desktop.h" #include "utilities.h" // QT Includes @@ -42,83 +47,85 @@ using namespace std; #include #include +using namespace std; + //================================================================================= -// class : SMESHGUI_CreateHypothesesDlg() -// purpose : Constructs a SMESHGUI_CreateHypothesesDlg which is a child of 'parent', with the +// function : SMESHGUI_CreateHypothesesDlg() +// purpose : Constructs a SMESHGUI_CreateHypothesesDlg which is a child of 'parent', with the // name 'name' and widget flags set to 'f'. // The dialog will by default be modeless, unless you set 'modal' to // TRUE to construct a modal dialog. //================================================================================= -SMESHGUI_CreateHypothesesDlg::SMESHGUI_CreateHypothesesDlg (QWidget* parent, +SMESHGUI_CreateHypothesesDlg::SMESHGUI_CreateHypothesesDlg (SMESHGUI* theModule, const char* name, bool modal, bool isAlgo) - : QDialog( parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose ), - myIsAlgo( isAlgo ) + : QDialog( SMESH::GetDesktop( theModule ), name, modal, WStyle_Customize | WStyle_NormalBorder | + WStyle_Title | WStyle_SysMenu | WDestructiveClose), + myIsAlgo(isAlgo), + mySMESHGUI( theModule ) { - MESSAGE("SMESHGUI_CreateHypothesesDlg"); - - if ( !name ) - setName( "SMESHGUI_CreateHypothesesDlg" ); - setCaption( isAlgo ? tr( "SMESH_CREATE_ALGORITHMS" ) : tr( "SMESH_CREATE_HYPOTHESES" ) ); - setSizeGripEnabled( TRUE ); + if (!name) + setName("SMESHGUI_CreateHypothesesDlg"); + setCaption(isAlgo ? tr("SMESH_CREATE_ALGORITHMS" ) : tr("SMESH_CREATE_HYPOTHESES" )); + setSizeGripEnabled(TRUE); - QGridLayout* SMESHGUI_CreateHypothesesDlgLayout = new QGridLayout( this ); - SMESHGUI_CreateHypothesesDlgLayout->setSpacing( 6 ); - SMESHGUI_CreateHypothesesDlgLayout->setMargin( 11 ); + QGridLayout* SMESHGUI_CreateHypothesesDlgLayout = new QGridLayout(this); + SMESHGUI_CreateHypothesesDlgLayout->setSpacing(6); + SMESHGUI_CreateHypothesesDlgLayout->setMargin(11); /***************************************************************/ - GroupAlgorithms = new QGroupBox( this, "GroupAlgorithms" ); - GroupAlgorithms->setTitle( isAlgo ? tr("SMESH_AVAILABLE_ALGORITHMS") : tr("SMESH_AVAILABLE_HYPOTHESES") ); - GroupAlgorithms->setColumnLayout(0, Qt::Vertical ); - GroupAlgorithms->layout()->setSpacing( 0 ); - GroupAlgorithms->layout()->setMargin( 0 ); - - QGridLayout* hypLayout = new QGridLayout( GroupAlgorithms->layout() ); - hypLayout->setGeometry( QRect( 12, 18, 139, 250 ) ); - hypLayout->setAlignment( Qt::AlignTop ); - hypLayout->setSpacing( 6 ); - hypLayout->setMargin( 11 ); - - ListAlgoDefinition = new QListView( GroupAlgorithms, "ListAlgoDefinition" ); - ListAlgoDefinition->setMinimumSize( 400, 200 ); + GroupAlgorithms = new QGroupBox(this, "GroupAlgorithms"); + GroupAlgorithms->setTitle(isAlgo ? tr("SMESH_AVAILABLE_ALGORITHMS") : tr("SMESH_AVAILABLE_HYPOTHESES")); + GroupAlgorithms->setColumnLayout(0, Qt::Vertical); + GroupAlgorithms->layout()->setSpacing(0); + GroupAlgorithms->layout()->setMargin(0); + + QGridLayout* hypLayout = new QGridLayout(GroupAlgorithms->layout()); + hypLayout->setGeometry(QRect(12, 18, 139, 250)); + hypLayout->setAlignment(Qt::AlignTop); + hypLayout->setSpacing(6); + hypLayout->setMargin(11); + + ListAlgoDefinition = new QListView(GroupAlgorithms, "ListAlgoDefinition"); + ListAlgoDefinition->setMinimumSize(400, 200); ListAlgoDefinition->addColumn(""); ListAlgoDefinition->header()->hide(); ListAlgoDefinition->setSelectionMode(QListView::Single); ListAlgoDefinition->setResizeMode(QListView::AllColumns); - ListAlgoDefinition->setRootIsDecorated( true ); + ListAlgoDefinition->setRootIsDecorated(true); - hypLayout->addWidget( ListAlgoDefinition, 0, 0 ); - SMESHGUI_CreateHypothesesDlgLayout->addWidget( GroupAlgorithms, 0, 0 ); + hypLayout->addWidget(ListAlgoDefinition, 0, 0); + SMESHGUI_CreateHypothesesDlgLayout->addWidget(GroupAlgorithms, 0, 0); /***************************************************************/ - GroupButtons = new QGroupBox( this, "GroupButtons" ); - GroupButtons->setColumnLayout( 0, Qt::Vertical ); - GroupButtons->layout()->setSpacing( 0 ); - GroupButtons->layout()->setMargin( 0 ); - QGridLayout* GroupButtonsLayout = new QGridLayout( GroupButtons->layout() ); - GroupButtonsLayout->setAlignment( Qt::AlignTop ); - GroupButtonsLayout->setSpacing( 6 ); - GroupButtonsLayout->setMargin( 11 ); - - buttonApply = new QPushButton( GroupButtons, "buttonApply" ); - buttonApply->setText( tr( "SMESH_BUT_CREATE" ) ); - buttonApply->setAutoDefault( TRUE ); - buttonApply->setDefault( FALSE ); - buttonApply->setEnabled( FALSE ) ; - GroupButtonsLayout->addWidget( buttonApply, 0, 1 ); - - QSpacerItem* spacer_9 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - GroupButtonsLayout->addItem( spacer_9, 0, 2 ); - - buttonCancel = new QPushButton( GroupButtons, "buttonCancel" ); - buttonCancel->setText( tr( "SMESH_BUT_CLOSE" ) ); - buttonCancel->setAutoDefault( TRUE ); - buttonCancel->setDefault( TRUE ); - buttonCancel->setEnabled( TRUE ) ; - GroupButtonsLayout->addWidget( buttonCancel, 0, 3 ); - - SMESHGUI_CreateHypothesesDlgLayout->addWidget( GroupButtons, 1, 0 ); + GroupButtons = new QGroupBox(this, "GroupButtons"); + GroupButtons->setColumnLayout(0, Qt::Vertical); + GroupButtons->layout()->setSpacing(0); + GroupButtons->layout()->setMargin(0); + QGridLayout* GroupButtonsLayout = new QGridLayout(GroupButtons->layout()); + GroupButtonsLayout->setAlignment(Qt::AlignTop); + GroupButtonsLayout->setSpacing(6); + GroupButtonsLayout->setMargin(11); + + buttonApply = new QPushButton(GroupButtons, "buttonApply"); + buttonApply->setText(tr("SMESH_BUT_CREATE" )); + buttonApply->setAutoDefault(TRUE); + buttonApply->setDefault(FALSE); + buttonApply->setEnabled(FALSE); + GroupButtonsLayout->addWidget(buttonApply, 0, 1); + + QSpacerItem* spacer_9 = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); + GroupButtonsLayout->addItem(spacer_9, 0, 2); + + buttonCancel = new QPushButton(GroupButtons, "buttonCancel"); + buttonCancel->setText(tr("SMESH_BUT_CLOSE" )); + buttonCancel->setAutoDefault(TRUE); + buttonCancel->setDefault(TRUE); + buttonCancel->setEnabled(TRUE); + GroupButtonsLayout->addWidget(buttonCancel, 0, 3); + + SMESHGUI_CreateHypothesesDlgLayout->addWidget(GroupButtons, 1, 0); /***************************************************************/ Init(); @@ -130,7 +137,7 @@ SMESHGUI_CreateHypothesesDlg::SMESHGUI_CreateHypothesesDlg (QWidget* parent, //================================================================================= SMESHGUI_CreateHypothesesDlg::~SMESHGUI_CreateHypothesesDlg() { - // no need to delete child widgets, Qt does it all for us + // no need to delete child widgets, Qt does it all for us } //================================================================================= @@ -139,25 +146,24 @@ SMESHGUI_CreateHypothesesDlg::~SMESHGUI_CreateHypothesesDlg() //================================================================================= void SMESHGUI_CreateHypothesesDlg::Init() { - mySMESHGUI = SMESHGUI::GetSMESHGUI() ; - mySMESHGUI->SetActiveDialogBox( (QDialog*)this ) ; + mySMESHGUI->SetActiveDialogBox((QDialog*)this); InitAlgoDefinition(); /* signals and slots connections */ - connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( ClickOnCancel() ) ) ; - connect( buttonApply , SIGNAL( clicked() ), this, SLOT( ClickOnApply() ) ) ; - -// connect( mySMESHGUI, SIGNAL ( SignalDeactivateActiveDialog() ), this, SLOT( DeactivateActiveDialog() ) ) ; - connect( mySMESHGUI, SIGNAL ( SignalCloseAllDialogs() ), this, SLOT( ClickOnCancel() ) ) ; - - connect( ListAlgoDefinition, SIGNAL( selectionChanged() ), this, SLOT( onSelectionChanged() ) ); - connect( ListAlgoDefinition, SIGNAL( doubleClicked(QListViewItem*) ), this, SLOT( onDoubleClicked(QListViewItem*) ) ); - - int x, y ; - mySMESHGUI->DefineDlgPosition( this, x, y ) ; - this->move( x, y ) ; - this->show() ; + connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); + connect(buttonApply , SIGNAL(clicked()), this, SLOT(ClickOnApply())); + +// connect(mySMESHGUI, SIGNAL (SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); + connect(mySMESHGUI, SIGNAL (SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); + + connect(ListAlgoDefinition, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged())); + connect(ListAlgoDefinition, SIGNAL(doubleClicked(QListViewItem*)), this, SLOT(onDoubleClicked(QListViewItem*))); + + int x, y; + mySMESHGUI->DefineDlgPosition(this, x, y); + this->move(x, y); + this->show(); } //================================================================================= @@ -166,7 +172,7 @@ void SMESHGUI_CreateHypothesesDlg::Init() //================================================================================= void SMESHGUI_CreateHypothesesDlg::ClickOnCancel() { - close() ; + close(); } //================================================================================= @@ -175,30 +181,29 @@ void SMESHGUI_CreateHypothesesDlg::ClickOnCancel() //================================================================================= void SMESHGUI_CreateHypothesesDlg::ClickOnApply() { + if (mySMESHGUI->isActiveStudyLocked()) + return; QListViewItem* item = ListAlgoDefinition->selectedItem(); - if ( !item ) + if (!item) return; - QString aHypType = item->text( 1 ); + QString aHypType = item->text(1); MESSAGE("Apply " << aHypType); char* sHypType = (char*)aHypType.latin1(); - HypothesisData* aHypData = mySMESHGUI->GetHypothesisData(sHypType); - if ( !aHypData ) + HypothesisData* aHypData = SMESH::GetHypothesisData(sHypType); + if (!aHypData) return; QString aClientLibName = aHypData->ClientLibName; MESSAGE("Client lib name = " << aClientLibName); - if (aClientLibName == "") - { + if (aClientLibName == "") { // Call hypothesis creation server method (without GUI) QString aHypName = aHypData->Label; - mySMESHGUI->CreateHypothesis(sHypType, aHypName, myIsAlgo); - } - else - { + SMESH::CreateHypothesis(sHypType, aHypName, myIsAlgo); + } else { // Get hypotheses creator client (GUI) SMESHGUI_GenericHypothesisCreator* aCreator = - mySMESHGUI->GetHypothesisCreator(sHypType); + SMESH::GetHypothesisCreator(sHypType); // Create hypothesis/algorithm aCreator->CreateHypothesis(myIsAlgo, this); @@ -214,29 +219,29 @@ void SMESHGUI_CreateHypothesesDlg::ClickOnApply() //================================================================================= void SMESHGUI_CreateHypothesesDlg::ActivateThisDialog() { - mySMESHGUI->EmitSignalDeactivateDialog() ; - GroupButtons->setEnabled(true) ; - return ; + mySMESHGUI->EmitSignalDeactivateDialog(); + GroupButtons->setEnabled(true); + return; } //================================================================================= // function : enterEvent() // purpose : //================================================================================= -void SMESHGUI_CreateHypothesesDlg::enterEvent(QEvent* e) +void SMESHGUI_CreateHypothesesDlg::enterEvent (QEvent*) { - ActivateThisDialog() ; - return ; + ActivateThisDialog(); + return; } //================================================================================= // function : closeEvent() // purpose : //================================================================================= -void SMESHGUI_CreateHypothesesDlg::closeEvent( QCloseEvent* e ) +void SMESHGUI_CreateHypothesesDlg::closeEvent (QCloseEvent* e) { mySMESHGUI->ResetState(); - QDialog::closeEvent( e ); + QDialog::closeEvent(e); } //================================================================================= @@ -246,16 +251,16 @@ void SMESHGUI_CreateHypothesesDlg::closeEvent( QCloseEvent* e ) void SMESHGUI_CreateHypothesesDlg::onSelectionChanged() { QListViewItem* item = ListAlgoDefinition->selectedItem(); - buttonApply->setEnabled( item && item->depth() > 0 ) ; + buttonApply->setEnabled(item && item->depth() > 0); } //================================================================================= // function : onDoubleClicked() // purpose : //================================================================================= -void SMESHGUI_CreateHypothesesDlg::onDoubleClicked(QListViewItem* i) +void SMESHGUI_CreateHypothesesDlg::onDoubleClicked (QListViewItem* i) { - if ( i && i->depth() > 0 ) + if (i && i->depth() > 0) this->ClickOnApply(); } @@ -266,25 +271,24 @@ void SMESHGUI_CreateHypothesesDlg::onDoubleClicked(QListViewItem* i) void SMESHGUI_CreateHypothesesDlg::InitAlgoDefinition() { ListAlgoDefinition->clear(); - QStringList HypList = mySMESHGUI->GetAvailableHypotheses(myIsAlgo); - for ( int i = 0; i < HypList.count(); ++i ) { - HypothesisData* aHypData = mySMESHGUI->GetHypothesisData( HypList[i] ); + QStringList HypList = SMESH::GetAvailableHypotheses(myIsAlgo); + for (int i = 0; i < HypList.count(); ++i) { + HypothesisData* aHypData = SMESH::GetHypothesisData(HypList[i]); QListViewItem* parentItem = 0; QListViewItem* childItem = ListAlgoDefinition->firstChild(); - while ( childItem ) { - if ( childItem->text(0) == aHypData->PluginName ) { + while (childItem) { + if (childItem->text(0) == aHypData->PluginName) { parentItem = childItem; break; } childItem = childItem->nextSibling(); } - if ( !parentItem ) - parentItem = new QListViewItem( ListAlgoDefinition, aHypData->PluginName ); - parentItem->setOpen( true ); - QListViewItem* aItem = new QListViewItem( parentItem, aHypData->Label, HypList[i] ); - QPixmap aPixMap (QAD_Desktop::getResourceManager()->loadPixmap - ("SMESH", tr(aHypData->IconId))); - if ( !aPixMap.isNull() ) - aItem->setPixmap( 0, aPixMap ); + if (!parentItem) + parentItem = new QListViewItem(ListAlgoDefinition, aHypData->PluginName); + parentItem->setOpen(true); + QListViewItem* aItem = new QListViewItem(parentItem, aHypData->Label, HypList[i]); + QPixmap aPixMap (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr(aHypData->IconId))); + if (!aPixMap.isNull()) + aItem->setPixmap(0, aPixMap); } }