forked from bartvdbraak/blender
Fix for curve pinning raising an exception
This commit is contained in:
parent
3a370ec6ec
commit
2a55d68e19
@ -21,6 +21,8 @@ import bpy
|
|||||||
from bpy.types import Panel
|
from bpy.types import Panel
|
||||||
from rna_prop_ui import PropertyPanel
|
from rna_prop_ui import PropertyPanel
|
||||||
|
|
||||||
|
from bpy.types import Curve, SurfaceCurve, TextCurve
|
||||||
|
|
||||||
|
|
||||||
class CurveButtonsPanel():
|
class CurveButtonsPanel():
|
||||||
bl_space_type = 'PROPERTIES'
|
bl_space_type = 'PROPERTIES'
|
||||||
@ -29,15 +31,25 @@ class CurveButtonsPanel():
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def poll(cls, context):
|
def poll(cls, context):
|
||||||
return (context.object and context.object.type in {'CURVE', 'SURFACE', 'FONT'} and context.curve)
|
return (context.curve is not None)
|
||||||
|
|
||||||
|
|
||||||
class CurveButtonsPanelCurve(CurveButtonsPanel):
|
class CurveButtonsPanelCurve(CurveButtonsPanel):
|
||||||
"""Same as above but for curves only"""
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def poll(cls, context):
|
def poll(cls, context):
|
||||||
return (context.object and context.object.type == 'CURVE' and context.curve)
|
return (type(context.curve) is Curve)
|
||||||
|
|
||||||
|
|
||||||
|
class CurveButtonsPanelSurface(CurveButtonsPanel):
|
||||||
|
@classmethod
|
||||||
|
def poll(cls, context):
|
||||||
|
return (type(context.curve) is SurfaceCurve)
|
||||||
|
|
||||||
|
|
||||||
|
class CurveButtonsPanelText(CurveButtonsPanel):
|
||||||
|
@classmethod
|
||||||
|
def poll(cls, context):
|
||||||
|
return (type(context.curve) is TextCurve)
|
||||||
|
|
||||||
|
|
||||||
class CurveButtonsPanelActive(CurveButtonsPanel):
|
class CurveButtonsPanelActive(CurveButtonsPanel):
|
||||||
@ -46,7 +58,7 @@ class CurveButtonsPanelActive(CurveButtonsPanel):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def poll(cls, context):
|
def poll(cls, context):
|
||||||
curve = context.curve
|
curve = context.curve
|
||||||
return (curve and type(curve) is not bpy.types.TextCurve and curve.splines.active)
|
return (curve and type(curve) is not TextCurve and curve.splines.active)
|
||||||
|
|
||||||
|
|
||||||
class DATA_PT_context_curve(CurveButtonsPanel, Panel):
|
class DATA_PT_context_curve(CurveButtonsPanel, Panel):
|
||||||
@ -56,14 +68,14 @@ class DATA_PT_context_curve(CurveButtonsPanel, Panel):
|
|||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
ob = context.object
|
obj = context.object
|
||||||
curve = context.curve
|
curve = context.curve
|
||||||
space = context.space_data
|
space = context.space_data
|
||||||
|
|
||||||
if ob:
|
if obj:
|
||||||
layout.template_ID(ob, "data")
|
layout.template_ID(obj, "data")
|
||||||
elif curve:
|
elif curve:
|
||||||
layout.template_ID(space, "pin_id") # XXX: broken
|
layout.template_ID(space, "pin_id")
|
||||||
|
|
||||||
|
|
||||||
class DATA_PT_shape_curve(CurveButtonsPanel, Panel):
|
class DATA_PT_shape_curve(CurveButtonsPanel, Panel):
|
||||||
@ -72,11 +84,10 @@ class DATA_PT_shape_curve(CurveButtonsPanel, Panel):
|
|||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
ob = context.object
|
|
||||||
curve = context.curve
|
curve = context.curve
|
||||||
is_surf = (ob.type == 'SURFACE')
|
is_surf = type(curve) is SurfaceCurve
|
||||||
is_curve = (ob.type == 'CURVE')
|
is_curve = type(curve) is Curve
|
||||||
is_text = (ob.type == 'FONT')
|
is_text = type(curve) is TextCurve
|
||||||
|
|
||||||
if is_curve:
|
if is_curve:
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
@ -143,17 +154,9 @@ class DATA_PT_curve_texture_space(CurveButtonsPanel, Panel):
|
|||||||
layout.operator("curve.match_texture_space")
|
layout.operator("curve.match_texture_space")
|
||||||
|
|
||||||
|
|
||||||
class DATA_PT_geometry_curve(CurveButtonsPanel, Panel):
|
class DATA_PT_geometry_curve(CurveButtonsPanelSurface, Panel):
|
||||||
bl_label = "Geometry"
|
bl_label = "Geometry"
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def poll(cls, context):
|
|
||||||
obj = context.object
|
|
||||||
if obj and obj.type == 'SURFACE':
|
|
||||||
return False
|
|
||||||
|
|
||||||
return context.curve
|
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
@ -216,10 +219,9 @@ class DATA_PT_active_spline(CurveButtonsPanelActive, Panel):
|
|||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
ob = context.object
|
|
||||||
curve = context.curve
|
curve = context.curve
|
||||||
act_spline = curve.splines.active
|
act_spline = curve.splines.active
|
||||||
is_surf = (ob.type == 'SURFACE')
|
is_surf = type(curve) is SurfaceCurve
|
||||||
is_poly = (act_spline.type == 'POLY')
|
is_poly = (act_spline.type == 'POLY')
|
||||||
|
|
||||||
split = layout.split()
|
split = layout.split()
|
||||||
@ -281,13 +283,9 @@ class DATA_PT_active_spline(CurveButtonsPanelActive, Panel):
|
|||||||
layout.prop(act_spline, "use_smooth")
|
layout.prop(act_spline, "use_smooth")
|
||||||
|
|
||||||
|
|
||||||
class DATA_PT_font(CurveButtonsPanel, Panel):
|
class DATA_PT_font(CurveButtonsPanelText, Panel):
|
||||||
bl_label = "Font"
|
bl_label = "Font"
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def poll(cls, context):
|
|
||||||
return (context.object and context.object.type == 'FONT' and context.curve)
|
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
@ -345,13 +343,9 @@ class DATA_PT_font(CurveButtonsPanel, Panel):
|
|||||||
row.prop(char, "use_small_caps")
|
row.prop(char, "use_small_caps")
|
||||||
|
|
||||||
|
|
||||||
class DATA_PT_paragraph(CurveButtonsPanel, Panel):
|
class DATA_PT_paragraph(CurveButtonsPanelText, Panel):
|
||||||
bl_label = "Paragraph"
|
bl_label = "Paragraph"
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def poll(cls, context):
|
|
||||||
return (context.object and context.object.type == 'FONT' and context.curve)
|
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
@ -374,13 +368,9 @@ class DATA_PT_paragraph(CurveButtonsPanel, Panel):
|
|||||||
col.prop(text, "offset_y", text="Y")
|
col.prop(text, "offset_y", text="Y")
|
||||||
|
|
||||||
|
|
||||||
class DATA_PT_text_boxes(CurveButtonsPanel, Panel):
|
class DATA_PT_text_boxes(CurveButtonsPanelText, Panel):
|
||||||
bl_label = "Text Boxes"
|
bl_label = "Text Boxes"
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def poll(cls, context):
|
|
||||||
return (context.object and context.object.type == 'FONT' and context.curve)
|
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user