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