コード例 #1
0
    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))
コード例 #2
0
ファイル: xmlmap.py プロジェクト: squiddy/fifengine
    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))
コード例 #3
0
	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)
コード例 #4
0
    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)