-// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
//
// 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.
+// 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
// 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 : EntityGUI_FieldDlg.cxx
#include <OCCViewer_ViewManager.h>
#include <SVTK_ViewModel.h>
#include <SALOME_Prs.h>
-#include <SALOME_ListIteratorOfListIO.hxx>
+#include <SALOME_ListIO.hxx>
#include <SUIT_Desktop.h>
#include <SUIT_MessageBox.h>
// set edit triggers by default
setReadOnly( false );
- connect( horizontalHeader(), SIGNAL( sectionDoubleClicked( int ) ), this, SLOT( headerDblClicked( int ) ) );
-
if ( stepVar->_is_nil() )
- return;
+ {
+ connect( horizontalHeader(), SIGNAL( sectionDoubleClicked( int ) ), this, SLOT( headerDblClicked( int ) ) );
+ return;
+ }
myStamp = stepVar->GetStamp();
const int nbColumns = nbComps + 1;
if ( section > 0 ) {
bool bOk;
QString label = QInputDialog::getText( this, EntityGUI_FieldDlg::tr( "RENAME_COMPONENT" ),
- EntityGUI_FieldDlg::tr ( "COMPONENT_NAME" ), QLineEdit::Normal,
- horizontalHeaderItem( section )->text(), &bOk );
+ EntityGUI_FieldDlg::tr ( "COMPONENT_NAME" ), QLineEdit::Normal,
+ horizontalHeaderItem( section )->text(), &bOk );
if ( bOk && !label.isEmpty() )
horizontalHeaderItem( section )->setText( label );
}
switchTableGrpLayout->setMargin(0);
switchTableGrpLayout->setSpacing(0);
- // step browse controls
- myPrevStepBtn = new QPushButton( tr("PREV_STEP"), valsGroup );
+ // step add/rm controls
+ QPushButton* addStepBtn = new QPushButton( tr("ADD_STEP"), valsGroup );
QLabel* curStepLbl = new QLabel(tr("STEP"), valsGroup );
+ myStepEdit = new QLineEdit( valsGroup );
myStepsCombo = new QComboBox(valsGroup);
- myNextStepBtn = new QPushButton( tr("NEXT_STEP"), valsGroup );
+ myStepsCombo->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed );
+ myRmStepBtn = new QPushButton( tr("REMOVE_STEP"), valsGroup );
- // step add/rm controls
- QPushButton* addStepBtn = new QPushButton( tr("ADD_STEP"), valsGroup );
+ // step browse controls
+ myPrevStepBtn = new QPushButton( tr("PREV_STEP"), valsGroup );
QLabel* stampLbl = new QLabel(tr("STAMP"), valsGroup );
myStampSpin = new SalomeApp_IntSpinBox( -theIntLimit, theIntLimit, 1, valsGroup, true, true);
- myRmStepBtn = new QPushButton( tr("REMOVE_STEP"), valsGroup );
-
- valsLayout->addWidget(mySwitchTableWdg, 0, 0, 1, 4);
- valsLayout->addWidget(myPrevStepBtn, 1, 0);
+ myNextStepBtn = new QPushButton( tr("NEXT_STEP"), valsGroup );
+
+ valsLayout->addWidget(mySwitchTableWdg, 0, 0, 1, 5);
+ valsLayout->addWidget(addStepBtn, 1, 0);
valsLayout->addWidget(curStepLbl, 1, 1);
- valsLayout->addWidget(myStepsCombo, 1, 2);
- valsLayout->addWidget(myNextStepBtn, 1, 3);
- valsLayout->addWidget(addStepBtn, 2, 0);
+ valsLayout->addWidget(myStepEdit, 1, 2);
+ valsLayout->addWidget(myStepsCombo, 1, 3);
+ valsLayout->addWidget(myRmStepBtn, 1, 4);
+ valsLayout->addWidget(myPrevStepBtn, 2, 0);
valsLayout->addWidget(stampLbl, 2, 1);
- valsLayout->addWidget(myStampSpin, 2, 2);
- valsLayout->addWidget(myRmStepBtn, 2, 3);
+ valsLayout->addWidget(myStampSpin, 2, 2, 1, 2);
+ valsLayout->addWidget(myNextStepBtn, 2, 4);
- valsLayout->setColumnStretch(2, 5);
+ valsLayout->setColumnStretch(3, 5);
valsLayout->setRowStretch (0, 5);
QVBoxLayout* layout = new QVBoxLayout(centralWidget());
myEditCurrentArgument = 0;
// re-fill myDimCombo
- const int curDim = getDim();
- updateDims( curDim );
+ //const int curDim = getDim();
+ updateDims( -100 );
// update table
onDimChange();
}
}
+static int findInCombo( QComboBox* where, int what, bool& ok )
+{
+ int idx = 0;
+ ok = false;
+
+ for ( ; idx < where->count() && !ok; idx++ ) {
+ int step = where->itemText( idx ).toInt();
+ if ( step == what ) {
+ ok = true;
+ }
+ else if ( step > what )
+ break;
+ }
+
+ return idx;
+}
+
//=======================================================================
//function : onAddStep
//purpose :
//=======================================================================
void EntityGUI_FieldDlg::onAddStep()
{
- if ( myStepsCombo->count() > 0 )
- myCurStepID = myStepsCombo->itemText( myStepsCombo->count()-1 ).toInt() + 1;
+ int step = 0;
- myStepsCombo->insertItem( myStepsCombo->count(), QString::number( myCurStepID ));
- myStepsCombo->setCurrentIndex( myStepsCombo->count() - 1 );
+ if ( !myStepEdit->text().isEmpty() )
+ step = myStepEdit->text().toInt();
+ bool ok = false;
+ int idx = findInCombo( myStepsCombo, step, ok );
+
+ if ( ok ) {
+ SUIT_MessageBox::critical(this, QObject::tr("ERR_ERROR"),
+ tr("ERR_STEP_EXISTS"));
+ return;
+ }
+
+ myStepsCombo->insertItem( idx, QString::number( step ));
+ myStepsCombo->setCurrentIndex( idx );
myRemovedSteps.remove( getCurStepID() );
//showCurStep();
}
//function : onRmStep
//purpose :
//=======================================================================
-
void EntityGUI_FieldDlg::onRmStep()
{
if ( myStepsCombo->count() > 1 )
//function : onStampChange
//purpose :
//=======================================================================
-
void EntityGUI_FieldDlg::onStampChange()
{
if ( myCurStepTable )
//function : showCurStep
//purpose :
//=======================================================================
-
void EntityGUI_FieldDlg::showCurStep()
{
- myCurStepID = getCurStepID();
+ myCurStepID = getCurStepID();
+ myStepEdit->setText(QString::number( myCurStepID ));
QStringList headers;
if ( myCurStepTable )
//function : getDim
//purpose :
//=======================================================================
-
int EntityGUI_FieldDlg::getDim() const
{
int i = myDimCombo->currentIndex();
//function : getDataType
//purpose :
//=======================================================================
-
int EntityGUI_FieldDlg::getDataType() const
{
return myTypeCombo->currentIndex();
//function : getCurStepID
//purpose :
//=======================================================================
-
int EntityGUI_FieldDlg::getCurStepID() const
{
if ( myStepsCombo->count() > 0 )
//function : getNbComps
//purpose :
//=======================================================================
-
int EntityGUI_FieldDlg::getNbComps() const
{
return myNbCompsSpin->value();
//function : updateDims
//purpose : update myDimCombo
//=======================================================================
-
void EntityGUI_FieldDlg::updateDims(int curDim)
{
myDimCombo->blockSignals( true );
{
exp.Init( aShape, getShapeType(&dim));
if ( exp.More() && !aShape.IsSame( exp.Current() ))
- {
myDimCombo->insertItem( dim, tr( subNames[dim] ), dim );
- if ( dim == curDim ) // restore current dim
- myDimCombo->setCurrentIndex( myDimCombo->count()-1 );
- }
}
myDimCombo->insertItem( 4, tr("WHOLE"), -1 );
- if ( getDim() != curDim )
- myDimCombo->setCurrentIndex( myDimCombo->count()-1 );
+
+ int idx = myDimCombo->findData( curDim );
+ if ( idx != -1 )
+ myDimCombo->setCurrentIndex( idx );
+ else
+ myDimCombo->setCurrentIndex( myDimCombo->count()-1-(myDimCombo->count()>1?1:0) );
}
myDimCombo->blockSignals( false );
}
TopoDS_Shape aSubShape = myShapeMap( index );
QString anEntry = QString( "TEMP_" ) + aMainEntry.in() + QString("_%1").arg(index);
Handle(SALOME_InteractiveObject) io =
- new SALOME_InteractiveObject(anEntry.toAscii(), "GEOM", "TEMP_IO");
+ new SALOME_InteractiveObject(anEntry.toLatin1(), "GEOM", "TEMP_IO");
aDisplayer->SetColor( aCol );
SALOME_Prs* aPrs = aDisplayer->buildSubshapePresentation(aSubShape, anEntry, aView);
if (aPrs) {
for ( ; i_tbl != myStepTables.end(); ++i_tbl )
{
StepTable* tbl = i_tbl.value();
+ QString stepName = (tr("STEP")+" %1 %2").arg( tbl->getStepID() ).arg( tbl->getStamp() );
+
GEOM::GEOM_FieldStep_var step = tbl->getStep();
if ( step->_is_nil() )
{
{
step = myField->AddStep( tbl->getStepID(), tbl->getStamp() );
- QString stepName = (tr("STEP")+" %1 %2").arg( tbl->getStepID() ).arg( tbl->getStamp() );
SALOMEDS::SObject_wrap aSO =
getGeomEngine()->AddInStudy( aStudyDS, step, stepName.toLatin1().constData(), myField );
if ( /*!myIsCreation &&*/ !aSO->_is_nil() ) {
}
}
}
+ else if ( step->GetStamp() != tbl->getStamp() )
+ {
+ // update a stamp in the object browser
+ CORBA::String_var entry = step->GetStudyEntry();
+ if ( entry.in() ) {
+ SALOMEDS::SObject_wrap SO = aStudyDS->FindObjectID( entry.in() );
+ if ( !SO->_is_nil() )
+ aBuilder->SetName( SO, stepName.toLatin1().constData() );
+ }
+ }
+
tbl->setValues( step );
// update the presentation if it is displayed
return true;
}
+
+//=================================================================================
+// function : getSourceObjects
+// purpose : virtual method to get source objects
+//=================================================================================
+QList<GEOM::GeomObjPtr> EntityGUI_FieldDlg::getSourceObjects()
+{
+ QList<GEOM::GeomObjPtr> res;
+ GEOM::GeomObjPtr aGeomObjPtr(myField->GetShape());
+ res << aGeomObjPtr;
+ return res;
+}