Skip to content

Commit

Permalink
TechDraw: fixes for dimension feature:
Browse files Browse the repository at this point in the history
* reimplement ViewProviderDimension::setupContextMenu() to show menu item to start editing it
* fix TaskDimension::accept() and TaskDimension::reject()
  • Loading branch information
wwmayer committed Feb 12, 2021
1 parent bb0d75b commit 3288c02
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 30 deletions.
32 changes: 12 additions & 20 deletions src/Mod/TechDraw/Gui/TaskDimension.cpp
Expand Up @@ -133,32 +133,24 @@ TaskDimension::~TaskDimension()

bool TaskDimension::accept()
{
m_parent->dvDimension->TheoreticalExact.setValue(ui->cbTheoreticallyExact->isChecked());
m_parent->dvDimension->EqualTolerance.setValue(ui->cbEqualTolerance->isChecked());
m_parent->dvDimension->OverTolerance.setValue(ui->qsbOvertolerance->value().getValue());
m_parent->dvDimension->UnderTolerance.setValue(ui->qsbUndertolerance->value().getValue());

m_parent->dvDimension->FormatSpec.setValue(ui->leFormatSpecifier->text().toUtf8().constData());
m_parent->dvDimension->Arbitrary.setValue(ui->cbArbitrary->isChecked());
m_parent->dvDimension->FormatSpecOverTolerance.setValue(ui->leFormatSpecifierOverTolerance->text().toUtf8().constData());
m_parent->dvDimension->FormatSpecUnderTolerance.setValue(ui->leFormatSpecifierUnderTolerance->text().toUtf8().constData());
m_parent->dvDimension->ArbitraryTolerances.setValue(ui->cbArbitraryTolerances->isChecked());

m_dimensionVP->FlipArrowheads.setValue(ui->cbArrowheads->isChecked());
App::Color ac;
ac.setValue<QColor>(ui->dimensionColor->color());
m_dimensionVP->Color.setValue(ac);
m_dimensionVP->Fontsize.setValue(ui->qsbFontSize->value().getValue());
m_dimensionVP->StandardAndStyle.setValue(ui->comboDrawingStyle->currentIndex());

m_parent->updateView(true);
Gui::Document* doc = m_dimensionVP->getDocument();
m_dimensionVP->getObject()->purgeTouched();
doc->commitCommand();
doc->resetEdit();

return true;
}

bool TaskDimension::reject()
{
return false;
Gui::Document* doc = m_dimensionVP->getDocument();
doc->abortCommand();
recomputeFeature();
m_parent->updateView(true);
m_dimensionVP->getObject()->purgeTouched();
doc->resetEdit();

return true;
}

void TaskDimension::recomputeFeature()
Expand Down
5 changes: 1 addition & 4 deletions src/Mod/TechDraw/Gui/TaskDimension.h
Expand Up @@ -26,16 +26,13 @@
#include <Gui/TaskView/TaskView.h>
#include <Gui/TaskView/TaskDialog.h>

#include <Mod/TechDraw/Gui/ui_TaskDimension.h>

#include "QGIViewDimension.h"
#include "ViewProviderDimension.h"

class Ui_TaskDimension;

namespace TechDrawGui
{

class Ui_TaskDimension;
class TaskDimension : public QWidget
{
Q_OBJECT
Expand Down
37 changes: 31 additions & 6 deletions src/Mod/TechDraw/Gui/ViewProviderDimension.cpp
Expand Up @@ -25,6 +25,8 @@
#include "PreCompiled.h"

#ifndef _PreComp_
# include <QAction>
# include <QMenu>
#endif

#include <QColor>
Expand All @@ -38,6 +40,8 @@
#include <App/Document.h>
#include <App/DocumentObject.h>
#include <App/Material.h>
#include <Gui/ActionFunction.h>
#include <Gui/Command.h>
#include <Gui/Control.h>

#include <Mod/TechDraw/App/LineGroup.h>
Expand Down Expand Up @@ -115,6 +119,33 @@ std::vector<std::string> ViewProviderDimension::getDisplayModes(void) const
return StrList;
}

bool ViewProviderDimension::doubleClicked(void)
{
startDefaultEditMode();
return true;
}

void ViewProviderDimension::setupContextMenu(QMenu* menu, QObject* receiver, const char* member)
{
Gui::ActionFunction* func = new Gui::ActionFunction(menu);
QAction* act = menu->addAction(QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue())));
act->setData(QVariant((int)ViewProvider::Default));
func->trigger(act, boost::bind(&ViewProviderDimension::startDefaultEditMode, this));

ViewProviderDrawingView::setupContextMenu(menu, receiver, member);
}

void ViewProviderDimension::startDefaultEditMode()
{
QString text = QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue()));
Gui::Command::openCommand(text.toUtf8());

Gui::Document* document = this->getDocument();
if (document) {
document->setEdit(this, ViewProvider::Default);
}
}

bool ViewProviderDimension::setEdit(int ModNum)
{
if (ModNum == ViewProvider::Default) {
Expand Down Expand Up @@ -145,12 +176,6 @@ void ViewProviderDimension::unsetEdit(int ModNum)
}
}

bool ViewProviderDimension::doubleClicked(void)
{
setEdit(ViewProvider::Default);
return true;
}

void ViewProviderDimension::updateData(const App::Property* p)
{
if (p == &(getViewObject()->Type)) {
Expand Down
4 changes: 4 additions & 0 deletions src/Mod/TechDraw/Gui/ViewProviderDimension.h
Expand Up @@ -72,6 +72,7 @@ class TechDrawGuiExport ViewProviderDimension : public ViewProviderDrawingView
virtual std::vector<std::string> getDisplayModes(void) const;
virtual void updateData(const App::Property*);
virtual void onChanged(const App::Property* p);
virtual void setupContextMenu(QMenu*, QObject*, const char*);
virtual bool setEdit(int ModNum);
virtual void unsetEdit(int ModNum);
virtual bool doubleClicked(void);
Expand All @@ -88,6 +89,9 @@ class TechDrawGuiExport ViewProviderDimension : public ViewProviderDrawingView
protected:
virtual void handleChangedPropertyType(Base::XMLReader &reader, const char *TypeName, App::Property * prop);

private:
void startDefaultEditMode();

private:
static const char *StandardAndStyleEnums[];
static const char *RenderingExtentEnums[];
Expand Down

0 comments on commit 3288c02

Please sign in to comment.