diff plugins/xxnote.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/plugins/xxnote.py	Tue Jul 14 16:41:58 2009 -0500
@@ -0,0 +1,180 @@
+import os
+import orpg.pluginhandler
+
+class Plugin(orpg.pluginhandler.PluginHandler):
+    # Initialization subroutine.
+    #
+    # !self : instance of self
+    # !openrpg : instance of the the base openrpg control
+    def __init__(self, plugindb, parent):
+        orpg.pluginhandler.PluginHandler.__init__(self, plugindb, parent)
+
+        # The Following code should be edited to contain the proper information
+        self.name = 'Quick Notes'
+        self.author = 'Dj Gilcrease'
+        self.help = "This plugin lets you take quick notes on a subject"
+        self.notes = {}
+
+
+    def plugin_enabled(self):
+        self.notes = self.plugindb.GetDict("xxnote", "notes", {})
+
+        self.plugin_addcommand('/newnote', self.on_newnote, '{Subject} - Will create a new note subject')
+        self.plugin_addcommand('/appendnote', self.on_appendnote, '{Subject}={Note} - Will append a note to {Subject}')
+        self.plugin_addcommand('/delnote', self.on_delnote, '{Subject}={Note_id}|all - Will delete {Note_id} from {Subject} or will delete the subject compleatly')
+        self.plugin_addcommand('/editnote', self.on_editnote, '{Subject}={Note_id} {Note} - Will replace {Note_id} with {Note} for {Subject}')
+        self.plugin_addcommand('/clearnotes', self.on_clearnotes, '- Will clear all of your notes')
+        self.plugin_addcommand('/listnotes', self.on_listnotes, '- Will list all of the note subjects you have')
+        self.plugin_addcommand('/viewnote', self.on_viewnote, '{Subject} - Will display the notes you have for {Subject}')
+        self.plugin_addcommand('/notetonode', self.on_notetonode, '{Subject} - Will create a text node containing your notes for {Subject}')
+        self.plugin_addcommand('/notehelp', self.on_notehelp, '- Will Display the help for each command of this plugin!')
+
+
+    def plugin_disabled(self):
+        self.plugin_removecmd('/newnote')
+        self.plugin_removecmd('/appendnote')
+        self.plugin_removecmd('/editnote')
+        self.plugin_removecmd('/delnote')
+        self.plugin_removecmd('/listnotes')
+        self.plugin_removecmd('/viewnote')
+        self.plugin_removecmd('/notetonode')
+        self.plugin_removecmd('/notehelp')
+        self.plugin_removecmd('/clearnotes')
+
+    def on_newnote(self, cmdargs):
+        if len(cmdargs) == 0:
+            self.on_notehelp('')
+            return
+
+        subject = cmdargs
+        if not self.notes.has_key(subject):
+            self.notes[subject] = []
+            self.plugindb.SetDict("xxnote", "notes", self.notes)
+            self.chat.InfoPost("Created new note for " + subject)
+        else:
+            self.chat.InfoPost("You already have a note with the subject " + subject)
+
+    def on_appendnote(self, cmdargs):
+        args = cmdargs.split("=",-1)
+        if len(args) < 2:
+            self.on_notehelp('')
+            return
+
+        subject = args[0]
+        note = args[1]
+        if not self.notes.has_key(subject):
+            self.notes[subject] = []
+            self.notes[subject].append(note)
+            self.plugindb.SetDict("xxnote", "notes", self.notes)
+            self.chat.InfoPost("Created new note for " + subject)
+        else:
+            self.notes[subject].append(note)
+            self.plugindb.SetDict("xxnote", "notes", self.notes)
+            self.chat.InfoPost("Appended <i>" + note + "</i> to <b>" + subject + "</b>")
+
+        self.on_viewnote(subject)
+
+    def on_editnote(self, cmdargs):
+        args = cmdargs.split("=",-1)
+        if len(args) < 2:
+            self.on_notehelp('')
+            return
+
+        s = args[1].find(" ")
+        subject = args[0]
+        note_id = int(args[1][:s])
+        note = args[1][s:]
+        if not self.notes.has_key(subject):
+            self.notes[subject] = []
+            self.notes[subject].append(note)
+            self.plugindb.SetDict("xxnote", "notes", self.notes)
+            self.chat.InfoPost("Created new note for " + subject)
+        else:
+            self.notes[subject][note_id] = note
+            self.plugindb.SetDict("xxnote", "notes", self.notes)
+            self.chat.InfoPost("Edited <i>" + str(note_id) + ': ' + note + "</i> to <b>" + subject + "</b>")
+
+        self.on_viewnote(subject)
+
+    def on_delnote(self, cmdargs):
+        args = cmdargs.split("=",-1)
+        if len(args) < 2:
+            self.on_notehelp('')
+            return
+
+        subject = args[0]
+        noteid = args[1]
+
+        if noteid == 'all':
+            del self.notes[subject]
+            self.plugindb.SetDict("xxnote", "notes", self.notes)
+            self.chat.InfoPost("Removed subject " + subject)
+        else:
+            del self.notes[subject][int(noteid)]
+            self.plugindb.SetDict("xxnote", "notes", self.notes)
+            self.chat.InfoPost("Removed note " + noteid + " from subject " + subject)
+            self.on_viewnote(subject)
+
+    def on_clearnotes(self, cmdargs):
+        self.notes = {}
+        self.plugindb.SetDict("xxnote", "notes", self.notes)
+        self.chat.InfoPost("Cleared all of your notes")
+
+    def on_listnotes(self, cmdargs):
+        if len(self.notes) == 0:
+            self.chat.InfoPost("You have no notes at this time, use /newnote to create one")
+            return
+        self.chat.InfoPost("The subjects you have notes on are:")
+        for subject in self.notes.keys():
+            self.chat.InfoPost("** " + subject)
+
+    def on_viewnote(self, cmdargs):
+        if len(cmdargs) == 0:
+            self.on_notehelp('')
+            return
+
+        subject = cmdargs
+        if self.notes.has_key(subject):
+            msg = '<table bgcolor="#cccccc"><tr><td colspan="2"><b><font color="#000000">Notes for '
+            msg += subject
+            msg += ':</font></b></td></tr><tr><td width="10">ID</td><td>Note Text</td></tr>'
+            noteid = 0
+            for n in self.notes[subject]:
+                msg += '<tr><td width="10"><font color="#000000">'
+                msg += str(noteid)
+                msg += '</font></td>'
+                msg += '<td><font color="#000000">'
+                msg += n
+                msg += '</font></td></tr>'
+                noteid += 1
+
+            msg += '</table>'
+            self.chat.InfoPost(msg)
+        else:
+            self.chat.InfoPost("You have no notes for " + subject)
+
+    def on_notetonode(self, cmdargs):
+        if len(cmdargs) == 0:
+            self.on_notehelp('')
+            return
+
+        subject = cmdargs
+        if self.notes.has_key(subject):
+            node = '<nodehandler class="textctrl_handler" icon="note" module="forms" name="'
+            node += subject
+            node += '" version="1.0"><text multiline="1" send_button="1">'
+            for note in self.notes[subject]:
+                node += note + "\n"
+            node += '</text></nodehandler>'
+            self.gametree.insert_xml(node)
+        else:
+            self.chat.InfoPost("You have no notes for " + subject)
+
+    def on_notehelp(self, cmdargs):
+        self.chat.InfoPost('/newnote ' + self.cmdlist['/newnote']['help'])
+        self.chat.InfoPost('/appendnote ' + self.cmdlist['/appendnote']['help'])
+        self.chat.InfoPost('/delnote ' + self.cmdlist['/delnote']['help'])
+        self.chat.InfoPost('/listnotes ' + self.cmdlist['/listnotes']['help'])
+        self.chat.InfoPost('/clearnotes ' + self.cmdlist['/clearnotes']['help'])
+        self.chat.InfoPost('/notetonode ' + self.cmdlist['/notetonode']['help'])
+        self.chat.InfoPost('/viewnote ' + self.cmdlist['/viewnote']['help'])
\ No newline at end of file