NPAL16160: EDF448: Hard selection. Unify dialogs behaviour.

This commit is contained in:
jfa 2007-06-06 08:11:49 +00:00
parent 28fd1da1df
commit 7741b10187
3 changed files with 173 additions and 186 deletions

View File

@ -33,14 +33,11 @@
#include "SalomeApp_Application.h" #include "SalomeApp_Application.h"
#include "LightApp_SelectionMgr.h" #include "LightApp_SelectionMgr.h"
#include <BRepPrimAPI_MakePrism.hxx>
#include <BRepAdaptor_Curve.hxx>
#include <gp_Lin.hxx>
#include "GEOMImpl_Types.hxx"
#include <qlabel.h> #include <qlabel.h>
#include <qcheckbox.h> #include <qcheckbox.h>
#include "GEOMImpl_Types.hxx"
#include "utilities.h" #include "utilities.h"
//================================================================================= //=================================================================================
@ -55,9 +52,10 @@ GenerationGUI_PrismDlg::GenerationGUI_PrismDlg(GeometryGUI* theGeometryGUI, QWid
: GEOMBase_Skeleton(theGeometryGUI, parent, name, modal, WStyle_Customize | : GEOMBase_Skeleton(theGeometryGUI, parent, name, modal, WStyle_Customize |
WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu)
{ {
QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_PRISM"))); SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); QPixmap image0(aResMgr->loadPixmap("GEOM", tr("ICON_DLG_PRISM")));
QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_PRISM_2P"))); QPixmap image1(aResMgr->loadPixmap("GEOM", tr("ICON_SELECT")));
QPixmap image2(aResMgr->loadPixmap("GEOM", tr("ICON_DLG_PRISM_2P")));
setCaption(tr("GEOM_EXTRUSION_TITLE")); setCaption(tr("GEOM_EXTRUSION_TITLE"));
@ -65,9 +63,10 @@ GenerationGUI_PrismDlg::GenerationGUI_PrismDlg(GeometryGUI* theGeometryGUI, QWid
GroupConstructors->setTitle(tr("GEOM_EXTRUSION")); GroupConstructors->setTitle(tr("GEOM_EXTRUSION"));
RadioButton1->setPixmap(image0); RadioButton1->setPixmap(image0);
RadioButton2->setPixmap(image2); RadioButton2->setPixmap(image2);
//RadioButton2->close(TRUE);
RadioButton3->close(TRUE); RadioButton3->close(TRUE);
RadioButton1->setChecked(true);
GroupPoints = new DlgRef_2Sel1Spin2Check(this, "GroupPoints"); GroupPoints = new DlgRef_2Sel1Spin2Check(this, "GroupPoints");
GroupPoints->CheckButton1->hide(); GroupPoints->CheckButton1->hide();
GroupPoints->GroupBox1->setTitle(tr("GEOM_EXTRUSION_BSV")); GroupPoints->GroupBox1->setTitle(tr("GEOM_EXTRUSION_BSV"));
@ -95,7 +94,6 @@ GenerationGUI_PrismDlg::GenerationGUI_PrismDlg(GeometryGUI* theGeometryGUI, QWid
setHelpFileName("extrusion.htm"); setHelpFileName("extrusion.htm");
/* Initialisations */
Init(); Init();
} }
@ -106,7 +104,7 @@ GenerationGUI_PrismDlg::GenerationGUI_PrismDlg(GeometryGUI* theGeometryGUI, QWid
//================================================================================= //=================================================================================
GenerationGUI_PrismDlg::~GenerationGUI_PrismDlg() GenerationGUI_PrismDlg::~GenerationGUI_PrismDlg()
{ {
/* no need to delete child widgets, Qt does it all for us */ // no need to delete child widgets, Qt does it all for us
} }
@ -125,7 +123,6 @@ void GenerationGUI_PrismDlg::Init()
GroupPoints2->LineEdit2->setReadOnly( true ); GroupPoints2->LineEdit2->setReadOnly( true );
GroupPoints2->LineEdit3->setReadOnly( true ); GroupPoints2->LineEdit3->setReadOnly( true );
//myOkBase = myOkVec = false;
myOkBase = myOkVec = myOkPnt1 = myOkPnt2 = false; myOkBase = myOkVec = myOkPnt1 = myOkPnt2 = false;
/* Get setting of step value from file configuration */ /* Get setting of step value from file configuration */
@ -167,8 +164,6 @@ void GenerationGUI_PrismDlg::Init()
SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ;
initName(tr("GEOM_EXTRUSION")); initName(tr("GEOM_EXTRUSION"));
globalSelection( GEOM_ALLSHAPES );
ConstructorsClicked(0); ConstructorsClicked(0);
} }
@ -179,7 +174,8 @@ void GenerationGUI_PrismDlg::Init()
//================================================================================= //=================================================================================
void GenerationGUI_PrismDlg::ConstructorsClicked(int constructorId) void GenerationGUI_PrismDlg::ConstructorsClicked(int constructorId)
{ {
disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0); erasePreview();
disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
switch (constructorId) switch (constructorId)
{ {
@ -191,10 +187,6 @@ void GenerationGUI_PrismDlg::ConstructorsClicked(int constructorId)
resize(0, 0); resize(0, 0);
GroupPoints->show(); GroupPoints->show();
//GroupPoints->LineEdit1->setFocus();
//myEditCurrentArgument = GroupPoints->LineEdit1;
//displayPreview();
myEditCurrentArgument = GroupPoints->LineEdit1; myEditCurrentArgument = GroupPoints->LineEdit1;
GroupPoints->LineEdit1->setText(""); GroupPoints->LineEdit1->setText("");
GroupPoints->LineEdit2->setText(""); GroupPoints->LineEdit2->setText("");
@ -208,6 +200,8 @@ void GenerationGUI_PrismDlg::ConstructorsClicked(int constructorId)
} }
case 1: case 1:
{ {
globalSelection( GEOM_ALLSHAPES );
GroupPoints->hide(); GroupPoints->hide();
resize(0, 0); resize(0, 0);
GroupPoints2->show(); GroupPoints2->show();
@ -224,7 +218,10 @@ void GenerationGUI_PrismDlg::ConstructorsClicked(int constructorId)
break; break;
} }
} }
displayPreview();
myEditCurrentArgument->setFocus();
connect(myGeomGUI->getApp()->selectionMgr(),
SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
} }
@ -262,8 +259,8 @@ void GenerationGUI_PrismDlg::SelectionIntoArgument()
erasePreview(); erasePreview();
myEditCurrentArgument->setText(""); myEditCurrentArgument->setText("");
if ( getConstructorId()==0 ) { if (getConstructorId() == 0)
{
if (IObjectCount() != 1) { if (IObjectCount() != 1) {
if (myEditCurrentArgument == GroupPoints->LineEdit1) if (myEditCurrentArgument == GroupPoints->LineEdit1)
myOkBase = false; myOkBase = false;
@ -288,13 +285,12 @@ void GenerationGUI_PrismDlg::SelectionIntoArgument()
myVec = aSelectedObject; myVec = aSelectedObject;
myOkVec = true; myOkVec = true;
} }
myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
myEditCurrentArgument->setText(GEOMBase::GetName(aSelectedObject));
displayPreview(); displayPreview();
} }
else // getConstructorId()==1 - extrusion using 2 points
else { // getConstructorId()==1 - extrusion using 2 points {
if (IObjectCount() != 1) { if (IObjectCount() != 1) {
if (myEditCurrentArgument == GroupPoints2->LineEdit1) if (myEditCurrentArgument == GroupPoints2->LineEdit1)
myOkBase = false; myOkBase = false;
@ -331,48 +327,11 @@ void GenerationGUI_PrismDlg::SelectionIntoArgument()
} }
myEditCurrentArgument->setText(GEOMBase::GetName(aSelectedObject)); myEditCurrentArgument->setText(GEOMBase::GetName(aSelectedObject));
displayPreview(); displayPreview();
} }
} }
//=================================================================================
// function : SetEditCurrentArgument()
// purpose :
//=================================================================================
void GenerationGUI_PrismDlg::SetEditCurrentArgument()
{
QPushButton* send = (QPushButton*)sender();
globalSelection( GEOM_ALLSHAPES );
if(send == GroupPoints->PushButton1) {
GroupPoints->LineEdit1->setFocus();
myEditCurrentArgument = GroupPoints->LineEdit1;
}
else if(send == GroupPoints->PushButton2) {
GroupPoints->LineEdit2->setFocus();
myEditCurrentArgument = GroupPoints->LineEdit2;
globalSelection( GEOM_LINE );
}
else if(send == GroupPoints2->PushButton1) {
GroupPoints2->LineEdit1->setFocus();
myEditCurrentArgument = GroupPoints2->LineEdit1;
}
else if(send == GroupPoints2->PushButton2) {
GroupPoints2->LineEdit2->setFocus();
myEditCurrentArgument = GroupPoints2->LineEdit2;
globalSelection( GEOM_POINT );
}
else if(send == GroupPoints2->PushButton3) {
GroupPoints2->LineEdit3->setFocus();
myEditCurrentArgument = GroupPoints2->LineEdit3;
globalSelection( GEOM_POINT );
}
SelectionIntoArgument();
}
//================================================================================= //=================================================================================
// function : LineEditReturnPressed() // function : LineEditReturnPressed()
// purpose : // purpose :
@ -391,14 +350,43 @@ void GenerationGUI_PrismDlg::LineEditReturnPressed()
} }
} }
//================================================================================= //=================================================================================
// function : enterEvent() // function : SetEditCurrentArgument()
// purpose : when mouse enter onto the QWidget // purpose :
//================================================================================= //=================================================================================
void GenerationGUI_PrismDlg::enterEvent(QEvent * e) void GenerationGUI_PrismDlg::SetEditCurrentArgument()
{ {
if ( !GroupConstructors->isEnabled() ) QPushButton* send = (QPushButton*)sender();
ActivateThisDialog();
if (send == GroupPoints->PushButton1) {
GroupPoints->LineEdit1->setFocus();
myEditCurrentArgument = GroupPoints->LineEdit1;
globalSelection( GEOM_ALLSHAPES );
}
else if (send == GroupPoints->PushButton2) {
GroupPoints->LineEdit2->setFocus();
myEditCurrentArgument = GroupPoints->LineEdit2;
globalSelection( GEOM_LINE );
}
else if (send == GroupPoints2->PushButton1) {
GroupPoints2->LineEdit1->setFocus();
myEditCurrentArgument = GroupPoints2->LineEdit1;
globalSelection( GEOM_ALLSHAPES );
}
else if (send == GroupPoints2->PushButton2) {
GroupPoints2->LineEdit2->setFocus();
myEditCurrentArgument = GroupPoints2->LineEdit2;
globalSelection( GEOM_POINT );
}
else if (send == GroupPoints2->PushButton3) {
GroupPoints2->LineEdit3->setFocus();
myEditCurrentArgument = GroupPoints2->LineEdit3;
globalSelection( GEOM_POINT );
}
myEditCurrentArgument->setFocus();
SelectionIntoArgument();
} }
@ -409,16 +397,25 @@ void GenerationGUI_PrismDlg::enterEvent(QEvent * e)
void GenerationGUI_PrismDlg::ActivateThisDialog() void GenerationGUI_PrismDlg::ActivateThisDialog()
{ {
GEOMBase_Skeleton::ActivateThisDialog(); GEOMBase_Skeleton::ActivateThisDialog();
globalSelection( GEOM_ALLSHAPES );
connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), connect(myGeomGUI->getApp()->selectionMgr(),
SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
//GroupPoints->LineEdit1->setFocus();
//myEditCurrentArgument = GroupPoints->LineEdit1;
//displayPreview();
ConstructorsClicked( getConstructorId() ); ConstructorsClicked( getConstructorId() );
} }
//=================================================================================
// function : enterEvent()
// purpose : when mouse enter onto the QWidget
//=================================================================================
void GenerationGUI_PrismDlg::enterEvent(QEvent * e)
{
if (!GroupConstructors->isEnabled())
ActivateThisDialog();
}
//================================================================================= //=================================================================================
// function : ValueChangedInSpinBox() // function : ValueChangedInSpinBox()
// purpose : // purpose :

View File

@ -33,8 +33,8 @@
#include "SalomeApp_Application.h" #include "SalomeApp_Application.h"
#include "LightApp_SelectionMgr.h" #include "LightApp_SelectionMgr.h"
#include <qcheckbox.h>
#include <qlabel.h> #include <qlabel.h>
#include <qcheckbox.h>
#include "GEOMImpl_Types.hxx" #include "GEOMImpl_Types.hxx"
@ -167,6 +167,7 @@ void TransformationGUI_TranslationDlg::Init()
//================================================================================= //=================================================================================
void TransformationGUI_TranslationDlg::ConstructorsClicked(int constructorId) void TransformationGUI_TranslationDlg::ConstructorsClicked(int constructorId)
{ {
erasePreview();
disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0); disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
myEditCurrentArgument = GroupPoints->LineEdit1; myEditCurrentArgument = GroupPoints->LineEdit1;
@ -231,7 +232,6 @@ bool TransformationGUI_TranslationDlg::ClickOnApply()
return false; return false;
initName(); initName();
ConstructorsClicked( getConstructorId() );
return true; return true;
} }
@ -270,7 +270,7 @@ void TransformationGUI_TranslationDlg::SelectionIntoArgument()
return; return;
} }
Standard_Boolean testResult = Standard_False;; Standard_Boolean testResult = Standard_False;
GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(firstIObject(), testResult); GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(firstIObject(), testResult);
if (!testResult || CORBA::is_nil( aSelectedObject )) if (!testResult || CORBA::is_nil( aSelectedObject ))
@ -287,7 +287,6 @@ void TransformationGUI_TranslationDlg::SelectionIntoArgument()
} }
myEditCurrentArgument->setText( aName ); myEditCurrentArgument->setText( aName );
displayPreview(); displayPreview();
} }
@ -315,19 +314,16 @@ void TransformationGUI_TranslationDlg::SetEditCurrentArgument()
{ {
QPushButton* send = (QPushButton*)sender(); QPushButton* send = (QPushButton*)sender();
if(send == GroupPoints->PushButton1) if (send == GroupPoints->PushButton1) {
{
myEditCurrentArgument = GroupPoints->LineEdit1; myEditCurrentArgument = GroupPoints->LineEdit1;
globalSelection(); globalSelection();
} }
else if (send == GroupPoints->PushButton2) else if (send == GroupPoints->PushButton2) {
{
myEditCurrentArgument = GroupPoints->LineEdit2; myEditCurrentArgument = GroupPoints->LineEdit2;
getConstructorId() == 1 ? globalSelection( GEOM_POINT ) : getConstructorId() == 1 ? globalSelection( GEOM_POINT ) :
globalSelection( GEOM_LINE ); globalSelection( GEOM_LINE );
} }
else if (send == GroupPoints->PushButton3) else if (send == GroupPoints->PushButton3) {
{
myEditCurrentArgument = GroupPoints->LineEdit3; myEditCurrentArgument = GroupPoints->LineEdit3;
globalSelection( GEOM_POINT ); globalSelection( GEOM_POINT );
} }
@ -344,6 +340,7 @@ void TransformationGUI_TranslationDlg::SetEditCurrentArgument()
void TransformationGUI_TranslationDlg::ActivateThisDialog() void TransformationGUI_TranslationDlg::ActivateThisDialog()
{ {
GEOMBase_Skeleton::ActivateThisDialog(); GEOMBase_Skeleton::ActivateThisDialog();
connect(myGeomGUI->getApp()->selectionMgr(), connect(myGeomGUI->getApp()->selectionMgr(),
SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
@ -378,7 +375,7 @@ void TransformationGUI_TranslationDlg::ValueChangedInSpinBox()
//================================================================================= //=================================================================================
GEOM::GEOM_IOperations_ptr TransformationGUI_TranslationDlg::createOperation() GEOM::GEOM_IOperations_ptr TransformationGUI_TranslationDlg::createOperation()
{ {
return myGeomGUI->GetGeomGen()->GetITransformOperations( getStudyId() ); return getGeomEngine()->GetITransformOperations( getStudyId() );
} }
@ -433,14 +430,16 @@ bool TransformationGUI_TranslationDlg::execute( ObjectList& objects )
if (toCreateCopy) if (toCreateCopy)
for (int i = 0; i < myObjects.length(); i++) for (int i = 0; i < myObjects.length(); i++)
{ {
anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->TranslateDXDYDZCopy( myObjects[i], dx, dy, dz ); anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->
TranslateDXDYDZCopy( myObjects[i], dx, dy, dz );
if ( !anObj->_is_nil() ) if ( !anObj->_is_nil() )
objects.push_back( anObj._retn() ); objects.push_back( anObj._retn() );
} }
else else
for (int i = 0; i < myObjects.length(); i++) for (int i = 0; i < myObjects.length(); i++)
{ {
anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->TranslateDXDYDZ( myObjects[i], dx, dy, dz ); anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->
TranslateDXDYDZ( myObjects[i], dx, dy, dz );
if ( !anObj->_is_nil() ) if ( !anObj->_is_nil() )
objects.push_back( anObj._retn() ); objects.push_back( anObj._retn() );
} }
@ -452,14 +451,16 @@ bool TransformationGUI_TranslationDlg::execute( ObjectList& objects )
if (toCreateCopy) if (toCreateCopy)
for (int i = 0; i < myObjects.length(); i++) for (int i = 0; i < myObjects.length(); i++)
{ {
anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->TranslateTwoPointsCopy( myObjects[i], myPoint1, myPoint2 ); anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->
TranslateTwoPointsCopy( myObjects[i], myPoint1, myPoint2 );
if ( !anObj->_is_nil() ) if ( !anObj->_is_nil() )
objects.push_back( anObj._retn() ); objects.push_back( anObj._retn() );
} }
else else
for (int i = 0; i < myObjects.length(); i++) for (int i = 0; i < myObjects.length(); i++)
{ {
anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->TranslateTwoPoints( myObjects[i], myPoint1, myPoint2 ); anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->
TranslateTwoPoints( myObjects[i], myPoint1, myPoint2 );
if ( !anObj->_is_nil() ) if ( !anObj->_is_nil() )
objects.push_back( anObj._retn() ); objects.push_back( anObj._retn() );
} }
@ -471,14 +472,16 @@ bool TransformationGUI_TranslationDlg::execute( ObjectList& objects )
if (toCreateCopy) if (toCreateCopy)
for (int i = 0; i < myObjects.length(); i++) for (int i = 0; i < myObjects.length(); i++)
{ {
anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->TranslateVectorCopy( myObjects[i], myVector ); anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->
TranslateVectorCopy( myObjects[i], myVector );
if ( !anObj->_is_nil() ) if ( !anObj->_is_nil() )
objects.push_back( anObj._retn() ); objects.push_back( anObj._retn() );
} }
else else
for (int i = 0; i < myObjects.length(); i++) for (int i = 0; i < myObjects.length(); i++)
{ {
anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->TranslateVector( myObjects[i], myVector ); anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->
TranslateVector( myObjects[i], myVector );
if ( !anObj->_is_nil() ) if ( !anObj->_is_nil() )
objects.push_back( anObj._retn() ); objects.push_back( anObj._retn() );
} }
@ -491,17 +494,6 @@ bool TransformationGUI_TranslationDlg::execute( ObjectList& objects )
} }
//=================================================================================
// function : closeEvent
// purpose :
//=================================================================================
void TransformationGUI_TranslationDlg::closeEvent( QCloseEvent* e )
{
// myGeomGUI->SetState( -1 );
GEOMBase_Skeleton::closeEvent( e );
}
//================================================================================= //=================================================================================
// function : CreateCopyModeChanged() // function : CreateCopyModeChanged()
// purpose : // purpose :

View File

@ -51,8 +51,6 @@ protected:
virtual bool isValid( QString& ); virtual bool isValid( QString& );
virtual bool execute( ObjectList& objects ); virtual bool execute( ObjectList& objects );
virtual void closeEvent( QCloseEvent* e );
private: private:
void Init(); void Init();
void enterEvent(QEvent* e); void enterEvent(QEvent* e);
@ -69,8 +67,8 @@ private slots :
void LineEditReturnPressed(); void LineEditReturnPressed();
void SelectionIntoArgument(); void SelectionIntoArgument();
void SetEditCurrentArgument(); void SetEditCurrentArgument();
void ValueChangedInSpinBox();
void ConstructorsClicked(int constructorId); void ConstructorsClicked(int constructorId);
void ValueChangedInSpinBox();
void CreateCopyModeChanged(bool isCreateCopy); void CreateCopyModeChanged(bool isCreateCopy);
}; };