7 #include "DlgSettingsMainWindow.h"
8 #include "EngaugeAssert.h"
10 #include "MainWindow.h"
11 #include "MainWindowModel.h"
14 #include <QGraphicsScene>
15 #include <QGridLayout>
19 #include <QPushButton>
23 #include "ZoomControl.h"
24 #include "ZoomFactorInitial.h"
25 #include "ZoomLabels.h"
29 "DlgSettingsMainWindow",
31 m_modelMainWindowBefore (0),
32 m_modelMainWindowAfter (0)
34 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::DlgSettingsMainWindow";
40 DlgSettingsMainWindow::~DlgSettingsMainWindow()
42 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::~DlgSettingsMainWindow";
45 void DlgSettingsMainWindow::createControls (QGridLayout *layout,
48 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::createControls";
50 const int COLUMN0 = 0;
52 QLabel *labelZoomFactor =
new QLabel (tr (
"Initial zoom:"));
53 layout->addWidget (labelZoomFactor, row, 1);
55 m_cmbZoomFactor =
new QComboBox;
56 m_cmbZoomFactor->addItem (LABEL_ZOOM_16_TO_1 , QVariant (ZOOM_INITIAL_16_TO_1));
57 m_cmbZoomFactor->addItem (LABEL_ZOOM_8_TO_1 , QVariant (ZOOM_INITIAL_8_TO_1));
58 m_cmbZoomFactor->addItem (LABEL_ZOOM_4_TO_1 , QVariant (ZOOM_INITIAL_4_TO_1));
59 m_cmbZoomFactor->addItem (LABEL_ZOOM_2_TO_1 , QVariant (ZOOM_INITIAL_2_TO_1));
60 m_cmbZoomFactor->addItem (LABEL_ZOOM_1_TO_1 , QVariant (ZOOM_INITIAL_1_TO_1));
61 m_cmbZoomFactor->addItem (LABEL_ZOOM_1_TO_2 , QVariant (ZOOM_INITIAL_1_TO_2));
62 m_cmbZoomFactor->addItem (LABEL_ZOOM_1_TO_4 , QVariant (ZOOM_INITIAL_1_TO_4));
63 m_cmbZoomFactor->addItem (LABEL_ZOOM_1_TO_8 , QVariant (ZOOM_INITIAL_1_TO_8));
64 m_cmbZoomFactor->addItem (LABEL_ZOOM_1_TO_16 , QVariant (ZOOM_INITIAL_1_TO_16));
65 m_cmbZoomFactor->addItem (LABEL_ZOOM_FILL , QVariant (ZOOM_INITIAL_FILL));
66 m_cmbZoomFactor->addItem (LABEL_ZOOM_PREVIOUS , QVariant (ZOOM_INITIAL_PREVIOUS));
67 m_cmbZoomFactor->setWhatsThis(tr (
"Initial Zoom\n\n"
68 "Select the initial zoom factor when a new document is loaded. Either the previous "
69 "zoom can be kept, or the specified zoom can be applied."));
70 connect (m_cmbZoomFactor, SIGNAL (currentTextChanged (
const QString)),
this, SLOT (slotZoomFactor(
const QString)));
71 layout->addWidget (m_cmbZoomFactor, row++, 2);
73 QLabel *labelZoomControl =
new QLabel (tr (
"Zoom control:"));
74 layout->addWidget (labelZoomControl, row, 1);
76 m_cmbZoomControl =
new QComboBox;
77 m_cmbZoomControl->addItem (tr (
"Menu only" ), QVariant (ZOOM_CONTROL_MENU_ONLY));
78 m_cmbZoomControl->addItem (tr (
"Menu and mouse wheel" ), QVariant (ZOOM_CONTROL_MENU_WHEEL));
79 m_cmbZoomControl->addItem (tr (
"Menu and +/- keys" ), QVariant (ZOOM_CONTROL_MENU_PLUSMINUS));
80 m_cmbZoomControl->addItem (tr (
"Menu, mouse wheel and +/- keys"), QVariant (ZOOM_CONTROL_MENU_WHEEL_PLUSMINUS));
81 m_cmbZoomControl->setWhatsThis (tr (
"Zoom Control\n\n"
82 "Select which inputs are used to zoom in and out."));
83 connect (m_cmbZoomControl, SIGNAL (currentTextChanged (
const QString)),
this, SLOT (slotZoomControl(
const QString)));
84 layout->addWidget (m_cmbZoomControl, row++, 2);
86 QLabel *labelLocale =
new QLabel (tr (
"Locale:"));
87 layout->addWidget (labelLocale, row, 1);
90 m_cmbLocale =
new QComboBox;
91 m_cmbLocale->setWhatsThis(tr (
"Locale\n\n"
92 "Select the locale that will be used in numbers (immediately), and the language in the user "
93 "interface (after restart).\n\n"
94 "The locale determines how numbers are formatted. Specifically, either commas or "
95 "periods will be used as group delimiters in each number entered "
96 "by the user, displayed in the user interface, or exported to a file."));
97 for (
int indexLang = QLocale::C; indexLang <= QLocale::LastLanguage; indexLang++) {
98 QLocale::Language lang =
static_cast<QLocale::Language
> (indexLang);
99 QList<QLocale::Country> countries = QLocale::countriesForLanguage(lang);
100 for (
int indexCountry = 0; indexCountry < countries.count(); indexCountry++) {
101 QLocale::Country country = countries.at(indexCountry);
102 QString label = localeLabel (lang,
104 QLocale locale (lang, country);
105 m_cmbLocale->addItem (label, locale);
108 m_cmbLocale->model()->sort(COLUMN0);
109 connect (m_cmbLocale, SIGNAL (currentIndexChanged (
int)),
this, SLOT (slotLocale (
int)));
110 layout->addWidget (m_cmbLocale, row++, 2);
112 QLabel *labelRecent =
new QLabel (tr (
"Recent file list:"));
113 layout->addWidget (labelRecent, row, 1);
115 m_btnRecentClear =
new QPushButton (tr (
"Clear"));
116 m_btnRecentClear->setSizePolicy (QSizePolicy::Fixed, QSizePolicy::Fixed);
117 m_btnRecentClear->setWhatsThis (tr (
"Recent File List Clear\n\n"
118 "Clear the recent file list in the File menu."));
119 connect (m_btnRecentClear, SIGNAL (pressed ()), &
mainWindow(), SLOT (slotRecentFileClear ()));
120 connect (m_btnRecentClear, SIGNAL (pressed ()),
this, SLOT (slotRecentFileClear()));
121 layout->addWidget (m_btnRecentClear, row++, 2);
123 QLabel *labelTitleBarFormat =
new QLabel (tr (
"Include title bar path:"));
124 layout->addWidget (labelTitleBarFormat, row, 1);
126 m_chkTitleBarFormat =
new QCheckBox;
127 m_chkTitleBarFormat->setSizePolicy (QSizePolicy::Fixed, QSizePolicy::Fixed);
128 m_chkTitleBarFormat->setWhatsThis (tr (
"Title Bar Filename\n\n"
129 "Includes or excludes the path and file extension from the filename in the title bar."));
130 connect (m_chkTitleBarFormat, SIGNAL (toggled (
bool)),
this, SLOT (slotTitleBarFormat(
bool)));
131 layout->addWidget (m_chkTitleBarFormat, row++, 2);
136 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::createOptionalSaveDefault";
141 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::createSubPanel";
143 QWidget *subPanel =
new QWidget ();
144 QGridLayout *layout =
new QGridLayout (subPanel);
145 subPanel->setLayout (layout);
147 layout->setColumnStretch(0, 1);
148 layout->setColumnStretch(1, 0);
149 layout->setColumnStretch(2, 0);
150 layout->setColumnStretch(3, 1);
153 createControls (layout, row);
160 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::handleOk";
168 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::load";
170 ENGAUGE_ASSERT (
false);
176 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::loadMainWindowModel";
181 if (m_modelMainWindowBefore != 0) {
182 delete m_modelMainWindowBefore;
184 if (m_modelMainWindowAfter != 0) {
185 delete m_modelMainWindowAfter;
193 int index = m_cmbZoomFactor->findData (m_modelMainWindowAfter->
zoomFactorInitial());
194 m_cmbZoomFactor->setCurrentIndex (index);
195 index = m_cmbZoomControl->findData (m_modelMainWindowAfter->
zoomControl());
196 m_cmbZoomControl->setCurrentIndex (index);
197 QString locLabel = localeLabel (m_modelMainWindowAfter->
locale().language(),
198 m_modelMainWindowBefore->
locale().country());
199 index = m_cmbLocale->findText (locLabel);
200 m_cmbLocale->setCurrentIndex(index);
201 m_chkTitleBarFormat->setChecked (m_modelMainWindowAfter->
mainTitleBarFormat() == MAIN_TITLE_BAR_FORMAT_PATH);
207 QString DlgSettingsMainWindow::localeLabel (QLocale::Language lang,
208 QLocale::Country country)
const
210 return QString (
"%1/%2")
211 .arg (QLocale::languageToString (lang))
212 .arg (QLocale::countryToString(country));
215 void DlgSettingsMainWindow::slotLocale (
int index)
217 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::slotLocale";
219 m_modelMainWindowAfter->
setLocale (m_cmbLocale->itemData (index).toLocale());
223 void DlgSettingsMainWindow::slotRecentFileClear()
225 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::slotRecentFileClear";
231 void DlgSettingsMainWindow::slotTitleBarFormat(
bool)
233 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::slotTitleBarFormat";
236 MAIN_TITLE_BAR_FORMAT_PATH :
237 MAIN_TITLE_BAR_FORMAT_NO_PATH);
241 void DlgSettingsMainWindow::slotZoomControl(
const QString)
243 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWindow::slotZoomControl";
245 m_modelMainWindowAfter->
setZoomControl ((ZoomControl) m_cmbZoomControl->currentData().toInt());
249 void DlgSettingsMainWindow::slotZoomFactor(
const QString)
251 LOG4CPP_INFO_S ((*mainCat)) <<
"DlgSettingsMainWIndow::slotZoomFactor";
253 m_modelMainWindowAfter->
setZoomFactorInitial((ZoomFactorInitial) m_cmbZoomFactor->currentData().toInt());
257 void DlgSettingsMainWindow::updateControls ()
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.
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 setLocale(QLocale::Language language, QLocale::Country country)
Set method for locale given attributes.
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.
Model for DlgSettingsMainWindow.
virtual QWidget * createSubPanel()
Create dialog-specific panel to which base class will add Ok and Cancel buttons.
void finishPanel(QWidget *subPanel)
Add Ok and Cancel buttons to subpanel to get the whole dialog.
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.
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.
QLocale locale() const
Get method for locale.
MainWindow & mainWindow()
Get method for MainWindow.
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...