X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHEXABLOCKGUI%2FHEXABLOCKGUI_DocumentPanel.cxx;h=1fb2d7e98a17a923c1a845d6588d5866fb9bd385;hb=0ebe741f3ee8a69f147a5c02b41f33d3f3f02e0f;hp=2bf2f297835078686db2de53c02e9a058e9025cc;hpb=0879e5d5795d7427c0d525432a59492126cab4c7;p=modules%2Fhexablock.git diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentPanel.cxx b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentPanel.cxx old mode 100755 new mode 100644 index 2bf2f29..1fb2d7e --- a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentPanel.cxx +++ b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentPanel.cxx @@ -1,9 +1,9 @@ -// Copyright (C) 2009-2013 CEA/DEN, EDF R&D +// Copyright (C) 2009-2019 CEA/DEN, EDF R&D // // 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 @@ -25,12 +25,15 @@ #include "Hex.hxx" #include -#include #include +#include +#include #include #include +#ifndef DISABLE_PYCONSOLE #include +#endif #include #include @@ -59,6 +62,8 @@ #include +#include + #define BUTTON_BOX_MIN_WIDTH 5 #define VERTEX_COORD_MIN -1000000 #define VERTEX_COORD_MAX 1000000 @@ -115,7 +120,6 @@ public: const QModelIndex &index) const{ QDoubleSpinBox *sb = new QDoubleSpinBox( parent ); sb->setMinimum(SPINBOX_POSITIVE_DOUBLE_MIN); - /////// sb->setMaximum(1000000000000000); //10e15 Abu : Pb en 32 bits sb->setMaximum(SPINBOX_DOUBLE_MAX); //10e9 sb->setDecimals(NB_DECIMALS); return sb; @@ -148,7 +152,6 @@ HexaBaseDialog::HexaBaseDialog( QWidget * parent, Mode editmode, Qt::WindowFlags _strHexaWidgetType[GEOMEDGE_TREE] = tr( "GEOMEDGE" ); _strHexaWidgetType[GEOMFACE_TREE] = tr( "GEOMFACE" ); - _strHexaWidgetType[GROUP_TREE] = tr( "GROUP" ); _strHexaWidgetType[LAW_TREE] = tr( "LAW" ); _strHexaWidgetType[PROPAGATION_TREE]= tr( "PROPAGATION" ); @@ -176,37 +179,76 @@ QModelIndexList HexaBaseDialog::getIndexList(QListWidget* itemsList, bool mapToS return iItems; } -// ============================================================= lockSizeToSizeHint -void HexaBaseDialog::lockSizeToSizeHint() -{ - setMaximumHeight(sizeHint().height()); - // setMaximumWidth(sizeHint().width()); - // setMinimumHeight(sizeHint().height()); - // setMinimumWidth(sizeHint().width()); -} -// ============================================================= unlockSizeModification -void HexaBaseDialog::unlockSizeModification() +// ================================================================ computeAndSetDimension +void HexaBaseDialog::computeAndSetDimension(const QModelIndex& elt) { - setMaximumHeight(MAX_HEIGHT); - // setMaximumWidth(MAX_WIDTH); - // setMinimumHeight(MIN_HEIGHT); - // setMinimumWidth(MIN_WIDTH); + // * Check if everything is OK for the computing + DocumentModel* docModel = getDocumentModel(); + if (docModel == NULL || _currentObj == NULL) + return; + + int selectedType = elt.data(HEXA_TREE_ROLE).toInt(); + if (selectedType != EDGE_TREE && selectedType != GEOMEDGE_TREE) + return; + + QListWidget* list = dynamic_cast(_currentObj); + QDoubleSpinBox* spb = dynamic_cast(_currentObj); + + if (list == NULL && spb == NULL) + return; + + // * Compute the value of the dimension + double value = 0.; + + if (_currentObj->property("Radius").isValid()) + value = docModel->getRadius(elt); + else if (_currentObj->property("Angle").isValid()) + value = docModel->getAngle(elt); + else if (_currentObj->property("Length").isValid()) + value = docModel->getLength(elt); + + if (value == 0.) + return; + + // * Set the value to the field (radius, length or height) + if (list != NULL) + { + QListWidgetItem* item = list->currentItem(); + if (item != NULL) + { + if (value != 0.) + { + item->setText(QString::number(value)); + list->editItem(item); + } + } + } + else if (spb != NULL) + { + spb->setValue(value); + spb->setFocus(); + spb->selectAll(); + } } // ============================================================= resetSizeAndShow void HexaBaseDialog::resetSizeAndShow(QDockWidget* parent) { + if (parent == NULL) + return; + //force the dialog to fit its contain - lockSizeToSizeHint(); +// setMinimumWidth(sizeHint().width()); //set the dialog in the dockwidget + if (parent->widget()) + parent->widget()->close(); parent->setWidget(this); parent->setWindowTitle(windowTitle()); - parent->setVisible(true); - show(); + parent->show(); - unlockSizeModification(); +// setMinimumWidth(MIN_WIDTH); } QString HexaBaseDialog::getErrorMsg() @@ -252,8 +294,8 @@ void HexaBaseDialog::connectDocumentGraphicView(VtkDocumentGraphicView* docGView //Connect the graphic view and its model to the dialog box connect( docGView->getPatternDataSelectionModel(), SIGNAL( selectionChanged ( const QItemSelection &, const QItemSelection &) ), this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ), Qt::UniqueConnection ); - connect( docGView->getPatternBuilderSelectionModel(), SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection &) ), - this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ), Qt::UniqueConnection ); +// connect( docGView->getPatternBuilderSelectionModel(), SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection &) ), +// this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ), Qt::UniqueConnection ); connect( docGView->getPatternGeomSelectionModel(), SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection &) ), this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ), Qt::UniqueConnection ); connect( docGView->getGroupsSelectionModel(), SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection &) ), @@ -273,8 +315,8 @@ void HexaBaseDialog::disconnectDocumentGraphicView(VtkDocumentGraphicView* docGV disconnect(docGView->getPatternDataSelectionModel(), SIGNAL( selectionChanged ( const QItemSelection &, const QItemSelection &) ), this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); - disconnect(docGView->getPatternBuilderSelectionModel(), SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection &) ), - this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); +// disconnect(docGView->getPatternBuilderSelectionModel(), SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection &) ), +// this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); disconnect(docGView->getPatternGeomSelectionModel(), SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection &) ), this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); @@ -292,6 +334,7 @@ void HexaBaseDialog::onCurrentSelectionChanged() highlightSelectedAssocs(); } +// ============================================================= clearCurrentObjectFocus void HexaBaseDialog::clearCurrentObjectFocus() { QWidget* currentWidget = dynamic_cast(_currentObj); @@ -380,7 +423,7 @@ void HexaBaseDialog::close() { //reset the data selection pattern (forget all selections of the current context) getPatternDataSelectionModel()->reset(); - getPatternBuilderSelectionModel()->reset(); +// getPatternBuilderSelectionModel()->reset(); getPatternGeomSelectionModel()->reset(); //Clear vtk selection @@ -392,6 +435,8 @@ void HexaBaseDialog::close() //Close the dialog box if (parentWidget()) parentWidget()->close(); + + getPatternDataSelectionModel()->setInfoMode(true); } // ============================================================== onHelpRequested @@ -438,21 +483,33 @@ void HexaBaseDialog::refreshHighlight() highlightSelectedAssocs(); } +bool HexaBaseDialog::isDimensionType(const QObject* obj) +{ + if (obj == NULL) + return false; + + return (obj->property("Radius").isValid()) || + (obj->property("Angle").isValid()) || + (obj->property("Length").isValid()); +} + // ============================================================== getObjectViewType HEXABLOCKGUI::ViewType HexaBaseDialog::getObjectViewType(QObject* obj) { if (obj == NULL) return HEXABLOCKGUI::UNKNOWN; - QVariant v = obj->property("GeomWidgetType"); - if ( v.isValid() ) - return HEXABLOCKGUI::OCC; + QVariant v1 = obj->property("GeomWidgetType"); + QVariant v2 = obj->property("HexaWidgetType"); - v = obj->property("HexaWidgetType"); - if ( v.isValid() ) + if (v1.isValid() && v2.isValid() && isDimensionType(obj)) + return HEXABLOCKGUI::VTK_OCC; + else if (v1.isValid()) + return HEXABLOCKGUI::OCC; + else if (v2.isValid()) return HEXABLOCKGUI::VTK; - - return HEXABLOCKGUI::UNKNOWN; + else + return HEXABLOCKGUI::UNKNOWN; } // ============================================================== _selectAndHighlight @@ -482,7 +539,6 @@ void HexaBaseDialog::_disallowSelection() // ============================================================== _allowVTKSelection bool HexaBaseDialog::_allowVTKSelection( QObject* obj ) { - bool isOk = false; QVariant v = obj->property("HexaWidgetType"); @@ -519,13 +575,16 @@ bool HexaBaseDialog::_allowOCCSelection( QObject* obj ) // ============================================================== _getSelector QItemSelectionModel* HexaBaseDialog::_getSelector( QObject* obj ) { + if (obj == NULL) + return NULL; + QItemSelectionModel* selector = NULL; HexaWidgetType wtype; QVariant v = obj->property("HexaWidgetType"); - if ( !v.isValid() ) { + QVariant v2 = obj->property("GeomWidgetType"); + if ( !v.isValid() || (v2.isValid() && isDimensionType(obj)) ) return NULL; - } wtype = v.value(); @@ -533,12 +592,12 @@ QItemSelectionModel* HexaBaseDialog::_getSelector( QObject* obj ) case VERTEX_TREE: case EDGE_TREE: case QUAD_TREE: - case HEXA_TREE: selector = getPatternDataSelectionModel(); break; - case VECTOR_TREE: + case HEXA_TREE: + case VECTOR_TREE: selector = getPatternDataSelectionModel(); break; // case CYLINDER_TREE: // case PIPE_TREE: - case ELEMENTS_TREE: - case CROSSELEMENTS_TREE: selector = getPatternBuilderSelectionModel(); break; +// case ELEMENTS_TREE: +// case CROSSELEMENTS_TREE: selector = getPatternBuilderSelectionModel(); break; case GEOMPOINT_TREE: case GEOMEDGE_TREE: case GEOMFACE_TREE: selector = getPatternGeomSelectionModel(); break; @@ -551,6 +610,7 @@ QItemSelectionModel* HexaBaseDialog::_getSelector( QObject* obj ) return selector; } +// ============================================================== getGeomObj DocumentModel::GeomObj* HexaBaseDialog::getGeomObj(const QModelIndex& index) { HEXA_NS::NewShape* aSh = getDocumentModel()->getHexaPtr(index); @@ -700,15 +760,29 @@ bool HexaBaseDialog::_onSelectionChanged( const QItemSelection& sel, QListWidget */ void HexaBaseDialog::onSelectionChanged( const QItemSelection& sel, const QItemSelection& unsel ) { + QModelIndexList l = sel.indexes(); + + if ( l.count() == 0 ) + return; + QModelIndex selected = l[0]; + // * no edition for Info Dialogs - if ( _editMode == INFO_MODE ) + if ( _editMode == INFO_MODE || _currentObj == NULL || !selected.isValid()) + return; + + if (isDimensionType(_currentObj)) + { + // ** set the dimension of the selected object in the editor **/ + int selectedType = selected.data(HEXA_TREE_ROLE).toInt(); + if (selectedType == EDGE_TREE || selectedType == GEOMEDGE_TREE) + computeAndSetDimension(selected); return; + } - QLineEdit* aLineEdit = NULL; - QListWidget* aListWidget = NULL; + QLineEdit* aLineEdit = dynamic_cast(_currentObj); + QListWidget* aListWidget = dynamic_cast(_currentObj); // * fill the lineedit with selection - aLineEdit = dynamic_cast(_currentObj); if ( aLineEdit) { _onSelectionChanged( sel, aLineEdit ); @@ -716,8 +790,7 @@ void HexaBaseDialog::onSelectionChanged( const QItemSelection& sel, const QItemS } // * fill the listWidget with selection - aListWidget = dynamic_cast(_currentObj); - if ( aListWidget) + if (aListWidget) _onSelectionChanged( sel, aListWidget ); } @@ -748,10 +821,8 @@ void HexaBaseDialog::hideEvent ( QHideEvent * event ) { //Disconnection salome selection signals if (HEXABLOCKGUI::selectionMgr() != NULL) - { disconnect( HEXABLOCKGUI::selectionMgr() , SIGNAL(currentSelectionChanged()), this, SLOT(onCurrentSelectionChanged()) ); - } //Disconnect vtk window activation signals // if (HEXABLOCKGUI::currentDocGView->getViewWindow() != NULL) @@ -767,7 +838,6 @@ void HexaBaseDialog::hideEvent ( QHideEvent * event ) //Disconnect model selection signals disconnectDocumentGraphicView(); - getDocumentModel()->allowEdition(); QDialog::hideEvent( event ); @@ -850,13 +920,14 @@ bool HexaBaseDialog::_isLineOrListWidget(QObject *widget) */ void HexaBaseDialog::_highlightWidget(QObject *obj, Qt::GlobalColor clr) { - if (!_isLineOrListWidget(obj)) return; + QDoubleSpinBox* spb = dynamic_cast(obj); + if (!_isLineOrListWidget(obj) && spb == NULL) + return; - QWidget *widget = dynamic_cast(obj); //sure it's not NULL (_isLineOrListWidget(obj)) + QWidget *widget = dynamic_cast(obj); QPalette palette1 = widget->palette(); - palette1.setColor(widget->backgroundRole(), clr); + palette1.setColor(QPalette::Active, widget->backgroundRole(), clr); widget->setPalette(palette1); - }//_highlightWidget @@ -896,13 +967,15 @@ bool HexaBaseDialog::eventFilter(QObject *obj, QEvent *event) return false; // * Focus In ------ - - // allow vtk selection - if (getObjectViewType(obj) == HEXABLOCKGUI::VTK) + HEXABLOCKGUI::ViewType vtype = getObjectViewType(obj); + if (vtype == HEXABLOCKGUI::VTK_OCC) + { + _allowVTKSelection(obj); + _allowOCCSelection(obj); + } + else if (vtype == HEXABLOCKGUI::VTK) _allowVTKSelection( obj ); - - //allow occ selection - if (getObjectViewType(obj) == HEXABLOCKGUI::OCC) + else if (vtype == HEXABLOCKGUI::OCC) _allowOCCSelection( obj ); //Depending on the focused widget type, get the right selector for it @@ -942,7 +1015,6 @@ VertexDialog::VertexDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ): _helpFileName = "gui_vertex.html"; setupUi( this ); _initWidget(editmode); - // setFocusProxy( name_le ); if ( editmode == NEW_MODE ){ setWindowTitle( tr("Vertex Construction") ); @@ -1068,7 +1140,7 @@ bool VertexDialog::apply(QModelIndex& result) } QString newName = name_le->text(); - if ( !newName.isEmpty() )/*{*/ + if ( !newName.isEmpty() ) getDocumentModel()->setName( iVertex, newName ); //the default name in the dialog box @@ -1079,8 +1151,6 @@ bool VertexDialog::apply(QModelIndex& result) // to select/highlight result result = patternDataModel->mapFromSource(iVertex); - // updateDialogBoxName(name_le, result); - // const char *defaultName = getDocumentModel()->getHexaPtr(last)->getName(); return isOk; } @@ -1095,9 +1165,6 @@ EdgeDialog::EdgeDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ): setupUi( this ); _initWidget(editmode); - // rb0->setFocusProxy( v0_le_rb0 ); - // rb1->setFocusProxy( vex_le_rb1 ); - if ( editmode == INFO_MODE ){ setWindowTitle( tr("Edge Information") ); rb1->hide(); @@ -1149,8 +1216,6 @@ void EdgeDialog::_initInputWidget( Mode editmode ) if (editmode == INFO_MODE) name_le->setReadOnly(true); - //connect( name_le, SIGNAL(returnPressed()), this, SLOT(updateName()) ); - } // ============================================================== Clear @@ -1209,8 +1274,8 @@ bool EdgeDialog::apply(QModelIndex& result) if ( !getDocumentModel() ) return false; const PatternDataModel* patternDataModel = getPatternDataModel(); - const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); - if ( !patternDataModel || !patternBuilderModel ) return false; +// const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel /*|| !patternBuilderModel*/ ) return false; QModelIndex iEdge; @@ -1222,7 +1287,8 @@ bool EdgeDialog::apply(QModelIndex& result) } } else if ( rb1->isChecked() ){ QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb1] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb1] ); + QModelIndex ivec = patternDataModel->mapToSource( _index[vec_le_rb1] ); +// QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb1] ); if ( ivex.isValid() && ivec.isValid() ){ iEdge = getDocumentModel()->addEdgeVector( ivex, ivec ); } @@ -1499,6 +1565,8 @@ HexaDialog::HexaDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ): if ( editmode == INFO_MODE ){ setWindowTitle( tr("Hexahedron Information") ); + quads_lw->viewport()->setAttribute( Qt::WA_TransparentForMouseEvents ); + vertices_lw->viewport()->setAttribute( Qt::WA_TransparentForMouseEvents ); } } @@ -1521,7 +1589,6 @@ void HexaDialog::_initInputWidget( Mode editmode ) vertices_lw->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); vertices_lw->installEventFilter(this); - if ( editmode != INFO_MODE ) { // delete item from listwidget QShortcut* delQuadShortcut = new QShortcut( QKeySequence(Qt::Key_X), quads_lw ); @@ -1546,7 +1613,6 @@ void HexaDialog::_initInputWidget( Mode editmode ) if (editmode == INFO_MODE) name_le->setReadOnly(true); - } // ============================================================== clear @@ -1728,9 +1794,9 @@ bool HexaDialog::apply(QModelIndex& result) } nbItems = iElts.count(); - if ( quads_rb->isChecked() and (nbItems>=2 and nbItems<=6) ){ // build from quads iElts.count() should be between [2,6] + if ( quads_rb->isChecked() && (nbItems>=2 && nbItems<=6) ){ // build from quads iElts.count() should be between [2,6] iHexa = getDocumentModel()->addHexaQuads( iElts ); - } else if ( vertices_rb->isChecked() and nbItems== 8 ){ // build from vertices + } else if ( vertices_rb->isChecked() && nbItems== 8 ){ // build from vertices iHexa = getDocumentModel()->addHexaVertices( iElts[0], iElts[1], iElts[2], iElts[3], iElts[4], iElts[5], iElts[6], iElts[7] ); } @@ -1851,8 +1917,8 @@ bool VectorDialog::apply(QModelIndex& result) if ( !getDocumentModel() ) return false; const PatternDataModel* patternDataModel = getPatternDataModel(); - const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); - if ( !patternDataModel || !patternBuilderModel) return false; +// const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel /*|| !patternBuilderModel*/) return false; QModelIndex iVector; @@ -1888,7 +1954,8 @@ bool VectorDialog::apply(QModelIndex& result) updateDefaultName(name_le, _value->getType()); // to select/highlight result - result = patternBuilderModel->mapFromSource(iVector); + result = patternDataModel->mapFromSource(iVector); +// result = patternBuilderModel->mapFromSource(iVector); return true; } @@ -2061,7 +2128,7 @@ bool MakeGridDialog::apply(QModelIndex& result) DocumentModel* docModel = getDocumentModel(); PatternDataModel* patternDataModel = getPatternDataModel(); - PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); +// PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); QModelIndex iNewElts; if ( rb0->isChecked() ) @@ -2074,9 +2141,12 @@ bool MakeGridDialog::apply(QModelIndex& result) else if ( rb1->isChecked() ) { QModelIndex icenter = patternDataModel->mapToSource( _index[center_le] ); - QModelIndex iaxis = patternBuilderModel->mapToSource( _index[axis_le] ); - QModelIndex ibase = patternBuilderModel->mapToSource( _index[base_le] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le] ); + QModelIndex iaxis = patternDataModel->mapToSource( _index[axis_le] ); + QModelIndex ibase = patternDataModel->mapToSource( _index[base_le] ); + QModelIndex ivec = patternDataModel->mapToSource( _index[vec_le] ); +// QModelIndex iaxis = patternBuilderModel->mapToSource( _index[axis_le] ); +// QModelIndex ibase = patternBuilderModel->mapToSource( _index[base_le] ); +// QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le] ); if ( icenter.isValid() && iaxis.isValid() && ibase.isValid() && ivec.isValid() ) { @@ -2094,9 +2164,12 @@ bool MakeGridDialog::apply(QModelIndex& result) } else if ( rb2->isChecked() ) { QModelIndex icenter = patternDataModel->mapToSource( _index[center_le] ); - QModelIndex iaxis = patternBuilderModel->mapToSource( _index[axis_le] ); - QModelIndex ibase = patternBuilderModel->mapToSource( _index[base_le] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le] ); + QModelIndex iaxis = patternDataModel->mapToSource( _index[axis_le] ); + QModelIndex ibase = patternDataModel->mapToSource( _index[base_le] ); + QModelIndex ivec = patternDataModel->mapToSource( _index[vec_le] ); +// QModelIndex iaxis = patternBuilderModel->mapToSource( _index[axis_le] ); +// QModelIndex ibase = patternBuilderModel->mapToSource( _index[base_le] ); +// QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le] ); if ( icenter.isValid() && iaxis.isValid() && ibase.isValid() && ivec.isValid() ) { @@ -2137,7 +2210,6 @@ bool MakeGridDialog::apply(QModelIndex& result) iNewElts = docModel->makeCartesian( icenter, ibase, ivec, iaxis, radius, angles, heights); } - } if ( !iNewElts.isValid() ) @@ -2146,7 +2218,8 @@ bool MakeGridDialog::apply(QModelIndex& result) return false; } - result = patternBuilderModel->mapFromSource( iNewElts ); + result = patternDataModel->mapFromSource(iNewElts); +// result = patternBuilderModel->mapFromSource( iNewElts ); return true; } @@ -2173,19 +2246,60 @@ MakeCylinderDialog::~MakeCylinderDialog() void MakeCylinderDialog::_initInputWidget( Mode editmode ) { - origin_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE)); - axis_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - base_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE)); - installEventFilter(this); - origin_le->installEventFilter(this); - axis_le->installEventFilter(this); - base_le->installEventFilter(this); + rb0->installEventFilter(this); + rb1->installEventFilter(this); + rb2->installEventFilter(this); + + origin_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE)); + origin_le->installEventFilter(this); origin_le->setReadOnly(true); + + axis_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + axis_le->installEventFilter(this); axis_le->setReadOnly(true); + + base_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE)); + base_le->installEventFilter(this); base_le->setReadOnly(true); + ext_radius_spb->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + ext_radius_spb->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + ext_radius_spb->setProperty("Radius", QVariant::fromValue(true)); + ext_radius_spb->installEventFilter(this); + + int_radius_spb->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + int_radius_spb->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + int_radius_spb->setProperty("Radius", QVariant::fromValue(true)); + int_radius_spb->installEventFilter(this); + + angle_spb->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + angle_spb->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + angle_spb->setProperty("Angle", QVariant::fromValue(true)); + angle_spb->installEventFilter(this); + + height_spb->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + height_spb->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + height_spb->setProperty("Length", QVariant::fromValue(true)); + height_spb->installEventFilter(this); + + radius_lw->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + radius_lw->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + radius_lw->setProperty("Radius", QVariant::fromValue(true)); + radius_lw->installEventFilter(this); + + + angle_lw->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + angle_lw->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + angle_lw->setProperty("Angle", QVariant::fromValue(true)); + angle_lw->installEventFilter(this); + + height_lw->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + height_lw->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + height_lw->setProperty("Length", QVariant::fromValue(true)); + height_lw->installEventFilter(this); + radius_lw->setItemDelegate(new HexaPositiveDoubleSpinBoxDelegate(radius_lw)); radius_lw->setEditTriggers(QAbstractItemView::DoubleClicked); @@ -2303,11 +2417,13 @@ bool MakeCylinderDialog::apply(QModelIndex& result) DocumentModel* docModel = getDocumentModel(); PatternDataModel* patternDataModel = getPatternDataModel(); - PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); +// PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); QModelIndex iorigin = patternDataModel->mapToSource( _index[origin_le] ); - QModelIndex iaxis = patternBuilderModel->mapToSource( _index[axis_le] ); - QModelIndex ibase = patternBuilderModel->mapToSource( _index[base_le] ); + QModelIndex iaxis = patternDataModel->mapToSource( _index[axis_le] ); + QModelIndex ibase = patternDataModel->mapToSource( _index[base_le] ); +// QModelIndex iaxis = patternBuilderModel->mapToSource( _index[axis_le] ); +// QModelIndex ibase = patternBuilderModel->mapToSource( _index[base_le] ); double rext = ext_radius_spb->value(); double rint = int_radius_spb->value(); double angle = angle_spb->value(); @@ -2371,7 +2487,8 @@ bool MakeCylinderDialog::apply(QModelIndex& result) return false; } - result = patternBuilderModel->mapFromSource(iElts); + result = patternDataModel->mapFromSource(iElts); +// result = patternBuilderModel->mapFromSource(iElts); return true; } @@ -2408,10 +2525,49 @@ void MakePipeDialog::_initInputWidget( Mode editmode ) axis_le->installEventFilter(this); base_le->installEventFilter(this); + rb0->installEventFilter(this); + rb1->installEventFilter(this); + rb2->installEventFilter(this); + origin_le->setReadOnly(true); axis_le->setReadOnly(true); base_le->setReadOnly(true); + ext_radius_spb->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + ext_radius_spb->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + ext_radius_spb->setProperty("Radius", QVariant::fromValue(true)); + ext_radius_spb->installEventFilter(this); + + int_radius_spb->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + int_radius_spb->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + int_radius_spb->setProperty("Radius", QVariant::fromValue(true)); + int_radius_spb->installEventFilter(this); + + angle_spb->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + angle_spb->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + angle_spb->setProperty("Angle", QVariant::fromValue(true)); + angle_spb->installEventFilter(this); + + height_spb->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + height_spb->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + height_spb->setProperty("Length", QVariant::fromValue(true)); + height_spb->installEventFilter(this); + + radius_lw->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + radius_lw->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + radius_lw->setProperty("Radius", QVariant::fromValue(true)); + radius_lw->installEventFilter(this); + + angle_lw->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + angle_lw->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + angle_lw->setProperty("Angle", QVariant::fromValue(true)); + angle_lw->installEventFilter(this); + + height_lw->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + height_lw->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + height_lw->setProperty("Length", QVariant::fromValue(true)); + height_lw->installEventFilter(this); + radius_lw->setItemDelegate(new HexaPositiveDoubleSpinBoxDelegate(radius_lw)); radius_lw->setEditTriggers(QAbstractItemView::DoubleClicked); @@ -2530,11 +2686,13 @@ bool MakePipeDialog::apply(QModelIndex& result) DocumentModel* docModel = getDocumentModel(); PatternDataModel* patternDataModel = getPatternDataModel(); - PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); +// PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); QModelIndex iorigin = patternDataModel->mapToSource( _index[origin_le] ); - QModelIndex iaxis = patternBuilderModel->mapToSource( _index[axis_le] ); - QModelIndex ibase = patternBuilderModel->mapToSource( _index[base_le] ); + QModelIndex iaxis = patternDataModel->mapToSource( _index[axis_le] ); + QModelIndex ibase = patternDataModel->mapToSource( _index[base_le] ); +// QModelIndex iaxis = patternBuilderModel->mapToSource( _index[axis_le] ); +// QModelIndex ibase = patternBuilderModel->mapToSource( _index[base_le] ); double rext = ext_radius_spb->value(); double rint = int_radius_spb->value(); double angle = angle_spb->value(); @@ -2598,7 +2756,8 @@ bool MakePipeDialog::apply(QModelIndex& result) } // to select/highlight result - result = patternBuilderModel->mapFromSource(iElts); + result = patternDataModel->mapFromSource(iElts); +// result = patternBuilderModel->mapFromSource(iElts); return true; } @@ -2626,6 +2785,26 @@ void MakeCylindersDialog::_initInputWidget( Mode editmode ) direction_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); direction2_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + radius_spb->setProperty("HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + radius_spb->setProperty("GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + radius_spb->setProperty("Radius", QVariant::fromValue(true)); + radius_spb->installEventFilter(this); + + height_spb->setProperty("HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + height_spb->setProperty("GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + height_spb->setProperty("Length", QVariant::fromValue(true)); + height_spb->installEventFilter(this); + + radius2_spb->setProperty("HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + radius2_spb->setProperty("GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + radius2_spb->setProperty("Radius", QVariant::fromValue(true)); + radius2_spb->installEventFilter(this); + + height2_spb->setProperty("HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + height2_spb->setProperty("GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + height2_spb->setProperty("Length", QVariant::fromValue(true)); + height2_spb->installEventFilter(this); + installEventFilter(this); center_le->installEventFilter(this); center2_le->installEventFilter(this); @@ -2664,13 +2843,15 @@ bool MakeCylindersDialog::apply(QModelIndex& result) DocumentModel* docModel = getDocumentModel(); PatternDataModel* patternDataModel = getPatternDataModel(); - PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); +// PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); QModelIndex iElts; QModelIndex icenter = patternDataModel->mapToSource( _index[center_le] ); QModelIndex icenter2 = patternDataModel->mapToSource( _index[center2_le] ); - QModelIndex idir = patternBuilderModel->mapToSource( _index[direction_le] ); - QModelIndex idir2 = patternBuilderModel->mapToSource( _index[direction2_le] ); + QModelIndex idir = patternDataModel->mapToSource( _index[direction_le] ); + QModelIndex idir2 = patternDataModel->mapToSource( _index[direction2_le] ); +// QModelIndex idir = patternBuilderModel->mapToSource( _index[direction_le] ); +// QModelIndex idir2 = patternBuilderModel->mapToSource( _index[direction2_le] ); if ( icenter.isValid() && icenter2.isValid() && idir.isValid() && idir2.isValid()){ double r1 = radius_spb->value(); @@ -2685,7 +2866,8 @@ bool MakeCylindersDialog::apply(QModelIndex& result) return false; } - result = patternBuilderModel->mapFromSource(iElts); + result = patternDataModel->mapFromSource(iElts); +// result = patternBuilderModel->mapFromSource(iElts); return true; } @@ -2714,7 +2896,36 @@ void MakePipesDialog::_initInputWidget( Mode editmode ) dir_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); dir2_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - installEventFilter(this); + ext_radius_spb->setProperty("HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + ext_radius_spb->setProperty("GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + ext_radius_spb->setProperty("Radius", QVariant::fromValue(true)); + ext_radius_spb->installEventFilter(this); + + int_radius_spb->setProperty("HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + int_radius_spb->setProperty("GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + int_radius_spb->setProperty("Radius", QVariant::fromValue(true)); + int_radius_spb->installEventFilter(this); + + height_spb->setProperty("HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + height_spb->setProperty("GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + height_spb->setProperty("Length", QVariant::fromValue(true)); + height_spb->installEventFilter(this); + + ext_radius2_spb->setProperty("HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + ext_radius2_spb->setProperty("GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + ext_radius2_spb->setProperty("Radius", QVariant::fromValue(true)); + ext_radius2_spb->installEventFilter(this); + + int_radius2_spb->setProperty("HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + int_radius2_spb->setProperty("GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + int_radius2_spb->setProperty("Radius", QVariant::fromValue(true)); + int_radius2_spb->installEventFilter(this); + + height2_spb->setProperty("HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + height2_spb->setProperty("GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + height2_spb->setProperty("Length", QVariant::fromValue(true)); + height2_spb->installEventFilter(this); + origin_le->installEventFilter(this); origin2_le->installEventFilter(this); dir_le->installEventFilter(this); @@ -2752,12 +2963,14 @@ bool MakePipesDialog::apply(QModelIndex& result) DocumentModel* docModel = getDocumentModel(); PatternDataModel* patternDataModel = getPatternDataModel(); - PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); +// PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); QModelIndex iorigin1 = patternDataModel->mapToSource( _index[origin_le] ); QModelIndex iorigin2 = patternDataModel->mapToSource( _index[origin2_le] ); - QModelIndex idir1 = patternBuilderModel->mapToSource( _index[dir_le] ); - QModelIndex idir2 = patternBuilderModel->mapToSource( _index[dir2_le] ); + QModelIndex idir1 = patternDataModel->mapToSource( _index[dir_le] ); + QModelIndex idir2 = patternDataModel->mapToSource( _index[dir2_le] ); +// QModelIndex idir1 = patternBuilderModel->mapToSource( _index[dir_le] ); +// QModelIndex idir2 = patternBuilderModel->mapToSource( _index[dir2_le] ); double rint1 = int_radius_spb->value(); double rext1 = ext_radius_spb->value(); double height1 = height_spb->value(); @@ -2776,7 +2989,8 @@ bool MakePipesDialog::apply(QModelIndex& result) return false; } - result = patternBuilderModel->mapFromSource(iElts); + result = patternDataModel->mapFromSource(iElts); +// result = patternBuilderModel->mapFromSource(iElts); return true; } @@ -2899,10 +3113,25 @@ void PrismQuadDialog::_initInputWidget( Mode editmode ) quads_lw->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); axis_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + length_spb->setProperty("HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + length_spb->setProperty("GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + length_spb->setProperty("Length", QVariant::fromValue(true)); + length_spb->installEventFilter(this); + + + height_lw->setProperty("HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + height_lw->setProperty("GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + height_lw->setProperty("Length", QVariant::fromValue(true)); + height_lw->installEventFilter(this); + installEventFilter(this); quads_lw->installEventFilter(this); axis_le->installEventFilter(this); + extrudeTop_rb->installEventFilter(this); + extrudeUni_rb->installEventFilter(this); + extrude_rb->installEventFilter(this); + axis_le->setReadOnly(true); QShortcut* delQuadShortcut = new QShortcut( QKeySequence(Qt::Key_X), quads_lw ); @@ -2980,10 +3209,12 @@ bool PrismQuadDialog::apply(QModelIndex& result) _currentObj = NULL; DocumentModel* docModel = getDocumentModel(); - PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + PatternDataModel* patternDataModel = getPatternDataModel(); +// PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); QModelIndexList iquads = getIndexList(quads_lw); - QModelIndex iaxis = patternBuilderModel->mapToSource( _index[axis_le] ); + QModelIndex iaxis = patternDataModel->mapToSource( _index[axis_le] ); +// QModelIndex iaxis = patternBuilderModel->mapToSource( _index[axis_le] ); double length = length_spb->value(); int nb = nb_spb->value(); @@ -3023,7 +3254,8 @@ bool PrismQuadDialog::apply(QModelIndex& result) return false; } - result = patternBuilderModel->mapFromSource(iElts); + result = patternDataModel->mapFromSource(iElts); +// result = patternBuilderModel->mapFromSource(iElts); return true; } @@ -3082,6 +3314,11 @@ void JoinQuadDialog::_initInputWidget( Mode editmode ) vex2_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); vex3_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + height_lw->setProperty("HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + height_lw->setProperty("GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + height_lw->setProperty("Length", QVariant::fromValue(true)); + height_lw->installEventFilter(this); + installEventFilter(this); quad_dest_le->installEventFilter(this); quads_lw->installEventFilter(this); @@ -3090,6 +3327,9 @@ void JoinQuadDialog::_initInputWidget( Mode editmode ) vex2_le->installEventFilter(this); vex3_le->installEventFilter(this); + joinUni_rb->installEventFilter(this); + join_rb->installEventFilter(this); + QShortcut* delQuadShortcut = new QShortcut( QKeySequence(Qt::Key_X), quads_lw ); delQuadShortcut->setContext( Qt::WidgetShortcut ); connect( delQuadShortcut, SIGNAL(activated()), this, SLOT(removeQuad()) ); @@ -3185,7 +3425,7 @@ bool JoinQuadDialog::apply(QModelIndex& result) DocumentModel* docModel = getDocumentModel(); PatternDataModel* patternDataModel = getPatternDataModel(); - PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); +// PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); QModelIndexList iquads; QModelIndex iquad; @@ -3233,7 +3473,8 @@ bool JoinQuadDialog::apply(QModelIndex& result) SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT JOIN QUAD(S)" ) + "\n" + getErrorMsg() ); return false; } - result = patternBuilderModel->mapFromSource(iElts); + result = patternDataModel->mapFromSource(iElts); +// result = patternBuilderModel->mapFromSource(iElts); return true; } @@ -3643,8 +3884,8 @@ bool DisconnectDialog::apply(QModelIndex& result) _currentObj = NULL; if (getDocumentModel() == NULL) return false; const PatternDataModel* patternDataModel = getPatternDataModel(); - const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); - if ( !patternDataModel || !patternBuilderModel) return false; +// const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel /*|| !patternBuilderModel*/) return false; QModelIndex iElts; @@ -3704,7 +3945,8 @@ bool DisconnectDialog::apply(QModelIndex& result) return false; } - result = patternBuilderModel->mapFromSource(iElts); + result = patternDataModel->mapFromSource(iElts); +// result = patternBuilderModel->mapFromSource(iElts); return true; } @@ -3738,8 +3980,16 @@ void CutEdgeDialog::_initInputWidget( Mode editmode ) e_le->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); e_le->installEventFilter(this); + cutUni_rb->installEventFilter(this); + cut_rb->installEventFilter(this); + e_le->setReadOnly(true); + height_lw->setProperty("HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + height_lw->setProperty("GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + height_lw->setProperty("Length", QVariant::fromValue(true)); + height_lw->installEventFilter(this); + height_lw->setItemDelegate(new HexaPositiveDoubleSpinBoxDelegate(height_lw)); height_lw->setEditTriggers(QAbstractItemView::DoubleClicked); @@ -3795,7 +4045,7 @@ bool CutEdgeDialog::apply(QModelIndex& result) DocumentModel* docModel = getDocumentModel(); PatternDataModel* patternDataModel = getPatternDataModel(); - PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); +// PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); QModelIndex iElts; QModelIndex iedge = patternDataModel->mapToSource( _index[e_le] ); @@ -3824,7 +4074,8 @@ bool CutEdgeDialog::apply(QModelIndex& result) return false; } - result = patternBuilderModel->mapFromSource(iElts); + result = patternDataModel->mapFromSource(iElts); +// result = patternBuilderModel->mapFromSource(iElts); //Update the line edit QVariant invalid; @@ -3866,6 +4117,9 @@ void MakeTransformationDialog::_initInputWidget( Mode editmode ) QValidator *validator = new QRegExpValidator(rx, this); installEventFilter(this); + rb0->installEventFilter(this); + rb1->installEventFilter(this); + rb2->installEventFilter(this); vec_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); elts_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); @@ -3892,6 +4146,11 @@ void MakeTransformationDialog::_initInputWidget( Mode editmode ) vec_le_rb2->installEventFilter(this); elts_le_rb2->installEventFilter(this); + angle_spb->setProperty("HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + angle_spb->setProperty("GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + angle_spb->setProperty("Angle", QVariant::fromValue(true)); + angle_spb->installEventFilter(this); + vec_le_rb0->setReadOnly(true); elts_le_rb0->setReadOnly(true); @@ -3951,21 +4210,24 @@ bool MakeTransformationDialog::apply(QModelIndex& result) if (getDocumentModel() == NULL) return false; const PatternDataModel* patternDataModel = getPatternDataModel(); - const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); - if ( !patternDataModel || !patternBuilderModel) return false; +// const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel /*|| !patternBuilderModel*/) return false; QModelIndex iNewElts; if ( rb0->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb0] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb0] ); + QModelIndex ielts = patternDataModel->mapToSource( _index[elts_le_rb0] ); + QModelIndex ivec = patternDataModel->mapToSource( _index[vec_le_rb0] ); +// QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb0] ); +// QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb0] ); if ( ielts.isValid() && ivec.isValid() ) iNewElts = getDocumentModel()->makeTranslation( ielts, ivec ); } else if ( rb1->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb1] ); +// QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb1] ); + QModelIndex ielts = patternDataModel->mapToSource( _index[elts_le_rb1] ); QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb1] ); double k = k_spb->value(); @@ -3974,9 +4236,11 @@ bool MakeTransformationDialog::apply(QModelIndex& result) iNewElts = getDocumentModel()->makeScale( ielts, ivex, k ); } else if ( rb2->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb2] ); +// QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb2] ); + QModelIndex ielts = patternDataModel->mapToSource( _index[elts_le_rb2] ); QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb2] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb2] ); +// QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb2] ); + QModelIndex ivec = patternDataModel->mapToSource( _index[vec_le_rb2] ); double angle = angle_spb->value(); if ( ielts.isValid() @@ -3990,7 +4254,18 @@ bool MakeTransformationDialog::apply(QModelIndex& result) return false; } - result = patternBuilderModel->mapFromSource(iNewElts); + result = patternDataModel->mapFromSource(iNewElts); + if (result.isValid()) + { + MESSAGE("======> Result is valid!"); + HEXA_NS::Elements* elts = getDocumentModel()->getHexaPtr(result); + MESSAGE("======> " << elts->getName()); + } + else + { + MESSAGE("======> Result is not valid!"); + } +// result = patternBuilderModel->mapFromSource(iNewElts); return true; } @@ -4110,13 +4385,14 @@ bool MakeSymmetryDialog::apply(QModelIndex& result) _currentObj = NULL; if (getDocumentModel() == NULL) return false; const PatternDataModel* patternDataModel = getPatternDataModel(); - const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); - if ( !patternDataModel || !patternBuilderModel) return false; +// const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel /*|| !patternBuilderModel*/) return false; QModelIndex iNewElts; if ( rb0->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb0] ); +// QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb0] ); + QModelIndex ielts = patternDataModel->mapToSource( _index[elts_le_rb0] ); QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb0] ); if ( ielts.isValid() @@ -4125,9 +4401,11 @@ bool MakeSymmetryDialog::apply(QModelIndex& result) } else if ( rb1->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb1] ); +// QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb1] ); + QModelIndex ielts = patternDataModel->mapToSource( _index[elts_le_rb1] ); QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb1] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb1] ); +// QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb1] ); + QModelIndex ivec = patternDataModel->mapToSource( _index[vec_le_rb1] ); if ( ielts.isValid() && ivex.isValid() @@ -4135,9 +4413,11 @@ bool MakeSymmetryDialog::apply(QModelIndex& result) iNewElts = getDocumentModel()->makeSymmetryLine( ielts, ivex, ivec ); } else if ( rb2->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb2] ); +// QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb2] ); + QModelIndex ielts = patternDataModel->mapToSource(_index[elts_le_rb2]); QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb2] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb2] ); +// QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb2] ); + QModelIndex ivec = patternDataModel->mapToSource(_index[vec_le_rb2]); if ( ielts.isValid() && ivex.isValid() @@ -4150,7 +4430,8 @@ bool MakeSymmetryDialog::apply(QModelIndex& result) return false; } - result = patternBuilderModel->mapFromSource(iNewElts); +// result = patternBuilderModel->mapFromSource(iNewElts); + result = patternDataModel->mapFromSource(iNewElts); return true; } @@ -4181,6 +4462,11 @@ void PerformTransformationDialog::_initInputWidget( Mode editmode ) QRegExp rx(""); QValidator *validator = new QRegExpValidator(rx, this); + installEventFilter(this); + rb0->installEventFilter(this); + rb1->installEventFilter(this); + rb2->installEventFilter(this); + vec_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); elts_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); vec_le_rb0->setValidator( validator ); @@ -4206,6 +4492,11 @@ void PerformTransformationDialog::_initInputWidget( Mode editmode ) vec_le_rb2->installEventFilter(this); elts_le_rb2->installEventFilter(this); + angle_spb->setProperty("HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + angle_spb->setProperty("GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + angle_spb->setProperty("Angle", QVariant::fromValue(true)); + angle_spb->installEventFilter(this); + vec_le_rb0->setReadOnly(true); elts_le_rb0->setReadOnly(true); vex_le_rb1->setReadOnly(true); @@ -4263,21 +4554,24 @@ bool PerformTransformationDialog::apply(QModelIndex& result) if (getDocumentModel() == NULL) return false; const PatternDataModel* patternDataModel = getPatternDataModel(); - const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); - if ( !patternDataModel || !patternBuilderModel) return false; +// const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel /*|| !patternBuilderModel*/) return false; bool performed = false; if ( rb0->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb0] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb0] ); +// QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb0] ); + QModelIndex ielts = patternDataModel->mapToSource(_index[elts_le_rb0]); +// QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb0] ); + QModelIndex ivec = patternDataModel->mapToSource(_index[vec_le_rb0]); if ( ielts.isValid() && ivec.isValid() ) performed = getDocumentModel()->performTranslation( ielts, ivec ); } else if ( rb1->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb1] ); +// QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb1] ); + QModelIndex ielts = patternDataModel->mapToSource(_index[elts_le_rb1]); QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb1] ); double k = k_spb->value(); @@ -4286,9 +4580,11 @@ bool PerformTransformationDialog::apply(QModelIndex& result) performed = getDocumentModel()->performScale( ielts, ivex, k ); } else if ( rb2->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb2] ); +// QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb2] ); + QModelIndex ielts = patternDataModel->mapToSource(_index[elts_le_rb2]); QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb2] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb2] ); +// QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb2] ); + QModelIndex ivec = patternDataModel->mapToSource(_index[vec_le_rb2]); double angle = angle_spb->value(); if ( ielts.isValid() @@ -4419,13 +4715,14 @@ bool PerformSymmetryDialog::apply(QModelIndex& result) if (getDocumentModel() == NULL) return false; const PatternDataModel* patternDataModel = getPatternDataModel(); - const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); - if ( !patternDataModel || !patternBuilderModel) return false; +// const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel /*|| !patternBuilderModel*/) return false; bool performed = false; if ( rb0->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb0] ); +// QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb0] ); + QModelIndex ielts = patternDataModel->mapToSource(_index[elts_le_rb0]); QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb0] ); if ( ielts.isValid() @@ -4433,9 +4730,11 @@ bool PerformSymmetryDialog::apply(QModelIndex& result) performed = getDocumentModel()->performSymmetryPoint( ielts, ivex ); } else if ( rb1->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb1] ); +// QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb1] ); + QModelIndex ielts = patternDataModel->mapToSource(_index[elts_le_rb1]); QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb1] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb1] ); +// QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb1] ); + QModelIndex ivec = patternDataModel->mapToSource(_index[vec_le_rb1]); if ( ielts.isValid() && ivex.isValid() @@ -4443,9 +4742,11 @@ bool PerformSymmetryDialog::apply(QModelIndex& result) performed = getDocumentModel()->performSymmetryLine( ielts, ivex, ivec ); } else if ( rb2->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb2] ); +// QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb2] ); + QModelIndex ielts = patternDataModel->mapToSource(_index[elts_le_rb2]); QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb2] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb2] ); +// QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb2] ); + QModelIndex ivec = patternDataModel->mapToSource(_index[vec_le_rb2]); if ( ielts.isValid() && ivex.isValid() @@ -4816,7 +5117,6 @@ void QuadAssocDialog::_initInputWidget( Mode editmode ) quad_le->installEventFilter(this); quad_le->setValidator( validator ); - faces_lw->setProperty( "HexaWidgetType", QVariant::fromValue(GEOMFACE_TREE) ); faces_lw->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_FACE) ); faces_lw->installEventFilter(this); @@ -5055,6 +5355,7 @@ void GroupDialog::_initInputWidget( Mode editmode ) { name_le->setReadOnly(true); kind_cb->setEnabled(false); + eltBase_lw->viewport()->setAttribute( Qt::WA_TransparentForMouseEvents ); } connect(eltBase_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel()), Qt::UniqueConnection); @@ -5544,36 +5845,7 @@ HexaBaseDialog(parent, editmode, f) { _helpFileName = "gui_mesh.html"; setWindowTitle( tr("Compute mesh") ); - QVBoxLayout* layout = new QVBoxLayout; - setLayout(layout); - - QHBoxLayout* up = new QHBoxLayout; - QHBoxLayout* down = new QHBoxLayout; - - layout->addLayout(up); - layout->addLayout(down); - - QVBoxLayout* vlg = new QVBoxLayout; - QVBoxLayout* vld = new QVBoxLayout; - - up->addLayout(vlg); - up->addLayout(vld); - - vlg->addWidget(new QLabel("Name")); - vlg->addWidget(new QLabel("Dimension")); - vlg->addWidget(new QLabel("Container")); - - _name = new QLineEdit("Mesh"); - _dim = new QSpinBox(); - _fact = new QLineEdit("FactoryServer"); - - vld->addWidget(_name); - vld->addWidget(_dim); - vld->addWidget(_fact); - - _dim->setRange(1, 3); - _dim->setValue(3); - + setupUi( this ); _initWidget(editmode); } @@ -5607,6 +5879,7 @@ bool ComputeMeshDialog::apply(QModelIndex& result) _currentObj = NULL; if (getDocumentModel() == NULL) return false; +#ifndef DISABLE_PYCONSOLE QString command = QString("import hexablock ; %1 = hexablock.mesh(\"%2\", \"%1\", %3, \"%4\")") .arg( _name->text() ) .arg( getDocumentModel()->getName() ) @@ -5620,6 +5893,9 @@ bool ComputeMeshDialog::apply(QModelIndex& result) pyConsole->exec( command ); else return false; +#else + return false; +#endif return true; } @@ -5650,15 +5926,24 @@ QModelIndexList ReplaceHexaDialog::getAssocsVTK() QListWidgetItem* item = NULL; //ListWidget content - const PatternDataModel* patternDataModel = getPatternDataModel(); - if ( !patternDataModel ) return assocs; int nbQuads = quads_lw->count(); for ( int r = 0; r < nbQuads; ++r ){ item = quads_lw->item(r); - // iQuad = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); //unsafe + //iQuad = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); //unsafe iQuad = getPatternDataSelectionModel()->indexBy(HEXA_DATA_ROLE, item->data(LW_DATA_ROLE)); - if ( iQuad.isValid() ) assocs << iQuad; + if ( iQuad.isValid() ) + assocs << iQuad; + } + + nbQuads = quads_lw_2->count(); + for( int i = 0; i < nbQuads; ++i) + { + item = quads_lw_2->item(i); + iQuad = getPatternDataSelectionModel()->indexBy(HEXA_DATA_ROLE, item->data(LW_DATA_ROLE)); + if (iQuad.isValid()) + assocs << iQuad; } + return assocs; } @@ -5671,41 +5956,44 @@ void ReplaceHexaDialog::_initInputWidget( Mode editmode ) c1_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); c2_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - c3_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); p1_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); p2_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - p3_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); c1_le->installEventFilter(this); c2_le->installEventFilter(this); - c3_le->installEventFilter(this); p1_le->installEventFilter(this); p2_le->installEventFilter(this); - p3_le->installEventFilter(this); quads_lw->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); quads_lw->installEventFilter(this); + quads_lw_2->setProperty("HexaWidgetType", QVariant::fromValue(QUAD_TREE)); + quads_lw_2->installEventFilter(this); + if ( editmode == NEW_MODE ){ QShortcut* delQuadShortcut = new QShortcut( QKeySequence(Qt::Key_X), quads_lw ); + QShortcut* delQuadShortcut2 = new QShortcut( QKeySequence(Qt::Key_X), quads_lw_2 ); delQuadShortcut->setContext( Qt::WidgetShortcut ); - + delQuadShortcut2->setContext( Qt::WidgetShortcut ); connect( delQuadShortcut, SIGNAL(activated()), this, SLOT(deleteQuadItem()) ); connect( quads_lw, SIGNAL(currentRowChanged(int)), this, SLOT(updateButtonBox(int)) ); + connect( delQuadShortcut2, SIGNAL(activated()), this, SLOT(deleteQuadItem2())); + connect( quads_lw_2, SIGNAL(currentRowChanged(int)), this, SLOT(updateButtonBox(int)) ); } c1_le->setReadOnly(true); c2_le->setReadOnly(true); - c3_le->setReadOnly(true); p1_le->setReadOnly(true); p2_le->setReadOnly(true); - p3_le->setReadOnly(true); connect(quads_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel()), Qt::UniqueConnection); + + connect(quads_lw_2, SIGNAL(itemSelectionChanged()), + this, SLOT(selectElementOfModel()), Qt::UniqueConnection); } // ============================================================== clear @@ -5714,24 +6002,21 @@ void ReplaceHexaDialog::clear() quads_lw->clear(); modelUnregister(quads_lw); + quads_lw_2->clear(); + modelUnregister(quads_lw_2); + p1_le->clear(); modelUnregister(p1_le); p2_le->clear(); modelUnregister(p2_le); - p3_le->clear(); - modelUnregister(p3_le); - c1_le->clear(); modelUnregister(c1_le); c2_le->clear(); modelUnregister(c2_le); - c3_le->clear(); - modelUnregister(c3_le); - modelUnregister(this); } @@ -5754,6 +6039,13 @@ void ReplaceHexaDialog::deleteQuadItem() updateButtonBox(); } +// ============================================================== deleteQuadItem2 +void ReplaceHexaDialog::deleteQuadItem2() +{ + delete quads_lw_2->currentItem(); + updateButtonBox(); +} + // ============================================================== apply bool ReplaceHexaDialog::apply(QModelIndex& result) { @@ -5762,36 +6054,46 @@ bool ReplaceHexaDialog::apply(QModelIndex& result) if ( !getDocumentModel() ) return false; const PatternDataModel* patternDataModel = getPatternDataModel(); - const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); - if ( !patternDataModel || !patternBuilderModel) return false; +// const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel /*|| !patternBuilderModel*/) return false; QModelIndex ielts; //result QListWidgetItem* item = NULL; - QModelIndexList iquads; + QModelIndexList iquads_source; QModelIndex iquad; int nbQuads = quads_lw->count(); for ( int r = 0; r < nbQuads; ++r){ item = quads_lw->item(r); iquad = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); if ( iquad.isValid() ) - iquads << iquad; + iquads_source << iquad; + } + + QModelIndexList iquads_dest; + nbQuads = quads_lw_2->count(); + for (int i = 0; i < nbQuads; ++i) + { + item = quads_lw_2->item(i); + iquad = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); + if (iquad.isValid()) + iquads_dest << iquad; } - QModelIndex ic1 = patternDataModel->mapToSource( _index[c1_le] ); - QModelIndex ic2 = patternDataModel->mapToSource( _index[c2_le] ); - QModelIndex ic3 = patternDataModel->mapToSource( _index[c3_le] ); + QModelIndex ip1_source = patternDataModel->mapToSource( _index[p1_le] ); + QModelIndex ip2_source = patternDataModel->mapToSource( _index[p2_le] ); - QModelIndex ip1 = patternDataModel->mapToSource( _index[p1_le] ); - QModelIndex ip2 = patternDataModel->mapToSource( _index[p2_le] ); - QModelIndex ip3 = patternDataModel->mapToSource( _index[p3_le] ); + QModelIndex ic1_dest = patternDataModel->mapToSource( _index[c1_le] ); + QModelIndex ic2_dest = patternDataModel->mapToSource( _index[c2_le] ); - if ( ic1.isValid() && ic2.isValid() && ic3.isValid() - && ip1.isValid() && ip2.isValid() && ip3.isValid() ){ - ielts = getDocumentModel()->replace( iquads, - ip1, ic1, - ip2, ic2, - ip3, ic3 ); + bool ipts_ok = ip1_source.isValid() && ip2_source.isValid() && + ic1_dest.isValid() && ic2_dest.isValid(); + + if (ipts_ok) + { + ielts = getDocumentModel()->replace( iquads_source, iquads_dest, + ip1_source, ic1_dest, + ip2_source, ic2_dest ); } if ( !ielts.isValid() ){ @@ -5799,7 +6101,8 @@ bool ReplaceHexaDialog::apply(QModelIndex& result) return false; } _value = ielts.model()->data(ielts, HEXA_DATA_ROLE).value(); - result = patternBuilderModel->mapFromSource(ielts); +// result = patternBuilderModel->mapFromSource(ielts); + result = patternDataModel->mapFromSource(ielts); //update the list (indexes) for ( int r = 0; r < nbQuads; ++r ){ @@ -5862,7 +6165,20 @@ void QuadRevolutionDialog::_initInputWidget( Mode editmode ) center_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); axis_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + angle_spb->setProperty("HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + angle_spb->setProperty("GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + angle_spb->setProperty("Angle", QVariant::fromValue(true)); + angle_spb->installEventFilter(this); + + angles_lw->setProperty("HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + angles_lw->setProperty("GeomWidgetType", QVariant::fromValue(TopAbs_EDGE)); + angles_lw->setProperty("Angle", QVariant::fromValue(true)); + angles_lw->installEventFilter(this); + installEventFilter(this); + revolutionUni_rb->installEventFilter(this); + revolution_rb->installEventFilter(this); + quads_lw->installEventFilter(this); center_le->installEventFilter(this); axis_le->installEventFilter(this); @@ -5946,7 +6262,7 @@ bool QuadRevolutionDialog::apply(QModelIndex& result) DocumentModel* docModel = getDocumentModel(); PatternDataModel* patternDataModel = getPatternDataModel(); - PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); +// PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); QListWidgetItem* item = NULL; @@ -5961,7 +6277,8 @@ bool QuadRevolutionDialog::apply(QModelIndex& result) } QModelIndex icenter = patternDataModel->mapToSource( _index[center_le] ); - QModelIndex iaxis = patternBuilderModel->mapToSource( _index[axis_le] ); + QModelIndex iaxis = patternDataModel->mapToSource(_index[axis_le]); +// QModelIndex iaxis = patternBuilderModel->mapToSource( _index[axis_le] ); int angle = angle_spb->value(); int nbre = nbre_spb->value(); @@ -5993,7 +6310,8 @@ bool QuadRevolutionDialog::apply(QModelIndex& result) return false; } _value = iElts.model()->data(iElts, HEXA_DATA_ROLE).value(); - result = patternBuilderModel->mapFromSource(iElts); + result = patternDataModel->mapFromSource(iElts); +// result = patternBuilderModel->mapFromSource(iElts); return true; } @@ -6010,21 +6328,21 @@ MakeHemiSphereDialog::MakeHemiSphereDialog( QWidget* parent, Mode editmode, Qt:: connect( sphereTop_rb, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); connect( sphereUni_rb, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); - connect( sphere2_rb, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); - connect( sphere_rb, SIGNAL(clicked()), this, SLOT(clearVTKSelection()) ); - connect( sphere_rb, SIGNAL(clicked()), this, SLOT(clearCurrentObjectFocus()) ); + connect( sphere2_rb, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( sphere_rb, SIGNAL(clicked()), this, SLOT(clearVTKSelection()) ); + connect( sphere_rb, SIGNAL(clicked()), this, SLOT(clearCurrentObjectFocus()) ); connect( sphericalTop_rb, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); connect( sphericalUni_rb, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); - connect( spherical2_rb, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); - connect( spherical_rb, SIGNAL(clicked()), this, SLOT(clearVTKSelection()) ); - connect( spherical_rb, SIGNAL(clicked()), this, SLOT(clearCurrentObjectFocus()) ); + connect( spherical2_rb, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( spherical_rb, SIGNAL(clicked()), this, SLOT(clearVTKSelection()) ); + connect( spherical_rb, SIGNAL(clicked()), this, SLOT(clearCurrentObjectFocus()) ); connect( rindTop_rb, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); connect( rindUni_rb, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); - connect( rind2_rb, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); - connect( rind_rb, SIGNAL(clicked()), this, SLOT(clearVTKSelection()) ); - connect( rind_rb, SIGNAL(clicked()), this, SLOT(clearCurrentObjectFocus()) ); + connect( rind2_rb, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( rind_rb, SIGNAL(clicked()), this, SLOT(clearVTKSelection()) ); + connect( rind_rb, SIGNAL(clicked()), this, SLOT(clearCurrentObjectFocus()) ); } // ============================================================== Destructeur @@ -6040,12 +6358,66 @@ void MakeHemiSphereDialog::_initInputWidget( Mode editmode ) base_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); vplan_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + sphere_radext_spb->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); + sphere_radext_spb->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE) ); + sphere_radext_spb->setProperty("Radius", QVariant::fromValue(true)); + + sphere_radint_spb->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); + sphere_radint_spb->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE) ); + sphere_radint_spb->setProperty("Radius", QVariant::fromValue(true)); + + hole_rad_spb->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); + hole_rad_spb->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE) ); + hole_rad_spb->setProperty("Radius", QVariant::fromValue(true)); + + radial_angle_spb->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); + radial_angle_spb->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE) ); + radial_angle_spb->setProperty("Angle", QVariant::fromValue(true)); + + radius_lw_1->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); + radius_lw_1->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE) ); + radius_lw_1->setProperty("Radius", QVariant::fromValue(true)); + + radius_lw_2->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); + radius_lw_2->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE) ); + radius_lw_2->setProperty("Radius", QVariant::fromValue(true)); + + height_lw->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); + height_lw->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE) ); + height_lw->setProperty("Length", QVariant::fromValue(true)); + + angle_lw->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); + angle_lw->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE) ); + angle_lw->setProperty("Angle", QVariant::fromValue(true)); + installEventFilter(this); center_le->installEventFilter(this); hole_axis_le->installEventFilter(this); base_le->installEventFilter(this); vplan_le->installEventFilter(this); + sphere_radext_spb->installEventFilter(this); + sphere_radint_spb->installEventFilter(this); + hole_rad_spb->installEventFilter(this); + radial_angle_spb->installEventFilter(this); + radius_lw_1->installEventFilter(this); + radius_lw_2->installEventFilter(this); + height_lw->installEventFilter(this); + angle_lw->installEventFilter(this); + + sphere_rb->installEventFilter(this); + sphereTop_rb->installEventFilter(this); + sphereUni_rb->installEventFilter(this); + sphere2_rb->installEventFilter(this); + rind_rb->installEventFilter(this); + rindTop_rb->installEventFilter(this); + rindUni_rb->installEventFilter(this); + rind2_rb->installEventFilter(this); + spherical_rb->installEventFilter(this); + sphericalTop_rb->installEventFilter(this); + sphericalUni_rb->installEventFilter(this); + spherical2_rb->installEventFilter(this); + center_le->setReadOnly(true); hole_axis_le->setReadOnly(true); base_le->setReadOnly(true); @@ -6208,13 +6580,15 @@ bool MakeHemiSphereDialog::apply(QModelIndex& result) DocumentModel* docModel = getDocumentModel(); PatternDataModel* patternDataModel = getPatternDataModel(); - PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); +// PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); QModelIndex iElts; QModelIndex icenter = patternDataModel->mapToSource( _index[center_le] ); QModelIndex ivplan = patternDataModel->mapToSource( _index[vplan_le] ); - QModelIndex ivecx = patternBuilderModel->mapToSource( _index[base_le] ); - QModelIndex ivecz = patternBuilderModel->mapToSource( _index[hole_axis_le] ); + QModelIndex ivecx = patternDataModel->mapToSource(_index[base_le]); + QModelIndex ivecz = patternDataModel->mapToSource(_index[hole_axis_le]); +// QModelIndex ivecx = patternBuilderModel->mapToSource( _index[base_le] ); +// QModelIndex ivecz = patternBuilderModel->mapToSource( _index[hole_axis_le] ); double radhole = hole_rad_spb->value(); double radext = sphere_radext_spb->value(); @@ -6334,7 +6708,8 @@ bool MakeHemiSphereDialog::apply(QModelIndex& result) return false; } _value = iElts.model()->data(iElts, HEXA_DATA_ROLE).value(); - result = patternBuilderModel->mapFromSource(iElts); + result = patternDataModel->mapFromSource(iElts); +// result = patternBuilderModel->mapFromSource(iElts); return true; } @@ -6390,7 +6765,7 @@ void ModelInfoDialog::hideEvent ( QHideEvent * event ) AddShapeDialog::AddShapeDialog(QWidget* parent, Mode editmode, Qt::WindowFlags wf): HexaBaseDialog(parent, editmode, wf) { - _helpFileName = ""; + _helpFileName = "gui_add_geometry.html#guiaddgeometry"; setupUi( this ); _initWidget(editmode); setWindowTitle(HEXABLOCKGUI::tr("ADD_SHAPE")); @@ -6479,308 +6854,3 @@ bool AddShapeDialog::apply(QModelIndex& result) return true; } - - - - - - -//***************************** OBSOLETE: A SUPPRIMER !!!! ************************************// - -// ============================================================== Constructeur -CylinderDialog::CylinderDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ) -: HexaBaseDialog(parent, editmode, f), - _value(0) -{ - _helpFileName = "gui_cyl.html"; - setupUi( this ); - _initWidget(editmode); - - if ( editmode == INFO_MODE ){ - setWindowTitle( tr("Cylinder Information") ); - } -} - -// ============================================================== Destructeur -CylinderDialog::~CylinderDialog() -{ -} - -// ============================================================== _initInputWidget -void CylinderDialog::_initInputWidget( Mode editmode ) -{ - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); - - installEventFilter(this); - name_le->installEventFilter(this); - - vex_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - vec_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - - vex_le->setValidator( validator ); - vec_le->setValidator( validator ); - - vex_le->installEventFilter(this); - vec_le->installEventFilter(this); - - vex_le->setReadOnly(true); - vec_le->setReadOnly(true); - - if (editmode == INFO_MODE) - { - name_le->setReadOnly(true); - r_spb->setReadOnly(true); - h_spb->setReadOnly(true); - } - -} - -// ============================================================== clear -void CylinderDialog::clear() -{ - name_le->clear(); - - vex_le->clear(); - modelUnregister(vex_le); - - vec_le->clear(); - modelUnregister(vec_le); - - r_spb->clear(); - h_spb->clear(); - - modelUnregister(this); - -} - -// ============================================================== setValue -void CylinderDialog::setValue(HEXA_NS::Cylinder* c) -{ - HEXA_NS::Vertex* base = c->getBase(); - HEXA_NS::Vector* direction = c->getDirection(); - double r = c->getRadius(); - double h = c->getHeight(); - - name_le->setText( c->getName() ); - vex_le->setText( base->getName() ); - vec_le->setText( direction->getName() ); - r_spb->setValue(r); - h_spb->setValue(h); - - if ( getPatternDataSelectionModel() ){ - QModelIndex iCyl = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(c) ); - QModelIndex iBase = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(base) ); - QModelIndex iDirection = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(direction) ); - - name_le->setProperty( "QModelIndex", QVariant::fromValue(iCyl) ); - vex_le->setProperty( "QModelIndex", QVariant::fromValue(iBase) ); - vec_le->setProperty( "QModelIndex", QVariant::fromValue(iDirection) ); - } - _value = c; -} - -// ============================================================== getValue -HEXA_NS::Cylinder* CylinderDialog::getValue() -{ - return _value; -} - -// ============================================================== apply -bool CylinderDialog::apply(QModelIndex& result) -{ -// if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); -// _currentObj = NULL; -// -// if ( !getDocumentModel() ) return false; -// const PatternDataModel* patternDataModel = getPatternDataModel(); -// const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); -// if ( !patternDataModel || !patternBuilderModel) return false; -// -// QModelIndex iCyl; -// QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le] ); -// QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le] ); -// double r = r_spb->value(); -// double h = h_spb->value(); -// -// if ( ivex.isValid() -// && ivec.isValid() ){ -// iCyl = getDocumentModel()->addCylinder( ivex, ivec, r, h ); -// } -// -// if ( !iCyl.isValid() ){ -// SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT ADD CYLINDER" ) ); -// return false; -// } -// -// _value = iCyl.model()->data(iCyl, HEXA_DATA_ROLE).value(); -// -// QString newName = name_le->text(); -// if (!newName.isEmpty()) /*{*/ -// getDocumentModel()->setName( iCyl, newName ); -// -// //update the default name in the dialog box -// if (_value != NULL) -// updateDefaultName(name_le, _value->getType()); -// -// // to select/highlight result -// result = patternBuilderModel->mapFromSource(iCyl); - - return true; -} - -//------------------------------- PipeDialog ----------------------------------- - -// ============================================================== Constructeur - -PipeDialog::PipeDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ) -: HexaBaseDialog(parent, editmode, f), - _value(0) -{ - _helpFileName = "gui_pipe.html"; - setupUi( this ); - _initWidget(editmode); - // setFocusProxy( vex_le ); - - if ( editmode == INFO_MODE ){ - setWindowTitle( tr("Pipe Information") ); - } - -} - -// ============================================================== Destructeur -PipeDialog::~PipeDialog() -{ -} - -// ============================================================== _initInputWidget -void PipeDialog::_initInputWidget( Mode editmode ) -{ - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); - - installEventFilter(this); - name_le->installEventFilter(this); - - //Vertex Field config - vex_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - vex_le->installEventFilter(this); - vex_le->setValidator( validator ); - - //Vector Field config - vec_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - vec_le->installEventFilter(this); - vec_le->setValidator( validator ); - - - if ( editmode == INFO_MODE ){ - name_le->setReadOnly(true); - ir_spb->setReadOnly(true); - er_spb->setReadOnly(true); - h_spb->setReadOnly(true); - } - - vex_le->setReadOnly(true); - vec_le->setReadOnly(true); - - //connect( name_le, SIGNAL(returnPressed()), this, SLOT(updateName())); -} - -// ============================================================== clear -void PipeDialog::clear() -{ - name_le->clear(); - - vex_le->clear(); - modelUnregister(vex_le); - - vec_le->clear(); - modelUnregister(vec_le); - - modelUnregister(this); -} - -// ============================================================== setValue -void PipeDialog::setValue(HEXA_NS::Pipe* p) -{ - HEXA_NS::Vertex* base = p->getBase(); - HEXA_NS::Vector* direction = p->getDirection(); - double ir = p->getInternalRadius(); - double er = p->getRadius(); - double h = p->getHeight(); - - name_le->setText( p->getName() ); - vex_le->setText( base->getName() ); - vec_le->setText( direction->getName() ); - ir_spb->setValue(ir); - er_spb->setValue(er); - h_spb->setValue(h); - - if ( getPatternDataSelectionModel() ){ - QModelIndex iPipe = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(p) ); - QModelIndex iBase = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(base) ); - QModelIndex iDirection = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(direction) ); - - name_le->setProperty( "QModelIndex", QVariant::fromValue(iPipe) ); - vex_le->setProperty( "QModelIndex", QVariant::fromValue(iBase) ); - vec_le->setProperty( "QModelIndex", QVariant::fromValue(iDirection) ); - } - _value = p; -} - -// ============================================================== getValue -HEXA_NS::Pipe* PipeDialog::getValue() -{ - return _value; -} - -// ============================================================== apply -bool PipeDialog::apply(QModelIndex& result) -{ -// if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); -// _currentObj = NULL; -// -// if ( !getDocumentModel() ) return false; -// const PatternDataModel* patternDataModel = getPatternDataModel(); -// const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); -// if ( !patternDataModel || !patternBuilderModel) return false; -// -// QModelIndex iPipe; -// QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le] ); -// QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le] ); -// double ir = ir_spb->value(); -// double er = er_spb->value(); -// double h = h_spb->value(); -// -// if (ir >= er) { -// SUIT_MessageBox::information( this, tr( "CANNOT ADD PIPE" ), tr( "External radius must be greather than Internal radius!" ) ); -// return false; -// } -// -// -// if ( ivex.isValid() -// && ivec.isValid() ){ -// iPipe = getDocumentModel()->addPipe( ivex, ivec, ir, er, h ); -// } -// -// if ( !iPipe.isValid() ){ -// SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT ADD PIPE" ) ); -// return false; -// } -// _value = iPipe.model()->data(iPipe, HEXA_DATA_ROLE).value(); -// -// QString newName = name_le->text(); -// if ( !newName.isEmpty() )/*{*/ -// getDocumentModel()->setName( iPipe, newName ); -// -// //update the default name in the dialog box -// if (_value != NULL) -// updateDefaultName(name_le, _value->getType()); -// -// // to select/highlight result -// result = patternBuilderModel->mapFromSource(iPipe); - - return true; -} -// ************************************** FIN A SUPPRIMER ******************************************// -