60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
import os
|
|
import json
|
|
from typing import Iterable
|
|
from model import Project, ProjectItem, ItemType
|
|
from properties import config
|
|
|
|
def loadProject(self, projFilePath) -> Project:
|
|
p = Project(projFilePath, self)
|
|
p.rootDir = os.path.dirname(projFilePath)
|
|
|
|
|
|
def saveProject(self, project : Project):
|
|
pass
|
|
|
|
"""
|
|
Determines the type of the project item.
|
|
"""
|
|
def getItemType(self, projectItem : ProjectItem) -> ItemType:
|
|
path = projectItem.absolutePath()
|
|
|
|
if os.path.isdir(path):
|
|
return ItemType.DIRECTORY
|
|
|
|
elif os.path.isfile(path):
|
|
_, ext = os.path.splitext(path)
|
|
ext = ext.lower().lstrip('.') # remove leading .
|
|
|
|
if ext == config.PROJECT_EXTENSION:
|
|
return ItemType.PROJECT
|
|
|
|
elif ext == config.SEQUENCE_EXTENSION:
|
|
return ItemType.SEQUENCE
|
|
|
|
elif ext == config.COMPOSITION_EXTENSION:
|
|
return ItemType.COMPOSITION
|
|
|
|
elif ext in config.DEBUG_SUPPORTED_AUDIO:
|
|
return ItemType.AUDIO
|
|
|
|
elif ext in config.DEBUG_SUPPORTED_VIDEO:
|
|
return ItemType.VIDEO
|
|
|
|
elif ext in config.DEBUG_SUPPORTED_IMAGE:
|
|
return ItemType.IMAGE
|
|
|
|
elif ext in config.DEBUG_SUPPORTED_SUB:
|
|
return ItemType.SUBTITLES
|
|
|
|
return ItemType.UNKNOWN
|
|
|
|
|
|
def getItemChildren(self, projectItem : ProjectItem) -> Iterable[ProjectItem]:
|
|
if projectItem.itemType() == ItemType.DIRECTORY:
|
|
for item in os.listdir(projectItem.absolutePath()):
|
|
yield ProjectItem(item, projectItem.project, self, projectItem)
|
|
|
|
def getProjectItems(self, project : Project) -> Iterable[ProjectItem]:
|
|
for item in os.listdir(project.rootDir):
|
|
yield ProjectItem(item, project, self, None)
|