From afc794894f30de9c8f8044fa7a72468ccd5d8f59 Mon Sep 17 00:00:00 2001 From: logari81 Date: Mon, 10 Sep 2012 11:37:48 +0200 Subject: [PATCH] PartDesign: fix small issue with embedded TaskPanels in MultiTransform --- .../Gui/TaskLinearPatternParameters.cpp | 11 +++++-- .../Gui/TaskLinearPatternParameters.h | 2 +- .../PartDesign/Gui/TaskMirroredParameters.cpp | 11 +++++-- .../PartDesign/Gui/TaskMirroredParameters.h | 2 +- .../Gui/TaskMultiTransformParameters.cpp | 29 +++++++------------ .../Gui/TaskMultiTransformParameters.ui | 10 ------- .../Gui/TaskPolarPatternParameters.cpp | 11 +++++-- .../Gui/TaskPolarPatternParameters.h | 2 +- .../PartDesign/Gui/TaskScaledParameters.cpp | 11 +++++-- src/Mod/PartDesign/Gui/TaskScaledParameters.h | 2 +- .../Gui/TaskTransformedParameters.cpp | 4 +-- .../Gui/TaskTransformedParameters.h | 2 +- 12 files changed, 49 insertions(+), 48 deletions(-) diff --git a/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp b/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp index 8c07337c5..54f6dd1d5 100644 --- a/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp @@ -66,15 +66,18 @@ TaskLinearPatternParameters::TaskLinearPatternParameters(ViewProviderTransformed setupUI(); } -TaskLinearPatternParameters::TaskLinearPatternParameters(QWidget *parent, TaskMultiTransformParameters *parentTask) - : TaskTransformedParameters(parent, parentTask) +TaskLinearPatternParameters::TaskLinearPatternParameters(TaskMultiTransformParameters *parentTask, QLayout *layout) + : TaskTransformedParameters(parentTask) { + proxy = new QWidget(parentTask); ui = new Ui_TaskLinearPatternParameters(); - ui->setupUi(parent); + ui->setupUi(proxy); connect(ui->buttonOK, SIGNAL(pressed()), parentTask, SLOT(onSubTaskButtonOK())); QMetaObject::connectSlotsByName(this); + layout->addWidget(proxy); + ui->buttonOK->setEnabled(true); ui->listFeatures->hide(); ui->checkBoxUpdateView->hide(); @@ -364,6 +367,8 @@ const unsigned TaskLinearPatternParameters::getOccurrences(void) const { TaskLinearPatternParameters::~TaskLinearPatternParameters() { delete ui; + if (proxy) + delete proxy; } void TaskLinearPatternParameters::changeEvent(QEvent *e) diff --git a/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.h b/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.h index 3aeea8ff8..3e220c6dc 100644 --- a/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.h +++ b/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.h @@ -53,7 +53,7 @@ public: /// Constructor for task with ViewProvider TaskLinearPatternParameters(ViewProviderTransformed *TransformedView, QWidget *parent = 0); /// Constructor for task with parent task (MultiTransform mode) - TaskLinearPatternParameters(QWidget *parent, TaskMultiTransformParameters *parentTask); + TaskLinearPatternParameters(TaskMultiTransformParameters *parentTask, QLayout *layout); virtual ~TaskLinearPatternParameters(); const QString getDirection(void) const; diff --git a/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp b/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp index 51834b7ca..9a67a4b14 100644 --- a/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp @@ -66,15 +66,18 @@ TaskMirroredParameters::TaskMirroredParameters(ViewProviderTransformed *Transfor setupUI(); } -TaskMirroredParameters::TaskMirroredParameters(QWidget *parent, TaskMultiTransformParameters *parentTask) - : TaskTransformedParameters(parent, parentTask) +TaskMirroredParameters::TaskMirroredParameters(TaskMultiTransformParameters *parentTask, QLayout *layout) + : TaskTransformedParameters(parentTask) { + proxy = new QWidget(parentTask); ui = new Ui_TaskMirroredParameters(); - ui->setupUi(parent); + ui->setupUi(proxy); connect(ui->buttonOK, SIGNAL(pressed()), parentTask, SLOT(onSubTaskButtonOK())); QMetaObject::connectSlotsByName(this); + layout->addWidget(proxy); + ui->buttonOK->setEnabled(true); ui->listFeatures->hide(); ui->checkBoxUpdateView->hide(); @@ -298,6 +301,8 @@ const QString TaskMirroredParameters::getMirrorPlane(void) const TaskMirroredParameters::~TaskMirroredParameters() { delete ui; + if (proxy) + delete proxy; } void TaskMirroredParameters::changeEvent(QEvent *e) diff --git a/src/Mod/PartDesign/Gui/TaskMirroredParameters.h b/src/Mod/PartDesign/Gui/TaskMirroredParameters.h index e129e14fc..a204bb638 100644 --- a/src/Mod/PartDesign/Gui/TaskMirroredParameters.h +++ b/src/Mod/PartDesign/Gui/TaskMirroredParameters.h @@ -53,7 +53,7 @@ public: /// Constructor for task with ViewProvider TaskMirroredParameters(ViewProviderTransformed *TransformedView, QWidget *parent = 0); /// Constructor for task with parent task (MultiTransform mode) - TaskMirroredParameters(QWidget *parent, TaskMultiTransformParameters *parentTask); + TaskMirroredParameters(TaskMultiTransformParameters *parentTask, QLayout *layout); virtual ~TaskMirroredParameters(); diff --git a/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp b/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp index c39504dd1..3f71c42a9 100644 --- a/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp @@ -171,19 +171,10 @@ void TaskMultiTransformParameters::onSelectionChanged(const Gui::SelectionChange void TaskMultiTransformParameters::closeSubTask() { - if (subTask == NULL) - return; // e.g. if user OKs a new subTask and then immediately deletes it - delete subTask; - subTask = NULL; - ui->widgetFeature->close(); - // FIXME: If the layout of the UI changes this code needs to be adapted - // But I couldn't find any other way to free the widget to have a different dialog attached to it - ui->verticalLayout->removeWidget(ui->widgetFeature); - delete ui->widgetFeature; - ui->widgetFeature = new QWidget(this); - ui->widgetFeature->setObjectName(QString::fromUtf8("widgetFeature")); - ui->widgetFeature->setMinimumSize(QSize(0, 180)); - ui->verticalLayout->addWidget(ui->widgetFeature); + if (subTask) { + delete subTask; + subTask = NULL; + } } void TaskMultiTransformParameters::onTransformDelete() @@ -217,17 +208,15 @@ void TaskMultiTransformParameters::onTransformEdit() subFeature = static_cast(transformFeatures[row]); if (transformFeatures[row]->getTypeId() == PartDesign::Mirrored::getClassTypeId()) - subTask = new TaskMirroredParameters(ui->widgetFeature, this); + subTask = new TaskMirroredParameters(this, ui->verticalLayout); else if (transformFeatures[row]->getTypeId() == PartDesign::LinearPattern::getClassTypeId()) - subTask = new TaskLinearPatternParameters(ui->widgetFeature, this); + subTask = new TaskLinearPatternParameters(this, ui->verticalLayout); else if (transformFeatures[row]->getTypeId() == PartDesign::PolarPattern::getClassTypeId()) - subTask = new TaskPolarPatternParameters(ui->widgetFeature, this); + subTask = new TaskPolarPatternParameters(this, ui->verticalLayout); else if (transformFeatures[row]->getTypeId() == PartDesign::Scaled::getClassTypeId()) - subTask = new TaskScaledParameters(ui->widgetFeature, this); + subTask = new TaskScaledParameters(this, ui->verticalLayout); else return; // TODO: Show an error? - - ui->widgetFeature->show(); } void TaskMultiTransformParameters::onTransformActivated(const QModelIndex& index) { @@ -407,6 +396,8 @@ TaskMultiTransformParameters::~TaskMultiTransformParameters() { closeSubTask(); delete ui; + if (proxy) + delete proxy; } void TaskMultiTransformParameters::changeEvent(QEvent *e) diff --git a/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.ui b/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.ui index 7e3ee4027..5c664f74b 100644 --- a/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.ui +++ b/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.ui @@ -44,16 +44,6 @@ - - - - - 0 - 180 - - - - diff --git a/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp b/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp index 1cc636074..16b7a14f5 100644 --- a/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp @@ -66,15 +66,18 @@ TaskPolarPatternParameters::TaskPolarPatternParameters(ViewProviderTransformed * setupUI(); } -TaskPolarPatternParameters::TaskPolarPatternParameters(QWidget *parent, TaskMultiTransformParameters *parentTask) - : TaskTransformedParameters(parent, parentTask) +TaskPolarPatternParameters::TaskPolarPatternParameters(TaskMultiTransformParameters *parentTask, QLayout *layout) + : TaskTransformedParameters(parentTask) { + proxy = new QWidget(parentTask); ui = new Ui_TaskPolarPatternParameters(); - ui->setupUi(parent); + ui->setupUi(proxy); connect(ui->buttonOK, SIGNAL(pressed()), parentTask, SLOT(onSubTaskButtonOK())); QMetaObject::connectSlotsByName(this); + layout->addWidget(proxy); + ui->buttonOK->setEnabled(true); ui->listFeatures->hide(); ui->checkBoxUpdateView->hide(); @@ -370,6 +373,8 @@ const unsigned TaskPolarPatternParameters::getOccurrences(void) const TaskPolarPatternParameters::~TaskPolarPatternParameters() { delete ui; + if (proxy) + delete proxy; } void TaskPolarPatternParameters::changeEvent(QEvent *e) diff --git a/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.h b/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.h index b6471eeb7..6a33a5605 100644 --- a/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.h +++ b/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.h @@ -53,7 +53,7 @@ public: /// Constructor for task with ViewProvider TaskPolarPatternParameters(ViewProviderTransformed *TransformedView, QWidget *parent = 0); /// Constructor for task with parent task (MultiTransform mode) - TaskPolarPatternParameters(QWidget *parent, TaskMultiTransformParameters *parentTask); + TaskPolarPatternParameters(TaskMultiTransformParameters *parentTask, QLayout *layout); virtual ~TaskPolarPatternParameters(); const QString getAxis(void) const; diff --git a/src/Mod/PartDesign/Gui/TaskScaledParameters.cpp b/src/Mod/PartDesign/Gui/TaskScaledParameters.cpp index a92bca4ad..8bec400f9 100644 --- a/src/Mod/PartDesign/Gui/TaskScaledParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskScaledParameters.cpp @@ -66,15 +66,18 @@ TaskScaledParameters::TaskScaledParameters(ViewProviderTransformed *TransformedV setupUI(); } -TaskScaledParameters::TaskScaledParameters(QWidget *parent, TaskMultiTransformParameters *parentTask) - : TaskTransformedParameters(parent, parentTask) +TaskScaledParameters::TaskScaledParameters(TaskMultiTransformParameters *parentTask, QLayout *layout) + : TaskTransformedParameters(parentTask) { + proxy = new QWidget(parentTask); ui = new Ui_TaskScaledParameters(); - ui->setupUi(parent); + ui->setupUi(proxy); connect(ui->buttonOK, SIGNAL(pressed()), parentTask, SLOT(onSubTaskButtonOK())); QMetaObject::connectSlotsByName(this); + layout->addWidget(proxy); + ui->buttonOK->setEnabled(true); ui->listFeatures->hide(); ui->checkBoxUpdateView->hide(); @@ -202,6 +205,8 @@ const unsigned TaskScaledParameters::getOccurrences(void) const TaskScaledParameters::~TaskScaledParameters() { delete ui; + if (proxy) + delete proxy; } void TaskScaledParameters::changeEvent(QEvent *e) diff --git a/src/Mod/PartDesign/Gui/TaskScaledParameters.h b/src/Mod/PartDesign/Gui/TaskScaledParameters.h index 448e2f6fb..b1d42d589 100644 --- a/src/Mod/PartDesign/Gui/TaskScaledParameters.h +++ b/src/Mod/PartDesign/Gui/TaskScaledParameters.h @@ -53,7 +53,7 @@ public: /// Constructor for task with ViewProvider TaskScaledParameters(ViewProviderTransformed *TransformedView, QWidget *parent = 0); /// Constructor for task with parent task (MultiTransform mode) - TaskScaledParameters(QWidget *parent, TaskMultiTransformParameters *parentTask); + TaskScaledParameters(TaskMultiTransformParameters *parentTask, QLayout *layout); virtual ~TaskScaledParameters(); const double getFactor(void) const; diff --git a/src/Mod/PartDesign/Gui/TaskTransformedParameters.cpp b/src/Mod/PartDesign/Gui/TaskTransformedParameters.cpp index 754c3f9a4..fb9b46e45 100644 --- a/src/Mod/PartDesign/Gui/TaskTransformedParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskTransformedParameters.cpp @@ -61,8 +61,8 @@ TaskTransformedParameters::TaskTransformedParameters(ViewProviderTransformed *Tr featureSelectionMode = true; } -TaskTransformedParameters::TaskTransformedParameters(QWidget *parent, TaskMultiTransformParameters *parentTask) - : TaskBox(QPixmap(), tr(""), true, parent), +TaskTransformedParameters::TaskTransformedParameters(TaskMultiTransformParameters *parentTask) + : TaskBox(QPixmap(), tr(""), true, parentTask), TransformedView(NULL), parentTask(parentTask), insideMultiTransform(true), diff --git a/src/Mod/PartDesign/Gui/TaskTransformedParameters.h b/src/Mod/PartDesign/Gui/TaskTransformedParameters.h index c4d566773..81997da1f 100644 --- a/src/Mod/PartDesign/Gui/TaskTransformedParameters.h +++ b/src/Mod/PartDesign/Gui/TaskTransformedParameters.h @@ -54,7 +54,7 @@ public: /// Constructor for task with ViewProvider TaskTransformedParameters(ViewProviderTransformed *TransformedView, QWidget *parent = 0); /// Constructor for task with parent task (MultiTransform mode) - TaskTransformedParameters(QWidget *parent, TaskMultiTransformParameters* parentTask); + TaskTransformedParameters(TaskMultiTransformParameters *parentTask); virtual ~TaskTransformedParameters() {}