Engauge Digitizer  2
DlgSettingsAbstractBase.h
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 #ifndef DLG_SETTINGS_ABSTRACT_BASE_H
8 #define DLG_SETTINGS_ABSTRACT_BASE_H
9 
10 #include <QDialog>
11 #include <QObject>
12 
13 class CmdMediator;
14 class MainWindow;
15 class QComboBox;
16 class QHBoxLayout;
17 class QScrollArea;
18 
20 class DlgSettingsAbstractBase : public QDialog
21 {
22  Q_OBJECT;
23 
24 public:
26  DlgSettingsAbstractBase(const QString &title,
27  const QString &dialogName,
29  virtual ~DlgSettingsAbstractBase();
30 
31 protected:
34 
36  virtual void createOptionalSaveDefault (QHBoxLayout *layout) = 0;
37 
39  virtual QWidget *createSubPanel () = 0;
40 
49  void enableOk (bool enable);
50 
52  void finishPanel (QWidget *subPanel,
53  int minimumWidth = MINIMUM_DIALOG_WIDTH,
54  int minimumHeightOrZero = 0);
55 
57  virtual void handleOk () = 0;
58 
60  virtual void load (CmdMediator &cmdMediator) = 0;
61 
64 
67 
70 
72  const MainWindow &mainWindow () const;
73 
75  void populateColorComboWithoutTransparent (QComboBox &combo);
76 
78  void populateColorComboWithTransparent (QComboBox &combo);
79 
81  void setCmdMediator (CmdMediator &cmdMediator);
82 
84  void setDisableOkAtStartup(bool disableOkAtStartup);
85 
87  virtual void setSmallDialogs (bool smallDialogs) = 0;
88 
89 private slots:
90 
92  void slotCancel();
93 
95  void slotOk ();
96 
97 private:
99 
100  void saveGeometryToSettings ();
101 
103  virtual void showEvent (QShowEvent *event);
104 
105  QScrollArea *m_scroll;
106  MainWindow &m_mainWindow;
107  CmdMediator *m_cmdMediator; // Cannot be const since Document gets a command pushed if dialog is ok'ed
108  QPushButton *m_btnCancel;
109  QPushButton *m_btnOk;
110 
111  const QString m_dialogName;
112  bool m_disableOkAtStartup;
113 };
114 
115 #endif // DLG_SETTINGS_ABSTRACT_BASE_H
static int MINIMUM_DIALOG_WIDTH
Dialog layout constant that guarantees every widget has sufficient room. Can be increased by finishPa...
void setDisableOkAtStartup(bool disableOkAtStartup)
Override the default Ok button behavior applied in showEvent.
virtual void setSmallDialogs(bool smallDialogs)=0
If false then dialogs have a minimum size so all controls are visible.
void setCmdMediator(CmdMediator &cmdMediator)
Store CmdMediator for easy access by the leaf class.
virtual void createOptionalSaveDefault(QHBoxLayout *layout)=0
Let subclass define an optional Save As Default button.
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 populateColorComboWithoutTransparent(QComboBox &combo)
Add colors in color palette to combobox, without transparent entry at end.
virtual QWidget * createSubPanel()=0
Create dialog-specific panel to which base class will add Ok and Cancel buttons.
static int MINIMUM_PREVIEW_HEIGHT
Dialog layout constant that guarantees preview has sufficent room.
void enableOk(bool enable)
Let leaf subclass control the Ok button.
virtual void load(CmdMediator &cmdMediator)=0
Load settings from Document.
Command queue stack.
Definition: CmdMediator.h:23
virtual void handleOk()=0
Process slotOk.
void populateColorComboWithTransparent(QComboBox &combo)
Add colors in color palette to combobox, with transparent entry at end.
Abstract base class for all Settings dialogs.
MainWindow & mainWindow()
Get method for MainWindow.
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.