Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PEP 8 formatting. #160

Merged
merged 1 commit into from
Nov 22, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion addons/io_hubs_addon/components/definitions/image.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ class Image(HubsComponent):
src: StringProperty(
name="Image URL", description="The web address of the image", default="https://mozilla.org")

controls: BoolProperty(name="Controls", description="When enabled, shows an \"open link\" button when hovering your cursor over it in Hubs that allows you to open the image in a new tab", default=True)
controls: BoolProperty(
name="Controls", description="When enabled, shows an \"open link\" button when hovering your cursor over it in Hubs that allows you to open the image in a new tab", default=True)

alphaMode: EnumProperty(
name="Transparency Mode",
Expand Down
108 changes: 73 additions & 35 deletions addons/io_hubs_addon/components/definitions/loop_animation.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

msgbus_owner = None


class TrackPropertyType(PropertyGroup):
name: StringProperty(
name="Display Name",
Expand All @@ -17,11 +18,11 @@ class TrackPropertyType(PropertyGroup):
name="Track Name",
description="Track Name",
)
strip_name: StringProperty( # Will only contain data if the track name is generic
strip_name: StringProperty( # Will only contain data if the track name is generic
name="Strip Name",
description="Strip Name",
)
action_name: StringProperty( # Will only contain data if the track name is generic
action_name: StringProperty( # Will only contain data if the track name is generic
name="Action Name",
description="Action Name",
)
Expand All @@ -31,18 +32,20 @@ class TrackPropertyType(PropertyGroup):
items=[
("object", "Object", "Object"),
("shape_key", "Shape Key", "Shape Key")
],
],
default="object"
)


class Errors():
_errors = {}

@classmethod
def log(cls, track, error_type, error_message, severity='Error'):
has_error = cls._errors.get(track.track_type+track.name, '')
if not has_error:
cls._errors[track.track_type+track.name] = {'type': error_type, 'message': error_message, 'severity': severity}
cls._errors[track.track_type+track.name] = {
'type': error_type, 'message': error_message, 'severity': severity}

@classmethod
def get(cls, track):
Expand All @@ -67,14 +70,16 @@ def display_error(cls, layout, error):
error_row.scale_y = 0.7

if i == 0:
error_row.label(text=f"{error['severity']}: {line}", icon='ERROR')
error_row.label(
text=f"{error['severity']}: {line}", icon='ERROR')
else:
error_row.label(text=line, icon='BLANK1')

padding = layout.row(align=False)
padding.scale_y = 0.2
padding.label()


def register_msgbus():
global msgbus_owner

Expand Down Expand Up @@ -104,6 +109,7 @@ def register_msgbus():
notify=redraw_component_ui,
)


def unregister_msgbus():
global msgbus_owner
if not msgbus_owner:
Expand All @@ -112,37 +118,45 @@ def unregister_msgbus():
bpy.msgbus.clear_by_owner(msgbus_owner)
msgbus_owner = None


@persistent
def load_post(dummy):
unregister_msgbus()
register_msgbus()


@persistent
def undo_redo_post(dummy):
unregister_msgbus()
register_msgbus()


def is_default_name(track_name):
return bool(track_name.startswith("NlaTrack") or track_name.startswith("[Action Stash]"))


def get_display_name(track_name, strip_name):
return track_name if not is_default_name(track_name) else f"{track_name} ({strip_name})"


def get_strip_name(nla_track):
try:
return nla_track.strips[0].name
except IndexError:
return ''


def get_action_name(nla_track):
try:
return nla_track.strips[0].action.name
except (IndexError, AttributeError):
return ''


def get_menu_id(nla_track, track_type, display_name):
return display_name if not is_default_name(nla_track.name) else track_type+display_name


def is_unique_action(animation_data, target_nla_track):
try:
target_action = target_nla_track.strips[0].action
Expand All @@ -163,6 +177,7 @@ def is_unique_action(animation_data, target_nla_track):

return True


def has_track(tracks_list, nla_track, invalid_track=None):
strip_name = get_strip_name(nla_track)
action_name = get_action_name(nla_track)
Expand All @@ -180,6 +195,7 @@ def has_track(tracks_list, nla_track, invalid_track=None):

return exists


def is_matching_track(nla_track_type, nla_track, track):
if nla_track_type != track.track_type:
return False
Expand All @@ -190,14 +206,16 @@ def is_matching_track(nla_track_type, nla_track, track):
if get_action_name(nla_track) == track.action_name:
return True

Errors.log(track, 'INVALID_ACTION', "The action has changed for this strip/track.\nChoose the track again to update.")
Errors.log(track, 'INVALID_ACTION',
"The action has changed for this strip/track.\nChoose the track again to update.")

else:
if nla_track.name == track.track_name:
return True

return False


def is_useable_nla_track(animation_data, nla_track, track):
track_name = nla_track.name
action_name = get_action_name(nla_track)
Expand All @@ -209,40 +227,48 @@ def is_useable_nla_track(animation_data, nla_track, track):
forbidden_chars = [",", " "]
if not is_default_name(track_name):
if any([c for c in forbidden_chars if c in track_name]):
Errors.log(track, 'FORBIDDEN_NAME', "Custom track names can't contain commas or spaces.")
Errors.log(track, 'FORBIDDEN_NAME',
"Custom track names can't contain commas or spaces.")
return False

else:
if any([c for c in forbidden_chars if c in action_name]):
Errors.log(track, 'FORBIDDEN_NAME', "Action names can't contain commas or spaces.")
Errors.log(track, 'FORBIDDEN_NAME',
"Action names can't contain commas or spaces.")
return False

if len(nla_track.strips) > 1:
Errors.log(track, 'MULTIPLE_STRIPS', "Only one strip is allowed in the track.")
Errors.log(track, 'MULTIPLE_STRIPS',
"Only one strip is allowed in the track.")
return False

if not nla_track.strips:
Errors.log(track, 'NO_STRIPS', "No strips are present in the track.")
return False

if nla_track.strips[0].mute:
Errors.log(track, 'MUTED_STRIP', "The strip is muted and won't export.")
Errors.log(track, 'MUTED_STRIP',
"The strip is muted and won't export.")
return False

if not action_name:
Errors.log(track, 'NO_ACTION', "The strip/track doesn't have an action.")
Errors.log(track, 'NO_ACTION',
"The strip/track doesn't have an action.")
return False

if not nla_track.strips[0].action.fcurves:
Errors.log(track, 'NO_FCURVES', "The strip/track's action doesn't have any animation and\nwon't be exported.")
Errors.log(track, 'NO_FCURVES',
"The strip/track's action doesn't have any animation and\nwon't be exported.")
return False

if not is_unique_action(animation_data, nla_track):
Errors.log(track, 'NON_UNIQUE_ACTION', "This strip/track contains an action that is present in multiple\nstrips/tracks on this object and may not export correctly.", severity="Warning")
Errors.log(track, 'NON_UNIQUE_ACTION',
"This strip/track contains an action that is present in multiple\nstrips/tracks on this object and may not export correctly.", severity="Warning")
return False

return True


def is_valid_regular_track(ob, track):
if ob.animation_data:
for nla_track in ob.animation_data.nla_tracks:
Expand All @@ -256,6 +282,7 @@ def is_valid_regular_track(ob, track):

return False


def is_valid_shape_key_track(ob, track):
if hasattr(ob.data, 'shape_keys') and ob.data.shape_keys and ob.data.shape_keys.animation_data:
for nla_track in ob.data.shape_keys.animation_data.nla_tracks:
Expand Down Expand Up @@ -287,15 +314,17 @@ def draw_item(self, context, layout, data, item, icon, active_data, active_propn
emboss=False, icon='SHAPEKEY_DATA')
split.enabled = False
else:
spacer = ' ' # needed so the menu arrow doesn't intersect with the name
spacer = ' ' # needed so the menu arrow doesn't intersect with the name
row = split.row(align=False)
row.emboss = 'NONE'
row.alignment = 'LEFT'
row.context_pointer_set('hubs_component', data)
row.context_pointer_set('track', item)
row.menu(UpdateTrackContextMenu.bl_idname, text=item.name+spacer, icon='ERROR')
row.menu(UpdateTrackContextMenu.bl_idname,
text=item.name+spacer, icon='ERROR')
row = split.row(align=True)
row.emboss = 'UI_EMBOSS_NONE_OR_STATUS' if bpy.app.version < (3, 0, 0) else 'NONE_OR_STATUS'
row.emboss = 'UI_EMBOSS_NONE_OR_STATUS' if bpy.app.version < (
3, 0, 0) else 'NONE_OR_STATUS'
elif self.layout_type == 'GRID':
layout.alignment = 'CENTER'
layout.label(text="", icon_value=icon)
Expand All @@ -321,7 +350,6 @@ class UpdateTrack(Operator):
track_type: StringProperty(
name="Track Type", description="Track Type", default="")


def execute(self, context):
track = context.track
track.name = self.name
Expand Down Expand Up @@ -445,11 +473,13 @@ def draw(self, context):
row.context_pointer_set('track', track)

update_track = row.operator(UpdateTrack.bl_idname,
icon='OBJECT_DATA', text=display_name)
icon='OBJECT_DATA', text=display_name)
update_track.name = display_name
update_track.track_name = nla_track.name
update_track.strip_name = strip_name if is_default_name(nla_track.name) else ''
update_track.action_name = action_name if is_default_name(nla_track.name) else ''
update_track.strip_name = strip_name if is_default_name(
nla_track.name) else ''
update_track.action_name = action_name if is_default_name(
nla_track.name) else ''
update_track.track_type = track_type

no_tracks = False
Expand All @@ -468,11 +498,13 @@ def draw(self, context):
row.context_pointer_set('track', track)

update_track = row.operator(UpdateTrack.bl_idname,
icon='SHAPEKEY_DATA', text=display_name)
icon='SHAPEKEY_DATA', text=display_name)
update_track.name = display_name
update_track.track_name = nla_track.name
update_track.strip_name = strip_name if is_default_name(nla_track.name) else ''
update_track.action_name = action_name if is_default_name(nla_track.name) else ''
update_track.strip_name = strip_name if is_default_name(
nla_track.name) else ''
update_track.action_name = action_name if is_default_name(
nla_track.name) else ''
update_track.track_type = track_type

no_tracks = False
Expand Down Expand Up @@ -505,11 +537,13 @@ def draw(self, context):

if menu_id not in menu_tracks and not has_track(component_tracks_list, nla_track):
add_track = layout.operator(AddTrackOperator.bl_idname,
icon='OBJECT_DATA', text=display_name)
icon='OBJECT_DATA', text=display_name)
add_track.name = display_name
add_track.track_name = nla_track.name
add_track.strip_name = strip_name if is_default_name(nla_track.name) else ''
add_track.action_name = action_name if is_default_name(nla_track.name) else ''
add_track.strip_name = strip_name if is_default_name(
nla_track.name) else ''
add_track.action_name = action_name if is_default_name(
nla_track.name) else ''
add_track.track_type = track_type
add_track.panel_type = panel_type.value

Expand All @@ -526,11 +560,13 @@ def draw(self, context):

if menu_id not in menu_tracks and not has_track(component_tracks_list, nla_track):
add_track = layout.operator(AddTrackOperator.bl_idname,
icon='SHAPEKEY_DATA', text=display_name)
icon='SHAPEKEY_DATA', text=display_name)
add_track.name = display_name
add_track.track_name = nla_track.name
add_track.strip_name = strip_name if is_default_name(nla_track.name) else ''
add_track.action_name = action_name if is_default_name(nla_track.name) else ''
add_track.strip_name = strip_name if is_default_name(
nla_track.name) else ''
add_track.action_name = action_name if is_default_name(
nla_track.name) else ''
add_track.track_type = track_type
add_track.panel_type = panel_type.value

Expand Down Expand Up @@ -608,7 +644,8 @@ def draw(self, context, layout, panel):
def gather(self, export_settings, object):
final_track_names = []
for track in object.hubs_component_loop_animation.tracks_list.values():
final_track_names.append(track.track_name if not is_default_name(track.track_name) else track.action_name)
final_track_names.append(track.track_name if not is_default_name(
track.track_name) else track.action_name)

fps = bpy.context.scene.render.fps/bpy.context.scene.render.fps_base

Expand All @@ -619,7 +656,6 @@ def gather(self, export_settings, object):
'timeScale': self.timeScale
}


@staticmethod
def register():
bpy.utils.register_class(TracksList)
Expand All @@ -638,7 +674,6 @@ def register():

register_msgbus()


@staticmethod
def unregister():
bpy.utils.unregister_class(TracksList)
Expand Down Expand Up @@ -680,10 +715,13 @@ def migrate_data(ob, host):
track = host.hubs_component_loop_animation.tracks_list.add()
strip_name = get_strip_name(nla_track)
action_name = get_action_name(nla_track)
track.name = get_display_name(nla_track.name, strip_name)
track.name = get_display_name(
nla_track.name, strip_name)
track.track_name = nla_track.name
track.strip_name = strip_name if is_default_name(nla_track.name) else ''
track.action_name = action_name if is_default_name(nla_track.name) else ''
track.strip_name = strip_name if is_default_name(
nla_track.name) else ''
track.action_name = action_name if is_default_name(
nla_track.name) else ''
track.track_type = track_type

for ob in bpy.data.objects:
Expand Down
Loading