[ui] Load image sequence from node output in SequencePlayer

This commit is contained in:
Aurore LAFAURIE 2024-04-16 16:51:24 +02:00
parent 3eb90322a8
commit b0063b0dde
3 changed files with 81 additions and 30 deletions

View file

@ -4,6 +4,7 @@ from PySide2.QtCore import QUrl, QFileInfo
from PySide2.QtCore import QObject, Slot
import os
import glob
class FilepathHelper(QObject):
@ -103,19 +104,44 @@ class FilepathHelper(QObject):
def resolve(self, path, vp):
# Resolve dynamic path that depends on viewpoint
vpPath = vp.childAttribute("path").value
replacements = {
"<VIEW_ID>": str(vp.childAttribute("viewId").value),
"<INTRINSIC_ID>": str(vp.childAttribute("intrinsicId").value),
"<POSE_ID>": str(vp.childAttribute("poseId").value),
"<PATH>": vpPath,
"<FILENAME>": FilepathHelper.basename(FilepathHelper, vpPath),
"<FILESTEM>": FilepathHelper.removeExtension(FilepathHelper, FilepathHelper.basename(FilepathHelper, vpPath)),
"<EXTENSION>": FilepathHelper.extension(FilepathHelper, vpPath),
}
replacements = {}
if vp == None:
replacements = FilepathHelper.getFilenamesFromFolder(FilepathHelper, FilepathHelper.dirname(FilepathHelper, path), FilepathHelper.extension(FilepathHelper, path))
resolved = [path for i in range(len(replacements))]
for key in replacements:
for i in range(len(resolved)):
resolved[i] = resolved[i].replace("<FRAMEID>", replacements[i])
return resolved
else:
vpPath = vp.childAttribute("path").value
filename = FilepathHelper.basename(FilepathHelper, vpPath)
replacements = {
"<VIEW_ID>": str(vp.childAttribute("viewId").value),
"<INTRINSIC_ID>": str(vp.childAttribute("intrinsicId").value),
"<POSE_ID>": str(vp.childAttribute("poseId").value),
"<PATH>": vpPath,
"<FILENAME>": filename,
"<FILESTEM>": FilepathHelper.removeExtension(FilepathHelper, filename),
"<EXTENSION>": FilepathHelper.extension(FilepathHelper, filename),
}
resolved = path
for key in replacements:
resolved = resolved.replace(key, replacements[key])
return resolved
return resolved
@Slot(str, result="QVariantList")
@Slot(str, str, result="QVariantList")
def getFilenamesFromFolder(self, folderPath: str, extension: str = None):
"""
Get all filenames from a folder with a specific extension.
:param folderPath: Path to the folder.
:param extension: Extension of the files to get.
:return: List of filenames.
"""
if extension is None:
extension = ".*"
return [self.removeExtension(FilepathHelper, self.basename(FilepathHelper, f)) for f in glob.glob(os.path.join(folderPath, f"*{extension}")) if os.path.isfile(f)]