diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2012-10-28 20:09:51 +0400 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2012-10-28 20:09:51 +0400 |
commit | 5acd5d14970c829c2873623716a67beeb6da5278 (patch) | |
tree | f805a8fd6d5ae5ad4a6d9903f5c26b511a21c32b /release/scripts/startup/bl_ui/properties_render.py | |
parent | f252230216ce0b6e73ed69edb1c05a07ac1e373a (diff) |
Improvements of Freestyle GUI controls - Part 1.
This commit makes a set of fixes and improvements based on the results of
Freestyle branch review by Brecht. The discussion thread is:
http://lists.blender.org/pipermail/bf-committers/2012-October/037927.html
* The Layers panel and Freestyle-related panels in the Render tab of the
Properties window were moved to the newly created Render Layers tab.
The idea is to separate per render layer rendering options into a distinct
Properties window tab, and use the existing Render tab to accommodate
per scene rendering options.
* The new Freestyle panel was added in the Render tab. The panel header
contains a toggle button for globally enabling Freestyle, with the aim of making
Freestyle easier to find. Those Freestyle options in the Post Processing panel
were also moved to the new panel.
* GUI code was updated so that UI controls will be greyed out (instead of
being hidden) when Freestyle is disabled. Additional UI changes were also
made to reduce space consumption.
* The list of line sets was moved from the Freestyle panel to the Freestyle:
Line Sets panel.
* Old ray-casting algorithms were removed from the UI. Now only two
algorithms (culled and non-culled cumulative visibility detection algorithms)
are available, and the selection is done by the new "Culling" toggle button
within the edge detection options.
Diffstat (limited to 'release/scripts/startup/bl_ui/properties_render.py')
-rw-r--r-- | release/scripts/startup/bl_ui/properties_render.py | 686 |
1 files changed, 21 insertions, 665 deletions
diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py index bae0a390ff7..33ce0e07f17 100644 --- a/release/scripts/startup/bl_ui/properties_render.py +++ b/release/scripts/startup/bl_ui/properties_render.py @@ -71,660 +71,6 @@ class RENDER_PT_render(RenderButtonsPanel, Panel): layout.prop(rd, "display_mode", text="Display") -class RENDER_PT_layers(RenderButtonsPanel, Panel): - bl_label = "Layers" - bl_options = {'DEFAULT_CLOSED'} - COMPAT_ENGINES = {'BLENDER_RENDER'} - - def draw(self, context): - layout = self.layout - - scene = context.scene - rd = scene.render - - row = layout.row() - row.template_list(rd, "layers", rd.layers, "active_index", rows=2) - - col = row.column(align=True) - col.operator("scene.render_layer_add", icon='ZOOMIN', text="") - col.operator("scene.render_layer_remove", icon='ZOOMOUT', text="") - - row = layout.row() - rl = rd.layers.active - if rl: - row.prop(rl, "name") - row.prop(rd, "use_single_layer", text="", icon_only=True) - - split = layout.split() - - col = split.column() - col.prop(scene, "layers", text="Scene") - col.label(text="") - col.prop(rl, "light_override", text="Light") - col.prop(rl, "material_override", text="Material") - - col = split.column() - col.prop(rl, "layers", text="Layer") - col.label(text="Mask Layers:") - col.prop(rl, "layers_zmask", text="") - - layout.separator() - layout.label(text="Include:") - - split = layout.split() - - col = split.column() - col.prop(rl, "use_zmask") - row = col.row() - row.prop(rl, "invert_zmask", text="Negate") - row.active = rl.use_zmask - col.prop(rl, "use_all_z") - - col = split.column() - col.prop(rl, "use_solid") - col.prop(rl, "use_halo") - col.prop(rl, "use_ztransp") - col.prop(rl, "use_sky") - - col = split.column() - col.prop(rl, "use_edge_enhance") - col.prop(rl, "use_strand") - col.prop(rl, "use_freestyle") - - layout.separator() - - split = layout.split() - - col = split.column() - col.label(text="Passes:") - col.prop(rl, "use_pass_combined") - col.prop(rl, "use_pass_z") - col.prop(rl, "use_pass_vector") - col.prop(rl, "use_pass_normal") - col.prop(rl, "use_pass_uv") - col.prop(rl, "use_pass_mist") - col.prop(rl, "use_pass_object_index") - col.prop(rl, "use_pass_material_index") - col.prop(rl, "use_pass_color") - - col = split.column() - col.label() - col.prop(rl, "use_pass_diffuse") - row = col.row() - row.prop(rl, "use_pass_specular") - row.prop(rl, "exclude_specular", text="") - row = col.row() - row.prop(rl, "use_pass_shadow") - row.prop(rl, "exclude_shadow", text="") - row = col.row() - row.prop(rl, "use_pass_emit") - row.prop(rl, "exclude_emit", text="") - row = col.row() - row.prop(rl, "use_pass_ambient_occlusion") - row.prop(rl, "exclude_ambient_occlusion", text="") - row = col.row() - row.prop(rl, "use_pass_environment") - row.prop(rl, "exclude_environment", text="") - row = col.row() - row.prop(rl, "use_pass_indirect") - row.prop(rl, "exclude_indirect", text="") - row = col.row() - row.prop(rl, "use_pass_reflection") - row.prop(rl, "exclude_reflection", text="") - row = col.row() - row.prop(rl, "use_pass_refraction") - row.prop(rl, "exclude_refraction", text="") - - -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 RENDER_PT_freestyle(RenderButtonsPanel, Panel): - bl_label = "Freestyle" - COMPAT_ENGINES = {'BLENDER_RENDER'} - - @classmethod - def poll(cls, context): - rd = context.scene.render - if rd.engine not in cls.COMPAT_ENGINES: - return False - rl = rd.layers.active - return rl and rl.use_freestyle - - def draw(self, context): - layout = self.layout - - rd = context.scene.render - rl = rd.layers.active - freestyle = rl.freestyle_settings - - split = layout.split() - - col = split.column() - col.prop(freestyle, "raycasting_algorithm", text="Raycasting Algorithm") - col.prop(freestyle, "mode", text="Control Mode") - - col.label(text="Edge Detection Options:") - col.prop(freestyle, "use_smoothness") - col.prop(freestyle, "crease_angle") - if freestyle.mode == "SCRIPT": - col.prop(freestyle, "use_material_boundaries") - col.prop(freestyle, "use_ridges_and_valleys") - col.prop(freestyle, "use_suggestive_contours") - col.prop(freestyle, "use_advanced_options") - if freestyle.use_advanced_options: - col.prop(freestyle, "sphere_radius") - col.prop(freestyle, "kr_derivative_epsilon") - - if freestyle.mode == "EDITOR": - - lineset = freestyle.linesets.active - - col.label(text="Line Sets:") - row = col.row() - rows = 2 - if lineset: - rows = 5 - row.template_list(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' - - else: # freestyle.mode == "SCRIPT" - - col.separator() - col.operator("scene.freestyle_module_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 RENDER_PT_freestyle_lineset(RenderButtonsPanel, Panel): - bl_label = "Freestyle: Line Set" - COMPAT_ENGINES = {'BLENDER_RENDER'} - - @classmethod - def poll(cls, context): - rd = context.scene.render - if rd.engine not in cls.COMPAT_ENGINES: - return False - rl = rd.layers.active - if rl and rl.use_freestyle: - freestyle = rl.freestyle_settings - return freestyle.mode == "EDITOR" and freestyle.linesets.active - return False - - 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.enabled = getattr(lineset, select_edge_type) - - def draw(self, context): - layout = self.layout - - rd = context.scene.render - rl = rd.layers.active - freestyle = rl.freestyle_settings - lineset = freestyle.linesets.active - - split = layout.split() - - col = split.column() - col.prop(lineset, "name") - - col.prop(lineset, "select_by_visibility") - if lineset.select_by_visibility: - sub = col.row(align=True) - sub.prop(lineset, "visibility", expand=True) - if lineset.visibility == "RANGE": - sub = col.row(align=True) - sub.prop(lineset, "qi_start") - sub.prop(lineset, "qi_end") - col.separator() # XXX - - col.prop(lineset, "select_by_edge_types") - if lineset.select_by_edge_types: - row = col.row() - row.prop(lineset, "edge_type_negation", expand=True) - row = col.row() - row.prop(lineset, "edge_type_combination", expand=True) - - row = col.row() - sub = row.column() - self.draw_edge_type_buttons(sub, lineset, "silhouette") - self.draw_edge_type_buttons(sub, lineset, "border") - self.draw_edge_type_buttons(sub, lineset, "contour") - self.draw_edge_type_buttons(sub, lineset, "suggestive_contour") - self.draw_edge_type_buttons(sub, lineset, "ridge_valley") - sub = row.column() - self.draw_edge_type_buttons(sub, lineset, "crease") - self.draw_edge_type_buttons(sub, lineset, "edge_mark") - self.draw_edge_type_buttons(sub, lineset, "external_contour") - self.draw_edge_type_buttons(sub, lineset, "material_boundary") - col.separator() # XXX - - col.prop(lineset, "select_by_face_marks") - if lineset.select_by_face_marks: - row = col.row() - row.prop(lineset, "face_mark_negation", expand=True) - row = col.row() - row.prop(lineset, "face_mark_condition", expand=True) - col.separator() # XXX - - col.prop(lineset, "select_by_group") - if lineset.select_by_group: - col.prop(lineset, "group") - row = col.row() - row.prop(lineset, "group_negation", expand=True) - col.separator() # XXX - - col.prop(lineset, "select_by_image_border") - - -class RENDER_PT_freestyle_linestyle(RenderButtonsPanel, Panel): - bl_label = "Freestyle: Line Style" - COMPAT_ENGINES = {'BLENDER_RENDER'} - - @classmethod - def poll(cls, context): - rd = context.scene.render - if rd.engine not in cls.COMPAT_ENGINES: - return False - rl = rd.layers.active - if rl and rl.use_freestyle: - freestyle = rl.freestyle_settings - return freestyle.mode == "EDITOR" and freestyle.linesets.active - return False - - def draw_modifier_box_header(self, box, modifier): - row = box.row() - row.context_pointer_set("modifier", modifier) - if modifier.expanded: - icon = "TRIA_DOWN" - else: - icon = "TRIA_RIGHT" - row.prop(modifier, "expanded", text="", icon=icon, emboss=False) - row.label(text=modifier.rna_type.name) - row.prop(modifier, "name", text="") - row.prop(modifier, "use", text="") - row.operator("scene.freestyle_modifier_copy", icon='NONE', text="Copy") - sub = row.row(align=True) - sub.operator("scene.freestyle_modifier_move", icon='TRIA_UP', text="").direction = 'UP' - sub.operator("scene.freestyle_modifier_move", icon='TRIA_DOWN', text="").direction = 'DOWN' - row.operator("scene.freestyle_modifier_remove", icon='X', text="") - - def draw_modifier_common(self, box, modifier): - row = box.row() - row.prop(modifier, "blend", text="") - row.prop(modifier, "influence") - - def draw_modifier_color_ramp_common(self, box, modifier, has_range): - box.template_color_ramp(modifier, "color_ramp", expand=True) - if has_range: - row = box.row(align=True) - row.prop(modifier, "range_min") - row.prop(modifier, "range_max") - - def draw_modifier_curve_common(self, box, modifier, has_range, has_value): - row = box.row() - row.prop(modifier, "mapping", text="") - sub = row.column() - sub.prop(modifier, "invert") - if modifier.mapping == "CURVE": - sub.enabled = False - box.template_curve_mapping(modifier, "curve") - if has_range: - row = box.row(align=True) - row.prop(modifier, "range_min") - row.prop(modifier, "range_max") - if has_value: - row = box.row(align=True) - row.prop(modifier, "value_min") - row.prop(modifier, "value_max") - - def draw_color_modifier(self, context, modifier): - layout = self.layout - - col = layout.column(align=True) - self.draw_modifier_box_header(col.box(), modifier) - if modifier.expanded: - box = col.box() - self.draw_modifier_common(box, modifier) - - if modifier.type == "ALONG_STROKE": - self.draw_modifier_color_ramp_common(box, modifier, False) - - elif modifier.type == "DISTANCE_FROM_OBJECT": - box.prop(modifier, "target") - self.draw_modifier_color_ramp_common(box, modifier, True) - prop = box.operator("scene.freestyle_fill_range_by_selection") - prop.type = 'COLOR' - prop.name = modifier.name - - elif modifier.type == "DISTANCE_FROM_CAMERA": - self.draw_modifier_color_ramp_common(box, modifier, True) - prop = box.operator("scene.freestyle_fill_range_by_selection") - prop.type = 'COLOR' - prop.name = modifier.name - - elif modifier.type == "MATERIAL": - row = box.row() - row.prop(modifier, "material_attr", text="") - sub = row.column() - sub.prop(modifier, "use_ramp") - if modifier.material_attr in ["DIFF", "SPEC"]: - sub.enabled = True - show_ramp = modifier.use_ramp - else: - sub.enabled = False - show_ramp = True - if show_ramp: - self.draw_modifier_color_ramp_common(box, modifier, False) - - def draw_alpha_modifier(self, context, modifier): - layout = self.layout - - col = layout.column(align=True) - self.draw_modifier_box_header(col.box(), modifier) - if modifier.expanded: - box = col.box() - self.draw_modifier_common(box, modifier) - - if modifier.type == "ALONG_STROKE": - self.draw_modifier_curve_common(box, modifier, False, False) - - elif modifier.type == "DISTANCE_FROM_OBJECT": - box.prop(modifier, "target") - self.draw_modifier_curve_common(box, modifier, True, False) - prop = box.operator("scene.freestyle_fill_range_by_selection") - prop.type = 'ALPHA' - prop.name = modifier.name - - elif modifier.type == "DISTANCE_FROM_CAMERA": - self.draw_modifier_curve_common(box, modifier, True, False) - prop = box.operator("scene.freestyle_fill_range_by_selection") - prop.type = 'ALPHA' - prop.name = modifier.name - - elif modifier.type == "MATERIAL": - box.prop(modifier, "material_attr", text="") - self.draw_modifier_curve_common(box, modifier, False, False) - - def draw_thickness_modifier(self, context, modifier): - layout = self.layout - - col = layout.column(align=True) - self.draw_modifier_box_header(col.box(), modifier) - if modifier.expanded: - box = col.box() - self.draw_modifier_common(box, modifier) - - if modifier.type == "ALONG_STROKE": - self.draw_modifier_curve_common(box, modifier, False, True) - - elif modifier.type == "DISTANCE_FROM_OBJECT": - box.prop(modifier, "target") - self.draw_modifier_curve_common(box, modifier, True, True) - prop = box.operator("scene.freestyle_fill_range_by_selection") - prop.type = 'THICKNESS' - prop.name = modifier.name - - elif modifier.type == "DISTANCE_FROM_CAMERA": - self.draw_modifier_curve_common(box, modifier, True, True) - prop = box.operator("scene.freestyle_fill_range_by_selection") - prop.type = 'THICKNESS' - prop.name = modifier.name - - elif modifier.type == "MATERIAL": - box.prop(modifier, "material_attr", text="") - self.draw_modifier_curve_common(box, modifier, False, True) - - elif modifier.type == "CALLIGRAPHY": - col = box.column() - col.prop(modifier, "orientation") - col.prop(modifier, "min_thickness") - col.prop(modifier, "max_thickness") - - def draw_geometry_modifier(self, context, modifier): - layout = self.layout - - col = layout.column(align=True) - self.draw_modifier_box_header(col.box(), modifier) - if modifier.expanded: - box = col.box() - - if modifier.type == "SAMPLING": - box.prop(modifier, "sampling") - - elif modifier.type == "BEZIER_CURVE": - box.prop(modifier, "error") - - elif modifier.type == "SINUS_DISPLACEMENT": - box.prop(modifier, "wavelength") - box.prop(modifier, "amplitude") - box.prop(modifier, "phase") - - elif modifier.type == "SPATIAL_NOISE": - box.prop(modifier, "amplitude") - box.prop(modifier, "scale") - box.prop(modifier, "octaves") - sub = box.row() - sub.prop(modifier, "smooth") - sub.prop(modifier, "pure_random") - - elif modifier.type == "PERLIN_NOISE_1D": - box.prop(modifier, "frequency") - box.prop(modifier, "amplitude") - box.prop(modifier, "octaves") - box.prop(modifier, "angle") - box.prop(modifier, "seed") - - elif modifier.type == "PERLIN_NOISE_2D": - box.prop(modifier, "frequency") - box.prop(modifier, "amplitude") - box.prop(modifier, "octaves") - box.prop(modifier, "angle") - box.prop(modifier, "seed") - - elif modifier.type == "BACKBONE_STRETCHER": - box.prop(modifier, "backbone_length") - - elif modifier.type == "TIP_REMOVER": - box.prop(modifier, "tip_length") - - elif modifier.type == "POLYGONIZATION": - box.prop(modifier, "error") - - elif modifier.type == "GUIDING_LINES": - box.prop(modifier, "offset") - - elif modifier.type == "BLUEPRINT": - row = box.row() - row.prop(modifier, "shape", expand=True) - box.prop(modifier, "rounds") - if modifier.shape in ["CIRCLES", "ELLIPSES"]: - box.prop(modifier, "random_radius") - box.prop(modifier, "random_center") - elif modifier.shape == "SQUARES": - box.prop(modifier, "backbone_length") - box.prop(modifier, "random_backbone") - - elif modifier.type == "2D_OFFSET": - row = box.row(align=True) - row.prop(modifier, "start") - row.prop(modifier, "end") - row = box.row(align=True) - row.prop(modifier, "x") - row.prop(modifier, "y") - - elif modifier.type == "2D_TRANSFORM": - box.prop(modifier, "pivot") - if modifier.pivot == "PARAM": - box.prop(modifier, "pivot_u") - elif modifier.pivot == "ABSOLUTE": - row = box.row(align=True) - row.prop(modifier, "pivot_x") - row.prop(modifier, "pivot_y") - row = box.row(align=True) - row.prop(modifier, "scale_x") - row.prop(modifier, "scale_y") - box.prop(modifier, "angle") - - def draw(self, context): - layout = self.layout - - rd = context.scene.render - rl = rd.layers.active - lineset = rl.freestyle_settings.linesets.active - linestyle = lineset.linestyle - - layout.template_ID(lineset, "linestyle", new="scene.freestyle_linestyle_new") - row = layout.row(align=True) - row.prop(linestyle, "panel", expand=True) - if linestyle.panel == "STROKES": - # Chaining - col = layout.column() - col.prop(linestyle, "use_chaining", text="Chaining:") - sub = col.column() - sub.enabled = linestyle.use_chaining - sub.prop(linestyle, "chaining", text="") - if linestyle.chaining == "PLAIN": - sub.prop(linestyle, "same_object") - elif linestyle.chaining == "SKETCHY": - subsub = sub.row() - subsub.prop(linestyle, "same_object") - subsub.prop(linestyle, "rounds") - # Splitting - col = layout.column() - col.label(text="Splitting:") - row = col.row() - row.prop(linestyle, "material_boundary") - row = col.row() - sub = row.column() - sub.prop(linestyle, "use_min_angle", text="Min 2D Angle") - subsub = sub.split() - subsub.prop(linestyle, "min_angle", text="") - subsub.enabled = linestyle.use_min_angle - sub = row.column() - sub.prop(linestyle, "use_max_angle", text="Max 2D Angle") - subsub = sub.split() - subsub.prop(linestyle, "max_angle", text="") - subsub.enabled = linestyle.use_max_angle - col.prop(linestyle, "use_split_length", text="2D Length") - row = col.row() - row.prop(linestyle, "split_length", text="") - row.enabled = linestyle.use_split_length - # Selection - col = layout.column() - col.label(text="Selection:") - sub = col.row() - subcol = sub.column() - subcol.prop(linestyle, "use_min_length", text="Min 2D Length") - subsub = subcol.split() - subsub.prop(linestyle, "min_length", text="") - subsub.enabled = linestyle.use_min_length - subcol = sub.column() - subcol.prop(linestyle, "use_max_length", text="Max 2D Length") - subsub = subcol.split() - subsub.prop(linestyle, "max_length", text="") - subsub.enabled = linestyle.use_max_length - # Caps - col = layout.column() - col.label(text="Caps:") - row = col.row(align=True) - row.prop(linestyle, "caps", expand=True) - col = layout.column() - col.prop(linestyle, "use_dashed_line") - split = col.split() - split.enabled = linestyle.use_dashed_line - sub = split.column() - sub.label(text="Dash") - sub.prop(linestyle, "dash1", text="") - sub = split.column() - sub.label(text="Gap") - sub.prop(linestyle, "gap1", text="") - sub = split.column() - sub.label(text="Dash") - sub.prop(linestyle, "dash2", text="") - sub = split.column() - sub.label(text="Gap") - sub.prop(linestyle, "gap2", text="") - sub = split.column() - sub.label(text="Dash") - sub.prop(linestyle, "dash3", text="") - sub = split.column() - sub.label(text="Gap") - sub.prop(linestyle, "gap3", text="") - elif linestyle.panel == "COLOR": - col = layout.column() - col.label(text="Base Color:") - col.prop(linestyle, "color", text="") - col = layout.column() - col.label(text="Modifiers:") - col.operator_menu_enum("scene.freestyle_color_modifier_add", "type", text="Add Modifier") - for modifier in linestyle.color_modifiers: - self.draw_color_modifier(context, modifier) - elif linestyle.panel == "ALPHA": - col = layout.column() - col.label(text="Base Transparency:") - col.prop(linestyle, "alpha") - col = layout.column() - col.label(text="Modifiers:") - col.operator_menu_enum("scene.freestyle_alpha_modifier_add", "type", text="Add Modifier") - for modifier in linestyle.alpha_modifiers: - self.draw_alpha_modifier(context, modifier) - elif linestyle.panel == "THICKNESS": - col = layout.column() - col.label(text="Base Thickness:") - col.prop(linestyle, "thickness") - col = layout.column() - row = col.row() - row.prop(linestyle, "thickness_position", expand=True) - row = col.row() - row.prop(linestyle, "thickness_ratio") - row.enabled = linestyle.thickness_position == "RELATIVE" - col = layout.column() - col.label(text="Modifiers:") - col.operator_menu_enum("scene.freestyle_thickness_modifier_add", "type", text="Add Modifier") - for modifier in linestyle.thickness_modifiers: - self.draw_thickness_modifier(context, modifier) - elif linestyle.panel == "GEOMETRY": - col = layout.column() - col.label(text="Modifiers:") - col.operator_menu_enum("scene.freestyle_geometry_modifier_add", "type", text="Add Modifier") - for modifier in linestyle.geometry_modifiers: - self.draw_geometry_modifier(context, modifier) - elif linestyle.panel == "MISC": - pass - - class RENDER_PT_dimensions(RenderButtonsPanel, Panel): bl_label = "Dimensions" COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -948,19 +294,29 @@ class RENDER_PT_post_processing(RenderButtonsPanel, Panel): sub.prop(rd, "edge_threshold", text="Threshold", slider=True) sub.prop(rd, "edge_color", text="") - layout.separator() - split = layout.split() +class RENDER_PT_freestyle(RenderButtonsPanel, Panel): + bl_label = "Freestyle" + bl_options = {'DEFAULT_CLOSED'} + COMPAT_ENGINES = {'BLENDER_RENDER'} - col = split.column() - col.prop(rd, "use_freestyle", text="Freestyle") - sub = col.column() - sub.label(text="Line Thickness:") - sub.active = rd.use_freestyle - sub.row().prop(rd, "line_thickness_mode", expand=True) - subrow = sub.row() - subrow.active = (rd.line_thickness_mode == "ABSOLUTE") - subrow.prop(rd, "unit_line_thickness") + 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.enabled = rd.use_freestyle + + row = layout.row() + row.label(text="Line Thickness:") + row.prop(rd, "line_thickness_mode", expand=True) + row = layout.row() + row.enabled = (rd.line_thickness_mode == "ABSOLUTE") + row.prop(rd, "unit_line_thickness") class RENDER_PT_stamp(RenderButtonsPanel, Panel): |