Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2016-03-24 21:01:15 +0300
committerCampbell Barton <ideasman42@gmail.com>2016-03-24 21:03:25 +0300
commit7f3da8f5c91e5dbf030b938a5d852ebc9ce6b361 (patch)
treecf1bbf56ee270930cb94dca16668739495f84329 /release
parent9dc5e1dbc2b62b69833b8452fafd31e83292a96b (diff)
UI: Presets for scene units
This adds simple preset menu for unit scale scene property. D1799 by @alm
Diffstat (limited to 'release')
-rw-r--r--release/scripts/presets/units_length/centimeters.py5
-rw-r--r--release/scripts/presets/units_length/feet.py5
-rw-r--r--release/scripts/presets/units_length/inches.py5
-rw-r--r--release/scripts/presets/units_length/kilometers.py5
-rw-r--r--release/scripts/presets/units_length/meters.py5
-rw-r--r--release/scripts/presets/units_length/miles.py5
-rw-r--r--release/scripts/presets/units_length/millimeters.py5
-rw-r--r--release/scripts/startup/bl_operators/presets.py18
-rw-r--r--release/scripts/startup/bl_ui/properties_scene.py43
9 files changed, 88 insertions, 8 deletions
diff --git a/release/scripts/presets/units_length/centimeters.py b/release/scripts/presets/units_length/centimeters.py
new file mode 100644
index 00000000000..80d5c3e8890
--- /dev/null
+++ b/release/scripts/presets/units_length/centimeters.py
@@ -0,0 +1,5 @@
+import bpy
+scene = bpy.context.scene
+
+scene.unit_settings.system = 'METRIC'
+scene.unit_settings.scale_length = 0.01
diff --git a/release/scripts/presets/units_length/feet.py b/release/scripts/presets/units_length/feet.py
new file mode 100644
index 00000000000..015cb810c4d
--- /dev/null
+++ b/release/scripts/presets/units_length/feet.py
@@ -0,0 +1,5 @@
+import bpy
+scene = bpy.context.scene
+
+scene.unit_settings.system = 'IMPERIAL'
+scene.unit_settings.scale_length = 0.3048
diff --git a/release/scripts/presets/units_length/inches.py b/release/scripts/presets/units_length/inches.py
new file mode 100644
index 00000000000..7bdc96329ec
--- /dev/null
+++ b/release/scripts/presets/units_length/inches.py
@@ -0,0 +1,5 @@
+import bpy
+scene = bpy.context.scene
+
+scene.unit_settings.system = 'IMPERIAL'
+scene.unit_settings.scale_length = 0.0254
diff --git a/release/scripts/presets/units_length/kilometers.py b/release/scripts/presets/units_length/kilometers.py
new file mode 100644
index 00000000000..d2a80e56aaa
--- /dev/null
+++ b/release/scripts/presets/units_length/kilometers.py
@@ -0,0 +1,5 @@
+import bpy
+scene = bpy.context.scene
+
+scene.unit_settings.system = 'METRIC'
+scene.unit_settings.scale_length = 1000.0
diff --git a/release/scripts/presets/units_length/meters.py b/release/scripts/presets/units_length/meters.py
new file mode 100644
index 00000000000..831f1f26071
--- /dev/null
+++ b/release/scripts/presets/units_length/meters.py
@@ -0,0 +1,5 @@
+import bpy
+scene = bpy.context.scene
+
+scene.unit_settings.system = 'METRIC'
+scene.unit_settings.scale_length = 1.0
diff --git a/release/scripts/presets/units_length/miles.py b/release/scripts/presets/units_length/miles.py
new file mode 100644
index 00000000000..59c1e2b36a9
--- /dev/null
+++ b/release/scripts/presets/units_length/miles.py
@@ -0,0 +1,5 @@
+import bpy
+scene = bpy.context.scene
+
+scene.unit_settings.system = 'IMPERIAL'
+scene.unit_settings.scale_length = 1609.344
diff --git a/release/scripts/presets/units_length/millimeters.py b/release/scripts/presets/units_length/millimeters.py
new file mode 100644
index 00000000000..b89918f8b1b
--- /dev/null
+++ b/release/scripts/presets/units_length/millimeters.py
@@ -0,0 +1,5 @@
+import bpy
+scene = bpy.context.scene
+
+scene.unit_settings.system = 'METRIC'
+scene.unit_settings.scale_length = 0.001
diff --git a/release/scripts/startup/bl_operators/presets.py b/release/scripts/startup/bl_operators/presets.py
index daa8ab52766..e01e509b292 100644
--- a/release/scripts/startup/bl_operators/presets.py
+++ b/release/scripts/startup/bl_operators/presets.py
@@ -662,3 +662,21 @@ class WM_MT_operator_presets(Menu):
return AddPresetOperator.operator_path(self.operator)
preset_operator = "script.execute_preset"
+
+
+class AddPresetUnitsLength(AddPresetBase, Operator):
+ """Add or remove length units preset"""
+ bl_idname = "scene.units_length_preset_add"
+ bl_label = "Add Length Units Preset"
+ preset_menu = "SCENE_MT_units_length_presets"
+
+ preset_defines = [
+ "scene = bpy.context.scene"
+ ]
+
+ preset_values = [
+ "scene.unit_settings.system",
+ "scene.unit_settings.scale_length",
+ ]
+
+ preset_subdir = "units_length"
diff --git a/release/scripts/startup/bl_ui/properties_scene.py b/release/scripts/startup/bl_ui/properties_scene.py
index bbf11abe6d9..a05f0ac9618 100644
--- a/release/scripts/startup/bl_ui/properties_scene.py
+++ b/release/scripts/startup/bl_ui/properties_scene.py
@@ -18,7 +18,12 @@
# <pep8 compliant>
import bpy
-from bpy.types import Panel, UIList
+from bpy.types import (
+ Menu,
+ Panel,
+ UIList,
+ )
+
from rna_prop_ui import PropertyPanel
from bl_ui.properties_physics_common import (
@@ -27,6 +32,14 @@ from bl_ui.properties_physics_common import (
)
+class SCENE_MT_units_length_presets(Menu):
+ """Sets the unit of measure for properties that use length values"""
+ bl_label = "Unit Presets"
+ preset_subdir = "units_length"
+ preset_operator = "script.execute_preset"
+ draw = Menu.draw_preset
+
+
class SCENE_UL_keying_set_paths(UIList):
def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index):
# assert(isinstance(item, bpy.types.KeyingSetPath)
@@ -75,14 +88,28 @@ class SCENE_PT_unit(SceneButtonsPanel, Panel):
unit = context.scene.unit_settings
- col = layout.column()
- col.row().prop(unit, "system", expand=True)
- col.row().prop(unit, "system_rotation", expand=True)
+ row = layout.row(align=True)
+ row.menu("SCENE_MT_units_length_presets", text=SCENE_MT_units_length_presets.bl_label)
+ row.operator("scene.units_length_preset_add", text="", icon='ZOOMIN')
+ row.operator("scene.units_length_preset_add", text="", icon='ZOOMOUT').remove_active = True
- if unit.system != 'NONE':
- row = layout.row()
- row.prop(unit, "scale_length", text="Scale")
- row.prop(unit, "use_separate")
+ layout.separator()
+
+ split = layout.split(percentage=0.35)
+ split.label("Length:")
+ split.prop(unit, "system", text="")
+ split = layout.split(percentage=0.35)
+ split.label("Angle:")
+ split.prop(unit, "system_rotation", text="")
+
+ col = layout.column()
+ col.enabled = unit.system != 'NONE'
+ split = col.split(percentage=0.35)
+ split.label("Unit Scale:")
+ split.prop(unit, "scale_length", text="")
+ split = col.split(percentage=0.35)
+ split.row()
+ split.prop(unit, "use_separate")
class SceneKeyingSetsPanel: