diff clients/editor/run.py @ 0:4a0efb7baf70

* Datasets becomes the new trunk and retires after that :-)
author mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
date Sun, 29 Jun 2008 18:44:17 +0000
parents
children d5658e6c34f5
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/clients/editor/run.py	Sun Jun 29 18:44:17 2008 +0000
@@ -0,0 +1,103 @@
+#!/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
+
+# 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)
+
+		# 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)
+		
+		self.params = params
+
+	def createListener(self):
+		# override default event listener
+		return EditorListener(self)
+
+	def _pump(self):
+		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
+
+if __name__ == '__main__':
+	print sys.argv
+	params = None
+	if len(sys.argv) > 1:
+		params = sys.argv[1]
+	app = Editor(params)
+	app.run()