Commit: 7bc204e018f3156abd9f7aa5a7691dda1acdcbc4
Author: Antonio Vazquez
Date:   Tue Jun 26 15:56:21 2018 +0200
Branches: temp-greasepencil-vfx
https://developer.blender.org/rB7bc204e018f3156abd9f7aa5a7691dda1acdcbc4

Add new effects property section

Also split python code to separated file

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

M       release/scripts/startup/bl_ui/__init__.py
M       release/scripts/startup/bl_ui/properties_data_modifier.py
A       release/scripts/startup/bl_ui/properties_data_shaderfx.py
M       source/blender/editors/space_buttons/buttons_context.c
M       source/blender/editors/space_buttons/space_buttons.c
M       source/blender/makesdna/DNA_space_types.h
M       source/blender/makesrna/intern/rna_space.c

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

diff --git a/release/scripts/startup/bl_ui/__init__.py 
b/release/scripts/startup/bl_ui/__init__.py
index 1400eb59019..4abc336cd39 100644
--- a/release/scripts/startup/bl_ui/__init__.py
+++ b/release/scripts/startup/bl_ui/__init__.py
@@ -40,6 +40,7 @@ _modules = [
     "properties_data_mesh",
     "properties_data_metaball",
     "properties_data_modifier",
+    "properties_data_shaderfx",
     "properties_data_lightprobe",
     "properties_data_speaker",
     "properties_data_workspace",
diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py 
b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 9ab4ef7dc37..283797d4bff 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -28,12 +28,6 @@ class ModifierButtonsPanel:
     bl_context = "modifier"
     bl_options = {'HIDE_HEADER'}
 
-class ShaderFxButtonsPanel:
-    bl_space_type = 'PROPERTIES'
-    bl_region_type = 'WINDOW'
-    bl_context = "modifier"
-    #bl_options = {'HIDE_HEADER'}
-
 class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
     bl_label = "Modifiers"
 
@@ -1986,83 +1980,9 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, 
Panel):
         row.prop(md, "invert_pass", text="", icon="ARROW_LEFTRIGHT")
 
 
-class DATA_PT_shader_fx(ShaderFxButtonsPanel, Panel):
-    bl_label = "Effects"
-
-    @classmethod
-    def poll(cls, context):
-        return True
-        ob = context.object
-        return ob and ob.type == 'GPENCIL'
-
-    def draw(self, context):
-        layout = self.layout
-        layout.use_property_split = True
-
-        ob = context.object
-
-        layout.operator_menu_enum("object.shaderfx_add", "type")
-
-        for fx in ob.shader_effects:
-            box = layout.template_shaderfx(fx)
-            if box:
-                # match enum type to our functions, avoids a lookup table.
-                getattr(self, fx.type)(box, fx)
-
-    # the mt.type enum is (ab)used for a lookup on function names
-    # ...to avoid lengthy if statements
-    # so each type must have a function here.
-
-    def FX_BLUR(self, layout, fx):
-
-        layout.prop(fx, "factor", text="Factor")
-        layout.prop(fx, "samples", text="Samples")
-
-        layout.separator()
-        layout.prop(fx, "use_dof_mode")
-        if fx.use_dof_mode:
-            layout.prop(fx, "coc")
-
-    def FX_WAVE(self, layout,fx):
-        layout.prop(fx, "orientation", expand=True)
-
-        layout.separator()
-        layout.prop(fx, "amplitude")
-        layout.prop(fx, "period")
-        layout.prop(fx, "phase")
-
-    def FX_PIXEL(self, layout, fx):
-        layout.prop(fx, "size", text="Size")
-
-        layout.prop(fx, "use_lines", text="Display Lines")
-
-        col = layout.column()
-        col.enabled = fx.use_lines
-        col.prop(fx, "color")
-
-    def FX_SWIRL(self, layout, fx):
-        layout.prop(fx, "object", text="Object")
-
-        layout.prop(fx, "radius")
-        layout.prop(fx, "angle")
-
-        layout.prop(fx, "transparent")
-
-    def FX_FLIP(self, layout, fx):
-        layout.prop(fx, "flip_horizontal")
-        layout.prop(fx, "flip_vertical")
-
-    def FX_LIGHT(self, layout, fx):
-        layout.prop(fx, "object", text="Object")
-
-        layout.prop(fx, "energy")
-        layout.prop(fx, "ambient")
-
-
 classes = (
     DATA_PT_modifiers,
     DATA_PT_gpencil_modifiers,
-    DATA_PT_shader_fx,
 )
 
 if __name__ == "__main__":  # only for live edit.
diff --git a/release/scripts/startup/bl_ui/properties_data_shaderfx.py 
b/release/scripts/startup/bl_ui/properties_data_shaderfx.py
new file mode 100644
index 00000000000..9bf26a8baed
--- /dev/null
+++ b/release/scripts/startup/bl_ui/properties_data_shaderfx.py
@@ -0,0 +1,111 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+#  This program is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License
+#  as published by the Free Software Foundation; either version 2
+#  of the License, or (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software Foundation,
+#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+# <pep8 compliant>
+import bpy
+from bpy.types import Panel
+from bpy.app.translations import pgettext_iface as iface_
+
+
+class ShaderFxButtonsPanel:
+    bl_space_type = 'PROPERTIES'
+    bl_region_type = 'WINDOW'
+    bl_context = "shaderfx"
+    bl_options = {'HIDE_HEADER'}
+
+class DATA_PT_shader_fx(ShaderFxButtonsPanel, Panel):
+    bl_label = "Effects"
+
+    @classmethod
+    def poll(cls, context):
+        return True
+        ob = context.object
+        return ob and ob.type == 'GPENCIL'
+
+    def draw(self, context):
+        layout = self.layout
+        layout.use_property_split = True
+
+        ob = context.object
+
+        layout.operator_menu_enum("object.shaderfx_add", "type")
+
+        for fx in ob.shader_effects:
+            box = layout.template_shaderfx(fx)
+            if box:
+                # match enum type to our functions, avoids a lookup table.
+                getattr(self, fx.type)(box, fx)
+
+    # the mt.type enum is (ab)used for a lookup on function names
+    # ...to avoid lengthy if statements
+    # so each type must have a function here.
+
+    def FX_BLUR(self, layout, fx):
+
+        layout.prop(fx, "factor", text="Factor")
+        layout.prop(fx, "samples", text="Samples")
+
+        layout.separator()
+        layout.prop(fx, "use_dof_mode")
+        if fx.use_dof_mode:
+            layout.prop(fx, "coc")
+
+    def FX_WAVE(self, layout,fx):
+        layout.prop(fx, "orientation", expand=True)
+
+        layout.separator()
+        layout.prop(fx, "amplitude")
+        layout.prop(fx, "period")
+        layout.prop(fx, "phase")
+
+    def FX_PIXEL(self, layout, fx):
+        layout.prop(fx, "size", text="Size")
+
+        layout.prop(fx, "use_lines", text="Display Lines")
+
+        col = layout.column()
+        col.enabled = fx.use_lines
+        col.prop(fx, "color")
+
+    def FX_SWIRL(self, layout, fx):
+        layout.prop(fx, "object", text="Object")
+
+        layout.prop(fx, "radius")
+        layout.prop(fx, "angle")
+
+        layout.prop(fx, "transparent")
+
+    def FX_FLIP(self, layout, fx):
+        layout.prop(fx, "flip_horizontal")
+        layout.prop(fx, "flip_vertical")
+
+    def FX_LIGHT(self, layout, fx):
+        layout.prop(fx, "object", text="Object")
+
+        layout.prop(fx, "energy")
+        layout.prop(fx, "ambient")
+
+
+classes = (
+    DATA_PT_shader_fx,
+)
+
+if __name__ == "__main__":  # only for live edit.
+    from bpy.utils import register_class
+    for cls in classes:
+        register_class(cls)
diff --git a/source/blender/editors/space_buttons/buttons_context.c 
b/source/blender/editors/space_buttons/buttons_context.c
index 7d063a58e43..1800068d190 100644
--- a/source/blender/editors/space_buttons/buttons_context.c
+++ b/source/blender/editors/space_buttons/buttons_context.c
@@ -259,6 +259,20 @@ static int buttons_context_path_modifier(ButsContextPath 
*path)
        return 0;
 }
 
+static int buttons_context_path_shaderfx(ButsContextPath *path)
+{
+       Object *ob;
+
+       if (buttons_context_path_object(path)) {
+               ob = path->ptr[path->len - 1].data;
+
+               if (ob && ELEM(ob->type, OB_GPENCIL))
+                       return 1;
+       }
+
+       return 0;
+}
+
 static int buttons_context_path_material(ButsContextPath *path)
 {
        Object *ob;
@@ -538,6 +552,9 @@ static int buttons_context_path(const bContext *C, 
ButsContextPath *path, int ma
                case BCONTEXT_MODIFIER:
                        found = buttons_context_path_modifier(path);
                        break;
+               case BCONTEXT_SHADERFX:
+                       found = buttons_context_path_shaderfx(path);
+                       break;
                case BCONTEXT_DATA:
                        found = buttons_context_path_data(path, -1);
                        break;
diff --git a/source/blender/editors/space_buttons/space_buttons.c 
b/source/blender/editors/space_buttons/space_buttons.c
index 75d6edad07f..ea01660fd80 100644
--- a/source/blender/editors/space_buttons/space_buttons.c
+++ b/source/blender/editors/space_buttons/space_buttons.c
@@ -192,6 +192,9 @@ static void buttons_main_region_layout_properties(const 
bContext *C, SpaceButs *
                case BCONTEXT_MODIFIER:
                        contexts[0] = "modifier";
                        break;
+               case BCONTEXT_SHADERFX:
+                       contexts[0] = "shaderfx";
+                       break;
                case BCONTEXT_CONSTRAINT:
                        contexts[0] = "constraint";
                        break;
diff --git a/source/blender/makesdna/DNA_space_types.h 
b/source/blender/makesdna/DNA_space_types.h
index bbfbf660774..2db966e8cc0 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -198,6 +198,7 @@ typedef enum eSpaceButtons_Context {
        BCONTEXT_VIEW_LAYER = 13,
        BCONTEXT_TOOL = 14,
        BCONTEXT_WORKSPACE = 15,
+       BCONTEXT_SHADERFX = 16,
 
        /* always as last... */
        BCONTEXT_TOT
diff --git a/source/blender/makesrna/intern/rna_space.c 
b/source/blender/makesrna/intern/rna_space.c
index f7a0e77df5c..7197405c594 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -288,6 +288,7 @@ static const EnumPropertyItem buttons_context_items[] = {
        {BCONTEXT_PARTICLE, "PARTICLES", ICON_PARTICLES, "Particles", 
"Particle"},
        {BCONTEXT_PHYSICS, "PHYSICS", ICON_PHYSICS, "Physics", "Physics"},
        {BCONTEXT_WORKSPACE, "WORKSPACE", ICON_SPLITSCREEN, "Workspace", 
"Workspace"},
+       {BCONTEXT_SHADERFX, "SHADERFX", ICON_SOLO_ON, "Effects", "Object visual 
effects" },
        {0, NULL, 0, NULL, NULL}
 };
 
@@ -1273,6 +1274,10 @@ static const EnumPropertyItem 
*rna_SpaceProperties_context_itemf(
                RNA_enum_items_add_value(&item, &totitem, 
buttons_context_items, BCONTEXT_MODIFIER);
        }
 
+       if (sbuts->pathflag & (1 << BCONTEXT_SHADERFX)) {
+               RNA_enum_items_add_value(&item, &totitem, 
buttons_context_items, BCONTEXT_SHADERFX);
+       }
+
        if (sbuts-

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to