fix font in panel with callbacks
This commit is contained in:
parent
4d0c42adb3
commit
e23369df94
1 changed files with 64 additions and 21 deletions
85
__init__.py
85
__init__.py
|
@ -148,33 +148,47 @@ class ABC3D_glyph_properties(bpy.types.PropertyGroup):
|
||||||
description="Letter Spacing",
|
description="Letter Spacing",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class ABC3D_text_properties(bpy.types.PropertyGroup):
|
class ABC3D_text_properties(bpy.types.PropertyGroup):
|
||||||
def font_name_items(self, context):
|
|
||||||
out = []
|
def font_items_callback(self, context):
|
||||||
for f in Font.fonts.keys():
|
items = []
|
||||||
out.append((f, f, "A Font"))
|
for f in Font.get_loaded_fonts_and_faces():
|
||||||
return tuple(out)
|
items.append((f"{f[0]} {f[1]}", f"{f[0]} {f[1]}", ""))
|
||||||
def face_name_items(self, context):
|
return items
|
||||||
out = []
|
|
||||||
for ff in Font.fonts[self.font_lol].faces.keys():
|
def font_default_callback(self, context):
|
||||||
out.append((ff, ff, "A Face"))
|
d = context.scene.abc3d_data
|
||||||
return tuple(out)
|
items = self.font_items_callback(context)
|
||||||
def font_name_update_callback(self, context):
|
if len(d.available_fonts) > 0:
|
||||||
self.face_lol = Font.fonts[self.font_lol].faces.keys()[0]
|
if len(d.available_fonts) > d.active_text_index:
|
||||||
update_callback(self, context)
|
f = d.available_fonts[d.active_text_index]
|
||||||
|
return 0 #f"{f.font_name} {f.face_name}"
|
||||||
|
else:
|
||||||
|
f = d.available_fonts[0]
|
||||||
|
return 0 #f"{f.font_name} {f.face_name}"
|
||||||
|
|
||||||
|
if type(self.font_name) != type(None) and type(self.face_name) != type(None):
|
||||||
|
return 0 #f"{self.font_name} {self.face_name}"
|
||||||
|
else:
|
||||||
|
return 0 #""
|
||||||
|
|
||||||
def update_callback(self, context):
|
def update_callback(self, context):
|
||||||
butils.set_text_on_curve(self)
|
butils.set_text_on_curve(self)
|
||||||
|
|
||||||
|
def font_update_callback(self, context):
|
||||||
|
font_name, face_name = self.font.split(" ")
|
||||||
|
self.font_name = font_name
|
||||||
|
self.face_name = face_name
|
||||||
|
self.update_callback(context)
|
||||||
|
|
||||||
text_id: bpy.props.IntProperty()
|
text_id: bpy.props.IntProperty()
|
||||||
|
font: bpy.props.EnumProperty(
|
||||||
|
items=font_items_callback,
|
||||||
|
update=font_update_callback,
|
||||||
|
)
|
||||||
font_name: bpy.props.StringProperty()
|
font_name: bpy.props.StringProperty()
|
||||||
face_name: bpy.props.StringProperty()
|
face_name: bpy.props.StringProperty()
|
||||||
font_lol: bpy.props.EnumProperty(
|
|
||||||
items=font_name_items,
|
|
||||||
update=font_name_update_callback
|
|
||||||
)
|
|
||||||
face_lol: bpy.props.EnumProperty(
|
|
||||||
items=face_name_items,
|
|
||||||
update=update_callback
|
|
||||||
)
|
|
||||||
text_object: bpy.props.PointerProperty(type=bpy.types.Object)
|
text_object: bpy.props.PointerProperty(type=bpy.types.Object)
|
||||||
text: bpy.props.StringProperty(
|
text: bpy.props.StringProperty(
|
||||||
update=update_callback
|
update=update_callback
|
||||||
|
@ -466,6 +480,33 @@ class ABC3D_PT_TextPropertiesPanel(bpy.types.Panel):
|
||||||
return t
|
return t
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
# def font_items_callback(self, context):
|
||||||
|
# items = []
|
||||||
|
# fonts = Font.get_loaded_fonts_and_faces()
|
||||||
|
# for f in fonts:
|
||||||
|
# items.append((f"{f[0]} {f[1]}", f"{f[0]} {f[1]}", ""))
|
||||||
|
# return items
|
||||||
|
|
||||||
|
# def font_default_callback(self, context):
|
||||||
|
# t = self.get_active_text_properties(self)
|
||||||
|
# if type(t) != type(None):
|
||||||
|
# return f"{t.font_name} {t.face_name}"
|
||||||
|
# else:
|
||||||
|
# return None
|
||||||
|
|
||||||
|
# def font_update_callback(self, context):
|
||||||
|
# font_name, face_name = self.font.split(" ")
|
||||||
|
# t = self.get_active_text_properties(self)
|
||||||
|
# t.font_name = font_name
|
||||||
|
# t.face_name = face_name
|
||||||
|
# butils.set_text_on_curve(t)
|
||||||
|
|
||||||
|
# font: bpy.props.EnumProperty(
|
||||||
|
# items=font_items_callback,
|
||||||
|
# default=font_default_callback,
|
||||||
|
# update=font_update_callback,
|
||||||
|
# )
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def poll(self,context):
|
def poll(self,context):
|
||||||
return type(self.get_active_text_properties(self)) != type(None)
|
return type(self.get_active_text_properties(self)) != type(None)
|
||||||
|
@ -486,6 +527,7 @@ class ABC3D_PT_TextPropertiesPanel(bpy.types.Panel):
|
||||||
return
|
return
|
||||||
|
|
||||||
layout.label(text=f"Mom: {props.text_object.name}")
|
layout.label(text=f"Mom: {props.text_object.name}")
|
||||||
|
layout.row().prop(props, "font")
|
||||||
layout.row().prop(props, "text")
|
layout.row().prop(props, "text")
|
||||||
layout.row().prop(props, "letter_spacing")
|
layout.row().prop(props, "letter_spacing")
|
||||||
layout.row().prop(props, "font_size")
|
layout.row().prop(props, "font_size")
|
||||||
|
@ -675,6 +717,7 @@ class ABC3D_OT_PlaceText(bpy.types.Operator):
|
||||||
|
|
||||||
def invoke(self, context, event):
|
def invoke(self, context, event):
|
||||||
wm = context.window_manager
|
wm = context.window_manager
|
||||||
|
self.font_update_callback(context)
|
||||||
return wm.invoke_props_dialog(self)
|
return wm.invoke_props_dialog(self)
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
|
|
Loading…
Reference in a new issue