diff --git a/src/Mod/TechDraw/Gui/TaskBalloon.cpp b/src/Mod/TechDraw/Gui/TaskBalloon.cpp index 3f0c26667a..d092c8a721 100644 --- a/src/Mod/TechDraw/Gui/TaskBalloon.cpp +++ b/src/Mod/TechDraw/Gui/TaskBalloon.cpp @@ -50,6 +50,7 @@ #include "QGIViewBalloon.h" #include "ViewProviderBalloon.h" #include "TaskBalloon.h" +#include "ui_TaskBalloon.h" using namespace Gui; using namespace TechDraw; @@ -115,26 +116,24 @@ TaskBalloon::~TaskBalloon() bool TaskBalloon::accept() { - m_parent->dvBalloon->Text.setValue(ui->leText->text().toUtf8().constData()); - App::Color ac; - ac.setValue(ui->textColor->color()); - m_balloonVP->Color.setValue(ac); - m_balloonVP->Fontsize.setValue(ui->qsbFontSize->value().getValue()); - m_parent->dvBalloon->ShapeScale.setValue(ui->qsbShapeScale->value().getValue()); - m_parent->dvBalloon->EndType.setValue(ui->comboEndSymbol->currentIndex()); - m_parent->dvBalloon->EndTypeScale.setValue(ui->qsbSymbolScale->value().getValue()); - m_parent->dvBalloon->BubbleShape.setValue(ui->comboBubbleShape->currentIndex()); - m_balloonVP->LineVisible.setValue(ui->comboLineVisible->currentIndex()); - m_balloonVP->LineWidth.setValue(ui->qsbLineWidth->value().getValue()); - m_parent->dvBalloon->KinkLength.setValue(ui->qsbKinkLength->value().getValue()); - m_parent->updateView(true); + Gui::Document* doc = m_balloonVP->getDocument(); + m_balloonVP->getObject()->purgeTouched(); + doc->commitCommand(); + doc->resetEdit(); return true; } bool TaskBalloon::reject() { - return false; + Gui::Document* doc = m_balloonVP->getDocument(); + doc->abortCommand(); + recomputeFeature(); + m_parent->updateView(true); + m_balloonVP->getObject()->purgeTouched(); + doc->resetEdit(); + + return true; } void TaskBalloon::recomputeFeature() diff --git a/src/Mod/TechDraw/Gui/TaskBalloon.h b/src/Mod/TechDraw/Gui/TaskBalloon.h index 7d31713e76..4f74d5c626 100644 --- a/src/Mod/TechDraw/Gui/TaskBalloon.h +++ b/src/Mod/TechDraw/Gui/TaskBalloon.h @@ -27,16 +27,13 @@ #include #include -#include - #include "QGIViewBalloon.h" #include "ViewProviderBalloon.h" -class Ui_TaskBalloon; - namespace TechDrawGui { +class Ui_TaskBalloon; class TaskBalloon : public QWidget { Q_OBJECT diff --git a/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp b/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp index ae7c0a5186..28450ce266 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp @@ -26,6 +26,8 @@ #include "PreCompiled.h" #ifndef _PreComp_ +# include +# include #endif /// Here the FreeCAD includes sorted by Base,App,Gui...... @@ -38,6 +40,7 @@ #include #include +#include #include #include #include @@ -101,6 +104,33 @@ std::vector ViewProviderBalloon::getDisplayModes(void) const return StrList; } +bool ViewProviderBalloon::doubleClicked(void) +{ + startDefaultEditMode(); + return true; +} + +void ViewProviderBalloon::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(&ViewProviderBalloon::startDefaultEditMode, this)); + + ViewProviderDrawingView::setupContextMenu(menu, receiver, member); +} + +void ViewProviderBalloon::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 ViewProviderBalloon::setEdit(int ModNum) { if (ModNum == ViewProvider::Default ) { @@ -130,12 +160,6 @@ void ViewProviderBalloon::unsetEdit(int ModNum) } } -bool ViewProviderBalloon::doubleClicked(void) -{ - setEdit(ViewProvider::Default); - return true; -} - void ViewProviderBalloon::updateData(const App::Property* p) { ViewProviderDrawingView::updateData(p); diff --git a/src/Mod/TechDraw/Gui/ViewProviderBalloon.h b/src/Mod/TechDraw/Gui/ViewProviderBalloon.h index 2f88a50434..3dcc7580fb 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderBalloon.h +++ b/src/Mod/TechDraw/Gui/ViewProviderBalloon.h @@ -58,6 +58,7 @@ public: virtual std::vector 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); @@ -68,6 +69,8 @@ public: protected: virtual void handleChangedPropertyType(Base::XMLReader &reader, const char *TypeName, App::Property * prop); +private: + void startDefaultEditMode(); }; } // namespace TechDrawGui