diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Preferences.cc | 81 | ||||
-rw-r--r-- | src/Preferences.h | 13 | ||||
-rw-r--r-- | src/Preferences.ui | 96 | ||||
-rw-r--r-- | src/mainwin.cc | 6 |
4 files changed, 140 insertions, 56 deletions
diff --git a/src/Preferences.cc b/src/Preferences.cc index e504578..33d71bd 100644 --- a/src/Preferences.cc +++ b/src/Preferences.cc @@ -39,21 +39,6 @@ Preferences::Preferences(QWidget *parent) : QMainWindow(parent) setupUi(this); // Editor pane - QFontDatabase db; - foreach(int size, db.standardSizes()) { - this->fontSize->addItem(QString::number(size)); - if (size == 12) { - this->fontSize->setCurrentIndex(this->fontSize->count()-1); - } - } - - // Setup default settings - this->defaultmap["3dview/colorscheme"] = this->colorSchemeChooser->currentItem()->text(); - this->defaultmap["advanced/opencsg_show_warning"] = true; - this->defaultmap["advanced/enable_opencsg_opengl1x"] = true; - this->defaultmap["caches/polysetCacheSize"] = uint(PolySetCache::instance()->maxSize()); - this->defaultmap["caches/cgalCacheSize"] = uint(CGALCache::instance()->maxSize()); - // Setup default font (Try to use a nice monospace font) QString fontfamily; #ifdef Q_WS_X11 @@ -70,6 +55,23 @@ Preferences::Preferences(QWidget *parent) : QMainWindow(parent) this->defaultmap["editor/fontfamily"] = found_family; this->defaultmap["editor/fontsize"] = 12; + QFontDatabase db; + foreach(int size, db.standardSizes()) { + this->fontSize->addItem(QString::number(size)); + if (size == 12) { + this->fontSize->setCurrentIndex(this->fontSize->count()-1); + } + } + + // Setup default settings + this->defaultmap["3dview/colorscheme"] = this->colorSchemeChooser->currentItem()->text(); + this->defaultmap["advanced/opencsg_show_warning"] = true; + this->defaultmap["advanced/enable_opencsg_opengl1x"] = true; + this->defaultmap["advanced/polysetCacheSize"] = uint(PolySetCache::instance()->maxSize()); + this->defaultmap["advanced/cgalCacheSize"] = uint(CGALCache::instance()->maxSize()); + this->defaultmap["advanced/openCSGLimit"] = 2000; + + // Toolbar QActionGroup *group = new QActionGroup(this); group->addAction(prefsAction3DView); @@ -114,14 +116,12 @@ Preferences::Preferences(QWidget *parent) : QMainWindow(parent) this->colorschemes["Sunset"][RenderSettings::CGAL_EDGE_2D_COLOR] = QColor(0xff, 0x00, 0x00); this->colorschemes["Sunset"][RenderSettings::CROSSHAIR_COLOR] = QColor(0x80, 0x00, 0x00); - connect(this->colorSchemeChooser, SIGNAL(itemSelectionChanged()), - this, SLOT(colorSchemeChanged())); - connect(this->fontChooser, SIGNAL(activated(const QString &)), - this, SLOT(fontFamilyChanged(const QString &))); - connect(this->fontSize, SIGNAL(editTextChanged(const QString &)), - this, SLOT(fontSizeChanged(const QString &))); - connect(this->openCSGWarningBox, SIGNAL(toggled(bool)), - this, SLOT(openCSGWarningChanged(bool))); + // Advanced pane + QValidator *validator = new QIntValidator(this); + this->cgalCacheSizeEdit->setValidator(validator); + this->polysetCacheSizeEdit->setValidator(validator); + this->opencsgLimitEdit->setValidator(validator); + updateGUI(); RenderSettings::inst()->setColors(this->colorschemes[getValue("3dview/colorscheme").toString()]); @@ -146,7 +146,7 @@ Preferences::actionTriggered(QAction *action) } } -void Preferences::colorSchemeChanged() +void Preferences::on_colorSchemeChooser_itemSelectionChanged() { QString scheme = this->colorSchemeChooser->currentItem()->text(); QSettings settings; @@ -157,14 +157,14 @@ void Preferences::colorSchemeChanged() emit requestRedraw(); } -void Preferences::fontFamilyChanged(const QString &family) +void Preferences::on_fontChooser_activated(const QString &family) { QSettings settings; settings.setValue("editor/fontfamily", family); emit fontChanged(family, getValue("editor/fontsize").toUInt()); } -void Preferences::fontSizeChanged(const QString &size) +void Preferences::on_fontSize_editTextChanged(const QString &size) { uint intsize = size.toUInt(); QSettings settings; @@ -173,19 +173,40 @@ void Preferences::fontSizeChanged(const QString &size) } void -Preferences::openCSGWarningChanged(bool state) +Preferences::on_openCSGWarningBox_toggled(bool state) { QSettings settings; settings.setValue("advanced/opencsg_show_warning",state); } void -Preferences::enableOpenCSGChanged(bool state) +Preferences::on_enableOpenCSGBox_toggled(bool state) { QSettings settings; settings.setValue("advanced/enable_opencsg_opengl1x", state); } +void Preferences::on_cgalCacheSizeEdit_textChanged(const QString &text) +{ + QSettings settings; + settings.setValue("advanced/cgalCacheSize", text); + CGALCache::instance()->setMaxSize(text.toULong()); +} + +void Preferences::on_polysetCacheSizeEdit_textChanged(const QString &text) +{ + QSettings settings; + settings.setValue("advanced/polysetCacheSize", text); + PolySetCache::instance()->setMaxSize(text.toULong()); +} + +void Preferences::on_opencsgLimitEdit_textChanged(const QString &text) +{ + QSettings settings; + settings.setValue("advanced/openCSGLimit", text); + // FIXME: Set this globally? +} + void Preferences::keyPressEvent(QKeyEvent *e) { #ifdef Q_WS_MAC @@ -218,6 +239,7 @@ void Preferences::removeDefaultSettings() QVariant Preferences::getValue(const QString &key) const { QSettings settings; + assert(settings.contains(key) || this->defaultmap.contains(key)); return settings.value(key, this->defaultmap[key]); } @@ -246,6 +268,9 @@ void Preferences::updateGUI() this->openCSGWarningBox->setChecked(getValue("advanced/opencsg_show_warning").toBool()); this->enableOpenCSGBox->setChecked(getValue("advanced/enable_opencsg_opengl1x").toBool()); + this->cgalCacheSizeEdit->setText(getValue("advanced/cgalCacheSize").toString()); + this->polysetCacheSizeEdit->setText(getValue("advanced/polysetCacheSize").toString()); + this->opencsgLimitEdit->setText(getValue("advanced/openCSGLimit").toString()); } void Preferences::apply() const diff --git a/src/Preferences.h b/src/Preferences.h index 7e22e63..492a261 100644 --- a/src/Preferences.h +++ b/src/Preferences.h @@ -19,11 +19,14 @@ public: public slots: void actionTriggered(class QAction *); - void colorSchemeChanged(); - void fontFamilyChanged(const QString &); - void fontSizeChanged(const QString &); - void openCSGWarningChanged(bool); - void enableOpenCSGChanged(bool); + void on_colorSchemeChooser_itemSelectionChanged(); + void on_fontChooser_activated(const QString &); + void on_fontSize_editTextChanged(const QString &); + void on_openCSGWarningBox_toggled(bool); + void on_enableOpenCSGBox_toggled(bool); + void on_cgalCacheSizeEdit_textChanged(const QString &); + void on_polysetCacheSizeEdit_textChanged(const QString &); + void on_opencsgLimitEdit_textChanged(const QString &); signals: void requestRedraw() const; diff --git a/src/Preferences.ui b/src/Preferences.ui index 6b80674..8ff2828 100644 --- a/src/Preferences.ui +++ b/src/Preferences.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>418</width> - <height>243</height> + <height>269</height> </rect> </property> <property name="windowTitle"> @@ -175,43 +175,99 @@ </widget> <widget class="QWidget" name="pageAdvanced"> <layout class="QVBoxLayout" name="verticalLayout_3"> - <property name="margin"> - <number>0</number> - </property> <item> - <layout class="QVBoxLayout" name="verticalLayout_6"> + <widget class="QCheckBox" name="openCSGWarningBox"> + <property name="text"> + <string>Show OpenCSG capability warning</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="enableOpenCSGBox"> + <property name="text"> + <string>Enable OpenCSG for OpenGL 1.x</string> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_2"> <item> - <widget class="QCheckBox" name="openCSGWarningBox"> + <widget class="QLabel" name="label_4"> <property name="text"> - <string>Show OpenCSG capability warning</string> + <string>CGAL Cache size</string> </property> - <property name="checked"> - <bool>true</bool> + </widget> + </item> + <item> + <widget class="QLineEdit" name="cgalCacheSizeEdit"/> + </item> + <item> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>bytes</string> </property> </widget> </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_3"> <item> - <widget class="QCheckBox" name="enableOpenCSGBox"> + <widget class="QLabel" name="label_5"> <property name="text"> - <string>Enable OpenCSG for OpenGL 1.x</string> + <string>PolySet Cache size</string> </property> </widget> </item> <item> - <spacer name="verticalSpacer_2"> - <property name="orientation"> - <enum>Qt::Vertical</enum> + <widget class="QLineEdit" name="polysetCacheSizeEdit"/> + </item> + <item> + <widget class="QLabel" name="label_6"> + <property name="text"> + <string>bytes</string> </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_4"> + <item> + <widget class="QLabel" name="label_7"> + <property name="text"> + <string>Turn off OpenCSG rendering at </string> </property> - </spacer> + </widget> + </item> + <item> + <widget class="QLineEdit" name="opencsgLimitEdit"/> + </item> + <item> + <widget class="QLabel" name="label_8"> + <property name="text"> + <string>elements</string> + </property> + </widget> </item> </layout> </item> + <item> + <spacer name="verticalSpacer_2"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>11</height> + </size> + </property> + </spacer> + </item> </layout> </widget> </widget> diff --git a/src/mainwin.cc b/src/mainwin.cc index 4198847..f8a6f43 100644 --- a/src/mainwin.cc +++ b/src/mainwin.cc @@ -411,9 +411,9 @@ MainWindow::loadDesignSettings() if (settings.value("design/autoReload").toBool()) { designActionAutoReload->setChecked(true); } - uint polySetCacheSize = Preferences::inst()->getValue("caches/polysetCacheSize").toUInt(); + uint polySetCacheSize = Preferences::inst()->getValue("advanced/polysetCacheSize").toUInt(); PolySetCache::instance()->setMaxSize(polySetCacheSize); - uint cgalCacheSize = Preferences::inst()->getValue("caches/cgalCacheSize").toUInt(); + uint cgalCacheSize = Preferences::inst()->getValue("advanced/cgalCacheSize").toUInt(); CGALCache::instance()->setMaxSize(cgalCacheSize); } @@ -804,7 +804,7 @@ void MainWindow::compileCSG(bool procevents) } } - if (root_chain->polysets.size() > 1000) { + if (root_chain->polysets.size() > Preferences::inst()->getValue("advanced/openCSGLimit").toUInt()) { PRINTF("WARNING: Normalized tree has %d elements!", int(root_chain->polysets.size())); PRINTF("WARNING: OpenCSG rendering has been disabled."); } |