mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-23 21:23:53 +00:00
700d55f1fb
Implemented updating editor application from preferences menu, loading settings when editor loads, adding Record Status Display prefernce. Fixed multiple bugs, made changes to CSM(V)Settings classes to make implementing new prefrences easier. Rewrote CSMSettings::UserSettings to retain last-loaded settings. Adjusted icon position in Record Status column Capitalized status text Added delegate to referenceables table
159 lines
5.7 KiB
C++
159 lines
5.7 KiB
C++
#include "samplepage.hpp"
|
|
|
|
#include <QList>
|
|
#include <QListView>
|
|
#include <QGroupBox>
|
|
#include <QRadioButton>
|
|
#include <QDockWidget>
|
|
#include <QVBoxLayout>
|
|
#include <QGridLayout>
|
|
#include <QStyle>
|
|
|
|
#ifdef Q_OS_MAC
|
|
#include <QPlastiqueStyle>
|
|
#endif
|
|
|
|
#include "../../model/settings/usersettings.hpp"
|
|
#include "groupblock.hpp"
|
|
#include "toggleblock.hpp"
|
|
|
|
CSVSettings::SamplePage::SamplePage(QWidget *parent):
|
|
AbstractPage("Editor", parent)
|
|
{
|
|
// Hacks to get the stylesheet look properly
|
|
#ifdef Q_OS_MAC
|
|
QPlastiqueStyle *style = new QPlastiqueStyle;
|
|
//profilesComboBox->setStyle(style);
|
|
#endif
|
|
|
|
setupUi();
|
|
}
|
|
|
|
void CSVSettings::SamplePage::setupUi()
|
|
{
|
|
GroupBlockDef *undoStack = new GroupBlockDef(QString("Undo Stack Size"));
|
|
GroupBlockDef *topLevelWindowCount = new GroupBlockDef(QString("Maximum Top-Level Window Count"));
|
|
GroupBlockDef *reuseSubwindow = new GroupBlockDef(QString("Reuse Subwindows"));
|
|
GroupBlockDef *customWindowSize = new GroupBlockDef(QString ("Custom Window Size"));
|
|
GroupBlockDef *definedWindowSize = new GroupBlockDef(QString ("Pre-Defined Window Size"));
|
|
GroupBlockDef *windowSizeToggle = new GroupBlockDef(QString ("Window Size"));
|
|
CustomBlockDef *windowSize = new CustomBlockDef(QString ("Window Size"));
|
|
|
|
////////////////////////////
|
|
//undo stack size property
|
|
///////////////////////////
|
|
|
|
SettingsItemDef *undoStackItem = new SettingsItemDef (undoStack->title, "32");
|
|
undoStack->properties << undoStackItem;
|
|
undoStackItem->minMax.left = "0";
|
|
undoStackItem->minMax.right = "64";
|
|
|
|
WidgetDef stackWidget (Widget_SpinBox);
|
|
stackWidget.minMax = &(undoStackItem->minMax);
|
|
stackWidget.widgetWidth = 50;
|
|
|
|
undoStackItem->widget = stackWidget;
|
|
|
|
//////////////////////////////////////
|
|
//number of top level windows property
|
|
/////////////////////////////////////
|
|
|
|
SettingsItemDef *topLevelItem = new SettingsItemDef (topLevelWindowCount->title, "100");
|
|
topLevelWindowCount->properties << topLevelItem;
|
|
topLevelItem->minMax.left = "1";
|
|
topLevelItem->minMax.right = "256";
|
|
|
|
WidgetDef topLvlWinWidget (Widget_SpinBox);
|
|
topLvlWinWidget.minMax = &(topLevelItem->minMax);
|
|
topLvlWinWidget.widgetWidth = 50;
|
|
|
|
topLevelItem->widget = topLvlWinWidget;
|
|
|
|
///////////////////////////
|
|
//reuse subwindows property
|
|
////////////////////////////
|
|
|
|
SettingsItemDef *reuseSubItem = new SettingsItemDef (reuseSubwindow->title, "Reuse Subwindows");
|
|
*(reuseSubItem->valueList) << "None" << "Top-Level" << "Document-Level";
|
|
|
|
WidgetDef reuseSubWidget (Widget_RadioButton);
|
|
reuseSubWidget.valueList = (reuseSubItem->valueList);
|
|
reuseSubWidget.widgetAlignment = Align_Left;
|
|
|
|
reuseSubwindow->properties << reuseSubItem;
|
|
reuseSubItem->widget = reuseSubWidget;
|
|
|
|
///////////////////////////////
|
|
//custom window size properties
|
|
///////////////////////////////
|
|
|
|
//custom width
|
|
SettingsItemDef *widthItem = new SettingsItemDef ("Window Width", "640");
|
|
widthItem->widget = WidgetDef (Widget_LineEdit);
|
|
widthItem->widget.widgetWidth = 45;
|
|
|
|
//custom height
|
|
SettingsItemDef *heightItem = new SettingsItemDef ("Window Height", "480");
|
|
heightItem->widget = WidgetDef (Widget_LineEdit);
|
|
heightItem->widget.widgetWidth = 45;
|
|
heightItem->widget.caption = "x";
|
|
|
|
customWindowSize->properties << widthItem << heightItem;
|
|
customWindowSize->widgetOrientation = Orient_Horizontal;
|
|
customWindowSize->isVisible = false;
|
|
|
|
|
|
//pre-defined
|
|
SettingsItemDef *widthByHeightItem = new SettingsItemDef ("Window Size", "640x480");
|
|
WidgetDef widthByHeightWidget = WidgetDef (Widget_ComboBox);
|
|
widthByHeightWidget.widgetWidth = 90;
|
|
*(widthByHeightItem->valueList) << "640x480" << "800x600" << "1024x768";
|
|
|
|
QStringList *widthProxy = new QStringList;
|
|
QStringList *heightProxy = new QStringList;
|
|
|
|
(*widthProxy) << "Window Width" << "640" << "800" << "1024";
|
|
(*heightProxy) << "Window Height" << "480" << "600" << "768";
|
|
|
|
*(widthByHeightItem->proxyList) << widthProxy << heightProxy;
|
|
|
|
widthByHeightItem->widget = widthByHeightWidget;
|
|
|
|
definedWindowSize->properties << widthByHeightItem;
|
|
definedWindowSize->isProxy = true;
|
|
definedWindowSize->isVisible = false;
|
|
|
|
// window size toggle
|
|
windowSizeToggle->captions << "Pre-Defined" << "Custom";
|
|
windowSizeToggle->widgetOrientation = Orient_Vertical;
|
|
windowSizeToggle->isVisible = false;
|
|
|
|
//define a widget for each group in the toggle
|
|
for (int i = 0; i < 2; i++)
|
|
windowSizeToggle->widgets << new WidgetDef (Widget_RadioButton);
|
|
|
|
windowSizeToggle->widgets.at(0)->isDefault = false;
|
|
|
|
windowSize->blockDefList << windowSizeToggle << definedWindowSize << customWindowSize;
|
|
windowSize->defaultValue = "Custom";
|
|
|
|
mAbstractBlocks << buildBlock<GroupBlock> (topLevelWindowCount)
|
|
<< buildBlock<GroupBlock> (reuseSubwindow)
|
|
<< buildBlock<ToggleBlock> (windowSize)
|
|
<< buildBlock<GroupBlock> (undoStack);
|
|
|
|
foreach (AbstractBlock *block, mAbstractBlocks)
|
|
{
|
|
connect (block, SIGNAL (signalUpdateSetting (const QString &, const QString &)),
|
|
this, SIGNAL (signalUpdateEditorSetting (const QString &, const QString &)) );
|
|
}
|
|
}
|
|
|
|
void CSVSettings::SamplePage::initializeWidgets (const CSMSettings::SettingMap &settings)
|
|
{
|
|
//iterate each item in each blocks in this section
|
|
//validate the corresponding setting against the defined valuelist if any.
|
|
for (AbstractBlockList::Iterator it_block = mAbstractBlocks.begin();
|
|
it_block != mAbstractBlocks.end(); ++it_block)
|
|
(*it_block)->updateSettings (settings);
|
|
}
|