[TD]make page grid unit aware

This commit is contained in:
Wanderer Fan
2022-03-02 18:02:08 -05:00
committed by WandererFan
parent 6bec7f2e39
commit 0149b99b6f
7 changed files with 64 additions and 47 deletions

View File

@@ -494,7 +494,7 @@ for ProjectionGroups</string>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_3">
<layout class="QGridLayout" name="gridLayout_3" columnstretch="1,0,2">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="minimumSize">
@@ -794,24 +794,29 @@ for ProjectionGroups</string>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<layout class="QGridLayout" name="gridLayout" columnstretch="1,0,1">
<item row="1" column="2">
<widget class="Gui::PrefSpinBox" name="psb_GridSpacing">
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
<item row="1" column="1">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="value">
<number>10</number>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
<property name="prefEntry" stdset="0">
<cstring>gridSpacing</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>/Mod/TechDraw/General</cstring>
</property>
</widget>
</spacer>
</item>
<item row="0" column="0">
<widget class="Gui::PrefCheckBox" name="cb_ShowGrid">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="toolTip">
<string>Set ShowGrid property to true on new Pages.</string>
</property>
<property name="text">
<string>Show Grid</string>
</property>
@@ -838,18 +843,24 @@ for ProjectionGroups</string>
</property>
</widget>
</item>
<item row="1" column="1">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<item row="1" column="2">
<widget class="Gui::PrefUnitSpinBox" name="psb_GridSpacing">
<property name="toolTip">
<string>Distance between Page grid lines.</string>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</spacer>
<property name="value">
<double>10.000000000000000</double>
</property>
<property name="prefEntry" stdset="0">
<cstring>gridSpacing</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>psb_GridSpacing</cstring>
</property>
</widget>
</item>
</layout>
</item>
@@ -890,11 +901,6 @@ for ProjectionGroups</string>
<extends>Gui::FileChooser</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
<customwidget>
<class>Gui::PrefSpinBox</class>
<extends>QSpinBox</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
<customwidget>
<class>Gui::PrefCheckBox</class>
<extends>QCheckBox</extends>

View File

@@ -44,6 +44,9 @@ DlgPrefsTechDrawGeneralImp::DlgPrefsTechDrawGeneralImp( QWidget* parent )
ui->setupUi(this);
ui->plsb_LabelSize->setUnit(Base::Unit::Length);
ui->plsb_LabelSize->setMinimum(0);
ui->psb_GridSpacing->setUnit(Base::Unit::Length);
ui->psb_GridSpacing->setMinimum(0);
}
DlgPrefsTechDrawGeneralImp::~DlgPrefsTechDrawGeneralImp()
@@ -108,7 +111,13 @@ void DlgPrefsTechDrawGeneralImp::loadSettings()
ui->pfc_Welding->onRestore();
ui->pfc_FilePattern->onRestore();
ui->le_NamePattern->onRestore();
bool gridDefault = PreferencesGui::showGrid();
ui->cb_ShowGrid->setChecked(gridDefault);
ui->cb_ShowGrid->onRestore();
double spacingDefault = PreferencesGui::gridSpacing();
ui->psb_GridSpacing->setValue(spacingDefault);
ui->psb_GridSpacing->onRestore();
}

View File

@@ -227,12 +227,12 @@ QColor PreferencesGui::gridQColor()
return PreferencesGui::gridColor().asValue<QColor>();
}
int PreferencesGui::gridSpacing()
double PreferencesGui::gridSpacing()
{
Base::Reference<ParameterGrp> hGrp = App::GetApplication().GetUserParameter().
GetGroup("BaseApp")->GetGroup("Preferences")->
GetGroup("Mod/TechDraw/General");
int spacing = hGrp->GetInt("gridSpacing", 10);
double spacing = hGrp->GetFloat("gridSpacing", 10.0);
return spacing;
}
@@ -241,6 +241,6 @@ bool PreferencesGui::showGrid()
Base::Reference<ParameterGrp> hGrp = App::GetApplication().GetUserParameter().
GetGroup("BaseApp")->GetGroup("Preferences")->
GetGroup("Mod/TechDraw/General");
bool show = hGrp->GetInt("showGrid", true);
bool show = hGrp->GetBool("showGrid", true);
return show;
}

View File

@@ -66,7 +66,7 @@ static QString weldingDirectory();
static bool showGrid();
static App::Color gridColor();
static QColor gridQColor();
static int gridSpacing();
static double gridSpacing();
};

View File

@@ -1320,31 +1320,31 @@ void QGVPage::drawForeground(QPainter *painter, const QRectF &rect)
}
}
void QGVPage::makeGrid(int gridWidth, int gridHeight, int gridStep)
void QGVPage::makeGrid(int gridWidth, int gridHeight, double gridStep)
{
QPainterPath grid;
int width = Rez::guiX(gridWidth);
int height = Rez::guiX(gridHeight);
int step = Rez::guiX(gridStep);
int horizStart = 0;
int vPos = 0;
double width = Rez::guiX(gridWidth);
double height = Rez::guiX(gridHeight);
double step = Rez::guiX(gridStep);
double horizStart = 0.0;
double vPos = 0;
int rows = (height / step) + 1;
//draw horizontal lines
for (int i = 0; i < rows; i++) {
vPos = i * step;
QPoint start (horizStart, -vPos);
QPoint end (width, -vPos);
QPointF start (horizStart, -vPos);
QPointF end (width, -vPos);
grid.moveTo(start);
grid.lineTo(end);
}
//draw vertical lines
int vertStart = 0;
double vertStart = 0.0;
double hPos = 0.0;
int cols = (width / step) + 1;
int hPos = 0;
for (int i = 0; i < cols; i++) {
hPos = i * step;
QPoint start(hPos, -vertStart);
QPoint end(hPos, -height);
QPointF start(hPos, -vertStart);
QPointF end(hPos, -height);
grid.moveTo(start);
grid.lineTo(end);
}

View File

@@ -129,7 +129,7 @@ public:
void saveSvg(QString filename);
void postProcessXml(QTemporaryFile& tempFile, QString filename, QString pagename);
void makeGrid(int width, int height, int step);
void makeGrid(int width, int height, double step);
void showGrid(bool state) {m_showGrid = state;}
void updateViewport(void) {viewport()->repaint();}

View File

@@ -32,6 +32,8 @@
#include <boost_signals2.hpp>
#include <App/PropertyUnits.h>
namespace TechDraw{
class DrawPage;
}
@@ -53,7 +55,7 @@ public:
App::PropertyBool ShowFrames;
App::PropertyBool ShowGrid;
App::PropertyInteger GridSpacing;
App::PropertyDistance GridSpacing;
virtual void attach(App::DocumentObject *) override;
virtual void setDisplayMode(const char* ModeName) override;