def parse_imports(self, mapelt, map): """ load all objects defined as import into memory @type mapelt: object @param mapelt: ElementTree root @return FIFE map object @rtype object """ parsedImports = {} if self.callback: tmplist = mapelt.findall('import') i = float(0) for item in mapelt.findall('import'): _file = item.get('file') if _file: _file = reverse_root_subfile(self.source, _file) _dir = item.get('dir') if _dir: _dir = reverse_root_subfile(self.source, _dir) # Don't parse duplicate imports if (_dir, _file) in parsedImports: if self.debug: print("Duplicate import:", (_dir, _file)) continue parsedImports[(_dir, _file)] = 1 if _file and _dir: loadImportFile(self.obj_loader, '/'.join(_dir, _file), self.engine, self.debug) elif _file: loadImportFile(self.obj_loader, _file, self.engine, self.debug) elif _dir: loadImportDirRec(self.obj_loader, _dir, self.engine, self.debug) map.importDirs.append(_dir) else: if self.debug: print('Empty import statement?') if self.callback: i += 1 self.callback(self.msg['imports'], float(i / float(len(tmplist)) * 0.25 + 0.25))
def parse_imports(self, mapelt, map): """ load all objects defined as import into memory @type mapelt: object @param mapelt: ElementTree root @return FIFE map object @rtype object """ parsedImports = {} if self.callback: tmplist = mapelt.findall("import") i = float(0) for item in mapelt.findall("import"): _file = item.get("file") if _file: _file = reverse_root_subfile(self.source, _file) _dir = item.get("dir") if _dir: _dir = reverse_root_subfile(self.source, _dir) # Don't parse duplicate imports if (_dir, _file) in parsedImports: if self.debug: print "Duplicate import:", (_dir, _file) continue parsedImports[(_dir, _file)] = 1 if _file and _dir: loadImportFile(self.obj_loader, "/".join(_dir, _file), self.engine, self.debug) elif _file: loadImportFile(self.obj_loader, _file, self.engine, self.debug) elif _dir: loadImportDirRec(self.obj_loader, _dir, self.engine, self.debug) map.importDirs.append(_dir) else: if self.debug: print "Empty import statement?" if self.callback: i += 1 self.callback(self.msg["imports"], float(i / float(len(tmplist)) * 0.25 + 0.25))
def importDir(self, path, filename=""): if os.path.isdir(os.path.join(path, filename)): path = os.path.join(path, filename) path = os.path.normpath(path) # FIXME: This is necassary for the files to be loaded properly. # The loader should be fixed to support native (windows) # path separators. path = path.replace('\\', '/') try: if os.path.isdir(path): loadImportDirRec(self.obj_loader, path, self.engine) else: raise file+ " is not a directory!" except: traceback.print_exc(sys.exc_info()[1]) errormsg = u"Importing directory failed:\n" errormsg += u"File: "+unicode(file)+u"\n" errormsg += u"Error: "+unicode(sys.exc_info()[1]) ErrorDialog(errormsg) return None events.onObjectsImported.send(sender=self)
def importDir(self, path, filename=""): if os.path.isdir(os.path.join(path, filename)): path = os.path.join(path, filename) path = os.path.normpath(path) # FIXME: This is necassary for the files to be loaded properly. # The loader should be fixed to support native (windows) # path separators. path = path.replace('\\', '/') try: if os.path.isdir(path): loadImportDirRec(self.obj_loader, path, self.engine) else: raise file + " is not a directory!" except: traceback.print_exc(sys.exc_info()[1]) errormsg = u"Importing directory failed:\n" errormsg += u"File: " + unicode(file) + u"\n" errormsg += u"Error: " + unicode(sys.exc_info()[1]) ErrorDialog(errormsg) return None events.onObjectsImported.send(sender=self)