[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