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>2018-04-27 18:55:17 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-04-27 19:02:45 +0300
commiteb4c60124cc2b3aeba5eeb3090bea92543f066a9 (patch)
treea55b2a7cdbcebe42a2279e7ebfb2012630201573 /release
parent964a2dd73f687cbc293434eb3cbaa1b45ede20c5 (diff)
UI: multi-column toolbar support
Diffstat (limited to 'release')
-rw-r--r--release/scripts/startup/bl_ui/space_toolsystem_common.py53
-rw-r--r--release/scripts/startup/bl_ui/space_toolsystem_toolbar.py2
2 files changed, 46 insertions, 9 deletions
diff --git a/release/scripts/startup/bl_ui/space_toolsystem_common.py b/release/scripts/startup/bl_ui/space_toolsystem_common.py
index a4b306193c0..8f9d1735e9f 100644
--- a/release/scripts/startup/bl_ui/space_toolsystem_common.py
+++ b/release/scripts/startup/bl_ui/space_toolsystem_common.py
@@ -248,17 +248,39 @@ class ToolSelectPanelHelper:
view2d.region_to_view(1.0, 0.0)[0] -
view2d.region_to_view(0.0, 0.0)[0]
)
- show_text = (context.region.width / ui_scale) > 100.0
+ width_scale = context.region.width * ui_scale
del view2d, ui_scale
+ empty_text = ""
+ if width_scale > 200.0:
+ show_text = True
+ use_columns = False
+ else:
+ show_text = False
+ if width_scale > 120.0:
+ column_count = 3
+ use_columns = True
+ empty_text = " " # needed for alignment, grr
+ elif width_scale > 80.0:
+ column_count = 2
+ use_columns = True
+ empty_text = " " # needed for alignment, grr
+ else:
+ use_columns = False
+
+ # Could support 3x columns.
+ column_index = 0
+
for tool_items in self.tools_from_context(context):
if tool_items:
col = layout.column(align=True)
- col.scale_y = scale_y
+ if not use_columns:
+ col.scale_y = scale_y
for item in tool_items:
if item is None:
col = layout.column(align=True)
- col.scale_y = scale_y
+ if not use_columns:
+ col.scale_y = scale_y
continue
if type(item) is tuple:
@@ -289,26 +311,41 @@ class ToolSelectPanelHelper:
tool_def, icon_name = self._tool_vars_from_def(item, context_mode)
is_active = (tool_def == tool_def_active)
icon_value = ToolSelectPanelHelper._icon_value_from_icon_handle(icon_name)
+
+ if use_columns:
+ col.scale_y = scale_y
+ if column_index == 0:
+ row = col.row(align=True)
+ row.scale_y = scale_y
+ sub = row
+ else:
+ sub = col
+
if use_menu:
- props = col.operator_menu_hold(
+ props = sub.operator_menu_hold(
"wm.tool_set",
- text=item.text if show_text else "",
+ text=item.text if show_text else empty_text,
depress=is_active,
menu="WM_MT_toolsystem_submenu",
icon_value=icon_value,
)
else:
- props = col.operator(
+ props = sub.operator(
"wm.tool_set",
- text=item.text if show_text else "",
+ text=item.text if show_text else empty_text,
depress=is_active,
icon_value=icon_value,
)
-
props.keymap = tool_def[0] or ""
props.manipulator_group = tool_def[1] or ""
props.index = index
+ if use_columns:
+ col.scale_y = 1.0
+ column_index += 1
+ if column_index == column_count:
+ column_index = 0
+
def tools_from_context(cls, context):
return (cls._tools[None], cls._tools.get(context.mode, ()))
diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
index 1baf564b777..24396e82ec3 100644
--- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
@@ -337,7 +337,7 @@ class _defs_edit_mesh:
class extrude_cursor(ToolDef):
text = "Extrude Cursor"
- icon = None
+ icon = "ops.mesh.bisect" # placeholder
widget = None
keymap = (
("mesh.dupli_extrude_cursor", dict(), dict(type='ACTIONMOUSE', value='PRESS')),