[PD] Clear other taskbox buttons in loft and pipe when one pressed

This commit is contained in:
Ajinkya Dahale
2021-11-09 00:09:24 -05:00
committed by Uwe
parent aa33cdc186
commit 99bafa24e8
4 changed files with 119 additions and 96 deletions

View File

@@ -285,14 +285,18 @@ void TaskLoftParameters::indexesMoved()
updateUI();
}
void TaskLoftParameters::clearButtons() {
ui->buttonRefAdd->setChecked(false);
ui->buttonRefRemove->setChecked(false);
void TaskLoftParameters::clearButtons(const selectionModes notThis)
{
if (notThis != refProfile)
ui->buttonProfileBase->setChecked(false);
if (notThis != refAdd)
ui->buttonRefAdd->setChecked(false);
if (notThis != refRemove)
ui->buttonRefRemove->setChecked(false);
}
void TaskLoftParameters::exitSelectionMode() {
void TaskLoftParameters::exitSelectionMode()
{
selectionMode = none;
Gui::Selection().clearSelection();
}
@@ -314,23 +318,27 @@ void TaskLoftParameters::onRuled(bool val) {
void TaskLoftParameters::onProfileButton(bool checked)
{
if (checked) {
clearButtons(refProfile);
Gui::Selection().clearSelection();
selectionMode = refProfile;
//static_cast<ViewProviderLoft*>(vp)->highlightReferences(true, true);
}
}
void TaskLoftParameters::onRefButtonAdd(bool checked) {
void TaskLoftParameters::onRefButtonAdd(bool checked)
{
if (checked) {
clearButtons(refAdd);
Gui::Selection().clearSelection();
selectionMode = refAdd;
//static_cast<ViewProviderLoft*>(vp)->highlightReferences(true, true);
}
}
void TaskLoftParameters::onRefButtonRemove(bool checked) {
void TaskLoftParameters::onRefButtonRemove(bool checked)
{
if (checked) {
clearButtons(refRemove);
Gui::Selection().clearSelection();
selectionMode = refRemove;
//static_cast<ViewProviderLoft*>(vp)->highlightReferences(true, true);

View File

@@ -63,6 +63,8 @@ private Q_SLOTS:
void indexesMoved();
protected:
enum selectionModes { none, refAdd, refRemove, refProfile };
void changeEvent(QEvent *e);
private:
@@ -70,14 +72,13 @@ private:
void updateUI();
bool referenceSelected(const Gui::SelectionChanges& msg) const;
void removeFromListWidget(QListWidget*w, QString name);
void clearButtons();
void clearButtons(const selectionModes notThis=none);
void exitSelectionMode();
private:
QWidget* proxy;
std::unique_ptr<Ui_TaskLoftParameters> ui;
enum selectionModes { none, refAdd, refRemove, refProfile };
selectionModes selectionMode = none;
};

View File

@@ -235,16 +235,16 @@ void TaskPipeParameters::onSelectionChanged(const Gui::SelectionChanges& msg)
}
}
void TaskPipeParameters::onTransitionChanged(int idx) {
void TaskPipeParameters::onTransitionChanged(int idx)
{
static_cast<PartDesign::Pipe*>(vp->getObject())->Transition.setValue(idx);
recomputeFeature();
}
void TaskPipeParameters::onButtonRefAdd(bool checked) {
void TaskPipeParameters::onButtonRefAdd(bool checked)
{
if (checked) {
//clearButtons(refAdd);
clearButtons(refAdd);
//hideObject();
Gui::Selection().clearSelection();
selectionMode = refAdd;
@@ -257,10 +257,10 @@ void TaskPipeParameters::onButtonRefAdd(bool checked) {
}
}
void TaskPipeParameters::onButtonRefRemove(bool checked) {
void TaskPipeParameters::onButtonRefRemove(bool checked)
{
if (checked) {
//clearButtons(refRemove);
clearButtons(refRemove);
//hideObject();
Gui::Selection().clearSelection();
selectionMode = refRemove;
@@ -273,10 +273,10 @@ void TaskPipeParameters::onButtonRefRemove(bool checked) {
}
}
void TaskPipeParameters::onBaseButton(bool checked) {
void TaskPipeParameters::onBaseButton(bool checked)
{
if (checked) {
//clearButtons(refRemove);
clearButtons(refObjAdd);
//hideObject();
Gui::Selection().clearSelection();
selectionMode = refObjAdd;
@@ -300,7 +300,7 @@ void TaskPipeParameters::onProfileButton(bool checked)
pvp->setVisible(true);
}
//clearButtons(refRemove);
clearButtons(refProfile);
//hideObject();
Gui::Selection().clearSelection();
selectionMode = refProfile;
@@ -313,14 +313,14 @@ void TaskPipeParameters::onProfileButton(bool checked)
}
}
void TaskPipeParameters::onTangentChanged(bool checked) {
void TaskPipeParameters::onTangentChanged(bool checked)
{
static_cast<PartDesign::Pipe*>(vp->getObject())->SpineTangent.setValue(checked);
recomputeFeature();
}
void TaskPipeParameters::removeFromListWidget(QListWidget* widget, QString itemstr) {
void TaskPipeParameters::removeFromListWidget(QListWidget* widget, QString itemstr)
{
QList<QListWidgetItem*> items = widget->findItems(itemstr, Qt::MatchExactly);
if (!items.empty()) {
for (QList<QListWidgetItem*>::const_iterator i = items.begin(); i != items.end(); i++) {
@@ -355,8 +355,8 @@ void TaskPipeParameters::onDeleteEdge()
}
}
bool TaskPipeParameters::referenceSelected(const SelectionChanges& msg) const {
bool TaskPipeParameters::referenceSelected(const SelectionChanges& msg) const
{
if (msg.Type == Gui::SelectionChanges::AddSelection && selectionMode != none) {
if (strcmp(msg.pDocName, vp->getObject()->getDocument()->getName()) != 0)
return false;
@@ -423,16 +423,21 @@ bool TaskPipeParameters::referenceSelected(const SelectionChanges& msg) const {
return false;
}
void TaskPipeParameters::clearButtons() {
ui->buttonProfileBase->setChecked(false);
ui->buttonRefAdd->setChecked(false);
ui->buttonRefRemove->setChecked(false);
ui->buttonSpineBase->setChecked(false);
void TaskPipeParameters::clearButtons(const selectionModes notThis)
{
// TODO: Clear buttons in the other pipe taskboxes as well
if (notThis != refProfile)
ui->buttonProfileBase->setChecked(false);
if (notThis != refAdd)
ui->buttonRefAdd->setChecked(false);
if (notThis != refRemove)
ui->buttonRefRemove->setChecked(false);
if (notThis != refObjAdd)
ui->buttonSpineBase->setChecked(false);
}
void TaskPipeParameters::exitSelectionMode() {
void TaskPipeParameters::exitSelectionMode()
{
selectionMode = none;
Gui::Selection().clearSelection();
}
@@ -491,7 +496,6 @@ bool TaskPipeParameters::accept()
return false;
if (!dlg.radioXRef->isChecked()) {
if (!pcActiveBody->hasObject(spine) && !pcActiveBody->getOrigin()->hasObject(spine)) {
pcPipe->Spine.setValue(PartDesignGui::TaskFeaturePick::makeCopy(spine, "",
dlg.radioIndependent->isChecked()),
@@ -508,7 +512,6 @@ bool TaskPipeParameters::accept()
std::vector<App::DocumentObject*> objs;
int index = 0;
for (App::DocumentObject* obj : pcPipe->Sections.getValues()) {
if (!pcActiveBody->hasObject(obj) && !pcActiveBody->getOrigin()->hasObject(obj)) {
objs.push_back(PartDesignGui::TaskFeaturePick::makeCopy(obj, "", dlg.radioIndependent->isChecked()));
copies.push_back(objs.back());
@@ -654,28 +657,33 @@ TaskPipeOrientation::~TaskPipeOrientation()
}
}
void TaskPipeOrientation::onOrientationChanged(int idx) {
void TaskPipeOrientation::onOrientationChanged(int idx)
{
static_cast<PartDesign::Pipe*>(vp->getObject())->Mode.setValue(idx);
recomputeFeature();
}
void TaskPipeOrientation::clearButtons() {
ui->buttonRefAdd->setChecked(false);
ui->buttonRefRemove->setChecked(false);
ui->buttonProfileBase->setChecked(false);
void TaskPipeOrientation::clearButtons(const selectionModes notThis)
{
// TODO: Clear buttons in the other pipe taskboxes as well
if (notThis != refAdd)
ui->buttonRefAdd->setChecked(false);
if (notThis != refRemove)
ui->buttonRefRemove->setChecked(false);
if (notThis != refObjAdd)
ui->buttonProfileBase->setChecked(false);
}
void TaskPipeOrientation::exitSelectionMode() {
void TaskPipeOrientation::exitSelectionMode()
{
selectionMode = none;
Gui::Selection().clearSelection();
}
void TaskPipeOrientation::onButtonRefAdd(bool checked) {
void TaskPipeOrientation::onButtonRefAdd(bool checked)
{
if (checked) {
clearButtons(refAdd);
Gui::Selection().clearSelection();
selectionMode = refAdd;
static_cast<ViewProviderPipe*>(vp)->highlightReferences(ViewProviderPipe::AuxiliarySpine, true);
@@ -687,9 +695,10 @@ void TaskPipeOrientation::onButtonRefAdd(bool checked) {
}
}
void TaskPipeOrientation::onButtonRefRemove(bool checked) {
void TaskPipeOrientation::onButtonRefRemove(bool checked)
{
if (checked) {
clearButtons(refRemove);
Gui::Selection().clearSelection();
selectionMode = refRemove;
static_cast<ViewProviderPipe*>(vp)->highlightReferences(ViewProviderPipe::AuxiliarySpine, true);
@@ -704,6 +713,7 @@ void TaskPipeOrientation::onButtonRefRemove(bool checked) {
void TaskPipeOrientation::onBaseButton(bool checked)
{
if (checked) {
clearButtons(refObjAdd);
Gui::Selection().clearSelection();
selectionMode = refObjAdd;
static_cast<ViewProviderPipe*>(vp)->highlightReferences(ViewProviderPipe::AuxiliarySpine, true);
@@ -740,8 +750,8 @@ void TaskPipeOrientation::onBinormalChanged(double)
recomputeFeature();
}
void TaskPipeOrientation::onSelectionChanged(const SelectionChanges& msg) {
void TaskPipeOrientation::onSelectionChanged(const SelectionChanges& msg)
{
if (selectionMode == none)
return;
@@ -792,8 +802,8 @@ void TaskPipeOrientation::onSelectionChanged(const SelectionChanges& msg) {
}
}
bool TaskPipeOrientation::referenceSelected(const SelectionChanges& msg) const {
bool TaskPipeOrientation::referenceSelected(const SelectionChanges& msg) const
{
if (msg.Type == Gui::SelectionChanges::AddSelection && selectionMode != none) {
if (strcmp(msg.pDocName, vp->getObject()->getDocument()->getName()) != 0)
return false;
@@ -832,8 +842,8 @@ bool TaskPipeOrientation::referenceSelected(const SelectionChanges& msg) const {
return false;
}
void TaskPipeOrientation::removeFromListWidget(QListWidget* widget, QString name) {
void TaskPipeOrientation::removeFromListWidget(QListWidget* widget, QString name)
{
QList<QListWidgetItem*> items = widget->findItems(name, Qt::MatchExactly);
if (!items.empty()) {
for (QList<QListWidgetItem*>::const_iterator i = items.begin(); i != items.end(); i++) {
@@ -868,8 +878,8 @@ void TaskPipeOrientation::onDeleteItem()
}
}
void TaskPipeOrientation::updateUI(int idx) {
void TaskPipeOrientation::updateUI(int idx)
{
//make sure we resize to the size of the current page
for (int i=0; i<ui->stackedWidget->count(); ++i)
ui->stackedWidget->widget(i)->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
@@ -932,25 +942,29 @@ TaskPipeScaling::TaskPipeScaling(ViewProviderPipe* PipeView, bool /*newObj*/, QW
QGenericReturnArgument(), Q_ARG(int,pipe->Transformation.getValue()));
}
TaskPipeScaling::~TaskPipeScaling() {
TaskPipeScaling::~TaskPipeScaling()
{
}
void TaskPipeScaling::clearButtons() {
ui->buttonRefAdd->setChecked(false);
ui->buttonRefRemove->setChecked(false);
void TaskPipeScaling::clearButtons(const selectionModes notThis)
{
// TODO: Clear buttons in the other pipe taskboxes as well
if (notThis != refRemove)
ui->buttonRefRemove->setChecked(false);
if (notThis != refAdd)
ui->buttonRefAdd->setChecked(false);
}
void TaskPipeScaling::exitSelectionMode() {
void TaskPipeScaling::exitSelectionMode()
{
selectionMode = none;
Gui::Selection().clearSelection();
}
void TaskPipeScaling::onButtonRefAdd(bool checked) {
void TaskPipeScaling::onButtonRefAdd(bool checked)
{
if (checked) {
clearButtons(refAdd);
Gui::Selection().clearSelection();
selectionMode = refAdd;
static_cast<ViewProviderPipe*>(vp)->highlightReferences(ViewProviderPipe::Section, true);
@@ -962,9 +976,10 @@ void TaskPipeScaling::onButtonRefAdd(bool checked) {
}
}
void TaskPipeScaling::onButtonRefRemove(bool checked) {
void TaskPipeScaling::onButtonRefRemove(bool checked)
{
if (checked) {
clearButtons(refRemove);
Gui::Selection().clearSelection();
selectionMode = refRemove;
static_cast<ViewProviderPipe*>(vp)->highlightReferences(ViewProviderPipe::Section, true);
@@ -976,14 +991,14 @@ void TaskPipeScaling::onButtonRefRemove(bool checked) {
}
}
void TaskPipeScaling::onScalingChanged(int idx) {
void TaskPipeScaling::onScalingChanged(int idx)
{
updateUI(idx);
static_cast<PartDesign::Pipe*>(vp->getObject())->Transformation.setValue(idx);
}
void TaskPipeScaling::onSelectionChanged(const SelectionChanges& msg) {
void TaskPipeScaling::onSelectionChanged(const SelectionChanges& msg)
{
if (selectionMode == none)
return;
@@ -1012,11 +1027,10 @@ void TaskPipeScaling::onSelectionChanged(const SelectionChanges& msg) {
}
}
bool TaskPipeScaling::referenceSelected(const SelectionChanges& msg) const {
bool TaskPipeScaling::referenceSelected(const SelectionChanges& msg) const
{
if ((msg.Type == Gui::SelectionChanges::AddSelection) && (
(selectionMode == refAdd) || (selectionMode == refRemove))) {
if (strcmp(msg.pDocName, vp->getObject()->getDocument()->getName()) != 0)
return false;
@@ -1056,8 +1070,8 @@ bool TaskPipeScaling::referenceSelected(const SelectionChanges& msg) const {
return false;
}
void TaskPipeScaling::removeFromListWidget(QListWidget* widget, QString name) {
void TaskPipeScaling::removeFromListWidget(QListWidget* widget, QString name)
{
QList<QListWidgetItem*> items = widget->findItems(name, Qt::MatchExactly);
if (!items.empty()) {
for (QList<QListWidgetItem*>::const_iterator i = items.begin(); i != items.end(); i++) {
@@ -1093,8 +1107,8 @@ void TaskPipeScaling::onDeleteSection()
}
}
void TaskPipeScaling::updateUI(int idx) {
void TaskPipeScaling::updateUI(int idx)
{
//make sure we resize to the size of the current page
for (int i=0; i<ui->stackedWidget->count(); ++i)
ui->stackedWidget->widget(i)->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);

View File

@@ -41,7 +41,7 @@ namespace Gui {
class ViewProvider;
}
namespace PartDesignGui {
namespace PartDesignGui {
class Ui_TaskPipeParameters;
class Ui_TaskPipeOrientation;
@@ -66,25 +66,25 @@ private Q_SLOTS:
void onBaseButton(bool checked);
void onProfileButton(bool checked);
void onDeleteEdge();
protected:
enum selectionModes { none, refAdd, refRemove, refObjAdd, refProfile };
selectionModes selectionMode = none;
void removeFromListWidget(QListWidget*w, QString name);
bool referenceSelected(const Gui::SelectionChanges& msg) const;
private:
void onSelectionChanged(const Gui::SelectionChanges& msg);
void updateUI();
void clearButtons();
void clearButtons(const selectionModes notThis=none);
void exitSelectionMode();
ViewProviderPipe* getPipeView() const
{ return static_cast<ViewProviderPipe*>(vp); }
bool spineShow = false;
private:
QWidget* proxy;
std::unique_ptr<Ui_TaskPipeParameters> ui;
@@ -98,7 +98,7 @@ public:
TaskPipeOrientation(ViewProviderPipe *PipeView,bool newObj=false,QWidget *parent = 0);
virtual ~TaskPipeOrientation();
private Q_SLOTS:
void onOrientationChanged(int);
void onButtonRefAdd(bool checked);
@@ -109,19 +109,19 @@ private Q_SLOTS:
void onCurvelinearChanged(bool checked);
void onBinormalChanged(double);
void onDeleteItem();
protected:
enum selectionModes { none, refAdd, refRemove, refObjAdd };
selectionModes selectionMode = none;
void removeFromListWidget(QListWidget*w, QString name);
bool referenceSelected(const Gui::SelectionChanges& msg) const;
private:
void onSelectionChanged(const Gui::SelectionChanges& msg);
void clearButtons();
void clearButtons(const selectionModes notThis=none);
void exitSelectionMode();
bool auxSpineShow = false;
private:
@@ -144,17 +144,17 @@ private Q_SLOTS:
void onButtonRefRemove(bool checked);
void updateUI(int idx);
void onDeleteSection();
protected:
enum selectionModes { none, refAdd, refRemove };
selectionModes selectionMode = none;
void removeFromListWidget(QListWidget*w, QString name);
bool referenceSelected(const Gui::SelectionChanges& msg) const;
private:
void onSelectionChanged(const Gui::SelectionChanges& msg);
void clearButtons();
void clearButtons(const selectionModes notThis=none);
void exitSelectionMode();
private: