diff --git a/src/Mod/TechDraw/App/DrawViewBalloon.cpp b/src/Mod/TechDraw/App/DrawViewBalloon.cpp index f0b02561f5..9cdd1aead1 100644 --- a/src/Mod/TechDraw/App/DrawViewBalloon.cpp +++ b/src/Mod/TechDraw/App/DrawViewBalloon.cpp @@ -94,7 +94,6 @@ DrawViewBalloon::DrawViewBalloon(void) ADD_PROPERTY_TYPE(SourceView,(0),"",(App::PropertyType)(App::Prop_None),"Source view for balloon"); ADD_PROPERTY_TYPE(OriginX,(0),"",(App::PropertyType)(App::Prop_None),"Balloon origin x"); ADD_PROPERTY_TYPE(OriginY,(0),"",(App::PropertyType)(App::Prop_None),"Balloon origin y"); - ADD_PROPERTY_TYPE(OriginIsSet, (false), "",(App::PropertyType)(App::Prop_None),"Balloon origin is set"); EndType.setEnums(ArrowPropEnum::ArrowTypeEnums); ADD_PROPERTY(EndType,(prefEnd())); @@ -110,9 +109,6 @@ DrawViewBalloon::DrawViewBalloon(void) ADD_PROPERTY_TYPE(KinkLength,(prefKinkLength()),"",(App::PropertyType)(App::Prop_None), "Distance from symbol to leader kink"); - OriginIsSet.setStatus(App::Property::Hidden,false); - OriginIsSet.setStatus(App::Property::ReadOnly,true); - SourceView.setScope(App::LinkScope::Global); Rotation.setStatus(App::Property::Hidden,true); Caption.setStatus(App::Property::Hidden,true); diff --git a/src/Mod/TechDraw/App/DrawViewBalloon.h b/src/Mod/TechDraw/App/DrawViewBalloon.h index 7c3435f263..b9dfc3427f 100644 --- a/src/Mod/TechDraw/App/DrawViewBalloon.h +++ b/src/Mod/TechDraw/App/DrawViewBalloon.h @@ -56,9 +56,7 @@ public: App::PropertyFloatConstraint ShapeScale; App::PropertyDistance OriginX; App::PropertyDistance OriginY; - App::PropertyBool OriginIsSet; App::PropertyFloat TextWrapLen; - App::PropertyDistance KinkLength; short mustExecute() const override; diff --git a/src/Mod/TechDraw/Gui/TaskBalloon.cpp b/src/Mod/TechDraw/Gui/TaskBalloon.cpp index 1f7fffeb5d..4e5fdf4913 100644 --- a/src/Mod/TechDraw/Gui/TaskBalloon.cpp +++ b/src/Mod/TechDraw/Gui/TaskBalloon.cpp @@ -52,26 +52,26 @@ #include "DrawGuiUtil.h" #include "QGIViewBalloon.h" +#include "ViewProviderBalloon.h" #include "TaskBalloon.h" using namespace Gui; using namespace TechDraw; using namespace TechDrawGui; -TaskBalloon::TaskBalloon(QGIViewBalloon *parent) : +TaskBalloon::TaskBalloon(QGIViewBalloon *parent, ViewProviderBalloon *balloonVP) : ui(new Ui_TaskBalloon) { int i = 0; - m_parent = parent; + m_balloonVP = balloonVP; ui->setupUi(this); - QString qs = QString::number(parent->dvBalloon->ShapeScale.getValue(), 'f', 2); - ui->inputScale->setText(qs); + ui->inputScale->setValue(parent->dvBalloon->ShapeScale.getValue()); std::string value = parent->dvBalloon->Text.getValue(); - qs = QString::fromUtf8(value.data(), value.size()); + QString qs = QString::fromUtf8(value.data(), value.size()); ui->inputValue->setText(qs); ui->inputValue->selectAll(); QTimer::singleShot(0, ui->inputValue, SLOT(setFocus())); @@ -82,6 +82,19 @@ TaskBalloon::TaskBalloon(QGIViewBalloon *parent) : i = parent->dvBalloon->Shape.getValue(); ui->comboSymbol->setCurrentIndex(i); + + if (m_balloonVP != nullptr) + ui->textColor->setColor(m_balloonVP->Color.getValue().asValue()); + + ui->qsbFontSize->setUnit(Base::Unit::Length); + ui->qsbLineWidth->setUnit(Base::Unit::Length); + ui->qsbLineWidth->setSingleStep(0.100); + ui->qsbBalloonKink->setUnit(Base::Unit::Length); + + ui->qsbFontSize->setValue(m_balloonVP->Fontsize.getValue()); + ui->qsbLineWidth->setValue(m_balloonVP->LineWidth.getValue()); + // new balloons have already the preferences BalloonKink length + ui->qsbBalloonKink->setValue(m_parent->dvBalloon->KinkLength.getValue()); } TaskBalloon::~TaskBalloon() @@ -92,9 +105,15 @@ TaskBalloon::~TaskBalloon() bool TaskBalloon::accept() { m_parent->dvBalloon->Text.setValue(ui->inputValue->text().toUtf8().constData()); - m_parent->dvBalloon->ShapeScale.setValue(ui->inputScale->text().toDouble()); + 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->inputScale->value()); m_parent->dvBalloon->EndType.setValue(ui->comboEndType->currentIndex()); m_parent->dvBalloon->Shape.setValue(ui->comboSymbol->currentIndex()); + m_balloonVP->LineWidth.setValue(ui->qsbLineWidth->value().getValue()); + m_parent->dvBalloon->KinkLength.setValue(ui->qsbBalloonKink->value().getValue()); m_parent->updateView(true); return true; @@ -107,10 +126,10 @@ bool TaskBalloon::reject() ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -TaskDlgBalloon::TaskDlgBalloon(QGIViewBalloon *parent) : +TaskDlgBalloon::TaskDlgBalloon(QGIViewBalloon *parent, ViewProviderBalloon *balloonVP) : TaskDialog() { - widget = new TaskBalloon(parent); + widget = new TaskBalloon(parent, balloonVP); taskbox = new Gui::TaskView::TaskBox(Gui::BitmapFactory().pixmap("TechDraw_Balloon"), widget->windowTitle(), true, 0); taskbox->groupLayout()->addWidget(widget); Content.push_back(taskbox); diff --git a/src/Mod/TechDraw/Gui/TaskBalloon.h b/src/Mod/TechDraw/Gui/TaskBalloon.h index a06debc33e..4afcdddcb5 100644 --- a/src/Mod/TechDraw/Gui/TaskBalloon.h +++ b/src/Mod/TechDraw/Gui/TaskBalloon.h @@ -32,6 +32,7 @@ #include #include "QGIViewBalloon.h" +#include "ViewProviderBalloon.h" class Ui_TaskBalloon; @@ -43,7 +44,7 @@ class TaskBalloon : public QWidget Q_OBJECT public: - TaskBalloon(QGIViewBalloon *parent); + TaskBalloon(QGIViewBalloon *parent, ViewProviderBalloon *balloonVP); ~TaskBalloon(); public: @@ -53,6 +54,7 @@ public: private: Ui_TaskBalloon *ui; QGIViewBalloon *m_parent; + ViewProviderBalloon* m_balloonVP; }; class TaskDlgBalloon : public Gui::TaskView::TaskDialog @@ -60,7 +62,7 @@ class TaskDlgBalloon : public Gui::TaskView::TaskDialog Q_OBJECT public: - TaskDlgBalloon(QGIViewBalloon *parent); + TaskDlgBalloon(QGIViewBalloon *parent, ViewProviderBalloon *balloonVP); ~TaskDlgBalloon(); public: diff --git a/src/Mod/TechDraw/Gui/TaskBalloon.ui b/src/Mod/TechDraw/Gui/TaskBalloon.ui index 1fda937b37..e1225ac915 100644 --- a/src/Mod/TechDraw/Gui/TaskBalloon.ui +++ b/src/Mod/TechDraw/Gui/TaskBalloon.ui @@ -6,140 +6,283 @@ 0 0 - 400 - 306 + 307 + 229 Balloon - + - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - - - - - - - - Start Symbol - - - - - - - Shape: - - - - - - - Value: - - - - - - - - Circular - - - - :/icons/circular.svg:/icons/circular.svg - - - - - None - - - - :/icons/none.svg:/icons/none.svg - - - - - Triangle - - - - :/icons/triangle.svg:/icons/triangle.svg - - - - - Inspection - - - - :/icons/inspection.svg:/icons/inspection.svg - - - - - Hexagon - - - - :/icons/hexagon.svg:/icons/hexagon.svg - - - - - Square - - - - :/icons/square.svg:/icons/square.svg - - - - - Rectangle - - - - :/icons/rectangle.svg:/icons/rectangle.svg - - - - - - - - Scale: - - - - - - - - - - - - - - - + + + + + Text: + + + + + + + Text to be displayed + + + + + + + Text Color: + + + + + + + + 0 + 0 + 0 + + + + + + + + Font Size: + + + + + + + + 0 + 0 + + + + + 0 + 20 + + + + Length of balloon leader line kink + + + 4.000000000000000 + + + BalloonKink + + + Mod/TechDraw/Dimensions + + + + + + + Shape: + + + + + + + Shape of the balloon bubble + + + + Circular + + + + :/icons/circular.svg:/icons/circular.svg + + + + + None + + + + :/icons/none.svg:/icons/none.svg + + + + + Triangle + + + + :/icons/triangle.svg:/icons/triangle.svg + + + + + Inspection + + + + :/icons/inspection.svg:/icons/inspection.svg + + + + + Hexagon + + + + :/icons/hexagon.svg:/icons/hexagon.svg + + + + + Square + + + + :/icons/square.svg:/icons/square.svg + + + + + Rectangle + + + + :/icons/rectangle.svg:/icons/rectangle.svg + + + + + + + + Shape Scale: + + + + + + + Scale factor for the 'Shape' + + + 0.000000000000000 + + + 0.100000000000000 + + + 1.000000000000000 + + + + + + + End Symbol: + + + + + + + End symbol for the balloon line + + + + + + + Line Width: + + + + + + + + 0 + 0 + + + + + 0 + 20 + + + + Length of balloon leader line kink + + + 0.350000000000000 + + + BalloonKink + + + Mod/TechDraw/Dimensions + + + + + + + Leader Kink Length: + + + + + + + + 0 + 0 + + + + + 0 + 20 + + + + Length of balloon leader line kink + + + 5.000000000000000 + + + BalloonKink + + + Mod/TechDraw/Dimensions + + + + + + + Gui::ColorButton + QPushButton +
Gui/Widgets.h
+
+ + Gui::QuantitySpinBox + QWidget +
Gui/QuantitySpinBox.h
+
+
diff --git a/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp b/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp index 3f9943b036..2db4ab4e9e 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp @@ -79,13 +79,13 @@ ViewProviderBalloon::ViewProviderBalloon() auto lg = TechDraw::LineGroup::lineGroupFactory(lgName); double weight = lg->getWeight("Thin"); delete lg; //Coverity CID 174670 - ADD_PROPERTY_TYPE(LineWidth,(weight),group,(App::PropertyType)(App::Prop_None),"Balloon line width"); + ADD_PROPERTY_TYPE(LineWidth,(weight),group,(App::PropertyType)(App::Prop_None),"Leader line width"); hGrp = App::GetApplication().GetUserParameter() .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/TechDraw/Dimensions"); App::Color fcColor; fcColor.setPackedValue(hGrp->GetUnsigned("Color", 0x00000000)); - ADD_PROPERTY_TYPE(Color,(fcColor),group,App::Prop_None,"The color of the Dimension"); + ADD_PROPERTY_TYPE(Color,(fcColor),group,App::Prop_None,"Color of the text"); } ViewProviderBalloon::~ViewProviderBalloon() @@ -121,7 +121,7 @@ bool ViewProviderBalloon::setEdit(int ModNum) Gui::Selection().clearSelection(); auto qgivBalloon(dynamic_cast(getQView())); if (qgivBalloon) { - Gui::Control().showDialog(new TaskDlgBalloon(qgivBalloon)); + Gui::Control().showDialog(new TaskDlgBalloon(qgivBalloon, this)); } return true; } else {