Resolved issue #725. Improve labels on drawing.

--HG--
branch : develop
This commit is contained in:
Roman Telezhynskyi 2019-05-08 19:22:55 +03:00
parent 3b51ccb31d
commit 5838537033
10 changed files with 196 additions and 20 deletions

View File

@ -17,6 +17,7 @@
- New placelabel shape Circle. - New placelabel shape Circle.
- Two new passmark types: U and Box. - Two new passmark types: U and Box.
- [#969] Fix length to label after soom. - [#969] Fix length to label after soom.
- [#725] Improve labels on drawing.
# Version 0.6.2 (unreleased) # Version 0.6.2 (unreleased)
- [#903] Bug in tool Cut Spline path. - [#903] Bug in tool Cut Spline path.

View File

@ -2055,6 +2055,69 @@ void MainWindow::ToolBarTools()
connect(ui->actionPreviousPatternPiece, &QAction::triggered, this, &MainWindow::PreviousPatternPiece); connect(ui->actionPreviousPatternPiece, &QAction::triggered, this, &MainWindow::PreviousPatternPiece);
connect(ui->actionNextPatternPiece, &QAction::triggered, this, &MainWindow::NextPatternPiece); 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); m_taskbarProgress->setVisible(false);
#endif #endif
m_statusLabel->setVisible(true); 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->actionUnloadMeasurements->setEnabled(enable && designStage);
ui->actionPreviousPatternPiece->setEnabled(enable && drawStage); ui->actionPreviousPatternPiece->setEnabled(enable && drawStage);
ui->actionNextPatternPiece->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); actionDockWidgetToolOptions->setEnabled(enable && designStage);
actionDockWidgetGroups->setEnabled(enable && designStage); actionDockWidgetGroups->setEnabled(enable && designStage);

View File

@ -1744,6 +1744,11 @@
<addaction name="actionPreviousPatternPiece"/> <addaction name="actionPreviousPatternPiece"/>
<addaction name="actionNextPatternPiece"/> <addaction name="actionNextPatternPiece"/>
<addaction name="separator"/> <addaction name="separator"/>
<addaction name="actionIncreaseLabelFont"/>
<addaction name="actionDecreaseLabelFont"/>
<addaction name="actionOriginalLabelFont"/>
<addaction name="actionHideLabels"/>
<addaction name="separator"/>
<addaction name="actionLast_tool"/> <addaction name="actionLast_tool"/>
<addaction name="actionShowCurveDetails"/> <addaction name="actionShowCurveDetails"/>
</widget> </widget>
@ -2760,6 +2765,56 @@
<string>Ctrl+PgUp</string> <string>Ctrl+PgUp</string>
</property> </property>
</action> </action>
<action name="actionIncreaseLabelFont">
<property name="enabled">
<bool>false</bool>
</property>
<property name="icon">
<iconset theme="zoom-in"/>
</property>
<property name="text">
<string>Increase label font</string>
</property>
<property name="menuRole">
<enum>QAction::NoRole</enum>
</property>
</action>
<action name="actionDecreaseLabelFont">
<property name="enabled">
<bool>false</bool>
</property>
<property name="icon">
<iconset theme="zoom-out"/>
</property>
<property name="text">
<string>Decrease label font</string>
</property>
<property name="menuRole">
<enum>QAction::NoRole</enum>
</property>
</action>
<action name="actionOriginalLabelFont">
<property name="enabled">
<bool>false</bool>
</property>
<property name="icon">
<iconset theme="zoom-original"/>
</property>
<property name="text">
<string>Original label font</string>
</property>
</action>
<action name="actionHideLabels">
<property name="checkable">
<bool>true</bool>
</property>
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Hide labels</string>
</property>
</action>
</widget> </widget>
<layoutdefault spacing="6" margin="11"/> <layoutdefault spacing="6" margin="11"/>
<customwidgets> <customwidgets>

View File

@ -62,6 +62,9 @@ const qreal defCurveApproximationScale = 0.5;
const qreal minCurveApproximationScale = 0.1; const qreal minCurveApproximationScale = 0.1;
const qreal maxCurveApproximationScale = 10.0; const qreal maxCurveApproximationScale = 10.0;
const int minLabelFontSize = 5;
const int maxLabelFontSize = 100;
//functions //functions
const QString degTorad_F = QStringLiteral("degTorad"); const QString degTorad_F = QStringLiteral("degTorad");
const QString radTodeg_F = QStringLiteral("radTodeg"); const QString radTodeg_F = QStringLiteral("radTodeg");

View File

@ -75,6 +75,9 @@ extern const qreal defCurveApproximationScale;
extern const qreal minCurveApproximationScale; extern const qreal minCurveApproximationScale;
extern const qreal maxCurveApproximationScale; extern const qreal maxCurveApproximationScale;
extern const int minLabelFontSize;
extern const int maxLabelFontSize;
enum class NodeDetail : char { Contour, Modeling }; enum class NodeDetail : char { Contour, Modeling };
enum class SceneObject : char { Point, Line, Spline, Arc, ElArc, SplinePath, Detail, Unknown }; enum class SceneObject : char { Point, Line, Spline, Arc, ElArc, SplinePath, Detail, Unknown };
enum class MeasurementsType : char { Multisize, Individual , Unknown}; enum class MeasurementsType : char { Multisize, Individual , Unknown};

View File

@ -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, settingPatternLineWidth, (QLatin1String("pattern/lineWidth")))
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternCurveApproximationScale, (QLatin1String("pattern/curveApproximationScale"))) 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, 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, settingGeneralRecentFileList, (QLatin1String("recentFileList")))
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralRestoreFileList, (QLatin1String("restoreFileList"))) 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; qreal curveApproximationCached = -1;
Q_GLOBAL_STATIC(QString, localeCached) Q_GLOBAL_STATIC(QString, localeCached)
qreal lineWidthCached = 0; qreal lineWidthCached = 0;
int labelFontSizeCached = 0;
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QStringList ClearFormats(const QStringList &predefinedFormats, QStringList formats) QStringList ClearFormats(const QStringList &predefinedFormats, QStringList formats)
@ -962,6 +965,48 @@ void VCommonSettings::SetLabelFont(const QFont &f)
setValue(*settingPatternLabelFont, 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 QString VCommonSettings::GetLabelDateFormat() const
{ {

View File

@ -181,6 +181,13 @@ public:
QFont GetLabelFont() const; QFont GetLabelFont() const;
void SetLabelFont(const QFont &f); 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) #if !defined(Q_OS_WIN)
static const QString unixStandardSharePath; static const QString unixStandardSharePath;
#endif #endif

View File

@ -57,7 +57,6 @@
*/ */
VGraphicsSimpleTextItem::VGraphicsSimpleTextItem(QGraphicsItem * parent) VGraphicsSimpleTextItem::VGraphicsSimpleTextItem(QGraphicsItem * parent)
: QGraphicsSimpleTextItem(parent), : QGraphicsSimpleTextItem(parent),
m_fontSize(0),
selectionType(SelectionType::ByMouseRelease), selectionType(SelectionType::ByMouseRelease),
m_oldScale(1), m_oldScale(1),
m_showParentTooltip(true) m_showParentTooltip(true)
@ -73,7 +72,6 @@ VGraphicsSimpleTextItem::VGraphicsSimpleTextItem(QGraphicsItem * parent)
*/ */
VGraphicsSimpleTextItem::VGraphicsSimpleTextItem( const QString & text, QGraphicsItem * parent ) VGraphicsSimpleTextItem::VGraphicsSimpleTextItem( const QString & text, QGraphicsItem * parent )
: QGraphicsSimpleTextItem(text, parent), : QGraphicsSimpleTextItem(text, parent),
m_fontSize(0),
selectionType(SelectionType::ByMouseRelease), selectionType(SelectionType::ByMouseRelease),
m_oldScale(1), m_oldScale(1),
m_showParentTooltip(true) 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(); QGraphicsScene *scene = this->scene();
const qreal scale = SceneScale(scene); const qreal scale = SceneScale(scene);
if (scale > 1 && not VFuzzyComparePossibleNulls(m_oldScale, scale)) 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->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus
this->setAcceptHoverEvents(true); this->setAcceptHoverEvents(true);
QFont font = this->font(); QFont font = this->font();
font.setPointSize(font.pointSize()+20); font.setPointSize(qApp->Settings()->GetLabelFontSize());
m_fontSize = font.pointSize(); setFont(font);
this->setFont(font); m_oldScale = minVisibleFontSize / qApp->Settings()->GetLabelFontSize();
m_oldScale = minVisibleFontSize / m_fontSize;
setScale(m_oldScale); setScale(m_oldScale);
} }

View File

@ -52,7 +52,6 @@ public:
explicit VGraphicsSimpleTextItem( const QString & text, QGraphicsItem *parent = nullptr ); explicit VGraphicsSimpleTextItem( const QString & text, QGraphicsItem *parent = nullptr );
virtual ~VGraphicsSimpleTextItem() =default; virtual ~VGraphicsSimpleTextItem() =default;
qint32 BaseFontSize()const;
virtual int type() const override {return Type;} virtual int type() const override {return Type;}
enum { Type = UserType + static_cast<int>(Vis::GraphicsSimpleTextItem)}; enum { Type = UserType + static_cast<int>(Vis::GraphicsSimpleTextItem)};
@ -92,8 +91,6 @@ protected:
virtual void mouseReleaseEvent ( QGraphicsSceneMouseEvent * event ) override; virtual void mouseReleaseEvent ( QGraphicsSceneMouseEvent * event ) override;
virtual void keyReleaseEvent ( QKeyEvent * event ) override; virtual void keyReleaseEvent ( QKeyEvent * event ) override;
private: private:
/** @brief fontSize label font size. */
qint32 m_fontSize;
SelectionType selectionType; SelectionType selectionType;
qreal m_oldScale; qreal m_oldScale;
bool m_showParentTooltip; bool m_showParentTooltip;
@ -105,14 +102,4 @@ private:
void CorrectLabelPosition(); void CorrectLabelPosition();
}; };
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief FontSize return label font size.
* @return font size.
*/
inline qint32 VGraphicsSimpleTextItem::BaseFontSize() const
{
return m_fontSize;
}
#endif // VGRAPHICSSIMPLETEXTITEM_H #endif // VGRAPHICSSIMPLETEXTITEM_H

View File

@ -66,7 +66,7 @@ void VScenePoint::paint(QPainter *painter, const QStyleOptionGraphicsItem *optio
{ {
const qreal scale = SceneScale(scene()); 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_namePoint->setVisible(false);
m_lineName->setVisible(false); m_lineName->setVisible(false);