def createNewEntity(self, parentNode, fileName):
     if len(fileName) == 0:
         Log.error(
             "[AssetsModel:createNewEntity] Can't create with empty name")
         return None
     filePath = "{0}/{1}".format(parentNode.getFullPath(), fileName)
     if os.path.exists(filePath):
         Log.error(
             "[AssetsModel:createNewEntity] Can't create file: '{0}' (Error: already exists)"
             .format(filePath))
         return None
     try:
         CreateVoidEntity(filePath)
     except Exception as e:
         Log.error(
             "[AssetsModel:createNewEntity] Can't create file: '{0}' (Error: {1})"
             .format(filePath, e.__str__()))
         return None
     Log.debug("[AssetsModel:createNewEntity] Create file: '{0}'".format(
         filePath))
     node = FileNode()
     node._name = fileName
     node._parent = parentNode
     node._type = FileNodeType.Entity
     parentNode._children.append(node)
     return node
 def createNewDir(self, parentNode, fileName):
     if len(fileName) == 0:
         Log.error(
             "[AssetsModel:createNewDir] Can't create with empty name")
         return None
     dirPath = "{0}/{1}".format(parentNode.getFullPath(), fileName)
     if os.path.exists(dirPath):
         Log.error(
             "[AssetsModel:createNewDir] Can't create dir: '{0}' (Error: already exists)"
             .format(dirPath))
         return None
     try:
         os.mkdir(dirPath)
     except Exception as e:
         Log.error(
             "[AssetsModel:createNewDir] Can't create dir: '{0}' (Error: {1})"
             .format(dirPath, e.__str__()))
         return None
     Log.debug(
         "[AssetsModel:createNewDir] Create dir: '{0}'".format(dirPath))
     node = DirNode()
     node._name = fileName
     node._parent = parentNode
     parentNode._children.append(node)
     return node
 def removeNode(self, node):
     filePath = node.getFullPath()
     if os.path.exists(filePath):
         try:
             if os.path.isdir(filePath):
                 Log.debug(
                     "[AssetsModel:removeNode] Remove dir: '{0}'".format(
                         filePath))
                 shutil.rmtree(filePath)
             else:
                 Log.debug(
                     "[AssetsModel:removeNode] Remove file: '{0}'".format(
                         filePath))
                 os.remove(filePath)
         except Exception as e:
             Log.error(
                 "[AssetsModel:removeNode] Can't remove file: '{0}' (Error: {1})"
                 .format(filePath, e.__str__()))
             return False
     node._parent._children.remove(node)
     return True
 def renameNode(self, node, newName):
     srcPath = node.getFullPath()
     trgPath = "{0}/{1}".format(node.getParentFullPath(), newName)
     if os.path.exists(trgPath):
         Log.error(
             "[AssetsModel:renameNode] Target path already exists: '{0}'".
             format(trgPath))
         return False
     if not os.path.exists(srcPath):
         Log.error("[AssetsModel:renameNode] Can't find source path: '{0}'".
                   format(srcPath))
         return False
     try:
         os.replace(srcPath, trgPath)
     except Exception as e:
         Log.error(
             "[AssetsModel:renameNode] Can't rename file: '{0}' to '{1}' (Error: {2})"
             .format(srcPath, trgPath, e.__str__()))
         return False
     Log.debug(
         "[AssetsModel:renameNode] Rename file: '{0}' to '{1}'".format(
             srcPath, trgPath))
     node._name = newName
     return True
 def reload(self):
     Log.debug("[AssetsModel:reload] Trigger Reload")
     self._resourceRootDir = DirNode(None, None)
     if not self.init():
         raise RuntimeError("Can't reload assets model")