Engauge Digitizer  2
MainWindowModel.cpp
Go to the documentation of this file.
1 /******************************************************************************************************
2  * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3  * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4  * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5  ******************************************************************************************************/
6 
7 #include "CmdMediator.h"
8 #include "DocumentSerialize.h"
9 #include "GraphicsPoint.h"
10 #include "GridLineLimiter.h"
11 #include "ImportCroppingUtilBase.h"
12 #include "Logger.h"
13 #include "MainWindowModel.h"
14 #include "PdfResolution.h"
15 #include <QLocale>
16 #include <QObject>
17 #include <QTextStream>
18 #include "QtToString.h"
19 #include <QXmlStreamWriter>
20 #include "Xml.h"
21 #include "ZoomFactorInitial.h"
22 
23 // Prevent comma ambiguity with group separator commas and field delimiting commas
24 const QLocale::NumberOption HIDE_GROUP_SEPARATOR = QLocale::OmitGroupSeparator;
25 
26 bool DEFAULT_DRAG_DROP_EXPORT = false; // False value allows intuitive copy-and-drag to select a rectangular set of table cells
28 bool DEFAULT_SMALL_DIALOGS = false;
29 bool DEFAULT_IMAGE_REPLACE_RENAMES_DOCUMENT = true; // Pre-version 11.3 behavior
30 
32  m_zoomControl (ZOOM_CONTROL_MENU_WHEEL_PLUSMINUS),
33  m_zoomFactorInitial (DEFAULT_ZOOM_FACTOR_INITIAL),
34  m_mainTitleBarFormat (MAIN_TITLE_BAR_FORMAT_PATH),
35  m_pdfResolution (DEFAULT_IMPORT_PDF_RESOLUTION),
36  m_importCropping (DEFAULT_IMPORT_CROPPING),
37  m_maximumGridLines (DEFAULT_MAXIMUM_GRID_LINES),
38  m_highlightOpacity (DEFAULT_HIGHLIGHT_OPACITY),
39  m_smallDialogs (DEFAULT_SMALL_DIALOGS),
40  m_dragDropExport (DEFAULT_DRAG_DROP_EXPORT),
41  m_significantDigits (DEFAULT_SIGNIFICANT_DIGITS),
42  m_imageReplaceRenamesDocument (DEFAULT_IMAGE_REPLACE_RENAMES_DOCUMENT)
43 {
44  // Locale member variable m_locale is initialized to default locale when default constructor is called
45 }
46 
48  m_locale (other.locale()),
49  m_zoomControl (other.zoomControl()),
50  m_zoomFactorInitial (other.zoomFactorInitial()),
51  m_mainTitleBarFormat (other.mainTitleBarFormat()),
52  m_pdfResolution (other.pdfResolution()),
53  m_importCropping (other.importCropping()),
54  m_maximumGridLines (other.maximumGridLines()),
55  m_highlightOpacity (other.highlightOpacity()),
56  m_smallDialogs (other.smallDialogs()),
57  m_dragDropExport (other.dragDropExport()),
58  m_significantDigits (other.significantDigits()),
59  m_imageReplaceRenamesDocument (other.imageReplaceRenamesDocument())
60 {
61 }
62 
64 {
65  m_locale = other.locale();
66  m_zoomControl = other.zoomControl();
67  m_zoomFactorInitial = other.zoomFactorInitial();
68  m_mainTitleBarFormat = other.mainTitleBarFormat();
69  m_pdfResolution = other.pdfResolution();
70  m_importCropping = other.importCropping();
71  m_maximumGridLines = other.maximumGridLines();
72  m_highlightOpacity = other.highlightOpacity();
73  m_smallDialogs = other.smallDialogs();
74  m_dragDropExport = other.dragDropExport();
75  m_significantDigits = other.significantDigits();
76  m_imageReplaceRenamesDocument = other.imageReplaceRenamesDocument();
77 
78  return *this;
79 }
80 
82 {
83  return m_dragDropExport;
84 }
85 
87 {
88  return m_highlightOpacity;
89 }
90 
92 {
93  return m_imageReplaceRenamesDocument;
94 }
95 
97 {
98  return m_importCropping;
99 }
100 
101 void MainWindowModel::loadXml(QXmlStreamReader &reader)
102 {
103  LOG4CPP_INFO_S ((*mainCat)) << "MainWindowModel::loadXml";
104 
105  bool success = true;
106 
107  // Read until end of this subtree
108  while ((reader.tokenType() != QXmlStreamReader::EndElement) ||
109  (reader.name() != DOCUMENT_SERIALIZE_MAIN_WINDOW)){
110  loadNextFromReader(reader);
111  if (reader.atEnd()) {
112  success = false;
113  break;
114  }
115  }
116 
117  if (!success) {
118  reader.raiseError (QObject::tr ("Cannot read main window data"));
119  }
120 }
121 
122 QLocale MainWindowModel::locale () const
123 {
124  return m_locale;
125 }
126 
128 {
129  return m_mainTitleBarFormat;
130 }
131 
133 {
134  return m_maximumGridLines;
135 }
136 
138 {
139  return m_pdfResolution;
140 }
141 
142 void MainWindowModel::printStream(QString indentation,
143  QTextStream &str) const
144 {
145  str << indentation << "MainWindowModel\n";
146 
147  indentation += INDENTATION_DELTA;
148 
149  str << indentation << "locale=" << m_locale.name() << "\n";
150  str << indentation << "zoomControl=" << m_zoomControl << "\n";
151  str << indentation << "zoomFactorInitial=" << m_zoomFactorInitial << "\n";
152  str << indentation << "mainWindowTitleBarFormat=" << (m_mainTitleBarFormat == MAIN_TITLE_BAR_FORMAT_NO_PATH ?
153  "NoPath" :
154  "Path") << "\n";
155  str << indentation << "pdfResolution=" << m_pdfResolution << "\n";
156  str << indentation << "importCropping=" << ImportCroppingUtilBase::importCroppingToString (m_importCropping).toLatin1().data() << "\n";
157  str << indentation << "maximumGridLines=" << m_maximumGridLines << "\n";
158  str << indentation << "highlightOpacity=" << m_highlightOpacity << "\n";
159  str << indentation << "smallDialogs=" << (m_smallDialogs ? "yes" : "no") << "\n";
160  str << indentation << "dragDropExport=" << (m_dragDropExport ? "yes" : "no") << "\n";
161  str << indentation << "significantDigits=" << m_significantDigits << "\n";
162  str << indentation << "imageReplaceRenamesDocument=" << (m_imageReplaceRenamesDocument ? "yes" : "no") << "\n";
163 }
164 
165 void MainWindowModel::saveXml(QXmlStreamWriter &writer) const
166 {
167  LOG4CPP_INFO_S ((*mainCat)) << "MainWindowModel::saveXml";
168 
169  writer.writeStartElement(DOCUMENT_SERIALIZE_MAIN_WINDOW);
170  writer.writeEndElement();
171 }
172 
173 void MainWindowModel::setDragDropExport(bool dragDropExport)
174 {
175  m_dragDropExport = dragDropExport;
176 }
177 
178 void MainWindowModel::setHighlightOpacity(double highlightOpacity)
179 {
180  m_highlightOpacity = highlightOpacity;
181 }
182 
183 void MainWindowModel::setImageReplaceRenamesDocument(bool imageReplaceRenamesDocument)
184 {
185  m_imageReplaceRenamesDocument = imageReplaceRenamesDocument;
186 }
187 
189 {
190  m_importCropping = importCropping;
191 }
192 
193 void MainWindowModel::setLocale (QLocale::Language language,
194  QLocale::Country country)
195 {
196  QLocale locale (language,
197  country);
198  locale.setNumberOptions(HIDE_GROUP_SEPARATOR);
199 
200  m_locale = locale;
201 }
202 
203 void MainWindowModel::setLocale (const QLocale &locale)
204 {
205  m_locale = locale;
206  m_locale.setNumberOptions(HIDE_GROUP_SEPARATOR);
207 }
208 
210 {
211  m_mainTitleBarFormat = mainTitleBarFormat;
212 }
213 
214 void MainWindowModel::setMaximumGridLines(int maximumGridLines)
215 {
216  m_maximumGridLines = maximumGridLines;
217 }
218 
219 void MainWindowModel::setPdfResolution(int resolution)
220 {
221  m_pdfResolution = resolution;
222 }
223 
224 void MainWindowModel::setSignificantDigits (int significantDigits)
225 {
226  m_significantDigits = significantDigits;
227 }
228 
229 void MainWindowModel::setSmallDialogs(bool smallDialogs)
230 {
231  m_smallDialogs = smallDialogs;
232 }
233 
235 {
236  m_zoomControl = zoomControl;
237 }
238 
240 {
241  m_zoomFactorInitial = zoomFactorInitial;
242 }
243 
245 {
246  return m_significantDigits;
247 }
248 
249 bool MainWindowModel::smallDialogs () const
250 {
251  return m_smallDialogs;
252 }
253 
255 {
256  return m_zoomControl;
257 }
258 
260 {
261  return m_zoomFactorInitial;
262 }
Xml.h
MainWindowModel::setZoomFactorInitial
void setZoomFactorInitial(ZoomFactorInitial zoomFactorInitial)
Set method for initial zoom factor.
Definition: MainWindowModel.cpp:238
DEFAULT_ZOOM_FACTOR_INITIAL
const ZoomFactorInitial DEFAULT_ZOOM_FACTOR_INITIAL
Definition: ZoomFactorInitial.h:24
HIDE_GROUP_SEPARATOR
const QLocale::NumberOption HIDE_GROUP_SEPARATOR
Definition: MainWindowModel.cpp:23
MainWindowModel::setSignificantDigits
void setSignificantDigits(int significantDigits)
Set method for significant digits.
Definition: MainWindowModel.cpp:223
MainWindowModel::setPdfResolution
void setPdfResolution(int resolution)
Set method for resolution of imported PDF files, in dots per inch.
Definition: MainWindowModel.cpp:218
MainWindowModel.h
DEFAULT_MAXIMUM_GRID_LINES
const int DEFAULT_MAXIMUM_GRID_LINES
Default for maximum number of grid lines.
Definition: GridLineLimiter.cpp:16
MainWindowModel::highlightOpacity
double highlightOpacity() const
Get method for highlight opacity.
Definition: MainWindowModel.cpp:85
MainWindowModel::setHighlightOpacity
void setHighlightOpacity(double highlightOpacity)
Set method for highlight opacity.
Definition: MainWindowModel.cpp:177
MainWindowModel::significantDigits
int significantDigits() const
Get method for significant digits.
Definition: MainWindowModel.cpp:243
CmdMediator.h
MainWindowModel::setZoomControl
void setZoomControl(ZoomControl zoomControl)
Set method for zoom control.
Definition: MainWindowModel.cpp:233
PdfResolution.h
MainWindowModel::setDragDropExport
void setDragDropExport(bool dragDropExport)
Set method for drag and drop export.
Definition: MainWindowModel.cpp:172
ZoomFactorInitial
ZoomFactorInitial
Definition: ZoomFactorInitial.h:9
DEFAULT_DRAG_DROP_EXPORT
bool DEFAULT_DRAG_DROP_EXPORT
Definition: MainWindowModel.cpp:25
MainWindowModel::setLocale
void setLocale(QLocale::Language language, QLocale::Country country)
Set method for locale given attributes.
Definition: MainWindowModel.cpp:192
DocumentSerialize.h
ImportCroppingUtilBase.h
DEFAULT_IMAGE_REPLACE_RENAMES_DOCUMENT
bool DEFAULT_IMAGE_REPLACE_RENAMES_DOCUMENT
Definition: MainWindowModel.cpp:28
MainWindowModel::MainWindowModel
MainWindowModel()
Default constructor.
Definition: MainWindowModel.cpp:30
MainWindowModel::mainTitleBarFormat
MainTitleBarFormat mainTitleBarFormat() const
Get method for MainWindow titlebar filename format.
Definition: MainWindowModel.cpp:126
ZOOM_CONTROL_MENU_WHEEL_PLUSMINUS
Definition: ZoomControl.h:16
MainWindowModel::setSmallDialogs
void setSmallDialogs(bool smallDialogs)
Set method for small dialogs flag.
Definition: MainWindowModel.cpp:228
MainWindowModel
Model for DlgSettingsMainWindow.
Definition: MainWindowModel.h:29
MainWindowModel::setMainTitleBarFormat
void setMainTitleBarFormat(MainTitleBarFormat mainTitleBarFormat)
Set method for MainWindow titlebar filename format.
Definition: MainWindowModel.cpp:208
MainWindowModel::operator=
MainWindowModel & operator=(const MainWindowModel &other)
Assignment constructor.
Definition: MainWindowModel.cpp:62
MAIN_TITLE_BAR_FORMAT_NO_PATH
Definition: MainTitleBarFormat.h:14
MainWindowModel::setImportCropping
void setImportCropping(ImportCropping importCropping)
Set method for import cropping.
Definition: MainWindowModel.cpp:187
MainWindowModel::importCropping
ImportCropping importCropping() const
Get method for import cropping.
Definition: MainWindowModel.cpp:95
ImportCroppingUtilBase::importCroppingToString
static QString importCroppingToString(ImportCropping importCropping)
Option as string for display to user.
Definition: ImportCroppingUtilBase.cpp:18
Logger.h
DEFAULT_IMPORT_CROPPING
const ImportCropping DEFAULT_IMPORT_CROPPING
Definition: ImportCropping.cpp:14
MainWindowModel::smallDialogs
bool smallDialogs() const
Get method for small dialogs flag.
Definition: MainWindowModel.cpp:248
DEFAULT_IMPORT_PDF_RESOLUTION
int DEFAULT_IMPORT_PDF_RESOLUTION
Definition: PdfResolution.cpp:8
DEFAULT_HIGHLIGHT_OPACITY
const double DEFAULT_HIGHLIGHT_OPACITY
Definition: GraphicsPoint.cpp:27
LOG4CPP_INFO_S
#define LOG4CPP_INFO_S(logger)
Definition: convenience.h:18
MainWindowModel::setMaximumGridLines
void setMaximumGridLines(int maximumGridLines)
Set method for maximum number of grid lines.
Definition: MainWindowModel.cpp:213
MainWindowModel::loadXml
virtual void loadXml(QXmlStreamReader &reader)
Load model from serialized xml.
Definition: MainWindowModel.cpp:100
GraphicsPoint.h
MAIN_TITLE_BAR_FORMAT_PATH
Filename without path.
Definition: MainTitleBarFormat.h:15
MainWindowModel::imageReplaceRenamesDocument
bool imageReplaceRenamesDocument() const
Get method for image replaces renames document.
Definition: MainWindowModel.cpp:90
MainWindowModel::saveXml
virtual void saveXml(QXmlStreamWriter &writer) const
Save entire model as xml into stream.
Definition: MainWindowModel.cpp:164
MainWindowModel::locale
QLocale locale() const
Get method for locale.
Definition: MainWindowModel.cpp:121
MainWindowModel::maximumGridLines
int maximumGridLines() const
Maximum number of grid lines.
Definition: MainWindowModel.cpp:131
DEFAULT_SIGNIFICANT_DIGITS
int DEFAULT_SIGNIFICANT_DIGITS
Definition: MainWindowModel.cpp:26
MainTitleBarFormat
MainTitleBarFormat
Format format in MainWindow title bar.
Definition: MainTitleBarFormat.h:10
ZoomFactorInitial.h
MainWindowModel::setImageReplaceRenamesDocument
void setImageReplaceRenamesDocument(bool imageReplaceRenamesDocument)
Set method for image replace renames document.
Definition: MainWindowModel.cpp:182
ImportCropping
ImportCropping
Definition: ImportCropping.h:9
mainCat
log4cpp::Category * mainCat
Definition: Logger.cpp:14
DEFAULT_SMALL_DIALOGS
bool DEFAULT_SMALL_DIALOGS
Definition: MainWindowModel.cpp:27
MainWindowModel::dragDropExport
bool dragDropExport() const
Get method for drag and drop export.
Definition: MainWindowModel.cpp:80
MainWindowModel::zoomFactorInitial
ZoomFactorInitial zoomFactorInitial() const
Get method for initial zoom factor.
Definition: MainWindowModel.cpp:258
ZoomControl
ZoomControl
Definition: ZoomControl.h:9
INDENTATION_DELTA
const QString INDENTATION_DELTA
MainWindowModel::printStream
void printStream(QString indentation, QTextStream &str) const
Debugging method that supports print method of this class and printStream method of some other class(...
Definition: MainWindowModel.cpp:141
QtToString.h
MainWindowModel::pdfResolution
int pdfResolution() const
Get method for resolution of imported PDF files, in dots per inch.
Definition: MainWindowModel.cpp:136
loadNextFromReader
QXmlStreamReader::TokenType loadNextFromReader(QXmlStreamReader &reader)
Load next token from xml reader.
Definition: Xml.cpp:14
DOCUMENT_SERIALIZE_MAIN_WINDOW
const QString DOCUMENT_SERIALIZE_MAIN_WINDOW
GridLineLimiter.h
MainWindowModel::zoomControl
ZoomControl zoomControl() const
Get method for zoom control.
Definition: MainWindowModel.cpp:253