Mercurial > traipse_dev
diff plugins/xxgsc.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 | 24d59375aac9 b633f4c64aae |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/xxgsc.py Tue Jul 14 16:41:58 2009 -0500 @@ -0,0 +1,112 @@ +import os +from orpg.orpg_wx import * +import random +import orpg.pluginhandler + + +ID_ROLL = wx.NewId() + +class Plugin(orpg.pluginhandler.PluginHandler): + # Initialization subroutine. + # + # !self : instance of self + # !chat : instance of the chat window to write to + def __init__(self, plugindb, parent): + orpg.pluginhandler.PluginHandler.__init__(self, plugindb, parent) + + self.name = 'Game Status Controller' + self.author = 'Woody, updated by mDuo13' + self.help = 'This plugin lets you quickly and easily manage a status that includes \n' + self.help += 'your HP and AC for AD&D 2nd Edition. Type /gsc to open up the manager\n' + self.help += 'window, and from there just change the values as necessary and the changes\n' + self.help += 'will be reflected in your status. To revert to your regular status, close\n' + self.help += 'the GSC window.' + + self.frame = None + + def plugin_enabled(self): + self.plugin_addcommand('/gsc', self.on_gsc, '- The GSC command') + self.frame = RollerFrame(None, -1, "Game Status Ctrl (GSC)", self) + self.frame.Hide() + + item = wx.MenuItem(self.menu, wx.ID_ANY, "GSC Window", "GSC Window", wx.ITEM_CHECK) + self.topframe.Bind(wx.EVT_MENU, self._toggleWindow, item) + self.menu.AppendItem(item) + + def plugin_disabled(self): + self.plugin_removecmd('/gsc') + try: + self.frame.TimeToQuit(1) + except: + pass + + def on_gsc(self, cmdargs): + item = self.menu.FindItemById(self.menu.FindItem("GSC Window")) + item.Check(True) + self.frame.Show() + self.frame.Raise() + + #Events + def _toggleWindow(self, evt): + id = evt.GetId() + item = self.menu.FindItemById(id) + if self.frame.IsShown(): + self.frame.Hide() + item.Check(False) + else: + self.frame.Show() + item.Check(True) + + +class RollerFrame(wx.Frame): + def __init__(self, parent, ID, title, plugin): + wx.Frame.__init__(self, parent, ID, title, + wx.DefaultPosition, wx.Size(200, 70)) + + self.settings = plugin.settings + self.session = plugin.session + self.plugin = plugin + + self.panel = wx.Panel(self,-1) + menu = wx.Menu() + menu.AppendSeparator() + menu.Append(wx.ID_EXIT, "&Close", "Close this window") + menuBar = wx.MenuBar() + menuBar.Append(menu, "&File"); + self.SetMenuBar(menuBar) + + self.old_idle = self.settings.get_setting('IdleStatusAlias') + + wx.StaticText(self.panel, -1, "AC:", wx.Point(0, 5)) + self.ac = wx.SpinCtrl(self.panel, ID_ROLL, "", wx.Point(18, 0), wx.Size(45, -1), min = -100, max = 100, initial = 10) + self.ac.SetValue(10) + + wx.StaticText(self.panel, -1, "/", wx.Point(136, 5)) + self.max_hp = wx.SpinCtrl(self.panel, ID_ROLL, "", wx.Point(144, 0), wx.Size(48, -1), min = -999, max = 999, initial = 10) + self.max_hp.SetValue(10) + + wx.StaticText(self.panel, -1, "HP:", wx.Point(65, 5)) + self.hp = wx.SpinCtrl(self.panel, ID_ROLL, "", wx.Point(83, 0), wx.Size(48, -1), min = -999, max = 999, initial = 10) + self.hp.SetValue(10) + + self.Bind(wx.EVT_SPINCTRL, self.SetStatus, id=ID_ROLL) + self.Bind(wx.EVT_TEXT, self.SetStatus, id=ID_ROLL) + self.Bind(wx.EVT_MENU, self.TimeToQuit, id=wx.ID_EXIT) + self.Bind(wx.EVT_CLOSE, self._close) + self.SetStatus(None) + + def SetStatus(self, evt): + new_status = "AC: " + str(self.ac.GetValue()) + " HP: " + str(self.hp.GetValue()) + "/" + str(self.max_hp.GetValue()) + self.settings.set_setting('IdleStatusAlias',new_status) + self.session.set_text_status(new_status) + + def TimeToQuit(self, event): + self.settings.set_setting('IdleStatusAlias',self.old_idle) + self.session.set_text_status(self.old_idle) + self.frame = None + self.Destroy() + + def _close(self, evt): + self.Hide() + item = self.plugin.menu.FindItemById(self.plugin.menu.FindItem("GSC Window")) + item.Check(False)