X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_WidgetConcealedObjects.cpp;h=5154ea04a4410abce48dca8522c6c22579351dcf;hb=97917d3698f5a2f7fc9596e7c755ff8f6751e373;hp=2e772162929e4a6bbfe9af5db63e60d1cec51526;hpb=19376bdf1642897fc498d54784c8ab17018f54dd;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_WidgetConcealedObjects.cpp b/src/ModuleBase/ModuleBase_WidgetConcealedObjects.cpp index 2e7721629..5154ea04a 100644 --- a/src/ModuleBase/ModuleBase_WidgetConcealedObjects.cpp +++ b/src/ModuleBase/ModuleBase_WidgetConcealedObjects.cpp @@ -1,148 +1,159 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D - -// File: ModuleBase_WidgetConcealedObjects.cpp -// Created: 29 Jul 2016 -// Author: Natalia ERMOLAEVA - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include - -#include - -#include -#include -#include -#include - -const int DEFAULT_NAME_COLUMN_WIDTH = 200; - -ModuleBase_WidgetConcealedObjects::ModuleBase_WidgetConcealedObjects(QWidget* theParent, - const Config_WidgetAPI* theData) -: ModuleBase_ModelWidget(theParent, theData) -{ - myBaseShapeAttribute = theData->getProperty("base_shape_attribute"); - QGridLayout* aMainLay = new QGridLayout(this); - ModuleBase_Tools::adjustMargins(aMainLay); - - myView = new QTableWidget(this); - aMainLay->addWidget(myView); - - myView->setColumnCount(2); - myView->horizontalHeader()->setVisible(false); - myView->verticalHeader()->setVisible(false); -} - -ModuleBase_WidgetConcealedObjects::~ModuleBase_WidgetConcealedObjects() -{ -} - -bool ModuleBase_WidgetConcealedObjects::storeValueCustom() -{ - if(!myFeature) - return false; - DataPtr aData = myFeature->data(); - AttributeRefListPtr anAttributeList = aData->reflist(attributeID()); - anAttributeList->clear(); - int aSize1 = anAttributeList->size(false); - for (int i = 0, aSize = myView->rowCount(); i < aSize; i++) { - QToolButton* aButton = dynamic_cast(myView->cellWidget(i, 0));; - if (aButton->isChecked()) - anAttributeList->append(myConcealedResults[i]); - } - int aSize = anAttributeList->size(false); - return true; -} - -bool ModuleBase_WidgetConcealedObjects::restoreValueCustom() -{ - FeaturePtr aBaseFeature; - ObjectPtr anObject; - if (myFeature) { - anObject = ModuleBase_Tools::getObject(myFeature->attribute(myBaseShapeAttribute)); - if (anObject.get() != NULL) - aBaseFeature = ModelAPI_Feature::feature(anObject); - } - if (myBaseFeature != aBaseFeature) { - myView->setRowCount(0); - myConcealedResults.clear(); - myBaseFeature = aBaseFeature; - if (myBaseFeature.get()) { - std::list > aResults; - ModelAPI_Tools::getConcealedResults(myBaseFeature, aResults); - std::list >::const_iterator anIt = aResults.begin(), - aLast = aResults.end(); - for (; anIt != aLast; anIt++) { - ResultPtr aResult = *anIt; - - int aRowId = myView->rowCount(); - addViewRow(aResult); - myConcealedResults[aRowId] = aResult; - } - } - } - - DataPtr aData = myFeature->data(); - AttributeRefListPtr anAttributeList = aData->reflist(attributeID()); - int aSize = anAttributeList->size(); - for (int i = 0, aSize = myView->rowCount(); i < aSize; i++) { - ResultPtr aResult = myConcealedResults[i]; - QToolButton* aButton = dynamic_cast(myView->cellWidget(i, 0)); - bool isChecked = anAttributeList->isInList(aResult); - - bool aBlocked = aButton->blockSignals(true); - aButton->setChecked(isChecked); - this->updateItemIcon(aButton); - aButton->blockSignals(aBlocked); - } - return true; -} - -QList ModuleBase_WidgetConcealedObjects::getControls() const -{ - QList result; - result << myView; - return result; -} - -void ModuleBase_WidgetConcealedObjects::addViewRow(const std::shared_ptr& theResult) -{ - int anId = myView->rowCount(); - myView->setRowCount(anId+1); - - QToolButton* aVisibilityBtn = new QToolButton(this); - connect(aVisibilityBtn, SIGNAL(toggled(bool)), this, SLOT(onItemToggled(bool))); - aVisibilityBtn->setCheckable(true); - aVisibilityBtn->setChecked(false); - updateItemIcon(aVisibilityBtn); - - myView->setCellWidget(anId, 0, aVisibilityBtn); - myView->setItem(anId, 1, new QTableWidgetItem(theResult->data()->name().c_str())); - - if (anId == 1) { - myView->setColumnWidth(0, myView->verticalHeader()->defaultSectionSize()); - myView->setColumnWidth(1, DEFAULT_NAME_COLUMN_WIDTH); - } -} - -void ModuleBase_WidgetConcealedObjects::onItemToggled(bool theState) -{ - emit valuesChanged(); - updateObject(myFeature); -} - -void ModuleBase_WidgetConcealedObjects::updateItemIcon(QToolButton* theButton) -{ - bool isChecked = theButton->isChecked(); - theButton->setIcon(isChecked ? QIcon(":icons/concealed_on.png") - : QIcon(":icons/concealed_off.png")); - theButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); -} +// Copyright (C) 2014-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, 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 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include + +#include +#include +#include +#include +#include + +const int DEFAULT_NAME_COLUMN_WIDTH = 200; + +ModuleBase_WidgetConcealedObjects::ModuleBase_WidgetConcealedObjects(QWidget* theParent, + const Config_WidgetAPI* theData) +: ModuleBase_ModelWidget(theParent, theData) +{ + myBaseShapeAttribute = theData->getProperty("base_shape_attribute"); + QGridLayout* aMainLay = new QGridLayout(this); + ModuleBase_Tools::adjustMargins(aMainLay); + + myView = new QTableWidget(this); + aMainLay->addWidget(myView); + + myView->setColumnCount(2); + myView->horizontalHeader()->setVisible(false); + myView->verticalHeader()->setVisible(false); +} + +ModuleBase_WidgetConcealedObjects::~ModuleBase_WidgetConcealedObjects() +{ +} + +bool ModuleBase_WidgetConcealedObjects::storeValueCustom() +{ + if(!myFeature) + return false; + DataPtr aData = myFeature->data(); + AttributeRefListPtr anAttributeList = aData->reflist(attributeID()); + anAttributeList->clear(); + int aSize1 = anAttributeList->size(false); + for (int i = 0, aSize = myView->rowCount(); i < aSize; i++) { + QCheckBox* aButton = + dynamic_cast(myView->cellWidget(i, 0)->findChild()); + if (aButton->isChecked()) + anAttributeList->append(myConcealedResults[i]); + } + int aSize = anAttributeList->size(false); + return true; +} + +bool ModuleBase_WidgetConcealedObjects::restoreValueCustom() +{ + FeaturePtr aBaseFeature; + ObjectPtr anObject; + if (myFeature) { + anObject = ModuleBase_Tools::getObject(myFeature->attribute(myBaseShapeAttribute)); + if (anObject.get() != NULL) + aBaseFeature = ModelAPI_Feature::feature(anObject); + } + if (myBaseFeature != aBaseFeature) { + myView->setRowCount(0); + myConcealedResults.clear(); + myBaseFeature = aBaseFeature; + if (myBaseFeature.get()) { + std::list > aResults; + ModelAPI_Tools::getConcealedResults(myBaseFeature, aResults); + std::list >::const_iterator anIt = aResults.begin(), + aLast = aResults.end(); + for (; anIt != aLast; anIt++) { + ResultPtr aResult = *anIt; + + int aRowId = myView->rowCount(); + addViewRow(aResult); + myConcealedResults[aRowId] = aResult; + } + } + } + + DataPtr aData = myFeature->data(); + AttributeRefListPtr anAttributeList = aData->reflist(attributeID()); + int aSize = anAttributeList->size(); + for (int i = 0, aSize = myView->rowCount(); i < aSize; i++) { + ResultPtr aResult = myConcealedResults[i]; + QCheckBox* aButton = + dynamic_cast(myView->cellWidget(i, 0)->findChild()); + bool isChecked = anAttributeList->isInList(aResult); + + bool aBlocked = aButton->blockSignals(true); + aButton->setChecked(isChecked); + aButton->blockSignals(aBlocked); + } + return true; +} + +QList ModuleBase_WidgetConcealedObjects::getControls() const +{ + QList result; + result << myView; + return result; +} + +void ModuleBase_WidgetConcealedObjects::addViewRow( + const std::shared_ptr& theResult) +{ + int anId = myView->rowCount(); + myView->setRowCount(anId+1); + + QWidget* aVisibilityWdg = new QWidget(this); + QVBoxLayout* aVisibilityLay = new QVBoxLayout(aVisibilityWdg); + aVisibilityLay->setContentsMargins(2, 2, 2, 2); + QCheckBox* aVisibilityBtn = new QCheckBox(aVisibilityWdg); + aVisibilityLay->addWidget(aVisibilityBtn, 0, Qt::AlignHCenter); + connect(aVisibilityBtn, SIGNAL(toggled(bool)), this, SLOT(onItemToggled(bool))); + aVisibilityBtn->setChecked(false); + + myView->setCellWidget(anId, 0, aVisibilityWdg); + myView->setItem(anId, 1, new QTableWidgetItem(theResult->data()->name().c_str())); + + if (anId == 1) { + myView->setColumnWidth(0, myView->verticalHeader()->defaultSectionSize()); + myView->setColumnWidth(1, DEFAULT_NAME_COLUMN_WIDTH); + } +} + +void ModuleBase_WidgetConcealedObjects::onItemToggled(bool theState) +{ + emit valuesChanged(); + updateObject(myFeature); +} +