Skip to content

Commit

Permalink
Merge pull request #160 from Exairnous/pep8-format
Browse files Browse the repository at this point in the history
PEP 8 formatting.
  • Loading branch information
keianhzo authored Nov 22, 2022
2 parents c4712ae + 28d5711 commit cac5c60
Show file tree
Hide file tree
Showing 8 changed files with 107 additions and 54 deletions.
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

0 comments on commit cac5c60

Please sign in to comment.