From 6c438f92e0841f9387a6a002ec95e6b05abdadbc Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Tue, 6 Feb 2018 19:30:27 +0200 Subject: [PATCH] Resolved issue #808. New feature. Global line width option. --HG-- branch : develop --- ChangeLog.txt | 1 + .../configpages/preferencespatternpage.cpp | 41 +++++++++++++++++- .../configpages/preferencespatternpage.h | 3 ++ .../configpages/preferencespatternpage.ui | 43 +++++++++++++++++++ src/app/valentina/mainwindow.cpp | 3 +- src/app/valentina/mainwindowsnogui.cpp | 33 ++++---------- src/app/valentina/mainwindowsnogui.h | 1 - src/app/valentina/xml/vpattern.cpp | 14 ------ src/app/valentina/xml/vpattern.h | 2 - src/libs/vmisc/vcommonsettings.cpp | 33 ++++++++++++++ src/libs/vmisc/vcommonsettings.h | 26 +++++++++++ .../drawTools/toolcurve/vabstractspline.cpp | 3 +- .../toollinepoint/vtoollinepoint.cpp | 6 +-- src/libs/vtools/tools/drawTools/vtoolline.cpp | 3 +- .../tools/nodeDetails/vtoolpiecepath.cpp | 2 +- src/libs/vtools/tools/vtoolseamallowance.cpp | 2 +- .../path/vispiecespecialpoints.cpp | 2 +- src/libs/vwidgets/global.cpp | 2 - src/libs/vwidgets/global.h | 2 - src/libs/vwidgets/scalesceneitems.cpp | 18 ++++---- src/libs/vwidgets/scalesceneitems.h | 6 +-- src/libs/vwidgets/vcontrolpointspline.cpp | 3 +- src/libs/vwidgets/vcurvepathitem.cpp | 6 +-- src/libs/vwidgets/vmaingraphicsscene.cpp | 3 +- src/libs/vwidgets/vscenepoint.cpp | 6 ++- src/libs/vwidgets/vsimplecurve.cpp | 11 +---- 26 files changed, 189 insertions(+), 86 deletions(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index 4da817586..2f54e9e4d 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -44,6 +44,7 @@ - [#414] Add features from Qt Windows Extras. - [#807] Issue with "Intersection" passmark. - [#667] Check for updates - Test version. +- [#808] New feature. Global line width option. # Version 0.5.1 - [#683] Tool Seam allowance's dialog is off screen on small resolutions. diff --git a/src/app/valentina/dialogs/configpages/preferencespatternpage.cpp b/src/app/valentina/dialogs/configpages/preferencespatternpage.cpp index e68bbda6f..e78e683c7 100644 --- a/src/app/valentina/dialogs/configpages/preferencespatternpage.cpp +++ b/src/app/valentina/dialogs/configpages/preferencespatternpage.cpp @@ -32,7 +32,6 @@ #include "../ifc/xml/vabstractpattern.h" #include "../dialogdatetimeformats.h" #include "../dialogknownmaterials.h" -#include "../vmisc/def.h" #include #include @@ -58,7 +57,8 @@ QStringList ComboBoxAllStrings(QComboBox *combo) PreferencesPatternPage::PreferencesPatternPage(QWidget *parent) : QWidget(parent), ui(new Ui::PreferencesPatternPage), - m_knownMaterials() + m_knownMaterials(), + m_oldLineUnit(Unit::Mm) { ui->setupUi(this); @@ -70,6 +70,27 @@ PreferencesPatternPage::PreferencesPatternPage(QWidget *parent) ui->doubleSpinBoxCurveApproximation->setMaximum(maxCurveApproximationScale); ui->undoCount->setValue(settings->GetUndoCount()); + //----------------------- Unit setup + InitUnits(); + connect(ui->comboBoxLineWidthUnit, QOverload::of(&QComboBox::currentIndexChanged), this, [this]() + { + const Unit lineUnit = static_cast(ui->comboBoxLineWidthUnit->currentData().toInt()); + const qreal value = UnitConvertor(ui->doubleSpinBoxLineWidth->value(), m_oldLineUnit, lineUnit); + ui->doubleSpinBoxLineWidth->setDecimals(lineUnit == Unit::Mm ? 1 : 6); + ui->doubleSpinBoxLineWidth->setMinimum(UnitConvertor(ui->doubleSpinBoxLineWidth->minimum(), m_oldLineUnit, + lineUnit)); + ui->doubleSpinBoxLineWidth->setMaximum(UnitConvertor(ui->doubleSpinBoxLineWidth->maximum(), m_oldLineUnit, + lineUnit)); + ui->doubleSpinBoxLineWidth->setValue(value); + m_oldLineUnit = lineUnit; + }); + + m_oldLineUnit = static_cast(ui->comboBoxLineWidthUnit->currentData().toInt()); + ui->doubleSpinBoxLineWidth->setDecimals(m_oldLineUnit == Unit::Mm ? 1 : 6); + ui->doubleSpinBoxLineWidth->setMinimum(UnitConvertor(VCommonSettings::MinimalLineWidth(), Unit::Mm, m_oldLineUnit)); + ui->doubleSpinBoxLineWidth->setMaximum(UnitConvertor(VCommonSettings::MaximalLineWidth(), Unit::Mm, m_oldLineUnit)); + ui->doubleSpinBoxLineWidth->setValue(UnitConvertor(settings->GetLineWidth(), Unit::Mm, m_oldLineUnit)); + InitDefaultSeamAllowance(); InitLabelDateTimeFormats(); @@ -98,6 +119,7 @@ void PreferencesPatternPage::Apply() // Scene antialiasing settings->SetGraphicalOutput(ui->graphOutputCheck->isChecked()); settings->SetCurveApproximationScale(ui->doubleSpinBoxCurveApproximation->value()); + settings->SetLineWidth(UnitConvertor(ui->doubleSpinBoxLineWidth->value(), m_oldLineUnit, Unit::Mm)); qApp->getSceneView()->setRenderHint(QPainter::Antialiasing, ui->graphOutputCheck->isChecked()); qApp->getSceneView()->setRenderHint(QPainter::SmoothPixmapTransform, ui->graphOutputCheck->isChecked()); @@ -198,6 +220,21 @@ void PreferencesPatternPage::InitComboBoxFormats(QComboBox *box, const QStringLi } } +//--------------------------------------------------------------------------------------------------------------------- +void PreferencesPatternPage::InitUnits() +{ + ui->comboBoxLineWidthUnit->addItem(tr("Millimiters"), static_cast(Unit::Mm)); + ui->comboBoxLineWidthUnit->addItem(tr("Inches"), static_cast(Unit::Inch)); + + // set default unit + const Unit defUnit = QLocale().measurementSystem() == QLocale::MetricSystem ? Unit::Mm : Unit::Inch; + const qint32 indexUnit = ui->comboBoxLineWidthUnit->findData(static_cast(defUnit)); + if (indexUnit != -1) + { + ui->comboBoxLineWidthUnit->setCurrentIndex(indexUnit); + } +} + //--------------------------------------------------------------------------------------------------------------------- template void PreferencesPatternPage::CallDateTimeFormatEditor(const T &type, const QStringList &predefinedFormats, diff --git a/src/app/valentina/dialogs/configpages/preferencespatternpage.h b/src/app/valentina/dialogs/configpages/preferencespatternpage.h index bb4e35fa1..5c4c301cd 100644 --- a/src/app/valentina/dialogs/configpages/preferencespatternpage.h +++ b/src/app/valentina/dialogs/configpages/preferencespatternpage.h @@ -30,6 +30,7 @@ #define PREFERENCESPATTERNPAGE_H #include +#include "../vmisc/def.h" namespace Ui { @@ -57,9 +58,11 @@ private: Q_DISABLE_COPY(PreferencesPatternPage) Ui::PreferencesPatternPage *ui; QStringList m_knownMaterials; + Unit m_oldLineUnit; void InitLabelDateTimeFormats(); void InitComboBoxFormats(QComboBox *box, const QStringList &items, const QString ¤tFormat); + void InitUnits(); template void CallDateTimeFormatEditor(const T &type, const QStringList &predefinedFormats, diff --git a/src/app/valentina/dialogs/configpages/preferencespatternpage.ui b/src/app/valentina/dialogs/configpages/preferencespatternpage.ui index dbe32b4d2..d12311f7d 100644 --- a/src/app/valentina/dialogs/configpages/preferencespatternpage.ui +++ b/src/app/valentina/dialogs/configpages/preferencespatternpage.ui @@ -76,6 +76,49 @@ + + + + + + Bold line width + + + Line width: + + + + + + + + + + 6 + + + 0.100000000000000 + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index bd7c00123..194d35588 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -4694,8 +4694,7 @@ void MainWindow::Preferences() connect(dlg.data(), &DialogPreferences::UpdateProperties, toolOptions, &VToolOptionsPropertyBrowser::RefreshOptions); connect(dlg.data(), &DialogPreferences::UpdateProperties, this, &MainWindow::ToolBarStyles); - connect(dlg.data(), &DialogPreferences::UpdateProperties, this, &MainWindow::RefreshDetailsLabel); - connect(dlg.data(), &DialogPreferences::UpdateProperties, this, [](){VPattern::RefreshCurves();}); + connect(dlg.data(), &DialogPreferences::UpdateProperties, this, [this](){emit doc->FullUpdateFromFile();}); QGuiApplication::restoreOverrideCursor(); if (guard->exec() == QDialog::Accepted) diff --git a/src/app/valentina/mainwindowsnogui.cpp b/src/app/valentina/mainwindowsnogui.cpp index f7d20e30b..23a80389b 100644 --- a/src/app/valentina/mainwindowsnogui.cpp +++ b/src/app/valentina/mainwindowsnogui.cpp @@ -597,7 +597,7 @@ void MainWindowsNoGUI::PrintPages(QPrinter *printer) painter.setFont( QFont( "Arial", 8, QFont::Normal ) ); painter.setRenderHint(QPainter::Antialiasing, true); - painter.setPen(QPen(Qt::black, widthMainLine, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); + painter.setPen(QPen(Qt::black, qApp->Settings()->WidthMainLine(), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); painter.setBrush ( QBrush ( Qt::NoBrush ) ); int count = 0; @@ -786,25 +786,6 @@ void MainWindowsNoGUI::PrintTiled() LayoutPrint(); } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief RefreshDetailsLabel call to ecalculate piece labels. For example after changing a font. - */ -void MainWindowsNoGUI::RefreshDetailsLabel() -{ - const QHash *list = pattern->DataPieces(); - QHash::const_iterator i = list->constBegin(); - while (i != list->constEnd()) - { - if (VToolSeamAllowance *tool = qobject_cast(VAbstractPattern::getTool(i.key()))) - { - tool->UpdatePatternInfo(); - tool->UpdateDetailLabel(); - } - ++i; - } -} - //--------------------------------------------------------------------------------------------------------------------- QVector MainWindowsNoGUI::PrepareDetailsForLayout(const QHash &details) { @@ -848,7 +829,8 @@ QIcon MainWindowsNoGUI::ScenePreview(int i) const QPainter painter(&image); painter.setFont( QFont( "Arial", 8, QFont::Normal ) ); painter.setRenderHint(QPainter::Antialiasing, true); - painter.setPen(QPen(Qt::black, widthMainLine, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); + painter.setPen(QPen(Qt::black, qApp->Settings()->WidthMainLine(), Qt::SolidLine, Qt::RoundCap, + Qt::RoundJoin)); painter.setBrush ( QBrush ( Qt::NoBrush ) ); scenes.at(i)->render(&painter, r, r, Qt::IgnoreAspectRatio); painter.end(); @@ -934,7 +916,7 @@ void MainWindowsNoGUI::SvgFile(const QString &name, QGraphicsRectItem *paper, QG painter.begin(&generator); painter.setFont( QFont( "Arial", 8, QFont::Normal ) ); painter.setRenderHint(QPainter::Antialiasing, true); - painter.setPen(QPen(Qt::black, widthHairLine, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); + painter.setPen(QPen(Qt::black, qApp->Settings()->WidthHairLine(), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); painter.setBrush ( QBrush ( Qt::NoBrush ) ); scene->render(&painter, paper->rect(), paper->rect(), Qt::IgnoreAspectRatio); painter.end(); @@ -954,7 +936,7 @@ void MainWindowsNoGUI::PngFile(const QString &name, QGraphicsRectItem *paper, QG QPainter painter(&image); painter.setFont( QFont( "Arial", 8, QFont::Normal ) ); painter.setRenderHint(QPainter::Antialiasing, true); - painter.setPen(QPen(Qt::black, widthMainLine, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); + painter.setPen(QPen(Qt::black, qApp->Settings()->WidthMainLine(), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); painter.setBrush ( QBrush ( Qt::NoBrush ) ); scene->render(&painter, r, r, Qt::IgnoreAspectRatio); image.save(name); @@ -1004,7 +986,7 @@ void MainWindowsNoGUI::PdfFile(const QString &name, QGraphicsRectItem *paper, QG } painter.setFont( QFont( "Arial", 8, QFont::Normal ) ); painter.setRenderHint(QPainter::Antialiasing, true); - painter.setPen(QPen(Qt::black, widthMainLine, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); + painter.setPen(QPen(Qt::black, qApp->Settings()->WidthMainLine(), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); painter.setBrush ( QBrush ( Qt::NoBrush ) ); scene->render(&painter, r, r, Qt::IgnoreAspectRatio); painter.end(); @@ -1460,7 +1442,8 @@ bool MainWindowsNoGUI::IsLayoutGrayscale() const QImage image(target.size(), QImage::Format_RGB32); image.fill(Qt::white); QPainter painter(&image); - painter.setPen(QPen(Qt::black, widthMainLine, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); + painter.setPen(QPen(Qt::black, qApp->Settings()->WidthMainLine(), Qt::SolidLine, Qt::RoundCap, + Qt::RoundJoin)); painter.setBrush ( QBrush ( Qt::NoBrush ) ); scenes.at(i)->render(&painter, target, paper->rect(), Qt::KeepAspectRatio); painter.end(); diff --git a/src/app/valentina/mainwindowsnogui.h b/src/app/valentina/mainwindowsnogui.h index ba2e5fbcb..bdc541119 100644 --- a/src/app/valentina/mainwindowsnogui.h +++ b/src/app/valentina/mainwindowsnogui.h @@ -60,7 +60,6 @@ public slots: void PrintPreviewTiled(); void PrintOrigin(); void PrintTiled(); - void RefreshDetailsLabel(); protected slots: void ExportFMeasurementsToCSV(); protected: diff --git a/src/app/valentina/xml/vpattern.cpp b/src/app/valentina/xml/vpattern.cpp index 5833f847e..462ec046e 100644 --- a/src/app/valentina/xml/vpattern.cpp +++ b/src/app/valentina/xml/vpattern.cpp @@ -530,20 +530,6 @@ void VPattern::LiteParseIncrements() } } -//--------------------------------------------------------------------------------------------------------------------- -void VPattern::RefreshCurves() -{ - QHash::const_iterator i = tools.constBegin(); - while (i != tools.constEnd()) - { - if (VAbstractSpline *vTool = qobject_cast(i.value())) - { - vTool->FullUpdateFromFile(); - } - ++i; - } -} - //--------------------------------------------------------------------------------------------------------------------- int VPattern::ElementsToParse() const { diff --git a/src/app/valentina/xml/vpattern.h b/src/app/valentina/xml/vpattern.h index 1d2a74bcd..ac1310a1c 100644 --- a/src/app/valentina/xml/vpattern.h +++ b/src/app/valentina/xml/vpattern.h @@ -107,8 +107,6 @@ public: void LiteParseIncrements(); - static void RefreshCurves(); - static const QString AttrReadOnly; int ElementsToParse() const; diff --git a/src/libs/vmisc/vcommonsettings.cpp b/src/libs/vmisc/vcommonsettings.cpp index ac59b2e9b..2ff8e4521 100644 --- a/src/libs/vmisc/vcommonsettings.cpp +++ b/src/libs/vmisc/vcommonsettings.cpp @@ -70,6 +70,7 @@ const QString settingPatternHideMainPath = QStringLiteral("pattern/hi const QString settingDoublePassmark = QStringLiteral("pattern/doublePassmark"); const QString settingPatternDefaultSeamAllowance = QStringLiteral("pattern/defaultSeamAllowance"); const QString settingPatternLabelFont = QStringLiteral("pattern/labelFont"); +const QString settingPatternLineWidth = QStringLiteral("pattern/lineWidth"); const QString settingPatternCurveApproximationScale = QStringLiteral("pattern/curveApproximationScale"); const QString settingPatternShowCurveDetails = QStringLiteral("pattern/showCurveDetails"); @@ -98,6 +99,7 @@ const QString settingLabelUserTimeFormats = QStringLiteral("label/userTimeFormat // Reading settings file is very expensive, cache curve approximation to speed up getting value qreal curveApproximationCached = -1; QString localeCached = QString(); +qreal lineWidthCached = 0; //--------------------------------------------------------------------------------------------------------------------- QStringList ClearFormats(const QStringList &predefinedFormats, QStringList formats) @@ -1053,3 +1055,34 @@ void VCommonSettings::SetShowCurveDetails(bool value) { setValue(settingPatternShowCurveDetails, value); } + +//--------------------------------------------------------------------------------------------------------------------- +qreal VCommonSettings::GetLineWidth() const +{ + if (lineWidthCached <= 0) + { + lineWidthCached = qBound(VCommonSettings::MinimalLineWidth(), value(settingPatternLineWidth, 1.2).toDouble(), + VCommonSettings::MaximalLineWidth()); + } + + return lineWidthCached; +} + +//--------------------------------------------------------------------------------------------------------------------- +void VCommonSettings::SetLineWidth(qreal width) +{ + lineWidthCached = qBound(VCommonSettings::MinimalLineWidth(), width, VCommonSettings::MaximalLineWidth()); + setValue(settingPatternLineWidth, lineWidthCached); +} + +//--------------------------------------------------------------------------------------------------------------------- +qreal VCommonSettings::WidthMainLine() const +{ + return GetLineWidth() / 25.4 * PrintDPI; +} + +//--------------------------------------------------------------------------------------------------------------------- +qreal VCommonSettings::WidthHairLine() const +{ + return WidthMainLine()/3.0; +} diff --git a/src/libs/vmisc/vcommonsettings.h b/src/libs/vmisc/vcommonsettings.h index fc43924f4..1ebecdbd5 100644 --- a/src/libs/vmisc/vcommonsettings.h +++ b/src/libs/vmisc/vcommonsettings.h @@ -194,8 +194,34 @@ public: bool IsShowCurveDetails() const; void SetShowCurveDetails(bool value); + + static qreal DefaultLineWidth(); + static qreal MinimalLineWidth(); + static qreal MaximalLineWidth(); + qreal GetLineWidth() const; + void SetLineWidth(qreal width); + qreal WidthMainLine() const; + qreal WidthHairLine() const; private: Q_DISABLE_COPY(VCommonSettings) }; +//--------------------------------------------------------------------------------------------------------------------- +inline qreal VCommonSettings::DefaultLineWidth() +{ + return 1.2; // mm +} + +//--------------------------------------------------------------------------------------------------------------------- +inline qreal VCommonSettings::MinimalLineWidth() +{ + return 0.5; // mm +} + +//--------------------------------------------------------------------------------------------------------------------- +inline qreal VCommonSettings::MaximalLineWidth() +{ + return 5.0; // mm +} + #endif // VCOMMONSETTINGS_H diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp index 10114f117..7a411eb51 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp @@ -95,7 +95,8 @@ QPainterPath VAbstractSpline::shape() const //--------------------------------------------------------------------------------------------------------------------- void VAbstractSpline::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { - const qreal width = ScaleWidth(m_isHovered ? widthMainLine : widthHairLine, SceneScale(scene())); + const qreal width = ScaleWidth(m_isHovered ? qApp->Settings()->WidthMainLine() : qApp->Settings()->WidthHairLine(), + SceneScale(scene())); const QSharedPointer curve = VAbstractTool::data.GeometricObject(m_id); setPen(QPen(CorrectColor(this, curve->GetColor()), width, LineStyleToPenStyle(curve->GetPenStyle()), Qt::RoundCap)); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.cpp index 3161fe228..b905f29ce 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.cpp @@ -76,7 +76,7 @@ VToolLinePoint::VToolLinePoint(VAbstractPattern *doc, VContainer *data, const qu QPointF point1 = static_cast(*data->GeometricObject(basePointId)); QPointF point2 = static_cast(*data->GeometricObject(id)); mainLine = new VScaledLine(QLineF(point1 - point2, QPointF()), this); - mainLine->SetBasicWidth(widthHairLine); + mainLine->SetBoldLine(false); mainLine->setFlag(QGraphicsItem::ItemStacksBehindParent, true); } @@ -132,14 +132,14 @@ void VToolLinePoint::SaveOptions(QDomElement &tag, QSharedPointer &obj //--------------------------------------------------------------------------------------------------------------------- void VToolLinePoint::hoverEnterEvent(QGraphicsSceneHoverEvent *event) { - mainLine->SetBasicWidth(widthMainLine); + mainLine->SetBoldLine(true); VToolSinglePoint::hoverEnterEvent(event); } //--------------------------------------------------------------------------------------------------------------------- void VToolLinePoint::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) { - mainLine->SetBasicWidth(widthHairLine); + mainLine->SetBoldLine(false); VToolSinglePoint::hoverLeaveEvent(event); } diff --git a/src/libs/vtools/tools/drawTools/vtoolline.cpp b/src/libs/vtools/tools/drawTools/vtoolline.cpp index 0039c3da6..703588594 100644 --- a/src/libs/vtools/tools/drawTools/vtoolline.cpp +++ b/src/libs/vtools/tools/drawTools/vtoolline.cpp @@ -182,7 +182,8 @@ QString VToolLine::getTagName() const //--------------------------------------------------------------------------------------------------------------------- void VToolLine::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { - const qreal width = ScaleWidth(m_isHovered ? widthMainLine : widthHairLine, SceneScale(scene())); + const qreal width = ScaleWidth(m_isHovered ? qApp->Settings()->WidthMainLine() : qApp->Settings()->WidthHairLine(), + SceneScale(scene())); setPen(QPen(CorrectColor(this, lineColor), width, LineStyleToPenStyle(m_lineType))); diff --git a/src/libs/vtools/tools/nodeDetails/vtoolpiecepath.cpp b/src/libs/vtools/tools/nodeDetails/vtoolpiecepath.cpp index 94acdaee2..29e980166 100644 --- a/src/libs/vtools/tools/nodeDetails/vtoolpiecepath.cpp +++ b/src/libs/vtools/tools/nodeDetails/vtoolpiecepath.cpp @@ -120,7 +120,7 @@ QString VToolPiecePath::getTagName() const //--------------------------------------------------------------------------------------------------------------------- void VToolPiecePath::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { - qreal width = widthHairLine; + qreal width = qApp->Settings()->WidthHairLine(); const qreal scale = SceneScale(scene()); if (scale > 1) diff --git a/src/libs/vtools/tools/vtoolseamallowance.cpp b/src/libs/vtools/tools/vtoolseamallowance.cpp index 5c6133144..49f1b4641 100644 --- a/src/libs/vtools/tools/vtoolseamallowance.cpp +++ b/src/libs/vtools/tools/vtoolseamallowance.cpp @@ -909,7 +909,7 @@ void VToolSeamAllowance::SaveRotateGrainline(qreal dRot, const QPointF& ptPos) void VToolSeamAllowance::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { QPen toolPen = pen(); - toolPen.setWidthF(ScaleWidth(widthHairLine, SceneScale(scene()))); + toolPen.setWidthF(ScaleWidth(qApp->Settings()->WidthHairLine(), SceneScale(scene()))); setPen(toolPen); m_seamAllowance->setPen(toolPen); diff --git a/src/libs/vtools/visualization/path/vispiecespecialpoints.cpp b/src/libs/vtools/visualization/path/vispiecespecialpoints.cpp index 27e361dc8..78e1b2fb6 100644 --- a/src/libs/vtools/visualization/path/vispiecespecialpoints.cpp +++ b/src/libs/vtools/visualization/path/vispiecespecialpoints.cpp @@ -55,7 +55,7 @@ VisPieceSpecialPoints::VisPieceSpecialPoints(const VContainer *data, QGraphicsIt supportColor2(Qt::darkGreen) { m_rectItem = InitItem(supportColor2, this); - m_rectItem->SetWidth(widthHairLine); + m_rectItem->SetWidth(qApp->Settings()->WidthHairLine()); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vwidgets/global.cpp b/src/libs/vwidgets/global.cpp index 23a045d61..e903ef73b 100644 --- a/src/libs/vwidgets/global.cpp +++ b/src/libs/vwidgets/global.cpp @@ -35,8 +35,6 @@ #include static const qreal defPointRadiusPixel = (2./*mm*/ / 25.4) * PrintDPI; -const qreal widthMainLine = (1.2/*mm*/ / 25.4) * PrintDPI; -const qreal widthHairLine = widthMainLine/3.0; const qreal minVisibleFontSize = 5; qreal SceneScale(QGraphicsScene *scene) diff --git a/src/libs/vwidgets/global.h b/src/libs/vwidgets/global.h index ee6c3628d..8ce5986bd 100644 --- a/src/libs/vwidgets/global.h +++ b/src/libs/vwidgets/global.h @@ -32,8 +32,6 @@ #include #include -extern const qreal widthMainLine; -extern const qreal widthHairLine; extern const qreal minVisibleFontSize; class QGraphicsScene; diff --git a/src/libs/vwidgets/scalesceneitems.cpp b/src/libs/vwidgets/scalesceneitems.cpp index b4263eac2..a95953df3 100644 --- a/src/libs/vwidgets/scalesceneitems.cpp +++ b/src/libs/vwidgets/scalesceneitems.cpp @@ -28,41 +28,43 @@ #include "scalesceneitems.h" #include "global.h" +#include "../vmisc/vabstractapplication.h" #include //--------------------------------------------------------------------------------------------------------------------- VScaledLine::VScaledLine(QGraphicsItem *parent) : QGraphicsLineItem(parent), - basicWidth(widthMainLine) + m_isBoldLine(true) {} //--------------------------------------------------------------------------------------------------------------------- VScaledLine::VScaledLine(const QLineF &line, QGraphicsItem *parent) : QGraphicsLineItem(line, parent), - basicWidth(widthMainLine) + m_isBoldLine(true) {} //--------------------------------------------------------------------------------------------------------------------- void VScaledLine::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { QPen lPen = pen(); - lPen.setWidthF(ScaleWidth(basicWidth, SceneScale(scene()))); + lPen.setWidthF(ScaleWidth(m_isBoldLine ? qApp->Settings()->WidthMainLine() : qApp->Settings()->WidthHairLine(), + SceneScale(scene()))); setPen(lPen); PaintWithFixItemHighlightSelected(this, painter, option, widget); } //--------------------------------------------------------------------------------------------------------------------- -qreal VScaledLine::GetBasicWidth() const +bool VScaledLine::IsBoldLine() const { - return basicWidth; + return m_isBoldLine; } //--------------------------------------------------------------------------------------------------------------------- -void VScaledLine::SetBasicWidth(const qreal &value) +void VScaledLine::SetBoldLine(bool bold) { - basicWidth = value; + m_isBoldLine = bold; } //--------------------------------------------------------------------------------------------------------------------- @@ -74,7 +76,7 @@ VScaledEllipse::VScaledEllipse(QGraphicsItem *parent) void VScaledEllipse::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { const qreal scale = SceneScale(scene()); - const qreal width = ScaleWidth(widthMainLine, scale); + const qreal width = ScaleWidth(qApp->Settings()->WidthMainLine(), scale); QPen visPen = pen(); visPen.setWidthF(width); diff --git a/src/libs/vwidgets/scalesceneitems.h b/src/libs/vwidgets/scalesceneitems.h index 9851f85be..83545bc57 100644 --- a/src/libs/vwidgets/scalesceneitems.h +++ b/src/libs/vwidgets/scalesceneitems.h @@ -46,13 +46,13 @@ public: virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) Q_DECL_OVERRIDE; - qreal GetBasicWidth() const; - void SetBasicWidth(const qreal &value); + bool IsBoldLine() const; + void SetBoldLine(bool bold); private: Q_DISABLE_COPY(VScaledLine) - qreal basicWidth; + bool m_isBoldLine; }; class VScaledEllipse : public QGraphicsEllipseItem diff --git a/src/libs/vwidgets/vcontrolpointspline.cpp b/src/libs/vwidgets/vcontrolpointspline.cpp index 00bb4abcb..f858cb560 100644 --- a/src/libs/vwidgets/vcontrolpointspline.cpp +++ b/src/libs/vwidgets/vcontrolpointspline.cpp @@ -45,6 +45,7 @@ #include "../vwidgets/global.h" #include "../vgeometry/vgobject.h" +#include "../vmisc/vabstractapplication.h" #include "vmaingraphicsscene.h" #include "vmaingraphicsview.h" #include "vgraphicssimpletextitem.h" @@ -258,7 +259,7 @@ void VControlPointSpline::Init() this->setZValue(100); controlLine = new VScaledLine(this); - controlLine->SetBasicWidth(widthHairLine); + controlLine->SetBoldLine(false); controlLine->setFlag(QGraphicsItem::ItemStacksBehindParent, true); controlLine->setVisible(false); } diff --git a/src/libs/vwidgets/vcurvepathitem.cpp b/src/libs/vwidgets/vcurvepathitem.cpp index 20ab950c0..c0b3f8403 100644 --- a/src/libs/vwidgets/vcurvepathitem.cpp +++ b/src/libs/vwidgets/vcurvepathitem.cpp @@ -29,6 +29,7 @@ #include "vcurvepathitem.h" #include "../vwidgets/global.h" #include "../vgeometry/vabstractcurve.h" +#include "../vmisc/vabstractapplication.h" #include @@ -37,9 +38,8 @@ VCurvePathItem::VCurvePathItem(QGraphicsItem *parent) : QGraphicsPathItem(parent), m_directionArrows(), m_points(), - m_defaultWidth(widthMainLine) -{ -} + m_defaultWidth(qApp->Settings()->WidthMainLine()) +{} //--------------------------------------------------------------------------------------------------------------------- QPainterPath VCurvePathItem::shape() const diff --git a/src/libs/vwidgets/vmaingraphicsscene.cpp b/src/libs/vwidgets/vmaingraphicsscene.cpp index e15feb236..b5215d886 100644 --- a/src/libs/vwidgets/vmaingraphicsscene.cpp +++ b/src/libs/vwidgets/vmaingraphicsscene.cpp @@ -42,6 +42,7 @@ #include #include "global.h" +#include "../vmisc/vabstractapplication.h" //--------------------------------------------------------------------------------------------------------------------- /** @@ -117,7 +118,7 @@ void VMainGraphicsScene::InitOrigins() { origins.clear(); - QPen originsPen(Qt::green, widthHairLine, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin); + QPen originsPen(Qt::green, qApp->Settings()->WidthHairLine(), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin); QBrush axisTextBrush(Qt::green); const qreal arrowAngle = 35.0; const qreal arrowLength = 12.0; diff --git a/src/libs/vwidgets/vscenepoint.cpp b/src/libs/vwidgets/vscenepoint.cpp index 6a6f1f07d..fe221b3d0 100644 --- a/src/libs/vwidgets/vscenepoint.cpp +++ b/src/libs/vwidgets/vscenepoint.cpp @@ -28,6 +28,7 @@ #include "vscenepoint.h" #include "../vmisc/def.h" +#include "../vmisc/vabstractapplication.h" #include "../vgeometry/vpointf.h" #include "global.h" #include "vgraphicssimpletextitem.h" @@ -53,7 +54,7 @@ VScenePoint::VScenePoint(QGraphicsItem *parent) { m_namePoint = new VGraphicsSimpleTextItem(this); m_lineName = new VScaledLine(this); - m_lineName->SetBasicWidth(widthHairLine); + m_lineName->SetBoldLine(false); m_lineName->setLine(QLineF(0, 0, 1, 0)); m_lineName->setVisible(false); @@ -173,7 +174,8 @@ void VScenePoint::RefreshLine() //--------------------------------------------------------------------------------------------------------------------- void VScenePoint::ScaleMainPenWidth(qreal scale) { - const qreal width = ScaleWidth(m_isHovered ? widthMainLine : widthHairLine, scale); + const qreal width = ScaleWidth(m_isHovered ? qApp->Settings()->WidthMainLine() : qApp->Settings()->WidthHairLine(), + scale); setPen(QPen(CorrectColor(this, m_baseColor), width)); } diff --git a/src/libs/vwidgets/vsimplecurve.cpp b/src/libs/vwidgets/vsimplecurve.cpp index 6a1eb414d..6f6f80bb7 100644 --- a/src/libs/vwidgets/vsimplecurve.cpp +++ b/src/libs/vwidgets/vsimplecurve.cpp @@ -175,16 +175,7 @@ void VSimpleCurve::keyReleaseEvent(QKeyEvent *event) //--------------------------------------------------------------------------------------------------------------------- void VSimpleCurve::ScalePenWidth() { - qreal width = 1; - if (m_isHovered) - { - width = widthMainLine; - } - else - { - width = widthHairLine; - } - + qreal width = m_isHovered ? qApp->Settings()->WidthMainLine() : qApp->Settings()->WidthHairLine(); width = ScaleWidth(width, SceneScale(scene())); setPen(QPen(CorrectColor(this, m_curve->GetColor()), width, LineStyleToPenStyle(m_curve->GetPenStyle()))); }