[PATCH] Printing: support the "Border width" setting for templates

Lubomir I. Ivanov neolit123 at gmail.com
Mon Mar 6 08:41:54 PST 2017


From: "Lubomir I. Ivanov" <neolit123 at gmail.com>

Going to "Template -> Edit" now has a field to enter the
border width (in pixels as only that makes sense in CSS as a flexible
unit, TMK).

This field modifies the template_options.borderwidth Grantlee
property which is part of the bundled templates already
and allows the users to modify the borders of tables.

The C++ implementation was missing, while the HTML (template)
implementation was already in place. Overlooked during GSoC.

Reported-by: Willem Ferguson <willemferguson at zoology.up.ac.za>
Signed-off-by: Lubomir I. Ivanov <neolit123 at gmail.com>
---
 desktop-widgets/printdialog.cpp  |  2 ++
 desktop-widgets/printer.cpp      |  4 ++--
 desktop-widgets/printoptions.h   |  1 +
 desktop-widgets/templateedit.cpp |  7 +++++++
 desktop-widgets/templateedit.h   |  2 ++
 desktop-widgets/templateedit.ui  | 30 ++++++++++++++++++++++++++++++
 6 files changed, 44 insertions(+), 2 deletions(-)

diff --git a/desktop-widgets/printdialog.cpp b/desktop-widgets/printdialog.cpp
index 5fdc781..e9f11ca 100644
--- a/desktop-widgets/printdialog.cpp
+++ b/desktop-widgets/printdialog.cpp
@@ -51,6 +51,7 @@ PrintDialog::PrintDialog(QWidget *parent, Qt::WindowFlags f) :
 	templateOptions.font_size = s.value("font_size", 9).toDouble();
 	templateOptions.color_palette_index = s.value("color_palette", SSRF_COLORS).toInt();
 	templateOptions.line_spacing = s.value("line_spacing", 1).toDouble();
+	templateOptions.border_width = s.value("border_width", 1).toInt();
 	custom_colors.color1 = QColor(s.value("custom_color_1", ssrf_colors.color1).toString());
 	custom_colors.color2 = QColor(s.value("custom_color_2", ssrf_colors.color2).toString());
 	custom_colors.color3 = QColor(s.value("custom_color_3", ssrf_colors.color3).toString());
@@ -148,6 +149,7 @@ void PrintDialog::onFinished()
 	s.setValue("font_size", templateOptions.font_size);
 	s.setValue("color_palette", templateOptions.color_palette_index);
 	s.setValue("line_spacing", templateOptions.line_spacing);
+	s.setValue("border_width", templateOptions.border_width);
 
 	// save custom colors
 	s.setValue("custom_color_1", custom_colors.color1.name());
diff --git a/desktop-widgets/printer.cpp b/desktop-widgets/printer.cpp
index bad1c27..49a9a18 100644
--- a/desktop-widgets/printer.cpp
+++ b/desktop-widgets/printer.cpp
@@ -237,7 +237,7 @@ void Printer::print()
 	webView->page()->mainFrame()->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff);
 #endif
 	// export border width with at least 1 pixel
-	templateOptions->border_width = std::max(1, pageSize.width() / 1000);
+	// templateOptions->borderwidth = std::max(1, pageSize.width() / 1000);
 	if (printOptions->type == print_options::DIVELIST) {
 		webView->setHtml(t.generate());
 	} else if (printOptions->type == print_options::STATISTICS ) {
@@ -284,7 +284,7 @@ void Printer::previewOnePage()
 		webView->page()->setViewportSize(pageSize);
 #endif
 		// initialize the border settings
-		templateOptions->border_width = std::max(1, pageSize.width() / 1000);
+		// templateOptions->border_width = std::max(1, pageSize.width() / 1000);
 		if (printOptions->type == print_options::DIVELIST) {
 			webView->setHtml(t.generate());
 		} else if (printOptions->type == print_options::STATISTICS ) {
diff --git a/desktop-widgets/printoptions.h b/desktop-widgets/printoptions.h
index 9c50b10..b8248b7 100644
--- a/desktop-widgets/printoptions.h
+++ b/desktop-widgets/printoptions.h
@@ -43,6 +43,7 @@ struct template_options {
 				|| other.color_palette_index != color_palette_index
 				|| other.font_size != font_size
 				|| other.line_spacing != line_spacing
+				|| other.border_width != border_width
 				|| other.color_palette != color_palette;
 	}
  };
diff --git a/desktop-widgets/templateedit.cpp b/desktop-widgets/templateedit.cpp
index 4964016..ea63140 100644
--- a/desktop-widgets/templateedit.cpp
+++ b/desktop-widgets/templateedit.cpp
@@ -20,6 +20,7 @@ TemplateEdit::TemplateEdit(QWidget *parent, struct print_options *printOptions,
 	ui->fontsize->setValue(templateOptions->font_size);
 	ui->colorpalette->setCurrentIndex(templateOptions->color_palette_index);
 	ui->linespacing->setValue(templateOptions->line_spacing);
+	ui->borderwidth->setValue(templateOptions->border_width);
 
 	grantlee_template = TemplateLayout::readTemplate(printOptions->p_template);
 	if (printOptions->type == print_options::DIVELIST)
@@ -97,6 +98,12 @@ void TemplateEdit::on_linespacing_valueChanged(double line_spacing)
 	updatePreview();
 }
 
+void TemplateEdit::on_borderwidth_valueChanged(double border_width)
+{
+	newTemplateOptions.border_width = (int)border_width;
+	updatePreview();
+}
+
 void TemplateEdit::on_fontSelection_currentIndexChanged(int index)
 {
 	newTemplateOptions.font_index = index;
diff --git a/desktop-widgets/templateedit.h b/desktop-widgets/templateedit.h
index 5e548ae..abbe8e2 100644
--- a/desktop-widgets/templateedit.h
+++ b/desktop-widgets/templateedit.h
@@ -20,6 +20,8 @@ private slots:
 
 	void on_linespacing_valueChanged(double line_spacing);
 
+	void on_borderwidth_valueChanged(double border_width);
+
 	void on_fontSelection_currentIndexChanged(int index);
 
 	void on_colorpalette_currentIndexChanged(int index);
diff --git a/desktop-widgets/templateedit.ui b/desktop-widgets/templateedit.ui
index 60a0fc7..616d135 100644
--- a/desktop-widgets/templateedit.ui
+++ b/desktop-widgets/templateedit.ui
@@ -220,6 +220,36 @@
             </layout>
            </item>
            <item>
+            <layout class="QHBoxLayout" name="horizontalLayout_3">
+             <item>
+              <widget class="QLabel" name="borderwidth_label">
+               <property name="text">
+                <string>Border width</string>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <widget class="QDoubleSpinBox" name="borderwidth">
+               <property name="decimals">
+                <number>0</number>
+               </property>
+               <property name="minimum">
+                <double>0.000000000000000</double>
+               </property>
+               <property name="maximum">
+                <double>100.000000000000000</double>
+               </property>
+               <property name="singleStep">
+                <double>1.000000000000000</double>
+               </property>
+               <property name="value">
+                <double>1.000000000000000</double>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </item>
+           <item>
             <spacer name="verticalSpacer">
              <property name="orientation">
               <enum>Qt::Vertical</enum>
-- 
1.7.11.msysgit.0



More information about the subsurface mailing list