diff orpg/pluginhandler.py @ 0:4385a7d0efd1 grumpy-goblin

Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
author sirebral
date Tue, 14 Jul 2009 16:41:58 -0500
parents
children 97265586402b
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/orpg/pluginhandler.py	Tue Jul 14 16:41:58 2009 -0500
@@ -0,0 +1,122 @@
+from orpg.orpg_wx import *
+from orpg.orpgCore import open_rpg
+
+class PluginHandler:
+    # Initialization subroutine.
+    #
+    # !self : instance of self
+    # !chat : instance of the chat window to write to
+    def __init__(self, plugindb, parent):
+        self.session = open_rpg.get_component("session")
+        self.chat = open_rpg.get_component("chat")
+        self.settings = open_rpg.get_component("settings")
+        self.gametree = open_rpg.get_component("tree")
+        self.startplugs = open_rpg.get_component("startplugs")
+        self.xml = open_rpg.get_component("xml")
+        self.validate = open_rpg.get_component("validate")
+        self.topframe = open_rpg.get_component("frame")
+        self.plugindb = plugindb
+        self.parent = parent
+        self.shortcmdlist = self.chat.chat_cmds.shortcmdlist
+        self.cmdlist = self.chat.chat_cmds.cmdlist
+
+    def plugin_enabled(self):
+        pass
+
+    def plugin_disabled(self):
+        pass
+
+    def menu_start(self):
+        rootMenu = open_rpg.get_component("pluginmenu")
+        try:
+            self.plugin_menu()
+            rootMenu.AppendMenu(wx.ID_ANY, self.name, self.menu)
+        except:
+            self.menu = wx.Menu()
+            empty = wx.MenuItem(self.menu, wx.ID_ANY, 'Empty')
+            self.menu.AppendItem(empty)
+            rootMenu.AppendMenu(wx.ID_ANY, self.name, self.menu)
+
+    def menu_cleanup(self):
+        self.settings.save()
+        rootMenu = open_rpg.get_component("pluginmenu")
+        menus = rootMenu.MenuItems
+        for mi in menus:
+            if mi.GetText() == self.name:
+                rootMenu.RemoveItem(mi)
+		del self.menu
+
+    def plugin_addcommand(self, cmd, function, helptext, show_msg=True):
+        self.chat.chat_cmds.addcommand(cmd, function, helptext)
+        if(show_msg):
+            msg = '<br /><b>New Command added</b><br />'
+            msg += '<b><font color="#000000">%s</font></b>  %s' % (cmd, helptext)
+            self.chat.InfoPost(msg)
+
+    def plugin_commandalias(self, shortcmd, longcmd, show_msg=True):
+        self.chat.chat_cmds.addshortcmd(shortcmd, longcmd)
+        if(show_msg):
+            msg = '<br /><b>New Command Alias added:</b><br />'
+            msg += '<b><font color="#0000CC">%s</font></b> is short for <font color="#000000">%s</font>' % (shortcmd, longcmd)
+            self.chat.InfoPost(msg)
+
+    def plugin_removecmd(self, cmd):
+        self.chat.chat_cmds.removecmd(cmd)
+        msg = '<br /><b>Command Removed:</b> %s' % (cmd)
+        self.chat.InfoPost(msg)
+
+    def plugin_add_nodehandler(self, nodehandler, nodeclass):
+        self.gametree.add_nodehandler(nodehandler, nodeclass)
+
+    def plugin_remove_nodehandler(self, nodehandler):
+        self.gametree.remove_nodehandler(nodehandler)
+
+    def plugin_add_msg_handler(self, tag, function):
+        self.session.add_msg_handler(tag, function)
+
+    def plugin_delete_msg_handler(self, tag):
+        self.session.remove_msg_handler(tag)
+
+    def plugin_add_setting(self, setting, value, options, help):
+        self.settings.add_tab('Plugins', self.name, 'grid')
+        self.settings.add_setting(self.name, setting, value, options, help)
+
+    def plugin_send_msg(self, to, plugin_msg):
+        xml_dom = self.xml.parseXml(plugin_msg)
+        xml_dom = xml_dom._get_documentElement()
+        xml_dom.setAttribute('from', str(self.session.id))
+        xml_dom.setAttribute('to', str(to))
+        xml_dom.setAttribute('group_id', str(self.session.group_id))
+        tag_name = xml_dom._get_tagName()
+        if not tag_name in self.session.core_msg_handlers:
+            xml_msg = '<plugin to="' + str(to)
+            xml_msg += '" from="' + str(self.session.id)
+            xml_msg += '" group_id="' + str(self.session.group_id)
+            xml_msg += '" />' + xml_dom.toxml()
+            self.session.outbox.put(xml_msg)
+        else:
+            #Spoofing attempt
+            pass
+        xml_dom.unlink()
+
+    def message(self, text):
+        return text
+
+    def pre_parse(self, text):
+        return text
+
+    def send_msg(self, text, send):
+        return text, send
+
+    def plugin_incoming_msg(self, text, type, name, player):
+        return text, type, name
+
+    def post_msg(self, text, myself):
+        return text
+
+    def refresh_counter(self):
+        pass
+
+    def close_module(self):
+        #This is called when OpenRPG shuts down
+        pass