def parse_imports(self, mapelt, map): 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: logger.log(fife.LogManager.LEVEL_WARN, "Duplicate import:" + str((dir, file))) continue parsedImports[(dir,file)] = 1 if file and dir: loaders.loadImportFile('/'.join(dir, file), self.engine) elif file: loaders.loadImportFile(file, self.engine) elif dir: loaders.loadImportDirRec(dir, self.engine) map.importDirs.append(dir) else: logger.log(fife.LogManager.LEVEL_WARN, 'Empty import statement?') if self.callback: i += 1 self.callback('loaded imports', float( i / float(len(tmplist)) * 0.25 + 0.25 ) )
def importFile(self, path, filename): file = os.path.normpath(os.path.join(path, filename)) # FIXME: This is necassary for the files to be loaded properly. # The loader should be fixed to support native (windows) # path separators. file = file.replace('\\', '/') try: if os.path.isfile(file): loaders.loadImportFile(file, self.engine) else: raise file+ " is not a file!" except: traceback.print_exc(sys.exc_info()[1]) errormsg = u"Importing file 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)