[Bf-blender-cvs] [3c9ba5e9941] soc-2020-custom-menus: Custom Menus: Add Pie menu

TempoDev noreply at git.blender.org
Tue Jun 30 14:13:52 CEST 2020


Commit: 3c9ba5e9941aae94b572ad2a14165a929da361c6
Author: TempoDev
Date:   Tue Jun 30 14:13:42 2020 +0200
Branches: soc-2020-custom-menus
https://developer.blender.org/rB3c9ba5e9941aae94b572ad2a14165a929da361c6

Custom Menus: Add Pie menu

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

M	release/datafiles/locale
M	release/scripts/addons
M	release/scripts/addons_contrib
M	release/scripts/modules/rna_user_menus_ui.py
M	release/scripts/startup/bl_ui/space_userpref.py
M	source/blender/makesdna/DNA_userdef_types.h
M	source/blender/makesrna/intern/rna_userdef.c

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

diff --git a/release/datafiles/locale b/release/datafiles/locale
index caf68fed42f..a6b1e6365f5 160000
--- a/release/datafiles/locale
+++ b/release/datafiles/locale
@@ -1 +1 @@
-Subproject commit caf68fed42f55e606b14c7105f5df694957ce036
+Subproject commit a6b1e6365f57a83b323cf781e50ada3fa1b3f73f
diff --git a/release/scripts/addons b/release/scripts/addons
index bc1262f4d61..5d33d1a1c25 160000
--- a/release/scripts/addons
+++ b/release/scripts/addons
@@ -1 +1 @@
-Subproject commit bc1262f4d61feeba235bb75046e65e0e8411241f
+Subproject commit 5d33d1a1c2531e64bda78d46b517571f2b1e98e7
diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib
index 45aa940dabd..9468c406fb5 160000
--- a/release/scripts/addons_contrib
+++ b/release/scripts/addons_contrib
@@ -1 +1 @@
-Subproject commit 45aa940dabda64f7877c6d5dd843998a86f0a836
+Subproject commit 9468c406fb554e32ff47b62bfef356b3908ec651
diff --git a/release/scripts/modules/rna_user_menus_ui.py b/release/scripts/modules/rna_user_menus_ui.py
index f9878f90c8d..7ab0d9060ec 100644
--- a/release/scripts/modules/rna_user_menus_ui.py
+++ b/release/scripts/modules/rna_user_menus_ui.py
@@ -125,6 +125,10 @@ def draw_user_menus(context, layout):
 
     layout.separator()
     # TODO : set menu parameters in a submenu here
+    pie_text = "List"
+    if um.is_pie:
+        pie_text = "Pie"
+    rowsub.prop(um, "is_pie", text=pie_text, toggle=True)
 
     col = layout.column()
     row = layout.row()
@@ -133,3 +137,14 @@ def draw_user_menus(context, layout):
     draw_item_editor(context=context, row=row)
 
     layout.separator()
+
+    km = bpy.context.window_manager.keyconfigs.user.keymaps['Window']
+    for kmi in km.keymap_items:
+        if kmi.idname == "wm.call_menu":
+            if um.is_pie and kmi.properties.name == "SCREEN_MT_user_menu":
+                kmi.idname = "wm.call_menu_pie"
+                kmi.properties.name = "PIE_MT_user_menu"
+        if kmi.idname == "wm.call_menu_pie":
+            if kmi.properties.name == "PIE_MT_user_menu" and not um.is_pie:
+                kmi.idname = "wm.call_menu"
+                kmi.properties.name = "SCREEN_MT_user_menu"
diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py
index 4701c20f264..c4713227e3e 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -1684,6 +1684,38 @@ class USERPREF_MT_menu_select(Menu):
     def draw(self, context):
         Menu.draw_preset(self, context)
 
+class PIE_MT_user_menu(Menu):
+    bl_idname = "PIE_MT_user_menu"
+    bl_label = "Quick Favorites"
+
+    def draw(self, context):
+        prefs = context.preferences
+        um = prefs.user_menus
+        menu = um.get_current_menu()
+
+        layout = self.layout
+        pie = layout.menu_pie()
+        pie.scale_y = 1.2
+        index = 0
+        for item in menu.menu_items:
+            if index > 8:
+                break
+            if item.type == "OPERATOR":
+                op = item.get_operator()
+                pie.operator(op.operator, text=item.name)
+            if item.type == "MENU":
+                pm = item.get_menu()
+                pie.menu(pm.id_name, text=item.name)
+            if item.type == "SUBMENU":
+                sm = item.get_submenu()
+                index = index - 1
+            if item.type == "PROPERTY":
+                sm = item.get_property()
+                index = index - 1
+            if item.type == "SEPARATOR":
+                index = index - 1
+            index = index + 1
+
 class USERPREF_PT_user_menus(UserMenusPanel, Panel):
     bl_label = "user_menus"
     bl_options = {'HIDE_HEADER'}
@@ -2249,6 +2281,7 @@ classes = (
 
     USERPREF_PT_keymap,
     USERPREF_MT_menu_select,
+    PIE_MT_user_menu,
     USERPREF_PT_user_menus,
     USERPREF_PT_addons,
 
diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h
index 5b3cc0f6a3c..ac67e3c4c04 100644
--- a/source/blender/makesdna/DNA_userdef_types.h
+++ b/source/blender/makesdna/DNA_userdef_types.h
@@ -613,7 +613,8 @@ typedef struct UserDef_Runtime {
   /* User menu editor runtime datas */
   char um_space_select;
   char um_context_select;
-  char _pad0[5];
+  char um_is_pie;
+  char _pad0[4];
   struct bUserMenuItem *um_item_select;
   /** #bUserMenuItem_But. */
   struct ListBase um_buttons;
diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c
index 4de124e2028..f3bb6fc8515 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -6625,6 +6625,10 @@ static void rna_def_userdef_usermenus_editor(BlenderRNA *brna)
   RNA_def_property_ui_text(prop, "context selected", "the context selected");
   RNA_def_property_update(prop, 0, "rna_userdef_update");
 
+  prop = RNA_def_property(srna, "is_pie", PROP_BOOLEAN, PROP_NONE);
+  RNA_def_property_boolean_sdna(prop, NULL, "runtime.um_is_pie", 0);
+  RNA_def_property_ui_text(prop, "menu type", "change menu type between list and pie");
+
   prop = RNA_def_property(srna, "active_item", PROP_POINTER, PROP_NONE);
   RNA_def_property_pointer_sdna(prop, NULL, "runtime.um_item_select");
   RNA_def_property_struct_type(prop, "UserMenuItem");



More information about the Bf-blender-cvs mailing list