[Bf-blender-cvs] [7bc204e018f] temp-greasepencil-vfx: Add new effects property section

Antonio Vazquez noreply at git.blender.org
Tue Jun 26 15:56:34 CEST 2018


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. @@



More information about the Bf-blender-cvs mailing list