diff --git a/ChangeLog.txt b/ChangeLog.txt index bf1736077..444acb6d2 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -17,6 +17,7 @@ - New placelabel shape Circle. - Two new passmark types: U and Box. - [#969] Fix length to label after soom. +- [#725] Improve labels on drawing. # Version 0.6.2 (unreleased) - [#903] Bug in tool Cut Spline path. diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index 431a24555..68f667dc1 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -2055,6 +2055,69 @@ void MainWindow::ToolBarTools() connect(ui->actionPreviousPatternPiece, &QAction::triggered, this, &MainWindow::PreviousPatternPiece); connect(ui->actionNextPatternPiece, &QAction::triggered, this, &MainWindow::NextPatternPiece); + + ui->actionIncreaseLabelFont->setShortcut(QKeySequence(Qt::ShiftModifier + Qt::Key_Plus)); + connect(ui->actionIncreaseLabelFont, &QAction::triggered, this, [this]() + { + VSettings *settings = qApp->ValentinaSettings(); + settings->SetLabelFontSize(settings->GetLabelFontSize() + 1); + if (sceneDraw) + { + sceneDraw->update(); + } + + if (sceneDetails) + { + sceneDetails->update(); + } + }); + + ui->actionDecreaseLabelFont->setShortcut(QKeySequence(Qt::ShiftModifier + Qt::Key_Minus)); + connect(ui->actionDecreaseLabelFont, &QAction::triggered, this, [this]() + { + VSettings *settings = qApp->ValentinaSettings(); + settings->SetLabelFontSize(settings->GetLabelFontSize() - 1); + if (sceneDraw) + { + sceneDraw->update(); + } + + if (sceneDetails) + { + sceneDetails->update(); + } + }); + + ui->actionOriginalLabelFont->setShortcut(QKeySequence(Qt::ShiftModifier + Qt::Key_0)); + connect(ui->actionOriginalLabelFont, &QAction::triggered, this, [this]() + { + VSettings *settings = qApp->ValentinaSettings(); + settings->SetLabelFontSize(settings->GetDefLabelFontSize()); + if (sceneDraw) + { + sceneDraw->update(); + } + + if (sceneDetails) + { + sceneDetails->update(); + } + }); + + ui->actionHideLabels->setShortcut(QKeySequence(Qt::AltModifier + Qt::Key_L)); + connect(ui->actionHideLabels, &QAction::triggered, this, [this](bool checked) + { + qApp->ValentinaSettings()->SetHideLabels(checked); + if (sceneDraw) + { + sceneDraw->update(); + } + + if (sceneDetails) + { + sceneDetails->update(); + } + }); } //--------------------------------------------------------------------------------------------------------------------- @@ -3018,6 +3081,10 @@ void MainWindow::Clear() m_taskbarProgress->setVisible(false); #endif m_statusLabel->setVisible(true); + ui->actionIncreaseLabelFont->setEnabled(false); + ui->actionDecreaseLabelFont->setEnabled(false); + ui->actionOriginalLabelFont->setEnabled(false); + ui->actionHideLabels->setEnabled(false); } //--------------------------------------------------------------------------------------------------------------------- @@ -3370,6 +3437,10 @@ void MainWindow::SetEnableWidgets(bool enable) ui->actionUnloadMeasurements->setEnabled(enable && designStage); ui->actionPreviousPatternPiece->setEnabled(enable && drawStage); ui->actionNextPatternPiece->setEnabled(enable && drawStage); + ui->actionIncreaseLabelFont->setEnabled(enable); + ui->actionDecreaseLabelFont->setEnabled(enable); + ui->actionOriginalLabelFont->setEnabled(enable); + ui->actionHideLabels->setEnabled(enable); actionDockWidgetToolOptions->setEnabled(enable && designStage); actionDockWidgetGroups->setEnabled(enable && designStage); diff --git a/src/app/valentina/mainwindow.ui b/src/app/valentina/mainwindow.ui index 87aea7ea2..fee89b0fe 100644 --- a/src/app/valentina/mainwindow.ui +++ b/src/app/valentina/mainwindow.ui @@ -1744,6 +1744,11 @@ + + + + + @@ -2760,6 +2765,56 @@ Ctrl+PgUp + + + false + + + + + + Increase label font + + + QAction::NoRole + + + + + false + + + + + + Decrease label font + + + QAction::NoRole + + + + + false + + + + + + Original label font + + + + + true + + + false + + + Hide labels + + diff --git a/src/libs/vmisc/def.cpp b/src/libs/vmisc/def.cpp index 37985ad38..9af9d13b5 100644 --- a/src/libs/vmisc/def.cpp +++ b/src/libs/vmisc/def.cpp @@ -62,6 +62,9 @@ const qreal defCurveApproximationScale = 0.5; const qreal minCurveApproximationScale = 0.1; const qreal maxCurveApproximationScale = 10.0; +const int minLabelFontSize = 5; +const int maxLabelFontSize = 100; + //functions const QString degTorad_F = QStringLiteral("degTorad"); const QString radTodeg_F = QStringLiteral("radTodeg"); diff --git a/src/libs/vmisc/def.h b/src/libs/vmisc/def.h index a89994099..a4177016e 100644 --- a/src/libs/vmisc/def.h +++ b/src/libs/vmisc/def.h @@ -75,6 +75,9 @@ extern const qreal defCurveApproximationScale; extern const qreal minCurveApproximationScale; extern const qreal maxCurveApproximationScale; +extern const int minLabelFontSize; +extern const int maxLabelFontSize; + enum class NodeDetail : char { Contour, Modeling }; enum class SceneObject : char { Point, Line, Spline, Arc, ElArc, SplinePath, Detail, Unknown }; enum class MeasurementsType : char { Multisize, Individual , Unknown}; diff --git a/src/libs/vmisc/vcommonsettings.cpp b/src/libs/vmisc/vcommonsettings.cpp index e8dc58228..654674f9c 100644 --- a/src/libs/vmisc/vcommonsettings.cpp +++ b/src/libs/vmisc/vcommonsettings.cpp @@ -76,6 +76,8 @@ Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternLabelFont, (QLatin1String Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternLineWidth, (QLatin1String("pattern/lineWidth"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternCurveApproximationScale, (QLatin1String("pattern/curveApproximationScale"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternShowCurveDetails, (QLatin1String("pattern/showCurveDetails"))) +Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternLabelFontSize, (QLatin1String("pattern/labelFontSize"))) +Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternHideLabels, (QLatin1String("pattern/hideLabels"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralRecentFileList, (QLatin1String("recentFileList"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralRestoreFileList, (QLatin1String("restoreFileList"))) @@ -104,6 +106,7 @@ Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLabelUserTimeFormats, (QLatin1St qreal curveApproximationCached = -1; Q_GLOBAL_STATIC(QString, localeCached) qreal lineWidthCached = 0; +int labelFontSizeCached = 0; //--------------------------------------------------------------------------------------------------------------------- QStringList ClearFormats(const QStringList &predefinedFormats, QStringList formats) @@ -962,6 +965,48 @@ void VCommonSettings::SetLabelFont(const QFont &f) setValue(*settingPatternLabelFont, f); } +//--------------------------------------------------------------------------------------------------------------------- +int VCommonSettings::GetLabelFontSize() const +{ + if (labelFontSizeCached <= 0) + { + bool ok = false; + labelFontSizeCached = value(*settingPatternLabelFontSize, GetDefLabelFontSize()).toInt(&ok); + if (not ok) + { + labelFontSizeCached = GetDefLabelFontSize(); + } + labelFontSizeCached = qBound(minLabelFontSize, labelFontSizeCached, maxLabelFontSize); + } + return labelFontSizeCached; +} + +//--------------------------------------------------------------------------------------------------------------------- +void VCommonSettings::SetLabelFontSize(int size) +{ + size = qBound(minLabelFontSize, size, maxLabelFontSize); + setValue(*settingPatternLabelFontSize, size); + labelFontSizeCached = size; +} + +//--------------------------------------------------------------------------------------------------------------------- +int VCommonSettings::GetDefLabelFontSize() +{ + return 32; +} + +//--------------------------------------------------------------------------------------------------------------------- +bool VCommonSettings::GetHideLabels() const +{ + return value(*settingPatternHideLabels, false).toBool(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VCommonSettings::SetHideLabels(bool value) +{ + setValue(*settingPatternHideLabels, value); +} + //--------------------------------------------------------------------------------------------------------------------- QString VCommonSettings::GetLabelDateFormat() const { diff --git a/src/libs/vmisc/vcommonsettings.h b/src/libs/vmisc/vcommonsettings.h index e52ca427a..19a465902 100644 --- a/src/libs/vmisc/vcommonsettings.h +++ b/src/libs/vmisc/vcommonsettings.h @@ -181,6 +181,13 @@ public: QFont GetLabelFont() const; void SetLabelFont(const QFont &f); + int GetLabelFontSize() const; + void SetLabelFontSize(int size); + static int GetDefLabelFontSize(); + + bool GetHideLabels() const; + void SetHideLabels(bool value); + #if !defined(Q_OS_WIN) static const QString unixStandardSharePath; #endif diff --git a/src/libs/vwidgets/vgraphicssimpletextitem.cpp b/src/libs/vwidgets/vgraphicssimpletextitem.cpp index 571b7eafd..f4c72d183 100644 --- a/src/libs/vwidgets/vgraphicssimpletextitem.cpp +++ b/src/libs/vwidgets/vgraphicssimpletextitem.cpp @@ -57,7 +57,6 @@ */ VGraphicsSimpleTextItem::VGraphicsSimpleTextItem(QGraphicsItem * parent) : QGraphicsSimpleTextItem(parent), - m_fontSize(0), selectionType(SelectionType::ByMouseRelease), m_oldScale(1), m_showParentTooltip(true) @@ -73,7 +72,6 @@ VGraphicsSimpleTextItem::VGraphicsSimpleTextItem(QGraphicsItem * parent) */ VGraphicsSimpleTextItem::VGraphicsSimpleTextItem( const QString & text, QGraphicsItem * parent ) : QGraphicsSimpleTextItem(text, parent), - m_fontSize(0), selectionType(SelectionType::ByMouseRelease), m_oldScale(1), m_showParentTooltip(true) @@ -92,6 +90,13 @@ void VGraphicsSimpleTextItem::paint(QPainter *painter, const QStyleOptionGraphic } }; + QFont font = this->font(); + if (font.pointSize() != qApp->Settings()->GetLabelFontSize()) + { + font.setPointSize(qApp->Settings()->GetLabelFontSize()); + setFont(font); + } + QGraphicsScene *scene = this->scene(); const qreal scale = SceneScale(scene); if (scale > 1 && not VFuzzyComparePossibleNulls(m_oldScale, scale)) @@ -381,9 +386,8 @@ void VGraphicsSimpleTextItem::Init() this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus this->setAcceptHoverEvents(true); QFont font = this->font(); - font.setPointSize(font.pointSize()+20); - m_fontSize = font.pointSize(); - this->setFont(font); - m_oldScale = minVisibleFontSize / m_fontSize; + font.setPointSize(qApp->Settings()->GetLabelFontSize()); + setFont(font); + m_oldScale = minVisibleFontSize / qApp->Settings()->GetLabelFontSize(); setScale(m_oldScale); } diff --git a/src/libs/vwidgets/vgraphicssimpletextitem.h b/src/libs/vwidgets/vgraphicssimpletextitem.h index 351f03018..bc84eb3fc 100644 --- a/src/libs/vwidgets/vgraphicssimpletextitem.h +++ b/src/libs/vwidgets/vgraphicssimpletextitem.h @@ -52,7 +52,6 @@ public: explicit VGraphicsSimpleTextItem( const QString & text, QGraphicsItem *parent = nullptr ); virtual ~VGraphicsSimpleTextItem() =default; - qint32 BaseFontSize()const; virtual int type() const override {return Type;} enum { Type = UserType + static_cast(Vis::GraphicsSimpleTextItem)}; @@ -92,8 +91,6 @@ protected: virtual void mouseReleaseEvent ( QGraphicsSceneMouseEvent * event ) override; virtual void keyReleaseEvent ( QKeyEvent * event ) override; private: - /** @brief fontSize label font size. */ - qint32 m_fontSize; SelectionType selectionType; qreal m_oldScale; bool m_showParentTooltip; @@ -105,14 +102,4 @@ private: void CorrectLabelPosition(); }; -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief FontSize return label font size. - * @return font size. - */ -inline qint32 VGraphicsSimpleTextItem::BaseFontSize() const -{ - return m_fontSize; -} - #endif // VGRAPHICSSIMPLETEXTITEM_H diff --git a/src/libs/vwidgets/vscenepoint.cpp b/src/libs/vwidgets/vscenepoint.cpp index 1cb493134..95b092608 100644 --- a/src/libs/vwidgets/vscenepoint.cpp +++ b/src/libs/vwidgets/vscenepoint.cpp @@ -66,7 +66,7 @@ void VScenePoint::paint(QPainter *painter, const QStyleOptionGraphicsItem *optio { const qreal scale = SceneScale(scene()); - if (m_namePoint->BaseFontSize()*scale < minVisibleFontSize) + if (qApp->Settings()->GetLabelFontSize()*scale < minVisibleFontSize || qApp->Settings()->GetHideLabels()) { m_namePoint->setVisible(false); m_lineName->setVisible(false);