summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Preferences.cc81
-rw-r--r--src/Preferences.h13
-rw-r--r--src/Preferences.ui96
-rw-r--r--src/mainwin.cc6
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.");
}
contact: Jan Huwald // Impressum