Engauge Digitizer  2
 All Classes Functions Variables Enumerations Friends Pages
DlgSettingsMainWindow.cpp
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 "DlgSettingsMainWindow.h"
8 #include "EngaugeAssert.h"
9 #include "ImportCropping.h"
10 #include "ImportCroppingUtilBase.h"
11 #include "Logger.h"
12 #include "MainWindow.h"
13 #include "MainWindowModel.h"
14 #include <QCheckBox>
15 #include <QComboBox>
16 #include <QDoubleSpinBox>
17 #include <QGraphicsScene>
18 #include <QGridLayout>
19 #include <QGroupBox>
20 #include <QLabel>
21 #include <qmath.h>
22 #include <QPushButton>
23 #include <QSpinBox>
24 #include "QtToString.h"
25 #include "ZoomControl.h"
26 #include "ZoomFactorInitial.h"
27 #include "ZoomLabels.h"
28 
29 const int MINIMUM_DIALOG_WIDTH_MAIN_WINDOW = 550;
30 
32  DlgSettingsAbstractBase (tr ("Main Window"),
33  "DlgSettingsMainWindow",
34  mainWindow),
35  m_modelMainWindowBefore (0),
36  m_modelMainWindowAfter (0)
37 {
38  LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsMainWindow::DlgSettingsMainWindow";
39 
40  QWidget *subPanel = createSubPanel ();
41  finishPanel (subPanel,
42  MINIMUM_DIALOG_WIDTH_MAIN_WINDOW);
43 }
44 
45 DlgSettingsMainWindow::~DlgSettingsMainWindow()
46 {
47  LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsMainWindow::~DlgSettingsMainWindow";
48 }
49 
50 void DlgSettingsMainWindow::createControls (QGridLayout *layout,
51  int &row)
52 {
53  LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsMainWindow::createControls";
54 
55  const int COLUMN0 = 0;
56 
57  QLabel *labelZoomFactor = new QLabel (tr ("Initial zoom:"));
58  layout->addWidget (labelZoomFactor, row, 1);
59 
60  m_cmbZoomFactor = new QComboBox;
61  m_cmbZoomFactor->addItem (LABEL_ZOOM_16_TO_1 , QVariant (ZOOM_INITIAL_16_TO_1));
62  m_cmbZoomFactor->addItem (LABEL_ZOOM_8_TO_1 , QVariant (ZOOM_INITIAL_8_TO_1));
63  m_cmbZoomFactor->addItem (LABEL_ZOOM_4_TO_1 , QVariant (ZOOM_INITIAL_4_TO_1));
64  m_cmbZoomFactor->addItem (LABEL_ZOOM_2_TO_1 , QVariant (ZOOM_INITIAL_2_TO_1));
65  m_cmbZoomFactor->addItem (LABEL_ZOOM_1_TO_1 , QVariant (ZOOM_INITIAL_1_TO_1));
66  m_cmbZoomFactor->addItem (LABEL_ZOOM_1_TO_2 , QVariant (ZOOM_INITIAL_1_TO_2));
67  m_cmbZoomFactor->addItem (LABEL_ZOOM_1_TO_4 , QVariant (ZOOM_INITIAL_1_TO_4));
68  m_cmbZoomFactor->addItem (LABEL_ZOOM_1_TO_8 , QVariant (ZOOM_INITIAL_1_TO_8));
69  m_cmbZoomFactor->addItem (LABEL_ZOOM_1_TO_16 , QVariant (ZOOM_INITIAL_1_TO_16));
70  m_cmbZoomFactor->addItem (LABEL_ZOOM_FILL , QVariant (ZOOM_INITIAL_FILL));
71  m_cmbZoomFactor->addItem (LABEL_ZOOM_PREVIOUS , QVariant (ZOOM_INITIAL_PREVIOUS));
72  m_cmbZoomFactor->setWhatsThis(tr ("Initial Zoom\n\n"
73  "Select the initial zoom factor when a new document is loaded. Either the previous "
74  "zoom can be kept, or the specified zoom can be applied."));
75  connect (m_cmbZoomFactor, SIGNAL (currentTextChanged (const QString)), this, SLOT (slotZoomFactor(const QString)));
76  layout->addWidget (m_cmbZoomFactor, row++, 2);
77 
78  QLabel *labelZoomControl = new QLabel (tr ("Zoom control:"));
79  layout->addWidget (labelZoomControl, row, 1);
80 
81  m_cmbZoomControl = new QComboBox;
82  m_cmbZoomControl->addItem (tr ("Menu only" ), QVariant (ZOOM_CONTROL_MENU_ONLY));
83  m_cmbZoomControl->addItem (tr ("Menu and mouse wheel" ), QVariant (ZOOM_CONTROL_MENU_WHEEL));
84  m_cmbZoomControl->addItem (tr ("Menu and +/- keys" ), QVariant (ZOOM_CONTROL_MENU_PLUSMINUS));
85  m_cmbZoomControl->addItem (tr ("Menu, mouse wheel and +/- keys"), QVariant (ZOOM_CONTROL_MENU_WHEEL_PLUSMINUS));
86  m_cmbZoomControl->setWhatsThis (tr ("Zoom Control\n\n"
87  "Select which inputs are used to zoom in and out."));
88  connect (m_cmbZoomControl, SIGNAL (currentTextChanged (const QString)), this, SLOT (slotZoomControl(const QString)));
89  layout->addWidget (m_cmbZoomControl, row++, 2);
90 
91  QLabel *labelLocale = new QLabel (tr ("Locale:"));
92  layout->addWidget (labelLocale, row, 1);
93 
94  // Initialization of combobox is liberated from Qt Calendar example
95  m_cmbLocale = new QComboBox;
96  m_cmbLocale->setWhatsThis(tr ("Locale\n\n"
97  "Select the locale that will be used in numbers (immediately), and the language in the user "
98  "interface (after restart).\n\n"
99  "The locale determines how numbers are formatted. Specifically, either commas or "
100  "periods will be used as group delimiters in each number entered "
101  "by the user, displayed in the user interface, or exported to a file."));
102  for (int indexLang = QLocale::C; indexLang <= QLocale::LastLanguage; indexLang++) {
103  QLocale::Language lang = static_cast<QLocale::Language> (indexLang);
104  QList<QLocale::Country> countries = QLocale::countriesForLanguage(lang);
105  for (int indexCountry = 0; indexCountry < countries.count(); indexCountry++) {
106  QLocale::Country country = countries.at(indexCountry);
107  QLocale locale (lang, country);
108  QString label = QLocaleToString (locale);
109  m_cmbLocale->addItem (label, locale);
110  }
111  }
112  m_cmbLocale->model()->sort(COLUMN0); // Sort the new entries
113  connect (m_cmbLocale, SIGNAL (currentIndexChanged (int)), this, SLOT (slotLocale (int)));
114  layout->addWidget (m_cmbLocale, row++, 2);
115 
116  QLabel *labelImportCropping = new QLabel (tr ("Import cropping:"));
117  layout->addWidget (labelImportCropping, row, 1);
118 
119  m_cmbImportCropping = new QComboBox;
120  m_cmbImportCropping->setWhatsThis (tr ("Import Cropping\n\n"
121  "Enables or disables cropping of the imported image when importing. Cropping the image is useful "
122  "for removing unimportant information around a graph, but less useful when the graph already fills "
123  "the entire image."));
124  ImportCroppingUtilBase importCroppingUtil;
125  m_cmbImportCropping->addItem (importCroppingUtil.importCroppingToString (IMPORT_CROPPING_NEVER), IMPORT_CROPPING_NEVER);
126  m_cmbImportCropping->addItem (importCroppingUtil.importCroppingToString (IMPORT_CROPPING_MULTIPAGE_PDFS), IMPORT_CROPPING_MULTIPAGE_PDFS);
127  m_cmbImportCropping->addItem (importCroppingUtil.importCroppingToString (IMPORT_CROPPING_ALWAYS), IMPORT_CROPPING_ALWAYS);
128  connect (m_cmbImportCropping, SIGNAL (currentIndexChanged (int)), this, SLOT (slotImportCropping (int)));
129  layout->addWidget (m_cmbImportCropping, row++, 2);
130 
131 #ifdef ENGAUGE_PDF
132  QLabel *labelPdfResolution = new QLabel (tr ("Import PDF resolution (dots per inch):"));
133  layout->addWidget (labelPdfResolution, row, 1);
134 
135  m_cmbPdfResolution = new QComboBox;
136  m_cmbPdfResolution->setWhatsThis (tr ("Import PDF Resolution\n\n"
137  "Imported Portable Document Format (PDF) files will be converted to this pixel resolution "
138  "in dots per inch (DPI), where each pixel is one dot. A higher value increases the picture resolution "
139  "and may also improve numeric digitizing accuracy. However, a very high value can make the image so "
140  "large that Engauge will slow down."));
141  m_cmbPdfResolution->addItem ("75", 75);
142  m_cmbPdfResolution->addItem ("100", 100);
143  m_cmbPdfResolution->addItem ("150", 150);
144  m_cmbPdfResolution->addItem ("200", 200);
145  m_cmbPdfResolution->addItem ("250", 250);
146  m_cmbPdfResolution->addItem ("300", 300);
147  connect (m_cmbPdfResolution, SIGNAL (currentTextChanged (QString)), this, SLOT (slotPdfResolution (QString)));
148  layout->addWidget (m_cmbPdfResolution, row++, 2);
149 #endif
150 
151  QLabel *labelMaximumGridLines = new QLabel (tr ("Maximum grid lines:"));
152  layout->addWidget (labelMaximumGridLines, row, 1);
153 
154  m_spinMaximumGridLines = new QSpinBox;
155  m_spinMaximumGridLines->setMinimum (2);
156  m_spinMaximumGridLines->setWhatsThis (tr ("Maximum Grid Lines\n\n"
157  "Maximum number of grid lines to be processed. This limit is applied when the step value is too "
158  "small for the start and stop values, which would result in too many grid lines visually and "
159  "possibly extremely long processing time (since each grid line would have to be processed)"));
160  connect (m_spinMaximumGridLines, SIGNAL (valueChanged (int)), this, (SLOT (slotMaximumGridLines (int))));
161  layout->addWidget (m_spinMaximumGridLines, row++, 2);
162 
163  QLabel *labelHighlightOpacity = new QLabel (tr ("Highlight opacity:"));
164  layout->addWidget (labelHighlightOpacity, row, 1);
165 
166  m_spinHighlightOpacity = new QDoubleSpinBox;
167  m_spinHighlightOpacity->setRange (0, 1);
168  m_spinHighlightOpacity->setSingleStep (0.1);
169  m_spinHighlightOpacity->setWhatsThis (tr ("Highlight Opacity\n\n"
170  "Opacity to be applied when the cursor is over a curve or axis point in Select mode. The change in "
171  "appearance shows when the point can be selected."));
172  connect (m_spinHighlightOpacity, SIGNAL (valueChanged (double)), this, SLOT (slotHighlightOpacity(double)));
173  layout->addWidget (m_spinHighlightOpacity, row++, 2);
174 
175  QLabel *labelRecent = new QLabel (tr ("Recent file list:"));
176  layout->addWidget (labelRecent, row, 1);
177 
178  m_btnRecentClear = new QPushButton (tr ("Clear"));
179  m_btnRecentClear->setSizePolicy (QSizePolicy::Fixed, QSizePolicy::Fixed);
180  m_btnRecentClear->setWhatsThis (tr ("Recent File List Clear\n\n"
181  "Clear the recent file list in the File menu."));
182  connect (m_btnRecentClear, SIGNAL (pressed ()), &mainWindow(), SLOT (slotRecentFileClear ()));
183  connect (m_btnRecentClear, SIGNAL (pressed ()), this, SLOT (slotRecentFileClear()));
184  layout->addWidget (m_btnRecentClear, row++, 2);
185 
186  QLabel *labelTitleBarFormat = new QLabel (tr ("Include title bar path:"));
187  layout->addWidget (labelTitleBarFormat, row, 1);
188 
189  m_chkTitleBarFormat = new QCheckBox;
190  m_chkTitleBarFormat->setSizePolicy (QSizePolicy::Fixed, QSizePolicy::Fixed);
191  m_chkTitleBarFormat->setWhatsThis (tr ("Title Bar Filename\n\n"
192  "Includes or excludes the path and file extension from the filename in the title bar."));
193  connect (m_chkTitleBarFormat, SIGNAL (toggled (bool)), this, SLOT (slotTitleBarFormat(bool)));
194  layout->addWidget (m_chkTitleBarFormat, row++, 2);
195 
196  QLabel *labelSmallDialogs = new QLabel (tr ("Allow small dialogs:"));
197  layout->addWidget (labelSmallDialogs, row, 1);
198 
199  m_chkSmallDialogs = new QCheckBox;
200  m_chkSmallDialogs->setSizePolicy (QSizePolicy::Fixed, QSizePolicy::Fixed);
201  m_chkSmallDialogs->setWhatsThis (tr ("Allow Small Dialogs\n\n"
202  "Allows settings dialogs to be made very small so they fit on small computer screens."));
203  connect (m_chkSmallDialogs, SIGNAL (toggled (bool)), this, SLOT (slotSmallDialogs (bool)));
204  layout->addWidget (m_chkSmallDialogs, row++, 2);
205 
206  QLabel *labelDragDropExport = new QLabel (tr ("Allow drag and drop export:"));
207  layout->addWidget (labelDragDropExport, row, 1);
208 
209  m_chkDragDropExport = new QCheckBox;
210  m_chkDragDropExport->setSizePolicy (QSizePolicy::Fixed, QSizePolicy::Fixed);
211  m_chkDragDropExport->setWhatsThis (tr ("Allow Drag and Drop Export\n\n"
212  "Allows drag and drop export from the Curve Fitting Window and Geometry Window tables.\n\n"
213  "When drag and drop is disabled, a rectangular set of table cells can be selected using click and "
214  "drag. When drag and drop is enabled, a rectangular set of table cells can be selected using Click "
215  "then Shift+Click, since click and drag starts the drag operation."));
216  connect (m_chkDragDropExport, SIGNAL (toggled (bool)), this, SLOT (slotDragDropExport (bool)));
217  layout->addWidget (m_chkDragDropExport, row++, 2);
218 }
219 
220 void DlgSettingsMainWindow::createOptionalSaveDefault (QHBoxLayout * /* layout */)
221 {
222  LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsMainWindow::createOptionalSaveDefault";
223 }
224 
226 {
227  LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsMainWindow::createSubPanel";
228 
229  QWidget *subPanel = new QWidget ();
230  QGridLayout *layout = new QGridLayout (subPanel);
231  subPanel->setLayout (layout);
232 
233  layout->setColumnStretch(0, 1); // Empty first column
234  layout->setColumnStretch(1, 0); // Labels
235  layout->setColumnStretch(2, 0); // Values
236  layout->setColumnStretch(3, 1); // Empty first column
237 
238  int row = 0;
239  createControls (layout, row);
240 
241  return subPanel;
242 }
243 
245 {
246  LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsMainWindow::handleOk";
247 
248  mainWindow().updateSettingsMainWindow (*m_modelMainWindowAfter);
249 
250  hide ();
251 }
252 void DlgSettingsMainWindow::load (CmdMediator & /* cmdMediator */)
253 {
254  LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsMainWindow::load";
255 
256  ENGAUGE_ASSERT (false);
257 }
258 
260  const MainWindowModel &modelMainWindow)
261 {
262  LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsMainWindow::loadMainWindowModel";
263 
264  setCmdMediator (cmdMediator);
265 
266  // Flush old data
267  if (m_modelMainWindowBefore != 0) {
268  delete m_modelMainWindowBefore;
269  }
270  if (m_modelMainWindowAfter != 0) {
271  delete m_modelMainWindowAfter;
272  }
273 
274  // Save new data
275  m_modelMainWindowBefore = new MainWindowModel (modelMainWindow);
276  m_modelMainWindowAfter = new MainWindowModel (modelMainWindow);
277 
278  // Populate controls
279  int index = m_cmbZoomFactor->findData (m_modelMainWindowAfter->zoomFactorInitial());
280  m_cmbZoomFactor->setCurrentIndex (index);
281  index = m_cmbZoomControl->findData (m_modelMainWindowAfter->zoomControl());
282  m_cmbZoomControl->setCurrentIndex (index);
283  QString locLabel = QLocaleToString (m_modelMainWindowAfter->locale());
284  index = m_cmbLocale->findText (locLabel);
285  m_cmbLocale->setCurrentIndex(index);
286  index = m_cmbImportCropping->findData (m_modelMainWindowAfter->importCropping());
287  m_cmbImportCropping->setCurrentIndex (index);
288  m_chkTitleBarFormat->setChecked (m_modelMainWindowAfter->mainTitleBarFormat() == MAIN_TITLE_BAR_FORMAT_PATH);
289 #ifdef ENGAUGE_PDF
290  index = m_cmbPdfResolution->findData (m_modelMainWindowAfter->pdfResolution());
291  m_cmbPdfResolution->setCurrentIndex(index);
292 #endif
293  m_spinMaximumGridLines->setValue (m_modelMainWindowAfter->maximumGridLines());
294  m_spinHighlightOpacity->setValue (m_modelMainWindowAfter->highlightOpacity());
295  m_chkSmallDialogs->setChecked (m_modelMainWindowAfter->smallDialogs());
296  m_chkDragDropExport->setChecked (m_modelMainWindowAfter->dragDropExport());
297 
298  updateControls ();
299  enableOk (false); // Disable Ok button since there not yet any changes
300 }
301 
302 void DlgSettingsMainWindow::setSmallDialogs(bool /* smallDialogs */)
303 {
304 }
305 
306 void DlgSettingsMainWindow::slotDragDropExport (bool)
307 {
308  LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsMainWindow::slotDragDropExport";
309 
310  m_modelMainWindowAfter->setDragDropExport (m_chkDragDropExport->isChecked());
311  updateControls ();
312 }
313 
314 void DlgSettingsMainWindow::slotHighlightOpacity(double)
315 {
316  LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsMainWindow::slotHighlightOpacity";
317 
318  m_modelMainWindowAfter->setHighlightOpacity (m_spinHighlightOpacity->value());
319  updateControls();
320 }
321 
322 void DlgSettingsMainWindow::slotImportCropping (int index)
323 {
324  LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsMainWindow::slotImportCropping";
325 
326  m_modelMainWindowAfter->setImportCropping ((ImportCropping) m_cmbImportCropping->itemData (index).toInt ());
327  updateControls();
328 }
329 
330 void DlgSettingsMainWindow::slotLocale (int index)
331 {
332  LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsMainWindow::slotLocale";
333 
334  m_modelMainWindowAfter->setLocale (m_cmbLocale->itemData (index).toLocale());
335  updateControls();
336 }
337 
338 void DlgSettingsMainWindow::slotMaximumGridLines (int limit)
339 {
340  LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsMainWIndow::slotMaximumGridLines";
341 
342  m_modelMainWindowAfter->setMaximumGridLines (limit);
343  updateControls ();
344 }
345 
346 void DlgSettingsMainWindow::slotPdfResolution(const QString)
347 {
348  LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsMainWIndow::slotPdfResolution";
349 
350 #ifdef ENGAUGE_PDF
351  m_modelMainWindowAfter->setPdfResolution(m_cmbPdfResolution->currentData().toInt());
352  updateControls();
353 #endif
354 }
355 
356 void DlgSettingsMainWindow::slotRecentFileClear()
357 {
358  LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsMainWindow::slotRecentFileClear";
359 
360  // The signal that triggered the call to this method was also sent to MainWindow to clear the list there
361  updateControls();
362 }
363 
364 void DlgSettingsMainWindow::slotSmallDialogs (bool)
365 {
366  LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsMainWindow::slotSmallDialogs";
367 
368  m_modelMainWindowAfter->setSmallDialogs (m_chkSmallDialogs->isChecked());
369  updateControls ();
370 }
371 
372 void DlgSettingsMainWindow::slotTitleBarFormat(bool)
373 {
374  LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsMainWindow::slotTitleBarFormat";
375 
376  m_modelMainWindowAfter->setMainTitleBarFormat(m_chkTitleBarFormat->isChecked() ?
377  MAIN_TITLE_BAR_FORMAT_PATH :
378  MAIN_TITLE_BAR_FORMAT_NO_PATH);
379  updateControls();
380 }
381 
382 void DlgSettingsMainWindow::slotZoomControl(const QString)
383 {
384  LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsMainWindow::slotZoomControl";
385 
386  m_modelMainWindowAfter->setZoomControl ((ZoomControl) m_cmbZoomControl->currentData().toInt());
387  updateControls();
388 }
389 
390 void DlgSettingsMainWindow::slotZoomFactor(const QString)
391 {
392  LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsMainWIndow::slotZoomFactor";
393 
394  m_modelMainWindowAfter->setZoomFactorInitial((ZoomFactorInitial) m_cmbZoomFactor->currentData().toInt());
395  updateControls();
396 }
397 
398 void DlgSettingsMainWindow::updateControls ()
399 {
400  enableOk (true);
401 }
static QString importCroppingToString(ImportCropping importCropping)
Option as string for display to user.
virtual void createOptionalSaveDefault(QHBoxLayout *layout)
Let subclass define an optional Save As Default button.
void updateSettingsMainWindow(const MainWindowModel &modelMainWindow)
Update with new main window properties.
void setDragDropExport(bool dragDropExport)
Set method for drag and drop export.
virtual void handleOk()
Process slotOk.
MainTitleBarFormat mainTitleBarFormat() const
Get method for MainWindow titlebar filename format.
void setCmdMediator(CmdMediator &cmdMediator)
Store CmdMediator for easy access by the leaf class.
void setHighlightOpacity(double highlightOpacity)
Set method for highlight opacity.
void finishPanel(QWidget *subPanel, int minimumWidth=MINIMUM_DIALOG_WIDTH, int minimumHeightOrZero=0)
Add Ok and Cancel buttons to subpanel to get the whole dialog.
void setLocale(QLocale::Language language, QLocale::Country country)
Set method for locale given attributes.
int maximumGridLines() const
Maximum number of grid lines.
bool dragDropExport() const
Get method for drag and drop export.
void loadMainWindowModel(CmdMediator &cmdMediator, const MainWindowModel &modelMainWindow)
Replaced load method since the main window settings are independent of document, unlike other DlgSett...
bool smallDialogs() const
Get method for small dialogs flag.
virtual void load(CmdMediator &cmdMediator)
Load settings from Document.
DlgSettingsMainWindow(MainWindow &mainWindow)
Single constructor.
ZoomControl zoomControl() const
Get method for zoom control.
Model for DlgSettingsMainWindow.
void setMaximumGridLines(int maximumGridLines)
Set method for maximum number of grid lines.
double highlightOpacity() const
Get method for highlight opacity.
virtual QWidget * createSubPanel()
Create dialog-specific panel to which base class will add Ok and Cancel buttons.
int pdfResolution() const
Get method for resolution of imported PDF files, in dots per inch.
Utility class for import cropping options.
virtual void setSmallDialogs(bool smallDialogs)
If false then dialogs have a minimum size so all controls are visible.
void enableOk(bool enable)
Let leaf subclass control the Ok button.
void setZoomControl(ZoomControl zoomControl)
Set method for zoom control.
void setMainTitleBarFormat(MainTitleBarFormat mainTitleBarFormat)
Set method for MainWindow titlebar filename format.
Command queue stack.
Definition: CmdMediator.h:23
void setZoomFactorInitial(ZoomFactorInitial zoomFactorInitial)
Set method for initial zoom factor.
Abstract base class for all Settings dialogs.
ZoomFactorInitial zoomFactorInitial() const
Get method for initial zoom factor.
void setSmallDialogs(bool smallDialogs)
Set method for small dialogs flag.
ImportCropping importCropping() const
Get method for import cropping.
QLocale locale() const
Get method for locale.
MainWindow & mainWindow()
Get method for MainWindow.
void setPdfResolution(int resolution)
Set method for resolution of imported PDF files, in dots per inch.
void setImportCropping(ImportCropping importCropping)
Set method for import cropping.
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
Definition: MainWindow.h:86