[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55488] branches/soc-2008-mxcurioni/ release/scripts/startup/bl_ui: Moved the definitions of Freestyle-specific panels to its own module.

Tamito Kajiyama rd6t-kjym at asahi-net.or.jp
Fri Mar 22 00:25:18 CET 2013


Revision: 55488
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55488
Author:   kjym3
Date:     2013-03-21 23:25:18 +0000 (Thu, 21 Mar 2013)
Log Message:
-----------
Moved the definitions of Freestyle-specific panels to its own module.
Suggested by Sergey Sharybin through a code review of the branch.

Modified Paths:
--------------
    branches/soc-2008-mxcurioni/release/scripts/startup/bl_ui/__init__.py
    branches/soc-2008-mxcurioni/release/scripts/startup/bl_ui/properties_render.py
    branches/soc-2008-mxcurioni/release/scripts/startup/bl_ui/properties_render_layer.py

Added Paths:
-----------
    branches/soc-2008-mxcurioni/release/scripts/startup/bl_ui/properties_freestyle.py

Modified: branches/soc-2008-mxcurioni/release/scripts/startup/bl_ui/__init__.py
===================================================================
--- branches/soc-2008-mxcurioni/release/scripts/startup/bl_ui/__init__.py	2013-03-21 23:20:46 UTC (rev 55487)
+++ branches/soc-2008-mxcurioni/release/scripts/startup/bl_ui/__init__.py	2013-03-21 23:25:18 UTC (rev 55488)
@@ -24,7 +24,7 @@
     from imp import reload as _reload
     for val in _modules_loaded.values():
         _reload(val)
-_modules = (
+_modules = [
     "properties_animviz",
     "properties_constraint",
     "properties_data_armature",
@@ -75,16 +75,18 @@
     "space_userpref",
     "space_view3d",
     "space_view3d_toolbar",
-)
+]
+
+import bpy
+
+if bpy.app.build_options.freestyle:
+    _modules.append("properties_freestyle")
 __import__(name=__name__, fromlist=_modules)
 _namespace = globals()
-_modules_loaded = {name: _namespace[name] for name in _modules}
+_modules_loaded = {name: _namespace[name] for name in _modules if name != 'bpy'}
 del _namespace
 
 
-import bpy
-
-
 def register():
     bpy.utils.register_module(__name__)
 

Added: branches/soc-2008-mxcurioni/release/scripts/startup/bl_ui/properties_freestyle.py
===================================================================
--- branches/soc-2008-mxcurioni/release/scripts/startup/bl_ui/properties_freestyle.py	                        (rev 0)
+++ branches/soc-2008-mxcurioni/release/scripts/startup/bl_ui/properties_freestyle.py	2013-03-21 23:25:18 UTC (rev 55488)
@@ -0,0 +1,668 @@
+# ##### 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 Menu, Panel, UIList
+from bl_ui.properties_render import RenderButtonsPanel
+from bl_ui.properties_render_layer import RenderLayerButtonsPanel
+
+
+# Render properties
+
+class RenderFreestyleButtonsPanel(RenderButtonsPanel):
+    # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here
+
+    @classmethod
+    def poll(cls, context):
+        if not super().poll(context):
+            return False
+        return bpy.app.build_options.freestyle
+
+
+class RENDER_PT_freestyle(RenderFreestyleButtonsPanel, Panel):
+    bl_label = "Freestyle"
+    bl_options = {'DEFAULT_CLOSED'}
+    COMPAT_ENGINES = {'BLENDER_RENDER'}
+
+    def draw_header(self, context):
+        rd = context.scene.render
+        self.layout.prop(rd, "use_freestyle", text="")
+
+    def draw(self, context):
+        rd = context.scene.render
+
+        layout = self.layout
+        layout.active = rd.use_freestyle
+
+        row = layout.row()
+        row.label(text="Line Thickness:")
+        row.prop(rd, "line_thickness_mode", expand=True)
+        row = layout.row()
+        row.active = (rd.line_thickness_mode == 'ABSOLUTE')
+        row.prop(rd, "unit_line_thickness")
+
+
+# Render layer properties
+
+class RenderLayerFreestyleButtonsPanel(RenderLayerButtonsPanel):
+    # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here
+
+    @classmethod
+    def poll(cls, context):
+        if not super().poll(context):
+            return False
+        rd = context.scene.render
+        return bpy.app.build_options.freestyle and rd.use_freestyle and rd.layers.active
+
+
+class RenderLayerFreestyleEditorButtonsPanel(RenderLayerFreestyleButtonsPanel):
+    # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here
+
+    @classmethod
+    def poll(cls, context):
+        if not super().poll(context):
+            return False
+        rl = context.scene.render.layers.active
+        return rl and rl.freestyle_settings.mode == 'EDITOR'
+
+
+class RENDERLAYER_UL_linesets(UIList):
+    def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index):
+        lineset = item
+        if self.layout_type in {'DEFAULT', 'COMPACT'}:
+            layout.label(lineset.name, icon_value=icon)
+            layout.prop(lineset, "show_render", text="", index=index)
+        elif self.layout_type in {'GRID'}:
+            layout.alignment = 'CENTER'
+            layout.label("", icon_value=icon)
+
+##ifdef WITH_FREESTYLE
+#	else if (RNA_struct_is_a(itemptr->type, &RNA_SceneRenderLayer) || 
+#	         RNA_struct_is_a(itemptr->type, &RNA_FreestyleLineSet)) {
+##else
+#	else if (RNA_struct_is_a(itemptr->type, &RNA_SceneRenderLayer)) {
+##endif
+#		uiItemL(sub, name, icon);
+#		uiBlockSetEmboss(block, UI_EMBOSS);
+#		uiDefButR(block, OPTION, 0, "", 0, 0, UI_UNIT_X, UI_UNIT_Y, itemptr, "use", 0, 0, 0, 0, 0,  NULL);
+#	}
+
+
+class RENDER_MT_lineset_specials(Menu):
+    bl_label = "Lineset Specials"
+
+    def draw(self, context):
+        layout = self.layout
+        layout.operator("scene.freestyle_lineset_copy", icon='COPYDOWN')
+        layout.operator("scene.freestyle_lineset_paste", icon='PASTEDOWN')
+
+
+class RENDERLAYER_PT_freestyle(RenderLayerFreestyleButtonsPanel, Panel):
+    bl_label = "Freestyle"
+    COMPAT_ENGINES = {'BLENDER_RENDER'}
+
+    def draw(self, context):
+        rd = context.scene.render
+        rl = rd.layers.active
+        freestyle = rl.freestyle_settings
+
+        layout = self.layout
+        layout.active = rl.use_freestyle
+        layout.prop(freestyle, "mode", text="Control mode")
+
+        col = layout.column()
+        col.label(text="Edge Detection Options:")
+        split = col.split()
+        sub = split.column()
+        sub.prop(freestyle, "crease_angle")
+        sub.prop(freestyle, "use_culling")
+        sub = split.column()
+        sub.prop(freestyle, "use_smoothness")
+        sub.prop(freestyle, "use_material_boundaries")
+        col.prop(freestyle, "use_advanced_options")
+        # Advanced options are hidden by default to warn new users
+        if freestyle.use_advanced_options:
+            split = col.split()
+            sub = split.column()
+            sub.active = freestyle.use_advanced_options
+            if freestyle.mode == 'SCRIPT':
+                sub.prop(freestyle, "use_ridges_and_valleys")
+            sub.prop(freestyle, "sphere_radius")
+            sub = split.column()
+            sub.active = freestyle.use_advanced_options
+            if freestyle.mode == 'SCRIPT':
+                sub.prop(freestyle, "use_suggestive_contours")
+            sub.prop(freestyle, "kr_derivative_epsilon")
+
+        if freestyle.mode == 'SCRIPT':
+            split = layout.split()
+            split.label("Style modules:")
+            split.operator("scene.freestyle_module_add", text="Add")
+            for i, module in enumerate(freestyle.modules):
+                box = layout.box()
+                box.context_pointer_set("freestyle_module", module)
+                row = box.row(align=True)
+                row.prop(module, "use", text="")
+                row.prop(module, "module_path", text="")
+                row.operator("scene.freestyle_module_remove", icon='X', text="")
+                row.operator("scene.freestyle_module_move", icon='TRIA_UP', text="").direction = 'UP'
+                row.operator("scene.freestyle_module_move", icon='TRIA_DOWN', text="").direction = 'DOWN'
+
+
+class RENDERLAYER_PT_freestyle_lineset(RenderLayerFreestyleEditorButtonsPanel, Panel):
+    bl_label = "Freestyle Line Set"
+    COMPAT_ENGINES = {'BLENDER_RENDER'}
+
+    def draw_edge_type_buttons(self, box, lineset, edge_type):
+        # property names
+        select_edge_type = "select_" + edge_type
+        exclude_edge_type = "exclude_" + edge_type
+        # draw edge type buttons
+        row = box.row(align=True)
+        row.prop(lineset, select_edge_type)
+        sub = row.column()
+        sub.prop(lineset, exclude_edge_type, text="")
+        sub.active = getattr(lineset, select_edge_type)
+
+    def draw(self, context):
+        rd = context.scene.render
+        rl = rd.layers.active
+        freestyle = rl.freestyle_settings
+        lineset = freestyle.linesets.active
+
+        layout = self.layout
+        layout.active = rl.use_freestyle
+
+        col = layout.column()
+        row = col.row()
+        rows = 5 if lineset else 2
+        row.template_list("RENDERLAYER_UL_linesets", "", freestyle, "linesets", freestyle.linesets, "active_index", rows=rows)
+
+        sub = row.column()
+        subsub = sub.column(align=True)
+        subsub.operator("scene.freestyle_lineset_add", icon='ZOOMIN', text="")
+        subsub.operator("scene.freestyle_lineset_remove", icon='ZOOMOUT', text="")
+        subsub.menu("RENDER_MT_lineset_specials", icon='DOWNARROW_HLT', text="")
+        if lineset:
+            sub.separator()
+            subsub = sub.column(align=True)
+            subsub.operator("scene.freestyle_lineset_move", icon='TRIA_UP', text="").direction = 'UP'
+            subsub.operator("scene.freestyle_lineset_move", icon='TRIA_DOWN', text="").direction = 'DOWN'
+
+            col.prop(lineset, "name")
+
+            col = layout.column()
+            col.label(text="Selection By:")
+            row = col.row(align=True)
+            row.prop(lineset, "select_by_visibility", text="Visibility", toggle=True)
+            row.prop(lineset, "select_by_edge_types", text="Edge Types", toggle=True)
+            row.prop(lineset, "select_by_face_marks", text="Face Marks", toggle=True)
+            row.prop(lineset, "select_by_group", text="Group", toggle=True)
+            row.prop(lineset, "select_by_image_border", text="Image Border", toggle=True)
+
+            if lineset.select_by_visibility:
+                col.label(text="Visibility:")
+                row = col.row(align=True)
+                row.prop(lineset, "visibility", expand=True)
+                if lineset.visibility == 'RANGE':

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list