Skip to content

Commit

Permalink
Gui: Add cancel button to transform task UI dialog
Browse files Browse the repository at this point in the history
  • Loading branch information
didendron authored and chennes committed Sep 4, 2023
1 parent 41a1a7a commit 607e4b8
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 11 deletions.
26 changes: 26 additions & 0 deletions src/Gui/TaskCSysDragger.cpp
Expand Up @@ -67,6 +67,16 @@ TaskCSysDragger::~TaskCSysDragger()
Gui::Application::Instance->commandManager().getCommandByName("Std_PerspectiveCamera")->setEnabled(true);
}

void TaskCSysDragger::dragStartCallback(void *, SoDragger *)
{
// This is called when a manipulator is about to manipulating
if(firstDrag)
{
Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Transform"));
firstDrag=false;
}
}

void TaskCSysDragger::setupGui()
{
auto incrementsBox = new Gui::TaskView::TaskBox(
Expand Down Expand Up @@ -117,6 +127,7 @@ void TaskCSysDragger::onRIncrementSlot(double freshValue)

void TaskCSysDragger::open()
{
dragger->addStartCallback(dragStartCallback, this);
//we can't have user switching camera types while dragger is shown.
Gui::Application::Instance->commandManager().getCommandByName("Std_OrthographicCamera")->setEnabled(false);
Gui::Application::Instance->commandManager().getCommandByName("Std_PerspectiveCamera")->setEnabled(false);
Expand All @@ -141,11 +152,26 @@ bool TaskCSysDragger::accept()
if (dObject) {
Gui::Document* document = Gui::Application::Instance->getDocument(dObject->getDocument());
assert(document);
firstDrag = true;
document->commitCommand();
document->resetEdit();
document->getDocument()->recompute();
}
return Gui::TaskView::TaskDialog::accept();
}

bool TaskCSysDragger::reject()
{
App::DocumentObject* dObject = vpObject.getObject();
if (dObject) {
Gui::Document* document = Gui::Application::Instance->getDocument(dObject->getDocument());
assert(document);
firstDrag = true;
document->abortCommand();
document->resetEdit();
document->getDocument()->recompute();
}
return Gui::TaskView::TaskDialog::reject();
}

#include "moc_TaskCSysDragger.cpp"
7 changes: 6 additions & 1 deletion src/Gui/TaskCSysDragger.h
Expand Up @@ -20,12 +20,14 @@
* *
***************************************************************************/


#ifndef TASKCSYSDRAGGER_H
#define TASKCSYSDRAGGER_H

#include "TaskView/TaskDialog.h"
#include <App/DocumentObserver.h>

class SoDragger;

namespace Gui
{
Expand All @@ -40,13 +42,16 @@ namespace Gui
TaskCSysDragger(ViewProviderDocumentObject *vpObjectIn, SoFCCSysDragger *draggerIn);

Check failure on line 42 in src/Gui/TaskCSysDragger.h

View workflow job for this annotation

GitHub Actions / Lint / Lint

unknown type name 'ViewProviderDocumentObject'
~TaskCSysDragger() override;
QDialogButtonBox::StandardButtons getStandardButtons() const override
{ return QDialogButtonBox::Ok;}
{ return QDialogButtonBox::Ok | QDialogButtonBox::Cancel;}
void open() override;
bool accept() override;
bool reject() override;
private Q_SLOTS:
void onTIncrementSlot(double freshValue);
void onRIncrementSlot(double freshValue);
private:
static inline bool firstDrag = true;
static void dragStartCallback(void * data, SoDragger * d);
void setupGui();
App::DocumentObjectT vpObject;
SoFCCSysDragger *dragger;
Expand Down
9 changes: 1 addition & 8 deletions src/Gui/ViewProviderDragger.cpp
Expand Up @@ -146,7 +146,6 @@ bool ViewProviderDragger::setEdit(int ModNum)
pcTransform->translation.connectFrom(&csysDragger->translation);
pcTransform->rotation.connectFrom(&csysDragger->rotation);

csysDragger->addStartCallback(dragStartCallback, this);
csysDragger->addFinishCallback(dragFinishCallback, this);

// dragger node is added to viewer's editing root in setEditViewer
Expand Down Expand Up @@ -212,12 +211,6 @@ void ViewProviderDragger::unsetEditViewer(Gui::View3DInventorViewer* viewer)
}
}

void ViewProviderDragger::dragStartCallback(void *, SoDragger *)
{
// This is called when a manipulator is about to manipulating
Gui::Application::Instance->activeDocument()->openCommand(QT_TRANSLATE_NOOP("Command", "Transform"));
}

void ViewProviderDragger::dragFinishCallback(void *data, SoDragger *d)
{
// This is called when a manipulator has done manipulating
Expand All @@ -226,7 +219,7 @@ void ViewProviderDragger::dragFinishCallback(void *data, SoDragger *d)
auto dragger = static_cast<SoFCCSysDragger *>(d);
updatePlacementFromDragger(sudoThis, dragger);

Gui::Application::Instance->activeDocument()->commitCommand();
//Gui::Application::Instance->activeDocument()->commitCommand();
}

void ViewProviderDragger::updatePlacementFromDragger(ViewProviderDragger* sudoThis, SoFCCSysDragger* draggerIn)
Expand Down
2 changes: 0 additions & 2 deletions src/Gui/ViewProviderDragger.h
Expand Up @@ -72,9 +72,7 @@ class GuiExport ViewProviderDragger : public ViewProviderDocumentObject
SoFCCSysDragger *csysDragger = nullptr;

private:
static void dragStartCallback(void * data, SoDragger * d);
static void dragFinishCallback(void * data, SoDragger * d);

static void updatePlacementFromDragger(ViewProviderDragger *sudoThis, SoFCCSysDragger *draggerIn);

bool checkLink();
Expand Down

0 comments on commit 607e4b8

Please sign in to comment.