diff options
author | Campbell Barton <ideasman42@gmail.com> | 2016-03-24 21:01:15 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2016-03-24 21:03:25 +0300 |
commit | 7f3da8f5c91e5dbf030b938a5d852ebc9ce6b361 (patch) | |
tree | cf1bbf56ee270930cb94dca16668739495f84329 /release | |
parent | 9dc5e1dbc2b62b69833b8452fafd31e83292a96b (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.py | 5 | ||||
-rw-r--r-- | release/scripts/presets/units_length/feet.py | 5 | ||||
-rw-r--r-- | release/scripts/presets/units_length/inches.py | 5 | ||||
-rw-r--r-- | release/scripts/presets/units_length/kilometers.py | 5 | ||||
-rw-r--r-- | release/scripts/presets/units_length/meters.py | 5 | ||||
-rw-r--r-- | release/scripts/presets/units_length/miles.py | 5 | ||||
-rw-r--r-- | release/scripts/presets/units_length/millimeters.py | 5 | ||||
-rw-r--r-- | release/scripts/startup/bl_operators/presets.py | 18 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/properties_scene.py | 43 |
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: |