mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2024-12-30 19:30:36 +05:00
0022869: GUI modification
This commit is contained in:
parent
97a79670fa
commit
ff93873f53
@ -1408,6 +1408,14 @@ Please, select face, shell or solid and try again</translation>
|
||||
<source>GEOM_SELECT_UNPUBLISHED_EDGES</source>
|
||||
<translation>Select unpublished edges</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_GENERATE_GROUPS</source>
|
||||
<translation>Generate Groups</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_GROUP_NAME_PREFIX</source>
|
||||
<translation>Group Names Prefix</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GEOM_PLANE</source>
|
||||
<translation>Plane</translation>
|
||||
|
@ -53,7 +53,13 @@
|
||||
//=================================================================================
|
||||
GenerationGUI_PipeDlg::GenerationGUI_PipeDlg (GeometryGUI* theGeometryGUI, QWidget* parent,
|
||||
bool modal, Qt::WindowFlags fl)
|
||||
: GEOMBase_Skeleton(theGeometryGUI, parent, modal, fl)
|
||||
: GEOMBase_Skeleton (theGeometryGUI, parent, modal, fl),
|
||||
myGenGroupCheckGP (0),
|
||||
myPrefixLblGP (0),
|
||||
myPrefixEditGP (0),
|
||||
myGenGroupCheckGMP (0),
|
||||
myPrefixLblGMP (0),
|
||||
myPrefixEditGMP (0)
|
||||
{
|
||||
QPixmap image0 (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_DLG_PIPE")));
|
||||
QPixmap image1 (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_SELECT")));
|
||||
@ -81,6 +87,19 @@ GenerationGUI_PipeDlg::GenerationGUI_PipeDlg (GeometryGUI* theGeometryGUI, QWidg
|
||||
GroupPoints->PushButton3->setIcon(image1);
|
||||
GroupPoints->CheckButton1->setText(tr("GEOM_SELECT_UNPUBLISHED_EDGES"));
|
||||
|
||||
// Add widgets for group generation
|
||||
QGridLayout *aLayoutGP = (QGridLayout *)GroupPoints->GroupBox1->layout();
|
||||
|
||||
myGenGroupCheckGP =
|
||||
new QCheckBox(tr("GEOM_GENERATE_GROUPS"), GroupPoints->GroupBox1);
|
||||
myPrefixLblGP =
|
||||
new QLabel (tr("GEOM_GROUP_NAME_PREFIX"), GroupPoints->GroupBox1);
|
||||
myPrefixEditGP = new QLineEdit(GroupPoints->GroupBox1);
|
||||
|
||||
aLayoutGP->addWidget(myGenGroupCheckGP, 4, 0, 1, 3);
|
||||
aLayoutGP->addWidget(myPrefixLblGP, 5, 0, 1, 2);
|
||||
aLayoutGP->addWidget(myPrefixEditGP, 5, 2);
|
||||
|
||||
GroupMakePoints = new DlgRef_3Sel2Check3Spin(centralWidget());
|
||||
|
||||
GroupMakePoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS"));
|
||||
@ -92,6 +111,12 @@ GenerationGUI_PipeDlg::GenerationGUI_PipeDlg (GeometryGUI* theGeometryGUI, QWidg
|
||||
GroupMakePoints->PushButton3->setIcon(image1);
|
||||
GroupMakePoints->CheckBox1->setText(tr("GEOM_WITH_CONTACT"));
|
||||
GroupMakePoints->CheckBox2->setText(tr("GEOM_WITH_CORRECTION"));
|
||||
GroupMakePoints->SpinBox1->setAttribute(Qt::WA_DeleteOnClose);
|
||||
GroupMakePoints->SpinBox2->setAttribute(Qt::WA_DeleteOnClose);
|
||||
GroupMakePoints->SpinBox3->setAttribute(Qt::WA_DeleteOnClose);
|
||||
GroupMakePoints->TextLabel4->setAttribute(Qt::WA_DeleteOnClose);
|
||||
GroupMakePoints->TextLabel5->setAttribute(Qt::WA_DeleteOnClose);
|
||||
GroupMakePoints->TextLabel6->setAttribute(Qt::WA_DeleteOnClose);
|
||||
GroupMakePoints->SpinBox1->close();
|
||||
GroupMakePoints->SpinBox2->close();
|
||||
GroupMakePoints->SpinBox3->close();
|
||||
@ -99,6 +124,19 @@ GenerationGUI_PipeDlg::GenerationGUI_PipeDlg (GeometryGUI* theGeometryGUI, QWidg
|
||||
GroupMakePoints->TextLabel5->close();
|
||||
GroupMakePoints->TextLabel6->close();
|
||||
|
||||
// Add widgets for group generation
|
||||
QGridLayout *aLayoutGMP = (QGridLayout *)GroupMakePoints->GroupBox1->layout();
|
||||
|
||||
myGenGroupCheckGMP =
|
||||
new QCheckBox(tr("GEOM_GENERATE_GROUPS"), GroupMakePoints->GroupBox1);
|
||||
myPrefixLblGMP =
|
||||
new QLabel (tr("GEOM_GROUP_NAME_PREFIX"), GroupMakePoints->GroupBox1);
|
||||
myPrefixEditGMP = new QLineEdit(GroupMakePoints->GroupBox1);
|
||||
|
||||
aLayoutGMP->addWidget(myGenGroupCheckGMP, 8, 0, 1, 3);
|
||||
aLayoutGMP->addWidget(myPrefixLblGMP, 9, 0, 1, 2);
|
||||
aLayoutGMP->addWidget(myPrefixEditGMP, 9, 2);
|
||||
|
||||
QVBoxLayout* layout = new QVBoxLayout(centralWidget());
|
||||
layout->setMargin(0); layout->setSpacing(6);
|
||||
layout->addWidget(GroupPoints);
|
||||
@ -166,6 +204,8 @@ void GenerationGUI_PipeDlg::Init()
|
||||
connect(GroupMakePoints->PushButton3, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
|
||||
connect(GroupMakePoints->CheckBox1, SIGNAL(clicked()), this, SLOT(processPreview()));
|
||||
connect(GroupMakePoints->CheckBox2, SIGNAL(clicked()), this, SLOT(processPreview()));
|
||||
connect(myGenGroupCheckGP, SIGNAL(toggled(bool)), this, SLOT(GenGroupClicked(bool)));
|
||||
connect(myGenGroupCheckGMP, SIGNAL(toggled(bool)), this, SLOT(GenGroupClicked(bool)));
|
||||
|
||||
initName(tr("GEOM_PIPE"));
|
||||
resize(100,100);
|
||||
@ -195,6 +235,8 @@ void GenerationGUI_PipeDlg::ConstructorsClicked( int constructorId )
|
||||
GroupPoints->PushButton3->hide();
|
||||
GroupPoints->LineEdit3->hide();
|
||||
GroupPoints->PushButton1->click();
|
||||
myGenGroupCheckGP->setChecked(false);
|
||||
resetGenGroup(myGenGroupCheckGP, false, true);
|
||||
break;
|
||||
case 1:
|
||||
GroupMakePoints->hide();
|
||||
@ -203,11 +245,15 @@ void GenerationGUI_PipeDlg::ConstructorsClicked( int constructorId )
|
||||
GroupPoints->PushButton3->show();
|
||||
GroupPoints->LineEdit3->show();
|
||||
GroupPoints->PushButton1->click();
|
||||
myGenGroupCheckGP->setChecked(false);
|
||||
resetGenGroup(myGenGroupCheckGP, false, true);
|
||||
break;
|
||||
case 2:
|
||||
GroupPoints->hide();
|
||||
GroupMakePoints->show();
|
||||
GroupMakePoints->PushButton1->click();
|
||||
myGenGroupCheckGMP->setChecked(false);
|
||||
resetGenGroup(myGenGroupCheckGMP, false, true);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -483,22 +529,39 @@ bool GenerationGUI_PipeDlg::execute (ObjectList& objects)
|
||||
GEOM::ListOfGO_var aList;
|
||||
|
||||
GEOM::GEOM_I3DPrimOperations_var anOper = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation());
|
||||
bool doGroups = !IsPreview();
|
||||
|
||||
myGroupObjectsMap.clear();
|
||||
|
||||
switch( getConstructorId() ) {
|
||||
case 0:
|
||||
case 1:
|
||||
if (doGroups) {
|
||||
doGroups = myGenGroupCheckGP->isChecked();
|
||||
}
|
||||
|
||||
for (int i = 0; i < myBaseObjects.count(); i++) {
|
||||
switch ( getConstructorId() ) {
|
||||
case 0 :
|
||||
aList = anOper->MakePipe(myBaseObjects[i].get(), myPath.get(), false);
|
||||
aList = anOper->MakePipe(myBaseObjects[i].get(),
|
||||
myPath.get(), doGroups);
|
||||
break;
|
||||
case 1 :
|
||||
aList = anOper->MakePipeBiNormalAlongVector(myBaseObjects[i].get(), myPath.get(), myVec.get(), false);
|
||||
aList = anOper->MakePipeBiNormalAlongVector
|
||||
(myBaseObjects[i].get(), myPath.get(), myVec.get(), doGroups);
|
||||
break;
|
||||
}
|
||||
|
||||
if (!aList[0]->_is_nil())
|
||||
if (aList->length() > 0) {
|
||||
if (!aList[0]->_is_nil()) {
|
||||
objects.push_back(aList[0]._retn());
|
||||
}
|
||||
|
||||
if (doGroups) {
|
||||
addGroups(aList);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
@ -513,12 +576,25 @@ bool GenerationGUI_PipeDlg::execute (ObjectList& objects)
|
||||
myLocationsGO[i] = myLocations[i].copy();
|
||||
}
|
||||
|
||||
aList = anOper->MakePipeWithDifferentSections(myBaseGO.in(), myLocationsGO.in(), myPath.get(),
|
||||
if (doGroups) {
|
||||
doGroups = myGenGroupCheckGMP->isChecked();
|
||||
}
|
||||
|
||||
aList = anOper->MakePipeWithDifferentSections
|
||||
(myBaseGO.in(), myLocationsGO.in(), myPath.get(),
|
||||
GroupMakePoints->CheckBox1->isChecked(),
|
||||
GroupMakePoints->CheckBox2->isChecked(), false);
|
||||
if (!aList[0]->_is_nil())
|
||||
GroupMakePoints->CheckBox2->isChecked(), doGroups);
|
||||
|
||||
if (aList->length() > 0) {
|
||||
if (!aList[0]->_is_nil()) {
|
||||
objects.push_back(aList[0]._retn());
|
||||
}
|
||||
|
||||
if (doGroups) {
|
||||
addGroups(aList);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -545,6 +621,75 @@ bool GenerationGUI_PipeDlg::extractPrefix() const
|
||||
return myBaseObjects.count() > 1;
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
// function : restoreSubShapes
|
||||
// purpose : virtual method to restore tree of argument's sub-shapes under
|
||||
// the resulting shape. Redefined from GEOMBase_Helper class.
|
||||
//=================================================================================
|
||||
void GenerationGUI_PipeDlg::restoreSubShapes
|
||||
(SALOMEDS::Study_ptr theStudy, SALOMEDS::SObject_ptr theSObject)
|
||||
{
|
||||
QCheckBox *aGenGroupCheck = NULL;
|
||||
QLineEdit *aPrefixEdit = NULL;
|
||||
|
||||
|
||||
switch (getConstructorId()) {
|
||||
case 0 :
|
||||
case 1 :
|
||||
aGenGroupCheck = myGenGroupCheckGP;
|
||||
aPrefixEdit = myPrefixEditGP;
|
||||
break;
|
||||
case 2 :
|
||||
aGenGroupCheck = myGenGroupCheckGMP;
|
||||
aPrefixEdit = myPrefixEditGMP;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (aGenGroupCheck == NULL || !aGenGroupCheck->isChecked()) {
|
||||
return;
|
||||
}
|
||||
|
||||
SALOMEDS::GenericAttribute_var anAttr;
|
||||
|
||||
if (!theSObject->FindAttribute(anAttr, "AttributeIOR")) {
|
||||
return;
|
||||
}
|
||||
|
||||
SALOMEDS::AttributeIOR_var anAttrIOR =
|
||||
SALOMEDS::AttributeIOR::_narrow(anAttr);
|
||||
CORBA::String_var anIORso = anAttrIOR->Value();
|
||||
|
||||
// get Object from SObject
|
||||
GEOM::GEOM_Object_var aFather = GEOM::GEOM_Object::_narrow
|
||||
(myGeomGUI->getApp()->orb()->string_to_object(anIORso));
|
||||
|
||||
if (CORBA::is_nil(aFather)) {
|
||||
return;
|
||||
}
|
||||
|
||||
ObjectMap::const_iterator anIter = myGroupObjectsMap.find(aFather);
|
||||
|
||||
if (anIter != myGroupObjectsMap.end()) {
|
||||
ObjectList::const_iterator it = anIter->second.begin();
|
||||
QString aName = aPrefixEdit->text();
|
||||
|
||||
if (!aName.isEmpty()) {
|
||||
aName += "_";
|
||||
}
|
||||
|
||||
for (; it != anIter->second.end(); it++) {
|
||||
// Compose the name
|
||||
QString aGrpName = tr((*it)->GetName());
|
||||
|
||||
aName += aGrpName;
|
||||
getGeomEngine()->AddInStudy(theStudy, (*it),
|
||||
aName.toStdString().c_str(), aFather);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
// function : getSourceObjects
|
||||
// purpose : virtual method to get source objects
|
||||
@ -557,3 +702,64 @@ QList<GEOM::GeomObjPtr> GenerationGUI_PipeDlg::getSourceObjects()
|
||||
res << myLocations[i];
|
||||
return res;
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
// function : GenGroupClicked
|
||||
// purpose : Slot to treat checking "Generate groups" check box.
|
||||
//=================================================================================
|
||||
void GenerationGUI_PipeDlg::GenGroupClicked(bool isChecked)
|
||||
{
|
||||
resetGenGroup((QCheckBox *)sender(), isChecked, false);
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
// function : resetGenGroup
|
||||
// purpose : Resets data of "Generate groups" widgets.
|
||||
//=================================================================================
|
||||
void GenerationGUI_PipeDlg::resetGenGroup(QCheckBox *theGenGroup,
|
||||
const bool isChecked,
|
||||
const bool isClearPrefix)
|
||||
{
|
||||
QLabel *aPrefixLbl = NULL;
|
||||
QLineEdit *aPrefixEdit = NULL;
|
||||
|
||||
if (theGenGroup == myGenGroupCheckGP) {
|
||||
aPrefixLbl = myPrefixLblGP;
|
||||
aPrefixEdit = myPrefixEditGP;
|
||||
} else if (theGenGroup == myGenGroupCheckGMP) {
|
||||
aPrefixLbl = myPrefixLblGMP;
|
||||
aPrefixEdit = myPrefixEditGMP;
|
||||
}
|
||||
|
||||
if (aPrefixLbl != NULL) {
|
||||
aPrefixLbl->setEnabled(isChecked);
|
||||
aPrefixEdit->setEnabled(isChecked);
|
||||
|
||||
if (isClearPrefix) {
|
||||
aPrefixEdit->setText("");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
// function : addGroups
|
||||
// purpose : Add result groups to the list of groups.
|
||||
//=================================================================================
|
||||
void GenerationGUI_PipeDlg::addGroups(GEOM::ListOfGO_var &theResult)
|
||||
{
|
||||
const int aNbObj = theResult->length();
|
||||
|
||||
if (aNbObj > 0) {
|
||||
GEOM::GEOM_Object_ptr aKey = theResult[0]._retn();
|
||||
|
||||
if (!aKey->_is_nil()) {
|
||||
int i;
|
||||
|
||||
for (i = 1; i < aNbObj; ++i) {
|
||||
if (!theResult[i]->_is_nil()) {
|
||||
myGroupObjectsMap[aKey].push_back(theResult[i]._retn());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -30,6 +30,9 @@
|
||||
#include "GEOMBase_Skeleton.h"
|
||||
#include "GEOM_GenericObjPtr.h"
|
||||
|
||||
typedef std::map<GEOM::GEOM_Object_ptr, ObjectList> ObjectMap;
|
||||
|
||||
|
||||
class DlgRef_3Sel1Check;
|
||||
class DlgRef_3Sel2Check3Spin;
|
||||
|
||||
@ -52,11 +55,19 @@ protected:
|
||||
virtual bool execute( ObjectList& );
|
||||
virtual void addSubshapesToStudy();
|
||||
virtual bool extractPrefix() const;
|
||||
virtual void restoreSubShapes
|
||||
(SALOMEDS::Study_ptr, SALOMEDS::SObject_ptr);
|
||||
virtual QList<GEOM::GeomObjPtr> getSourceObjects();
|
||||
|
||||
private:
|
||||
void Init();
|
||||
void enterEvent( QEvent* );
|
||||
void resetGenGroup
|
||||
(QCheckBox *theGenGroup,
|
||||
const bool isChecked,
|
||||
const bool isClearPrefix);
|
||||
void addGroups
|
||||
(GEOM::ListOfGO_var &theResult);
|
||||
|
||||
private:
|
||||
QList<GEOM::GeomObjPtr> myBaseObjects; /* Base shapes */
|
||||
@ -66,6 +77,13 @@ private:
|
||||
|
||||
DlgRef_3Sel1Check* GroupPoints;
|
||||
DlgRef_3Sel2Check3Spin* GroupMakePoints;
|
||||
QCheckBox *myGenGroupCheckGP;
|
||||
QLabel *myPrefixLblGP;
|
||||
QLineEdit *myPrefixEditGP;
|
||||
QCheckBox *myGenGroupCheckGMP;
|
||||
QLabel *myPrefixLblGMP;
|
||||
QLineEdit *myPrefixEditGMP;
|
||||
ObjectMap myGroupObjectsMap;
|
||||
|
||||
private slots:
|
||||
void ClickOnOk();
|
||||
@ -75,6 +93,7 @@ private slots:
|
||||
void SetEditCurrentArgument();
|
||||
void ConstructorsClicked( int );
|
||||
void SelectionTypeButtonClicked();
|
||||
void GenGroupClicked(bool);
|
||||
};
|
||||
|
||||
#endif // GENERATIONGUI_PIPEDLG_H
|
||||
|
Loading…
Reference in New Issue
Block a user