Mercurial > fife-parpg
view clients/editor/run.py @ 148:72c25cc27d8b
For your convenience pools now have a function
called purgeLoadedResources exposed to python
which will delete all loaded resources that
have a ref count of zero.
You can use this after closing a map or something
alike. It may however impact performance, as
the next map may very well reload the same resources.
Just be aware of that. :-)
author | phoku@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Sat, 11 Oct 2008 06:05:11 +0000 |
parents | ade070598fd1 |
children | 28532ae6f9f6 |
line wrap: on
line source
#!/usr/bin/env python # coding: utf-8 # This is the editor client for FIFE. import sys, os, re def _jp(path): return os.path.sep.join(path.split('/')) _paths = ('.', '../../engine/swigwrappers/python', '../../engine/extensions') for p in _paths: if p not in sys.path: sys.path.append(_jp(p)) import fife import fifelog import basicapplication import pychan import pychan.widgets as widgets import sys from listener import EditorListener from plugins.plugin import Plugin from plugins.maploader import MapLoader from plugins.maploader import MapSaver from plugins.importer import Importer from plugins.mapeditor import MapEditor from plugins.mapwizard import MapWizard from fifedit import Fifedit # by c 09/11/08 from plugins.objectedit import ObjectEdit # end edit c # Help display class Help(Plugin): def __init__(self): self._helpWidget = None self.menu_items = { 'Help' : self.showHelp } def showHelp(self): if self._helpWidget: self._helpWidget.show() return self._helpWidget = pychan.loadXML('content/gui/help.xml') self._helpWidget.mapEvents({ 'closeButton' : self._helpWidget.hide }) self._helpWidget.distributeData({ 'helpText' : open("content/infotext.txt").read() }) self._helpWidget.show() class Editor(basicapplication.ApplicationBase): def __init__(self, params): super(Editor,self).__init__() # embed Fifedit tools self.fifedit = Fifedit(self.engine) # Create this client's modules self.mapedit = MapEditor(self.engine) self.maploader = MapLoader(self.engine) self.mapsaver = MapSaver(self.engine) self.mapwizard = MapWizard(self.engine) self.importer = Importer(self.engine) # by c 09/11/08 self.objectedit = ObjectEdit(self.engine, self.mapedit) # end edit c # Register plugins with Fifedit. self.fifedit.registerPlugin(Help()) self.fifedit.registerPlugin(self.maploader) self.fifedit.registerPlugin(self.mapsaver) self.fifedit.registerPlugin(self.mapedit) self.fifedit.registerPlugin(self.mapwizard) self.fifedit.registerPlugin(self.importer) # by c 09/11/08 self.fifedit.registerPlugin(self.objectedit) # end edit c self.params = params def createListener(self): # override default event listener return EditorListener(self) def _pump(self): self.mapedit.pump() if self.maploader.newMap: self.mapedit.editMap(self.maploader.newMap.getId()) self.importer.addDirs(self.maploader.newMap.importDirs) self.maploader.newMap = None if self.mapwizard.newMap: self.mapedit.editMap(self.mapwizard.map.getId()) self.mapwizard.newMap = False if self.mapsaver.saveRequested: if self.mapedit._map: self.mapsaver.saveMap(self.mapedit._map,self.importer.importList) else: print "Cannot save, map doesn't exist" self.mapsaver.saveRequested = False if not self.fifedit.active: self.quitRequested = True if self.params: s = os.path.sep parts = self.params.split(s) self.maploader.loadFile(s.join(parts[0:-1]), parts[-1]) self.params = None # edit by c 11/09 if self.mapedit._instances is not None: self.objectedit.input() # end edit c if __name__ == '__main__': print sys.argv params = None if len(sys.argv) > 1: params = sys.argv[1] app = Editor(params) app.run()