mirror of
https://github.com/alicevision/Meshroom.git
synced 2025-06-02 02:42:05 +02:00
[ui] Load image sequence from node output in SequencePlayer
This commit is contained in:
parent
3eb90322a8
commit
b0063b0dde
3 changed files with 81 additions and 30 deletions
|
@ -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)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue