Compare commits
No commits in common. "49699db30983a49c6f29076b3b08d0f1ed8bdd58" and "88f5579d40e31407e997bca36a6a9945603a1313" have entirely different histories.
49699db309
...
88f5579d40
2 changed files with 23 additions and 26 deletions
27
__init__.py
27
__init__.py
|
@ -180,13 +180,10 @@ class ABC3D_text_properties(bpy.types.PropertyGroup):
|
||||||
|
|
||||||
def glyphs_update_callback(self, context):
|
def glyphs_update_callback(self, context):
|
||||||
butils.prepare_text(self.font_name, self.face_name, self.text)
|
butils.prepare_text(self.font_name, self.face_name, self.text)
|
||||||
butils.set_text_on_curve(self, can_regenerate=True)
|
butils.set_text_on_curve(self)
|
||||||
|
|
||||||
def update_callback(self, context):
|
def update_callback(self, context):
|
||||||
try:
|
butils.set_text_on_curve(self)
|
||||||
butils.set_text_on_curve(self)
|
|
||||||
except (AttributeError, TypeError):
|
|
||||||
butils.set_text_on_curve(self, can_regenerate=True)
|
|
||||||
|
|
||||||
def font_update_callback(self, context):
|
def font_update_callback(self, context):
|
||||||
font_name, face_name = self.font.split(" ")
|
font_name, face_name = self.font.split(" ")
|
||||||
|
@ -1324,8 +1321,8 @@ class ABC3D_OT_PlaceText(bpy.types.Operator):
|
||||||
# t['font'] = self.font # enums want to be set as attribute
|
# t['font'] = self.font # enums want to be set as attribute
|
||||||
t["font_name"] = self.font_name
|
t["font_name"] = self.font_name
|
||||||
t["face_name"] = self.face_name
|
t["face_name"] = self.face_name
|
||||||
t["text_object"] = selected
|
t.text_object = selected
|
||||||
t.text = self.text
|
t["text"] = self.text
|
||||||
t["letter_spacing"] = self.letter_spacing
|
t["letter_spacing"] = self.letter_spacing
|
||||||
t["font_size"] = self.font_size
|
t["font_size"] = self.font_size
|
||||||
t["offset"] = self.offset
|
t["offset"] = self.offset
|
||||||
|
@ -1832,10 +1829,9 @@ def load_used_glyphs():
|
||||||
def load_handler(self, dummy):
|
def load_handler(self, dummy):
|
||||||
if not bpy.app.timers.is_registered(butils.execute_queued_functions):
|
if not bpy.app.timers.is_registered(butils.execute_queued_functions):
|
||||||
bpy.app.timers.register(butils.execute_queued_functions)
|
bpy.app.timers.register(butils.execute_queued_functions)
|
||||||
butils.run_in_main_thread(butils.register_installed_fonts)
|
|
||||||
butils.run_in_main_thread(butils.update_available_fonts)
|
butils.run_in_main_thread(butils.update_available_fonts)
|
||||||
|
butils.run_in_main_thread(bpy.ops.abc3d.load_installed_fonts)
|
||||||
butils.run_in_main_thread(load_used_glyphs)
|
butils.run_in_main_thread(load_used_glyphs)
|
||||||
butils.run_in_main_thread(butils.update_types)
|
|
||||||
|
|
||||||
|
|
||||||
def load_handler_unload():
|
def load_handler_unload():
|
||||||
|
@ -1914,18 +1910,19 @@ def register():
|
||||||
# and autostart if we reload script
|
# and autostart if we reload script
|
||||||
load_handler(None, None)
|
load_handler(None, None)
|
||||||
|
|
||||||
if on_frame_changed not in bpy.app.handlers.frame_change_pre:
|
if on_frame_changed not in bpy.app.handlers.frame_change_post:
|
||||||
bpy.app.handlers.frame_change_pre.append(on_frame_changed)
|
bpy.app.handlers.frame_change_post.append(on_frame_changed)
|
||||||
|
|
||||||
if on_depsgraph_update not in bpy.app.handlers.depsgraph_update_post:
|
if on_depsgraph_update not in bpy.app.handlers.depsgraph_update_post:
|
||||||
bpy.app.handlers.depsgraph_update_post.append(on_depsgraph_update)
|
bpy.app.handlers.depsgraph_update_post.append(on_depsgraph_update)
|
||||||
|
|
||||||
butils.run_in_main_thread(butils.clear_available_fonts)
|
butils.run_in_main_thread(butils.clear_available_fonts)
|
||||||
butils.run_in_main_thread(butils.register_installed_fonts)
|
# butils.run_in_main_thread(butils.load_installed_fonts)
|
||||||
butils.run_in_main_thread(butils.update_available_fonts)
|
butils.run_in_main_thread(butils.update_available_fonts)
|
||||||
butils.run_in_main_thread(load_used_glyphs)
|
|
||||||
butils.run_in_main_thread(butils.update_types)
|
butils.run_in_main_thread(butils.update_types)
|
||||||
|
|
||||||
|
# bpy.ops.abc3d.load_installed_fonts()
|
||||||
|
|
||||||
Font.init()
|
Font.init()
|
||||||
|
|
||||||
|
|
||||||
|
@ -1941,8 +1938,8 @@ def unregister():
|
||||||
# and when reload script
|
# and when reload script
|
||||||
load_handler_unload()
|
load_handler_unload()
|
||||||
|
|
||||||
if on_frame_changed in bpy.app.handlers.frame_change_pre:
|
if on_frame_changed in bpy.app.handlers.frame_change_post:
|
||||||
bpy.app.handlers.frame_change_pre.remove(on_frame_changed)
|
bpy.app.handlers.frame_change_post.remove(on_frame_changed)
|
||||||
|
|
||||||
if on_depsgraph_update in bpy.app.handlers.depsgraph_update_post:
|
if on_depsgraph_update in bpy.app.handlers.depsgraph_update_post:
|
||||||
bpy.app.handlers.depsgraph_update_post.remove(on_depsgraph_update)
|
bpy.app.handlers.depsgraph_update_post.remove(on_depsgraph_update)
|
||||||
|
|
22
butils.py
22
butils.py
|
@ -634,6 +634,7 @@ def ShowMessageBox(title="Message Box", icon="INFO", message="", prevent_repeat=
|
||||||
if prevent_repeat:
|
if prevent_repeat:
|
||||||
for m in message_memory:
|
for m in message_memory:
|
||||||
if m[0] == title and m[1] == icon and m[2] == message:
|
if m[0] == title and m[1] == icon and m[2] == message:
|
||||||
|
print("PREVENT PREVENT")
|
||||||
return
|
return
|
||||||
message_memory.append([title, icon, message])
|
message_memory.append([title, icon, message])
|
||||||
myLines = message
|
myLines = message
|
||||||
|
@ -777,7 +778,7 @@ def is_bezier(curve):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
def would_regenerate(text_properties):
|
def will_regenerate(text_properties):
|
||||||
mom = text_properties.text_object
|
mom = text_properties.text_object
|
||||||
|
|
||||||
if len(text_properties.text) != len(text_properties.glyphs):
|
if len(text_properties.text) != len(text_properties.glyphs):
|
||||||
|
@ -843,7 +844,7 @@ def parent_to_curve(o, c):
|
||||||
p = cm.vertices[0].co
|
p = cm.vertices[0].co
|
||||||
o.matrix_parent_inverse.translation = p * -1.0
|
o.matrix_parent_inverse.translation = p * -1.0
|
||||||
|
|
||||||
def set_text_on_curve(text_properties, reset_timeout_s=0.1, reset_depsgraph_n=4, can_regenerate=False):
|
def set_text_on_curve(text_properties, reset_timeout_s=0.1, reset_depsgraph_n=4):
|
||||||
"""set_text_on_curve
|
"""set_text_on_curve
|
||||||
|
|
||||||
An earlier reset cancels the other.
|
An earlier reset cancels the other.
|
||||||
|
@ -879,7 +880,7 @@ def set_text_on_curve(text_properties, reset_timeout_s=0.1, reset_depsgraph_n=4,
|
||||||
# elif distribution_type == "FOLLOW_PATH":
|
# elif distribution_type == "FOLLOW_PATH":
|
||||||
# mom.data.use_path = True
|
# mom.data.use_path = True
|
||||||
|
|
||||||
regenerate = can_regenerate and would_regenerate(text_properties)
|
regenerate = will_regenerate(text_properties)
|
||||||
|
|
||||||
# if we regenerate.... delete objects
|
# if we regenerate.... delete objects
|
||||||
if regenerate and text_properties.get("glyphs"):
|
if regenerate and text_properties.get("glyphs"):
|
||||||
|
@ -954,13 +955,12 @@ def set_text_on_curve(text_properties, reset_timeout_s=0.1, reset_depsgraph_n=4,
|
||||||
message = message + f" (replaced with '{possible_replacement}')"
|
message = message + f" (replaced with '{possible_replacement}')"
|
||||||
replaced = True
|
replaced = True
|
||||||
|
|
||||||
if can_regenerate:
|
ShowMessageBox(
|
||||||
ShowMessageBox(
|
title="Glyph replaced" if replaced else "Glyph missing",
|
||||||
title="Glyph replaced" if replaced else "Glyph missing",
|
icon="INFO" if replaced else "ERROR",
|
||||||
icon="INFO" if replaced else "ERROR",
|
message=message,
|
||||||
message=message,
|
prevent_repeat=True,
|
||||||
prevent_repeat=True,
|
)
|
||||||
)
|
|
||||||
if not replaced:
|
if not replaced:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
@ -998,7 +998,6 @@ def set_text_on_curve(text_properties, reset_timeout_s=0.1, reset_depsgraph_n=4,
|
||||||
inner_node.parent = outer_node
|
inner_node.parent = outer_node
|
||||||
inner_node.matrix_parent_inverse = outer_node.matrix_world.inverted()
|
inner_node.matrix_parent_inverse = outer_node.matrix_world.inverted()
|
||||||
parent_to_curve(outer_node, mom)
|
parent_to_curve(outer_node, mom)
|
||||||
outer_node.hide_set(True)
|
|
||||||
|
|
||||||
glyph_properties["glyph_object"] = outer_node
|
glyph_properties["glyph_object"] = outer_node
|
||||||
else:
|
else:
|
||||||
|
@ -1081,6 +1080,7 @@ def set_text_on_curve(text_properties, reset_timeout_s=0.1, reset_depsgraph_n=4,
|
||||||
inner_node.rotation_mode = previous_inner_node_rotation_mode
|
inner_node.rotation_mode = previous_inner_node_rotation_mode
|
||||||
|
|
||||||
# outer_node.hide_viewport = True
|
# outer_node.hide_viewport = True
|
||||||
|
outer_node.hide_set(True)
|
||||||
|
|
||||||
############### PREPARE FOR THE NEXT
|
############### PREPARE FOR THE NEXT
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue