From 396d2182db5324491aae82ba266e853bad5896bb Mon Sep 17 00:00:00 2001 From: nds Date: Tue, 10 Mar 2015 12:04:51 +0300 Subject: [PATCH] Constriction type for all sketch entities The color dialog modification to apply the color, a signal to redisplay the result(it will be moved to the model later) --- src/XGUI/XGUI_Workshop.cpp | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/src/XGUI/XGUI_Workshop.cpp b/src/XGUI/XGUI_Workshop.cpp index 70b6c6156..7a7a82062 100644 --- a/src/XGUI/XGUI_Workshop.cpp +++ b/src/XGUI/XGUI_Workshop.cpp @@ -1335,7 +1335,6 @@ These features will be deleted also. Would you like to continue?")).arg(aNames), return; } - SessionPtr aMgr = ModelAPI_Session::get(); QString aDescription = tr("Delete %1"); QStringList aObjectNames; foreach (ObjectPtr aObj, theList) { @@ -1344,6 +1343,7 @@ These features will be deleted also. Would you like to continue?")).arg(aNames), aObjectNames << QString::fromStdString(aObj->data()->name()); } aDescription = aDescription.arg(aObjectNames.join(", ")); + SessionPtr aMgr = ModelAPI_Session::get(); aMgr->startOperation(aDescription.toStdString()); std::set::const_iterator anIt = aRefFeatures.begin(), aLast = aRefFeatures.end(); @@ -1405,6 +1405,7 @@ bool XGUI_Workshop::canChangeColor() const //************************************************************** #include +#include #include #include #include @@ -1427,17 +1428,23 @@ void XGUI_Workshop::changeColor(const QObjectPtrList& theObjects) aColorAttr->values(aRed, aGreen, aBlue); // 2. show the dialog to change the value - QDialog aDlg; - QHBoxLayout* aLay = new QHBoxLayout(&aDlg); + QDialog* aDlg = new QDialog(); + QVBoxLayout* aLay = new QVBoxLayout(aDlg); + + QtxColorButton* aColorBtn = new QtxColorButton(aDlg); + aColorBtn->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - QtxColorButton* aColorBtn = new QtxColorButton(&aDlg); aLay->addWidget(aColorBtn); aColorBtn->setColor(QColor(aRed, aGreen, aBlue)); - QPoint aPoint = QCursor::pos(); - aDlg.move(aPoint); + QDialogButtonBox* aButtons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, + Qt::Horizontal, aDlg); + connect(aButtons, SIGNAL(accepted()), aDlg, SLOT(accept())); + connect(aButtons, SIGNAL(rejected()), aDlg, SLOT(reject())); + aLay->addWidget(aButtons); - bool isDone = aDlg.exec() == QDialog::Accepted; + aDlg->move(QCursor::pos()); + bool isDone = aDlg->exec() == QDialog::Accepted; if (!isDone) return; @@ -1452,19 +1459,27 @@ void XGUI_Workshop::changeColor(const QObjectPtrList& theObjects) // 3. abort the previous operation and start a new one if(!isActiveOperationAborted()) return; + SessionPtr aMgr = ModelAPI_Session::get(); + QString aDescription = contextMenuMgr()->action("DELETE_CMD")->text(); + aMgr->startOperation(aDescription.toStdString()); // 4. set the value to all results + static Events_ID EVENT_DISP = Events_Loop::eventByName(EVENT_OBJECT_TO_REDISPLAY); foreach(ObjectPtr anObj, theObjects) { ResultPtr aResult = std::dynamic_pointer_cast(anObj); if (aResult.get() != NULL) { AttributePtr anAttr = aResult->data()->attribute(ModelAPI_Result::COLOR_ID()); if (anAttr.get() != NULL) { aColorAttr = std::dynamic_pointer_cast(anAttr); - if (aColorAttr.get() != NULL) + if (aColorAttr.get() != NULL) { aColorAttr->setValues(aRedResult, aGreenResult, aBlueResult); + ModelAPI_EventCreator::get()->sendUpdated(anObj, EVENT_DISP); + } } } } + aMgr->finishOperation(); + updateCommandStatus(); } //************************************************************** -- 2.39.2