[Bf-blender-cvs] [a71f072] master: UI: Replace +/- menus with collapsible ones

Campbell Barton noreply at git.blender.org
Mon Jan 27 08:42:51 CET 2014


Commit: a71f072f9ccaae043069df1cbf95c169a60e494e
Author: Campbell Barton
Date:   Mon Jan 27 18:38:53 2014 +1100
https://developer.blender.org/rBa71f072f9ccaae043069df1cbf95c169a60e494e

UI: Replace +/- menus with collapsible ones

Patch D160, by Scott Petrovic with  own modifications.

===================================================================

M	release/datafiles/blender_icons.svg
A	release/datafiles/blender_icons16/icon16_collapsemenu.dat
A	release/datafiles/blender_icons32/icon32_collapsemenu.dat
M	release/scripts/modules/bpy_types.py
M	release/scripts/startup/bl_ui/space_clip.py
M	release/scripts/startup/bl_ui/space_console.py
M	release/scripts/startup/bl_ui/space_dopesheet.py
M	release/scripts/startup/bl_ui/space_filebrowser.py
M	release/scripts/startup/bl_ui/space_graph.py
M	release/scripts/startup/bl_ui/space_image.py
M	release/scripts/startup/bl_ui/space_info.py
M	release/scripts/startup/bl_ui/space_logic.py
M	release/scripts/startup/bl_ui/space_nla.py
M	release/scripts/startup/bl_ui/space_node.py
M	release/scripts/startup/bl_ui/space_outliner.py
M	release/scripts/startup/bl_ui/space_properties.py
M	release/scripts/startup/bl_ui/space_sequencer.py
M	release/scripts/startup/bl_ui/space_text.py
M	release/scripts/startup/bl_ui/space_time.py
M	release/scripts/startup/bl_ui/space_userpref.py
M	release/scripts/startup/bl_ui/space_view3d.py
M	source/blender/editors/include/ED_screen.h
M	source/blender/editors/include/UI_icons.h
M	source/blender/editors/include/UI_interface.h
M	source/blender/editors/interface/interface_templates.c
M	source/blender/editors/screen/area.c
M	source/blender/editors/screen/screen_ops.c
M	source/blender/makesrna/intern/rna_ui_api.c
M	source/blenderplayer/bad_level_call_stubs/stubs.c

===================================================================

diff --git a/release/datafiles/blender_icons.svg b/release/datafiles/blender_icons.svg
index 3f2aa4a..8d6b9ee 100644
--- a/release/datafiles/blender_icons.svg
+++ b/release/datafiles/blender_icons.svg
@@ -86291,6 +86291,42 @@
        style="opacity:0.7;fill:url(#linearGradient18212);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.98985863;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
        sodipodi:type="arc" />
     <g
+       style="display:inline;enable-background:new"
+       id="g24559-2-1"
+       transform="translate(279.8665,506.92392)">
+      <rect
+         y="111"
+         x="103"
+         height="16"
+         width="16"
+         id="rect24489-7-4"
+         style="opacity:0;fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.79999995;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <rect
+         style="fill:#ececec;fill-opacity:1;stroke:#141414;stroke-width:0.79452544;stroke-opacity:1"
+         id="rect29842"
+         width="11.816368"
+         height="2.1883197"
+         x="105.18671"
+         y="-116.88043"
+         transform="scale(1,-1)" />
+      <rect
+         style="fill:#ececec;fill-opacity:1;stroke:#141414;stroke-width:0.79452544;stroke-opacity:1;display:inline;enable-background:new"
+         id="rect29842-4"
+         width="11.816368"
+         height="2.1883197"
+         x="105.31538"
+         y="-120.80865"
+         transform="scale(1,-1)" />
+      <rect
+         style="fill:#ececec;fill-opacity:1;stroke:#141414;stroke-width:0.79452544;stroke-opacity:1;display:inline;enable-background:new"
+         id="rect29842-4-5"
+         width="11.816368"
+         height="2.1883197"
+         x="105.41832"
+         y="-124.71391"
+         transform="scale(1,-1)" />
+    </g>
+    <g
        inkscape:export-ydpi="90"
        inkscape:export-xdpi="90"
        inkscape:export-filename="C:\Documents and Settings\Pracownia\Pulpit\sss.png"
diff --git a/release/datafiles/blender_icons16/icon16_collapsemenu.dat b/release/datafiles/blender_icons16/icon16_collapsemenu.dat
new file mode 100644
index 0000000..fd16fad
Binary files /dev/null and b/release/datafiles/blender_icons16/icon16_collapsemenu.dat differ
diff --git a/release/datafiles/blender_icons32/icon32_collapsemenu.dat b/release/datafiles/blender_icons32/icon32_collapsemenu.dat
new file mode 100644
index 0000000..d84dd84
Binary files /dev/null and b/release/datafiles/blender_icons32/icon32_collapsemenu.dat differ
diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py
index f7af297..0b9893c 100644
--- a/release/scripts/modules/bpy_types.py
+++ b/release/scripts/modules/bpy_types.py
@@ -753,6 +753,17 @@ class Menu(StructRNA, _GenericUI, metaclass=RNAMeta):
                        self.preset_operator,
                        filter_ext=lambda ext: ext.lower() in {".py", ".xml"})
 
+    @classmethod
+    def draw_collapsible(cls, context, layout):
+        # helper function for (optionally) collapsed header menus
+        # only usable within headers
+        if context.area.show_menus:
+            cls.draw_menus(layout, context)
+        else:
+            layout.separator()
+            layout.menu(cls.__name__, icon='COLLAPSEMENU')
+            layout.separator()
+
 
 class Region(StructRNA):
     __slots__ = ()
diff --git a/release/scripts/startup/bl_ui/space_clip.py b/release/scripts/startup/bl_ui/space_clip.py
index 3a203c7..28d1d52 100644
--- a/release/scripts/startup/bl_ui/space_clip.py
+++ b/release/scripts/startup/bl_ui/space_clip.py
@@ -51,18 +51,7 @@ class CLIP_HT_header(Header):
         row = layout.row(align=True)
         row.template_header()
 
-        if context.area.show_menus:
-            sub = row.row(align=True)
-            sub.menu("CLIP_MT_view")
-
-            if sc.view == 'CLIP':
-                if clip:
-                    sub.menu("CLIP_MT_select")
-                    sub.menu("CLIP_MT_clip")
-                    sub.menu("CLIP_MT_track")
-                    sub.menu("CLIP_MT_reconstruction")
-                else:
-                    sub.menu("CLIP_MT_clip")
+        CLIP_MT_tracking_editor_menus.draw_collapsible(context, layout)
 
         row = layout.row()
         row.template_ID(sc, "clip", open="clip.open")
@@ -128,16 +117,7 @@ class CLIP_HT_header(Header):
         row = layout.row(align=True)
         row.template_header()
 
-        if context.area.show_menus:
-            sub = row.row(align=True)
-            sub.menu("CLIP_MT_view")
-
-            if clip:
-                sub.menu("MASK_MT_select")
-                sub.menu("CLIP_MT_clip")  # XXX - remove?
-                sub.menu("MASK_MT_mask")
-            else:
-                sub.menu("CLIP_MT_clip")  # XXX - remove?
+        CLIP_MT_masking_editor_menus.draw_collapsible(context, layout)
 
         row = layout.row()
         row.template_ID(sc, "clip", open="clip.open")
@@ -169,6 +149,52 @@ class CLIP_HT_header(Header):
         layout.template_running_jobs()
 
 
+class CLIP_MT_tracking_editor_menus(Menu):
+    bl_idname = "CLIP_MT_tracking_editor_menus"
+    bl_label = ""
+
+    def draw(self, context):
+        self.draw_menus(self.layout, context)
+
+    @staticmethod
+    def draw_menus(layout, context):
+        sc = context.space_data
+        clip = sc.clip
+
+        layout.menu("CLIP_MT_view")
+
+        if sc.view == 'CLIP':
+            if clip:
+                layout.menu("CLIP_MT_select")
+                layout.menu("CLIP_MT_clip")
+                layout.menu("CLIP_MT_track")
+                layout.menu("CLIP_MT_reconstruction")
+            else:
+                layout.menu("CLIP_MT_clip")
+
+
+class CLIP_MT_masking_editor_menus(Menu):
+
+    bl_idname = "CLIP_MT_masking_editor_menus"
+    bl_label = ""
+
+    def draw(self, context):
+        self.draw_menus(self.layout, context)
+
+    @staticmethod
+    def draw_menus(layout, context):
+        layout = self.layout
+
+        layout.menu("CLIP_MT_view")
+
+        if clip:
+            layout.menu("MASK_MT_select")
+            layout.menu("CLIP_MT_clip")  # XXX - remove?
+            layout.menu("MASK_MT_mask")
+        else:
+            layout.menu("CLIP_MT_clip")  # XXX - remove?
+
+
 class CLIP_PT_clip_view_panel:
 
     @classmethod
diff --git a/release/scripts/startup/bl_ui/space_console.py b/release/scripts/startup/bl_ui/space_console.py
index e097dfe..ec16cfd 100644
--- a/release/scripts/startup/bl_ui/space_console.py
+++ b/release/scripts/startup/bl_ui/space_console.py
@@ -29,12 +29,23 @@ class CONSOLE_HT_header(Header):
 
         layout.template_header()
 
-        if context.area.show_menus:
-            layout.menu("CONSOLE_MT_console")
+        CONSOLE_MT_editor_menus.draw_collapsible(context, layout)
 
         layout.operator("console.autocomplete", text="Autocomplete")
 
 
+class CONSOLE_MT_editor_menus(Menu):
+    bl_idname = "CONSOLE_MT_editor_menus"
+    bl_label = ""
+
+    def draw(self, context):
+        self.draw_menus(self.layout, context)
+
+    @staticmethod
+    def draw_menus(layout, context):
+        layout.menu("CONSOLE_MT_console")
+
+
 class CONSOLE_MT_console(Menu):
     bl_label = "Console"
 
diff --git a/release/scripts/startup/bl_ui/space_dopesheet.py b/release/scripts/startup/bl_ui/space_dopesheet.py
index 9d31703..269c960 100644
--- a/release/scripts/startup/bl_ui/space_dopesheet.py
+++ b/release/scripts/startup/bl_ui/space_dopesheet.py
@@ -107,20 +107,7 @@ class DOPESHEET_HT_header(Header):
         row = layout.row(align=True)
         row.template_header()
 
-        if context.area.show_menus:
-            row.menu("DOPESHEET_MT_view")
-            row.menu("DOPESHEET_MT_select")
-            row.menu("DOPESHEET_MT_marker")
-
-            if st.mode == 'DOPESHEET' or (st.mode == 'ACTION' and st.action is not None):
-                row.menu("DOPESHEET_MT_channel")
-            elif st.mode == 'GPENCIL':
-                row.menu("DOPESHEET_MT_gpencil_channel")
-
-            if st.mode != 'GPENCIL':
-                row.menu("DOPESHEET_MT_key")
-            else:
-                row.menu("DOPESHEET_MT_gpencil_frame")
+        DOPESHEET_MT_editor_menus.draw_collapsible(context, layout)
 
         layout.prop(st, "mode", text="")
         layout.prop(st.dopesheet, "show_summary", text="Summary")
@@ -144,6 +131,32 @@ class DOPESHEET_HT_header(Header):
         row.operator("action.paste", text="", icon='PASTEDOWN')
 
 
+class DOPESHEET_MT_editor_menus(Menu):
+    bl_idname = "DOPESHEET_MT_editor_menus"
+    bl_label = ""
+
+    def draw(self, context):
+        self.draw_menus(self.layout, context)
+
+    @staticmethod
+    def draw_menus(layout, context):
+        st = context.space_data
+
+        layout.menu("DOPESHEET_MT_view")
+        layout.menu("DOPESHEET_MT_select")
+        layout.menu("DOPESHEET_MT_marker")
+
+        if st.mode == 'DOPESHEET' or (st.mode == 'ACTION' and st.action is not None):
+            layout.menu("DOPESHEET_MT_channel")
+        elif st.mode == 'GPENCIL':
+            layout.menu("DOPESHEET_MT_gpencil_channel")
+
+        if st.mode != 'GPENCIL':
+            layout.menu("DOPESHEET_MT_key")
+        else:
+            layout.menu("DOPESHEET_MT_gpencil_frame")
+
+
 class DOPESHEET_MT_view(Menu):
     bl_label = "View"
 
diff --git a/release/scripts/startup/bl_ui/space_filebrowser.py b/release/scripts/startup/bl_ui/space_filebrowser.py
index 201ac0a..b90eb7a 100644
--- a/release/scripts/startup/bl_ui/space_filebrowser.py
+++ b/release/scripts/startup/bl_ui/space_filebrowser.py
@@ -29,7 +29,7 @@ class FILEBROWSER_HT_header(Header):
 
         st = context.space_data
 
-        layout.template_header(menus=False)
+        layout.template_header()
 
         row = layout.row()
         row.separator()
diff --git a/release/scripts/startup/bl_ui/space_graph.py b/release/scripts/startup/bl_ui/space_graph.py
index 61e2f10..775f398 100644
--- a/release/scripts/startup/bl_ui/space_graph.py
+++ b/release/scripts/startup/bl_ui/space_graph.py
@@ -35,12 +35,7 @@ class GRAPH_HT_header(Header):
         row = layout.row(align=True)
         row.template_h

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list