+// Copyright (C) 2005 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
#include "SMESHGUI_Hypotheses.h"
#include "SMESHGUI.h"
#include <SALOMEDSClient_Study.hxx>
#include <utilities.h>
+#include <SMESHGUI.h>
+
#include <QtxIntSpinBox.h>
+#include <SUIT_Session.h>
+#include <SUIT_MessageBox.h>
+
+#include <LightApp_Application.h>
+
#include <qframe.h>
#include <qlayout.h>
#include <qlineedit.h>
#include <qpixmap.h>
#include <qgroupbox.h>
+#include <qapplication.h>
+
SMESHGUI_GenericHypothesisCreator::SMESHGUI_GenericHypothesisCreator( const QString& aHypType )
-: myHypType( aHypType ),
- myIsCreate( false )
+ : myHypType( aHypType ), myIsCreate( false ), myDlg( 0 )
{
}
bool res = true;
myHypo = SMESH::SMESH_Hypothesis::_duplicate( h );
+ SMESHGUI_HypothesisDlg* Dlg =
+ new SMESHGUI_HypothesisDlg( const_cast<SMESHGUI_GenericHypothesisCreator*>( this ), parent );
+ myDlg = Dlg;
QFrame* fr = buildFrame();
if( fr )
{
- SMESHGUI_HypothesisDlg* dlg =
- new SMESHGUI_HypothesisDlg( const_cast<SMESHGUI_GenericHypothesisCreator*>( this ), parent );
- dlg->setCustomFrame( fr );
- dlg->setCaption( caption() );
- dlg->setHIcon( icon() );
- dlg->setType( type() );
+ Dlg->setCustomFrame( fr );
+ Dlg->setCaption( caption() );
+ Dlg->setHIcon( icon() );
+ Dlg->setType( type() );
retrieveParams();
- res = dlg->exec()==QDialog::Accepted;
+ Dlg->show();
+ //connect(myDlg, SIGNAL( closed() ), this, SLOT( onDlgClosed() ));
+ qApp->enter_loop(); // make myDlg not modal
+// res = myDlg->exec()==QDialog::Accepted;
+ res = myDlg->result();
if( res ) {
QString paramValues = storeParams();
if ( !paramValues.isEmpty() ) {
SMESH::SetValue( SHyp, paramValues );
}
}
- delete dlg;
}
+ delete Dlg; myDlg = 0;
changeWidgets().clear();
myHypo = SMESH::SMESH_Hypothesis::_nil();
myInitParamsHypo = SMESH::SMESH_Hypothesis::_nil();
return res;
}
-
+
QFrame* SMESHGUI_GenericHypothesisCreator::buildStdFrame()
{
if( CORBA::is_nil( hypothesis() ) )
QLabel* lab = new QLabel( (*anIt).myName, GroupC1 );
GroupC1Layout->addWidget( lab, i, 0 );
- QWidget* w = getCustomWidget( *anIt, GroupC1 );
+ QWidget* w = getCustomWidget( *anIt, GroupC1, i );
if ( !w )
switch( (*anIt).myValue.type() )
{
{
QString valueStr = "";
ListOfStdParams::const_iterator param = params.begin(), aLast = params.end();
+ uint len0 = 0;
for( int i=0; param!=aLast; param++, i++ )
{
- if ( i > 0 )
+ if ( valueStr.length() > len0 ) {
valueStr += "; ";
+ len0 = valueStr.length();
+ }
switch( (*param).myValue.type() )
{
case QVariant::Int:
return QString();
}
QWidget* SMESHGUI_GenericHypothesisCreator::getCustomWidget( const StdParam & /*param*/,
- QWidget* /*parent*/) const
+ QWidget* /*parent*/,
+ const int /*index*/) const
{
return 0;
}
return false;
}
+void SMESHGUI_GenericHypothesisCreator::onReject()
+{
+}
+
SMESHGUI_HypothesisDlg::SMESHGUI_HypothesisDlg( SMESHGUI_GenericHypothesisCreator* creator, QWidget* parent )
-: QtxDialog( parent, "", true, true, QtxDialog::OKCancel ),
+: QtxDialog( parent, "", false, true ),
myCreator( creator )
{
setMinimumSize( 300, height() );
titLay->addStretch( 1 );
myLayout->addWidget( titFrame, 0 );
+
+ QString aHypType = creator->hypType();
+ if ( aHypType == "LocalLength" )
+ myHelpFileName = "/files/arithmetic_1d.htm#Average_length";
+ else if ( aHypType == "Arithmetic1D")
+ myHelpFileName = "/files/arithmetic_1d.htm#arithmetic_1D";
+ else if ( aHypType == "MaxElementArea")
+ myHelpFileName = "/files/max._element_area_hypothesis.htm";
+ else if ( aHypType == "MaxElementVolume")
+ myHelpFileName = "/files/max._element_volume_hypothsis.htm";
+ else if ( aHypType == "StartEndLength")
+ myHelpFileName = "/files/arithmetic_1d.htm#start_and_end_length";
+ else if ( aHypType == "Deflection1D")
+ myHelpFileName = "/files/arithmetic_1d.htm#deflection_1D";
+ else if ( aHypType == "AutomaticLength")
+ myHelpFileName = "/files/arithmetic_1d.htm#automatic_length";
+ else if ( aHypType == "NumberOfSegments")
+ myHelpFileName = "/files/arithmetic_1d.htm#Number_of_elements";
+ else
+ myHelpFileName = "";
+
+ connect( this, SIGNAL( dlgHelp() ), this, SLOT( onHelp() ) );
}
SMESHGUI_HypothesisDlg::~SMESHGUI_HypothesisDlg()
void SMESHGUI_HypothesisDlg::accept()
{
- if( !myCreator || myCreator->checkParams() )
- QtxDialog::accept();
+ if ( myCreator && !myCreator->checkParams() )
+ return;
+ QtxDialog::accept();
+ qApp->exit_loop();
+}
+
+void SMESHGUI_HypothesisDlg::reject()
+{
+ if ( myCreator ) myCreator->onReject();
+ QtxDialog::reject();
+ qApp->exit_loop();
+}
+
+void SMESHGUI_HypothesisDlg::onHelp()
+{
+ LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication());
+ if (app) {
+ SMESHGUI* aSMESHGUI = dynamic_cast<SMESHGUI*>( app->activeModule() );
+ app->onHelpContextModule(aSMESHGUI ? app->moduleName(aSMESHGUI->moduleName()) : QString(""), myHelpFileName);
+ }
+ else {
+ SUIT_MessageBox::warn1(0, QObject::tr("WRN_WARNING"),
+ QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE").
+ arg(app->resourceMgr()->stringValue("ExternalBrowser", "application")).arg(myHelpFileName),
+ QObject::tr("BUT_OK"));
+ }
}
void SMESHGUI_HypothesisDlg::setHIcon( const QPixmap& p )