// directors
%feature("director") ModelHighAPI_Dumper;
+// functions with named parameters
+%feature("kwargs") setColor;
+
// renamed methods
%rename(__print__) ModelHighAPI_Dumper::operator<<;
#include <ModelAPI_AttributeSelectionList.h>
#include <ModelAPI_Feature.h>
#include <ModelAPI_ResultBody.h>
-
+#include <ModelAPI_Tools.h>
#include <GeomAPI_Pnt.h>
//--------------------------------------------------------------------------------------
return std::wstring();
}
-void ModelHighAPI_Selection::setColor(int theRed, int theGreen, int theBlue)
+void ModelHighAPI_Selection::setColor(int theRed, int theGreen, int theBlue, bool random)
{
if (myVariantType != VT_ResultSubShapePair || !myResultSubShapePair.first.get())
return;
AttributeIntArrayPtr aColor =
myResultSubShapePair.first->data()->intArray(ModelAPI_Result::COLOR_ID());
aColor->setSize(3);
- aColor->setValue(0, theRed);
- aColor->setValue(1, theGreen);
- aColor->setValue(2, theBlue);
+
+ if (random)
+ {
+ std::vector<int> aValues;
+ ModelAPI_Tools::findRandomColor(aValues);
+ for (int anIndex = 0; anIndex < 3; ++anIndex)
+ aColor->setValue(anIndex, aValues[anIndex]);
+ }
+ else
+ {
+ aColor->setValue(0, theRed);
+ aColor->setValue(1, theGreen);
+ aColor->setValue(2, theBlue);
+ }
}
void ModelHighAPI_Selection::setDeflection(double theValue)
/// Change result's color
MODELHIGHAPI_EXPORT
- void setColor(int theRed, int theGreen, int theBlue);
+ void setColor(int theRed = 0, int theGreen = 0, int theBlue = 0, bool random = false);
/// Change result's deflection
MODELHIGHAPI_EXPORT
--- /dev/null
+# Copyright (C) 2014-2021 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
+#
+
+from salome.shaper import model
+
+model.begin()
+partSet = model.moduleDocument()
+
+### Create Part
+Part_1 = model.addPart(partSet)
+Part_1_doc = Part_1.document()
+
+### Create Box
+Box_1 = model.addBox(Part_1_doc, 10, 10, 10)
+Box_1.result().setColor(random=True)
+assert(Box_1.result().resultSubShapePair()[0].data().intArray("Color").isInitialized())
+
+### Create next Box
+Box_2 = model.addBox(Part_1_doc, 10, 10, 10)
+aRed = 60
+aGreen = 200
+aBlue = 100
+Box_2.result().setColor(aRed, aGreen, aBlue)
+
+assert(Box_2.result().resultSubShapePair()[0].data().intArray("Color").isInitialized())
+assert(Box_2.result().resultSubShapePair()[0].data().intArray("Color").value(0) == aRed)
+assert(Box_2.result().resultSubShapePair()[0].data().intArray("Color").value(1) == aGreen)
+assert(Box_2.result().resultSubShapePair()[0].data().intArray("Color").value(2) == aBlue)
+
+model.end()
+
+assert(model.checkPythonDump())
Test19990_1.py
Test19990_2.py
Test20167.py
+ TestSetColors.py
)
#include <QGridLayout>
#include <QRadioButton>
#include <QDialogButtonBox>
+#include <QMouseEvent>
+#include <QApplication>
+
+namespace
+{
+ class RadioButton: public QRadioButton
+ {
+ QWidget* myBuddy;
+ public:
+ RadioButton(const QString& text, QWidget* buddy = nullptr, QWidget* parent = nullptr):
+ QRadioButton(text, parent), myBuddy(buddy)
+ {
+ if (buddy != nullptr)
+ {
+ buddy->setEnabled(isEnabled());
+ buddy->installEventFilter(this);
+ }
+ }
+ RadioButton(QWidget* buddy = nullptr, QWidget* parent = nullptr):
+ RadioButton(QString(), buddy, parent) {}
+
+ bool eventFilter(QObject* sender, QEvent* event)
+ {
+ if (myBuddy != nullptr && sender == myBuddy && event->type() == QEvent::MouseButtonPress)
+ setChecked(true);
+ return QRadioButton::eventFilter(sender, event);
+ }
+
+ void changeEvent(QEvent* event)
+ {
+ if (myBuddy != nullptr && event->type() == QEvent::EnabledChange)
+ myBuddy->setEnabled(isEnabled());
+ QRadioButton::changeEvent(event);
+ }
+ };
+}
XGUI_ColorDialog::XGUI_ColorDialog(QWidget* theParent)
: QDialog(theParent, Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint)
setWindowTitle(tr("Color"));
QGridLayout* aLay = new QGridLayout(this);
- QRadioButton* aRandomChoiceBtn = new QRadioButton(this);
- QRadioButton* aColorChoiceBtn = new QRadioButton(this);
+ myColorButton = new QtxColorButton(this);
+ myColorButton->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+
+ QLabel* aRandomLabel = new QLabel(tr("Random"), this);
+
+ QRadioButton* aColorChoiceBtn = new RadioButton(myColorButton, this);
+ QRadioButton* aRandomChoiceBtn = new RadioButton(aRandomLabel, this);
aColorChoiceBtn->setChecked(true);
myButtonGroup = new QButtonGroup(this);
myButtonGroup->setExclusive(true);
myButtonGroup->addButton(aRandomChoiceBtn, 1);
aLay->addWidget(aColorChoiceBtn, 0, 0);
- aLay->addWidget(aRandomChoiceBtn, 1, 0);
-
- myColorButton = new QtxColorButton(this);
- myColorButton->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
aLay->addWidget(myColorButton, 0, 1);
-
- QLabel* aRandomLabel = new QLabel(tr("Random"), this);
+ aLay->addWidget(aRandomChoiceBtn, 1, 0);
aLay->addWidget(aRandomLabel, 1, 1);
QDialogButtonBox* aButtons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel,