diff --git a/src/mcedit2/ui/dialogs/preferences.ui b/src/mcedit2/ui/dialogs/preferences.ui
new file mode 100644
index 0000000..d47aeb7
--- /dev/null
+++ b/src/mcedit2/ui/dialogs/preferences.ui
@@ -0,0 +1,80 @@
+
+
+ preferencesDialog
+
+
+
+ 0
+ 0
+ 893
+ 510
+
+
+
+ Preferences
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 200
+ 0
+
+
+
+
+
+
+ 1
+ 0
+
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
+
+ -
+
+
-
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ Close
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mcedit2/ui/preferences_dialog.ui b/src/mcedit2/ui/preferences_dialog.ui
deleted file mode 100644
index e957380..0000000
--- a/src/mcedit2/ui/preferences_dialog.ui
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
- preferencesDialog
-
-
-
- 0
- 0
- 509
- 510
-
-
-
- Preferences
-
-
-
-
- 370
- 450
- 75
- 23
-
-
-
- OK
-
-
-
-
-
-
diff --git a/src/mcedit2/widgets/prefsdialog.py b/src/mcedit2/widgets/prefsdialog.py
deleted file mode 100644
index cf81ef7..0000000
--- a/src/mcedit2/widgets/prefsdialog.py
+++ /dev/null
@@ -1,16 +0,0 @@
-"""
- prefsdialog.py
-"""
-from __future__ import absolute_import, division, print_function
-import logging
-from PySide import QtGui
-
-from mcedit2.ui.preferences_dialog import Ui_preferencesDialog
-
-log = logging.getLogger(__name__)
-
-class PrefsDialog(QtGui.QDialog, Ui_preferencesDialog):
- def __init__(self, parent):
- super(PrefsDialog, self).__init__(parent)
- self.setupUi(self)
- self.okButton.clicked.connect(self.accept)
diff --git a/src/mcedit2/widgets/prefsdialog/__init__.py b/src/mcedit2/widgets/prefsdialog/__init__.py
new file mode 100644
index 0000000..5899f47
--- /dev/null
+++ b/src/mcedit2/widgets/prefsdialog/__init__.py
@@ -0,0 +1,39 @@
+"""
+ prefsdialog
+"""
+from __future__ import absolute_import, division, print_function
+import logging
+from PySide import QtCore
+
+from PySide import QtGui
+
+from mcedit2.ui.dialogs.preferences import Ui_preferencesDialog
+
+log = logging.getLogger(__name__)
+
+from .camera import CameraPrefs
+
+class PrefsDialog(QtGui.QDialog, Ui_preferencesDialog):
+ def __init__(self, parent):
+ super(PrefsDialog, self).__init__(parent)
+ self.setupUi(self)
+ self.okButton.clicked.connect(self.accept)
+
+ self.frames = [
+ CameraPrefs()
+ ]
+
+ for i, frame in enumerate(self.frames):
+ item = QtGui.QListWidgetItem(frame.labelText)
+ item.setData(QtCore.Qt.UserRole, i)
+ self.categoryList.addItem(item)
+
+ self.categoryList.itemClicked.connect(self.itemWasClicked)
+
+ self.frameStack.addWidget(self.frames[0])
+
+ def itemWasClicked(self, item):
+ idx = item.data(QtCore.Qt.UserRole)
+
+ self.frameStack.removeWidget(self.frameStack.widget(0))
+ self.frameStack.addWidget(self.frames[idx])
diff --git a/src/mcedit2/widgets/prefsdialog/camera.py b/src/mcedit2/widgets/prefsdialog/camera.py
new file mode 100644
index 0000000..4529040
--- /dev/null
+++ b/src/mcedit2/widgets/prefsdialog/camera.py
@@ -0,0 +1,27 @@
+"""
+ camera
+"""
+from __future__ import absolute_import, division, print_function, unicode_literals
+import logging
+from PySide import QtGui
+
+from mcedit2.widgets.layout import Column
+from mcedit2.worldview.camera import MaxViewDistanceSetting
+
+log = logging.getLogger(__name__)
+
+class CameraPrefs(QtGui.QWidget):
+ def __init__(self):
+ super(CameraPrefs, self).__init__()
+ self.labelText = self.tr("Camera View")
+
+ layout = QtGui.QFormLayout()
+
+ maxViewDistanceInput = QtGui.QSpinBox()
+ maxViewDistanceInput.setMinimum(0)
+ maxViewDistanceInput.valueChanged.connect(MaxViewDistanceSetting.setValue)
+ MaxViewDistanceSetting.connectAndCall(maxViewDistanceInput.setValue)
+
+ layout.addRow(self.tr("Max View Distance"), maxViewDistanceInput)
+
+ self.setLayout(Column(layout, None))
\ No newline at end of file
diff --git a/src/mcedit2/worldview/camera.py b/src/mcedit2/worldview/camera.py
index 962bda7..85fe9b2 100644
--- a/src/mcedit2/worldview/camera.py
+++ b/src/mcedit2/worldview/camera.py
@@ -29,6 +29,8 @@ log = logging.getLogger(__name__)
settings = Settings().getNamespace("worldview/camera")
ViewDistanceSetting = settings.getOption("view_distance", int, 12)
+MaxViewDistanceSetting = settings.getOption("max_view_distance", int, 64)
+
PerspectiveSetting = settings.getOption("perspective", bool, True)
StickyMouselookSetting = settings.getOption("sticky_mouselook", bool, True)
@@ -56,7 +58,9 @@ class CameraWorldViewFrame(QtGui.QWidget):
viewDistanceInput = QtGui.QSpinBox(minimum=2, maximum=64, singleStep=2)
viewDistanceInput.setValue(self.worldView.viewDistance)
viewDistanceInput.valueChanged.connect(ViewDistanceSetting.setValue)
-
+
+ MaxViewDistanceSetting.connectAndCall(viewDistanceInput.setMaximum)
+
PerspectiveSetting.connectAndCall(view.setPerspective)
perspectiveInput = QtGui.QCheckBox(self.tr("Perspective"))