annotate orpg/gametree/nodehandlers/forms.py @ 248:1df5912db00c beta tip

Traipse Beta 'OpenRPG' {101205-00} Traipse is a distribution of OpenRPG that is designed to be easy to setup and go. Traipse also makes it easy for developers to work on code without fear of sacrifice. 'Ornery-Orc' continues the trend of 'Grumpy' and adds fixes to the code. 'Ornery-Orc's main goal is to offer more advanced features and enhance the productivity of the user. Update Summary (Closed) New Features: New to Map, can re-order Grid, Miniatures, and Whiteboard layer draw order New to Server GUI, can now clear log New Earthdawn Dieroller New IronClaw roller, sheet, and image New ShapeShifter PC Sheet Updates: Update to Warhammer PC Sheet. Rollers set as macros. Should work with little maintanence. Update to Browser Server window. Display rooms with ' " & cleaner Update to Server. Handles ' " & cleaner Update to Dieroller. Cleaner, more effecient expression system Update to Hidden Die plugin, allows for non standard dice rolls Update to location.py, allows for more portable references when starting Traipse Update to the Features node Fixes: Fix to InterParse that was causing an Infernal Loop with Namespace Internal Fix to XML data, removed old Minidom and switched to Element Tree Fix to Server that was causing eternal attempt to find a Server ID, in Register Rooms thread Fix to Server, removing wxPython dependencies where not needed Fix to metaservers.xml file not being created Fix to Single and Double quotes in Whiteboard text Fix to Background images not showing when using the Image Server Fix to Duplicate chat names appearing Fix to Server GUI's logging output Fix to FNB.COLORFUL_TABS bug Fix to Gametree for XSLT Sheets Fix to Gametree for locating gametree files Fix to Send to Chat from Gametree Fix to Gametree, renaming and remapping operates correctly Fix to aliaslib, prevents error caused when SafeHTML is sent None
author sirebral
date Sun, 05 Dec 2010 10:53:30 -0600
parents 3bbfd84619c0
children
rev   line source
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1 # Copyright (C) 2000-2001 The OpenRPG Project
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
2 #
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
3 # openrpg-dev@lists.sourceforge.net
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
4 #
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
5 # This program is free software; you can redistribute it and/or modify
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
6 # it under the terms of the GNU General Public License as published by
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
7 # the Free Software Foundation; either version 2 of the License, or
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
8 # (at your option) any later version.
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
9 #
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
10 # This program is distributed in the hope that it will be useful,
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
13 # GNU General Public License for more details.
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
14 #
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
15 # You should have received a copy of the GNU General Public License
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
16 # along with this program; if not, write to the Free Software
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
17 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
18 # --
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
19 #
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
20 # File: forms.py
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
21 # Author: Chris Davis
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
22 # Maintainer:
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
23 # Version:
184
dcae32e219f1 Traipse Beta 'OpenRPG' {100117-00}
sirebral
parents: 183
diff changeset
24 # $Id: forms.py,v Traipse 'Ornery-Orc' prof.ebral Exp $
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
25 #
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
26 # Description: The file contains code for the form based nodehanlers
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
27 #
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
28
184
dcae32e219f1 Traipse Beta 'OpenRPG' {100117-00}
sirebral
parents: 183
diff changeset
29 __version__ = "$Id: forms.py,v Traipse 'Ornery-Orc' prof.ebral Exp $"
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
30
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
31 from containers import *
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
32 import orpg.minidom as minidom
236
9230a33defd9 Traipse Beta 'OpenRPG' {100616-00}
sirebral
parents: 212
diff changeset
33 #from orpg.orpg_xml import xml
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
34 from wx.lib.scrolledpanel import ScrolledPanel
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
35 from orpg.tools.settings import settings
191
a3d7e05085da Traipse Beta 'OpenRPG' {100201-00}
sirebral
parents: 184
diff changeset
36 from orpg.tools.InterParse import Parse
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
37
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
38 def bool2int(b):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
39 #in wxPython 2.5+, evt.Checked() returns True or False instead of 1.0 or 0.
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
40 #by running the results of that through this function, we convert it.
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
41 #if it was an int already, nothing changes. The difference between 1.0
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
42 #and 1, i.e. between ints and floats, is potentially dangerous when we
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
43 #use str() on it, but it seems to work fine right now.
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
44 if b: return 1
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
45 else: return 0
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
46
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
47 #################################
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
48 ## form container
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
49 #################################
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
50
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
51 class form_handler(container_handler):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
52 """
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
53 <nodehandler name='?' module='forms' class='form_handler' >
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
54 <form width='100' height='100' />
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
55 </nodehandler>
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
56 """
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
57 def __init__(self,xml,tree_node):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
58 container_handler.__init__(self, xml, tree_node)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
59
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
60 def load_children(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
61 self.atts = None
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
62 for child_xml in self.xml:
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
63 if child_xml.tag == "form": self.xml.remove(child_xml)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
64 elif child_xml: self.tree.load_xml(child_xml, self.mytree_node)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
65 if not self.xml.get('width'): self.xml.set('width', '400')
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
66 if not self.xml.get('height'): self.xml.set('height', '600')
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
67
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
68 def get_design_panel(self,parent):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
69 return form_edit_panel(parent,self)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
70
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
71 def get_use_panel(self,parent):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
72 return form_panel(parent,self)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
73
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
74 def on_drop(self,evt):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
75 # make sure its a contorl node
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
76 container_handler.on_drop(self,evt)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
77
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
78 class form_panel(ScrolledPanel):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
79 def __init__(self, parent, handler):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
80 ScrolledPanel.__init__(self, parent, wx.ID_ANY, style=wx.NO_BORDER|wx.VSCROLL|wx.HSCROLL)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
81 self.height = int(handler.xml.get("height"))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
82 self.width = int(handler.xml.get("width"))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
83 self.SetSize((0,0))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
84 self.handler = handler
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
85 self.parent = parent
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
86 self.main_sizer = wx.BoxSizer(wx.VERTICAL)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
87 handler.tree.traverse(handler.mytree_node, self.create_child_wnd, None, False)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
88 self.SetSizer(self.main_sizer)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
89 self.SetAutoLayout(True)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
90 self.SetupScrolling()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
91 parent.SetSize(self.GetSize())
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
92 self.Fit()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
93
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
94 def SetSize(self, xy):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
95 (x, y) = self.GetSize()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
96 (nx, ny) = xy
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
97 if x < nx:
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
98 x = nx+10
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
99 y += ny+11
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
100 ScrolledPanel.SetSize(self, (x, y))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
101
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
102 def create_child_wnd(self, treenode, evt):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
103 node = self.handler.tree.GetPyData(treenode)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
104 panel = node.get_use_panel(self)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
105 size = node.get_size_constraint()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
106 if panel:
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
107 self.main_sizer.Add(panel, size, wx.EXPAND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
108 self.main_sizer.Add(wx.Size(10,10))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
109
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
110 F_HEIGHT = wx.NewId()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
111 F_WIDTH = wx.NewId()
212
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
112 class form_edit_panel(ScrolledPanel):
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
113 def __init__(self, parent, handler):
212
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
114 ScrolledPanel.__init__(self, parent, wx.ID_ANY, style=wx.NO_BORDER|wx.VSCROLL|wx.HSCROLL)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
115 self.handler = handler
212
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
116 self.main_sizer = wx.BoxSizer(wx.VERTICAL)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
117 wh_sizer = wx.BoxSizer(wx.HORIZONTAL)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
118 self.text = { P_TITLE : wx.TextCtrl(self, P_TITLE, handler.xml.get('name')),
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
119 F_HEIGHT : wx.TextCtrl(self, F_HEIGHT, handler.xml.get('height')),
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
120 F_WIDTH : wx.TextCtrl(self, F_WIDTH, handler.xml.get('width'))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
121 }
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
122
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
123 wh_sizer.Add(wx.StaticText(self, -1, "Width:"), 0, wx.ALIGN_CENTER)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
124 wh_sizer.Add(wx.Size(10,10))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
125 wh_sizer.Add(self.text[F_WIDTH], 0, wx.EXPAND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
126 wh_sizer.Add(wx.Size(10,10))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
127 wh_sizer.Add(wx.StaticText(self, -1, "Height:"), 0, wx.ALIGN_CENTER)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
128 wh_sizer.Add(wx.Size(10,10))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
129 wh_sizer.Add(self.text[F_HEIGHT], 0, wx.EXPAND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
130
212
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
131 self.main_sizer.Add(wx.StaticText(self, -1, "Title:"), 0, wx.EXPAND)
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
132 self.main_sizer.Add(self.text[P_TITLE], 0, wx.EXPAND)
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
133 self.main_sizer.Add(wx.Size(10,10))
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
134 self.main_sizer.Add(wh_sizer,0,wx.EXPAND)
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
135 handler.tree.traverse(handler.mytree_node, self.create_child_wnd, None, False)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
136
212
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
137 self.SetSizer(self.main_sizer)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
138 self.SetAutoLayout(True)
212
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
139 self.SetupScrolling()
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
140 parent.SetSize(self.GetSize())
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
141 self.Fit()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
142
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
143 self.Bind(wx.EVT_TEXT, self.on_text, id=P_TITLE)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
144 self.Bind(wx.EVT_TEXT, self.on_text, id=F_HEIGHT)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
145 self.Bind(wx.EVT_TEXT, self.on_text, id=F_WIDTH)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
146
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
147 def on_text(self,evt):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
148 id = evt.GetId()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
149 txt = self.text[id].GetValue()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
150 if not len(txt): return
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
151 if id == P_TITLE:
243
3bbfd84619c0 Traipse Beta 'OpenRPG' {101018-00}
sirebral
parents: 242
diff changeset
152 #self.handler.xml.set('name',txt)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
153 self.handler.rename(txt)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
154 elif id == F_HEIGHT or id == F_WIDTH:
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
155 try: int(txt)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
156 except: return 0
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
157 if id == F_HEIGHT: self.handler.xml.set("height",txt)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
158 elif id == F_WIDTH: self.handler.xml.set("width",txt)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
159
212
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
160 def create_child_wnd(self, treenode, evt):
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
161 node = self.handler.tree.GetPyData(treenode)
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
162 panel = node.get_design_panel(self)
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
163 size = node.get_size_constraint()
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
164 if panel:
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
165 self.main_sizer.Add(panel, size, wx.EXPAND)
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
166 self.main_sizer.Add(wx.Size(10,10))
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
167
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
168 ##########################
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
169 ## control handler
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
170 ##########################
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
171 class control_handler(node_handler):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
172 """ A nodehandler for form controls.
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
173 <nodehandler name='?' module='forms' class='control_handler' />
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
174 """
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
175 def __init__(self, xml, tree_node):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
176 node_handler.__init__(self, xml, tree_node)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
177
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
178 def get_size_constraint(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
179 return 0
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
180
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
181 ##########################
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
182 ## textctrl handler
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
183 ##########################
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
184 #
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
185 # Updated by Snowdog (April 2003)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
186 # Now includes Raw Send Mode (like the chat macro uses)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
187 # and an option to remove the title from text when sent
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
188 # to the chat in the normal non-chat macro mode.
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
189 #
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
190 class textctrl_handler(node_handler):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
191 """ <nodehandler class="textctrl_handler" module="form" name="">
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
192 <text multiline='0' send_button='0' raw_mode='0' hide_title='0'>Text In Node</text>
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
193 </nodehandler>
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
194 """
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
195 def __init__(self,xml,tree_node):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
196 node_handler.__init__(self,xml,tree_node)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
197 self.text_elem = self.xml.find('text')
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
198 if self.text_elem.get("send_button") == "": self.text_elem.set("send_button","0")
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
199 if self.text_elem.get("raw_mode") == "": self.text_elem.set("raw_mode","0")
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
200 if self.text_elem.get("hide_title") == "": self.text_elem.set("hide_title","0")
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
201
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
202 def get_design_panel(self,parent):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
203 return textctrl_edit_panel(parent,self)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
204
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
205 def get_use_panel(self,parent):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
206 return text_panel(parent,self)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
207
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
208 def get_size_constraint(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
209 return int(self.text_elem.get("multiline",0))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
210
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
211 def is_multi_line(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
212 return int(self.text_elem.get("multiline",0))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
213
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
214 def is_raw_send(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
215 return int(self.text_elem.get("raw_mode",0))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
216
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
217 def is_hide_title(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
218 return int(self.text_elem.get("hide_title",0))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
219
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
220 def has_send_button(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
221 return int(self.text_elem.get("send_button",0))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
222
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
223 def tohtml(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
224 txt = self.get_value()
242
72e0cce81a47 Traipse Beta 'OpenRPG' {100817-00}
sirebral
parents: 236
diff changeset
225 if txt == None: txt = ''
72e0cce81a47 Traipse Beta 'OpenRPG' {100817-00}
sirebral
parents: 236
diff changeset
226 txt = txt.replace('\n','<br />')
72e0cce81a47 Traipse Beta 'OpenRPG' {100817-00}
sirebral
parents: 236
diff changeset
227 if not self.is_hide_title(): txt = '<b>'+self.xml.get('name')+':</b> '+txt
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
228 return txt
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
229
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
230 def get_value(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
231 return self.text_elem.text
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
232
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
233 def set_value(self, new_value):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
234 self.text_elem.text = str(new_value)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
235
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
236 FORM_TEXT_CTRL = wx.NewId()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
237 FORM_SEND_BUTTON = wx.NewId()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
238
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
239 class text_panel(wx.Panel):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
240 def __init__(self, parent, handler):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
241 wx.Panel.__init__(self, parent, -1)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
242 self.chat = handler.chat
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
243 self.handler = handler
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
244 if handler.is_multi_line():
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
245 text_style = wx.TE_MULTILINE
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
246 sizer_style = wx.EXPAND
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
247 sizer = wx.BoxSizer(wx.VERTICAL)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
248 else:
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
249 sizer_style = wx.ALIGN_CENTER
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
250 text_style = 0
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
251 sizer = wx.BoxSizer(wx.HORIZONTAL)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
252
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
253 txt = handler.get_value()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
254 if txt == None: txt = ''
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
255 self.text = wx.TextCtrl(self, FORM_TEXT_CTRL, txt, style=text_style)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
256 sizer.Add(wx.StaticText(self, -1, handler.xml.get('name')+": "), 0, sizer_style)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
257 sizer.Add(wx.Size(5,0))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
258 sizer.Add(self.text, 1, sizer_style)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
259
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
260 if handler.has_send_button(): sizer.Add(wx.Button(self, FORM_SEND_BUTTON, "Send"), 0, sizer_style)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
261
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
262 self.sizer = sizer
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
263 self.SetSizer(sizer)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
264 self.SetAutoLayout(True)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
265
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
266 parent.SetSize(self.GetBestSize())
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
267 self.Bind(wx.EVT_TEXT, self.on_text, id=FORM_TEXT_CTRL)
135
dcf4fbe09b70 Traipse Beta 'OpenRPG' {091010-00}
sirebral
parents: 92
diff changeset
268 self.Bind(wx.EVT_BUTTON, self.on_send, id=FORM_SEND_BUTTON)
dcf4fbe09b70 Traipse Beta 'OpenRPG' {091010-00}
sirebral
parents: 92
diff changeset
269
dcf4fbe09b70 Traipse Beta 'OpenRPG' {091010-00}
sirebral
parents: 92
diff changeset
270 def on_text(self, evt):
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
271 txt = self.text.GetValue()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
272 #txt = strip_text(txt) ##Does not seem to exist.
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
273 self.handler.text_elem.text = txt
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
274
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
275 def on_send(self, evt):
135
dcf4fbe09b70 Traipse Beta 'OpenRPG' {091010-00}
sirebral
parents: 92
diff changeset
276 txt = self.text.GetValue()
212
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
277 txt = Parse.ParseLogic(txt, self.handler.xml)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
278 if not self.handler.is_raw_send():
212
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
279 Parse.Post(self.handler.tohtml(), self.chat, True, True)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
280 return 1
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
281 actionlist = txt.split("\n")
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
282 for line in actionlist:
212
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
283 line = Parse.ParseLogic(line, self.handler.xml)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
284 if(line != ""):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
285 if line[0] != "/": ## it's not a slash command
212
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
286 Parse.Post(line, self.chat, True, True)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
287 else:
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
288 action = line
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
289 self.chat.chat_cmds.docmd(action)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
290 return 1
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
291
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
292 F_MULTI = wx.NewId()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
293 F_SEND_BUTTON = wx.NewId()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
294 F_RAW_SEND = wx.NewId()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
295 F_HIDE_TITLE = wx.NewId()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
296 F_TEXT = wx.NewId()
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
297 T_BUT_REF = wx.NewId()
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
298
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
299 class textctrl_edit_panel(wx.Panel):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
300 def __init__(self, parent, handler):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
301 wx.Panel.__init__(self, parent, -1)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
302 self.handler = handler
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
303 self.parent = parent
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
304 sizer = wx.StaticBoxSizer(wx.StaticBox(self, -1, "Text Properties"), wx.VERTICAL)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
305
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
306 self.title = wx.TextCtrl(self, P_TITLE, handler.xml.get('name'))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
307 self.multi = wx.CheckBox(self, F_MULTI, " Multi-Line")
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
308 self.multi.SetValue(handler.is_multi_line())
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
309 self.raw_send = wx.CheckBox(self, F_RAW_SEND, " Send as Macro")
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
310 self.raw_send.SetValue(handler.is_raw_send())
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
311 self.hide_title = wx.CheckBox(self, F_HIDE_TITLE, " Hide Title")
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
312 self.hide_title.SetValue(handler.is_hide_title())
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
313 self.send_button = wx.CheckBox(self, F_SEND_BUTTON, " Send Button")
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
314 self.send_button.SetValue(handler.has_send_button())
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
315 button_ref = wx.Button(self, T_BUT_REF, "Reference")
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
316
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
317 sizer.Add(wx.StaticText(self, P_TITLE, "Title:"), 0, wx.EXPAND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
318 sizer.Add(self.title, 0, wx.EXPAND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
319 sizer.Add(wx.Size(10,10))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
320 sizer.Add(self.multi, 0, wx.EXPAND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
321 sizer.Add(self.raw_send, 0, wx.EXPAND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
322 sizer.Add(self.hide_title, 0, wx.EXPAND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
323 sizer.Add(self.send_button, 0 , wx.EXPAND)
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
324 sizer.Add(button_ref, 0)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
325 sizer.Add(wx.Size(10,10))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
326 if handler.is_multi_line():
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
327 sizer_style = wx.EXPAND
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
328 text_style = wx.TE_MULTILINE
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
329 multi = 1
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
330 else:
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
331 sizer_style=wx.EXPAND
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
332 text_style = 0
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
333 multi = 0
212
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
334 self.text = wx.TextCtrl(self, F_TEXT, handler.get_value() or '',style=text_style)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
335 sizer.Add(wx.Size(5,0))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
336 sizer.Add(self.text, multi, sizer_style)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
337 self.SetSizer(sizer)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
338 self.SetAutoLayout(True)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
339
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
340 self.Bind(wx.EVT_TEXT, self.on_text, id=P_TITLE)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
341 self.Bind(wx.EVT_TEXT, self.on_text, id=F_TEXT)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
342 self.Bind(wx.EVT_CHECKBOX, self.on_button, id=F_MULTI)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
343 self.Bind(wx.EVT_CHECKBOX, self.on_raw_button, id=F_RAW_SEND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
344 self.Bind(wx.EVT_CHECKBOX, self.on_hide_button, id=F_HIDE_TITLE)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
345 self.Bind(wx.EVT_CHECKBOX, self.on_send_button, id=F_SEND_BUTTON)
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
346 self.Bind(wx.EVT_BUTTON, self.on_reference, id=T_BUT_REF)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
347 self.parent.Bind(wx.EVT_CLOSE, self.tree_failsafe)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
348
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
349 ## EZ_Tree Core TaS - Prof.Ebral ##
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
350 def on_reference(self, evt, car=None):
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
351 self.do_tree = wx.Frame(self, -1, 'EZ Tree')
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
352 self.ez_tree = orpg.gametree.gametree
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
353 self.temp_wnd = self.ez_tree.game_tree(self.do_tree, self.ez_tree.EZ_REF)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
354 self.temp_wnd.Bind(wx.EVT_LEFT_DCLICK, self.on_ldclick)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
355 component.get('tree_fs').save_tree(settings.get("gametree"))
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
356 self.temp_wnd.load_tree(settings.get("gametree"))
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
357 self.do_tree.Show()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
358
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
359 def tree_failsafe(self, evt):
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
360 self.parent.Destroy()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
361 component.add('tree', component.get('tree_fs')) ## Backup
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
362
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
363 def get_grid_ref(self, obj, complete):
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
364 self.temp_wnd.Freeze()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
365 self.grid_ref = complete
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
366 self.mini_grid = wx.Frame(self, -1, 'EZ Tree Mini Grid')
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
367 self.temp_grid = obj.get_use_panel(self.mini_grid)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
368 self.temp_grid.grid.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK, self.on_grid_ldclick)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
369 self.mini_grid.Show()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
370
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
371 def on_grid_ldclick(self, evt):
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
372 complete = self.grid_ref
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
373 row = str(evt.GetRow()+1)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
374 col = str(evt.GetCol()+1)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
375 complete = complete[:len(complete)-2] + '::'+'('+row+','+col+')'+complete[len(complete)-2:]
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
376 self.text.AppendText(complete); self.on_text(evt)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
377 self.mini_grid.Destroy()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
378
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
379 def on_ldclick(self, evt):
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
380 self.rename_flag = 0
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
381 pt = evt.GetPosition()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
382 (item, flag) = self.temp_wnd.HitTest(pt)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
383 if item.IsOk():
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
384 obj = self.temp_wnd.GetPyData(item)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
385 self.temp_wnd.SelectItem(item)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
386 start = self.handler.xml.get('map').split('::')
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
387 end = obj.xml.get('map').split('::')
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
388 if obj.xml.get('class') not in ['rpg_grid_handler', 'textctrl_handler']: do = 'None'
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
389 elif end[0] == '' or start[0] != end[0]: do = 'Root'
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
390 elif start == end: do = 'Child'
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
391 elif start != end: do = 'Parent'
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
392 if do == 'Root':
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
393 complete = "!@"
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
394 for e in end:
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
395 if e != '': complete += e +'::'
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
396 complete = complete + obj.xml.get('name') + '@!'
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
397 elif do == 'Parent':
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
398 while start[0] == end[0]:
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
399 del end[0], start[0]
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
400 if len(start) == 0 or len(end) == 0: break
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
401 complete = "!#"
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
402 for e in end: complete += e +'::'
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
403 complete = complete + obj.xml.get('name') + '#!'
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
404 elif do == 'Child':
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
405 while start[0] == end[0]:
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
406 del end[0], start[0]
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
407 if len(start) == 0 or len(end) == 0: break
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
408 complete = "!!"
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
409 for e in end: complete += e +'::'
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
410 complete = complete + obj.xml.get('name') + '!!'
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
411 if do != 'None':
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
412 if obj.xml.get('class') == 'rpg_grid_handler':
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
413 self.get_grid_ref(obj, complete)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
414 else: self.text.AppendText(complete); self.on_text(evt)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
415 self.do_tree.Destroy()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
416 if do == 'None':
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
417 wx.MessageBox('Invalid Reference', 'Error')
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
418 ##### #####
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
419
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
420 def on_text(self,evt):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
421 id = evt.GetId()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
422 if id == P_TITLE:
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
423 txt = self.title.GetValue()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
424 if not len(txt): return
243
3bbfd84619c0 Traipse Beta 'OpenRPG' {101018-00}
sirebral
parents: 242
diff changeset
425 #self.handler.xml.set('name',txt)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
426 self.handler.rename(txt)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
427 if id == F_TEXT:
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
428 txt = self.text.GetValue()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
429 #txt = strip_text(txt) ##Does not seem to exist.
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
430 self.handler.text_elem.text = txt
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
431
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
432 def on_button(self,evt):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
433 self.handler.text_elem.set("multiline",str(bool2int(evt.Checked())))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
434
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
435 def on_raw_button(self,evt):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
436 self.handler.text_elem.set("raw_mode",str(bool2int(evt.Checked())))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
437
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
438 def on_hide_button(self,evt):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
439 self.handler.text_elem.set("hide_title",str(bool2int(evt.Checked())))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
440
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
441 def on_send_button(self,evt):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
442 self.handler.text_elem.set("send_button",str(bool2int(evt.Checked())))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
443
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
444
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
445 #######################
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
446 ## listbox handler
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
447 #######################
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
448 #
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
449 # Updated by Snowdog (April 2003)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
450 # Now includesan option to remove the title from
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
451 # text when sent to the chat.
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
452 #
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
453 L_DROP = 0
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
454 L_LIST = 1
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
455 L_RADIO = 2
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
456 L_CHECK = 3
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
457 L_ROLLER = 4
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
458
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
459 class listbox_handler(node_handler):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
460 """
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
461 <nodehandler class="listbox_handler" module="forms" name="">
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
462 <list type="1" send_button='0' hide_title='0'>
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
463 <option value="" selected="" >Option Text I</option>
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
464 <option value="" selected="" >Option Text II</option>
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
465 </list>
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
466 </nodehandler>
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
467 """
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
468 def __init__(self,xml,tree_node):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
469 node_handler.__init__(self,xml,tree_node)
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
470 self.list_reload()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
471 #print xml
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
472 #print self.tree.GetItemParent(tree_node)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
473 if self.list.get("send_button") == "": self.list.set("send_button","0")
142
2345c12d93a7 Traipse Beta 'OpenRPG' {091123-01}
sirebral
parents: 135
diff changeset
474 if self.list.get("hide_title") == "": self.list.set("hide_title","0")
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
475 if self.list.get("raw_mode") == "": self.list.set("raw_mode","0")
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
476
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
477 def list_reload(self):
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
478 self.list = self.xml.find('list')
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
479 self.options = self.list.findall('option')
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
480 self.captions = []
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
481 for opt in self.options:
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
482 if opt.get('caption') == None: opt.set('caption', '')
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
483 self.captions.append(opt.get('caption'))
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
484
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
485 def get_design_panel(self,parent):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
486 return listbox_edit_panel(parent,self)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
487
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
488 def get_use_panel(self,parent):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
489 return listbox_panel(parent,self)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
490
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
491 def get_type(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
492 return int(self.list.get("type"))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
493
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
494 def set_type(self,type):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
495 self.list.set("type",str(type))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
496
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
497 def is_hide_title(self):
142
2345c12d93a7 Traipse Beta 'OpenRPG' {091123-01}
sirebral
parents: 135
diff changeset
498 return int(self.list.get("hide_title", 0))
2345c12d93a7 Traipse Beta 'OpenRPG' {091123-01}
sirebral
parents: 135
diff changeset
499
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
500 def is_raw_send(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
501 return int(self.list.get("raw_mode",0))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
502
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
503 # single selection methods
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
504 def get_selected_node(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
505 for opt in self.options:
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
506 if opt.get("selected") == "1": return opt
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
507 return None
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
508
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
509 def get_selected_index(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
510 i = 0
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
511 for opt in self.options:
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
512 if opt.get("selected") == "1": return i
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
513 i += 1
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
514 return 0
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
515
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
516 def get_selected_text(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
517 node = self.get_selected_node()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
518 if node: return node.text
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
519 else: return ""
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
520
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
521 # mult selection methods
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
522 def get_selections(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
523 opts = []
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
524 for opt in self.options:
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
525 if opt.get("selected") == "1": opts.append(opt)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
526 return opts
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
527
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
528 def get_selections_text(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
529 opts = []
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
530 for opt in self.options:
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
531 if opt.get("selected") == "1": opts.append(opt.text)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
532 return opts
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
533
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
534 def get_selections_index(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
535 opts = []
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
536 i = 0
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
537 for opt in self.options:
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
538 if opt.get("selected") == "1": opts.append(i)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
539 i += 1
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
540 return opts
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
541
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
542 # setting selection method
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
543 def set_selected_node(self,index,selected=1):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
544 if self.get_type() != L_CHECK: self.clear_selections()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
545 self.options[index].set("selected", str(bool2int(selected)))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
546
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
547 def clear_selections(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
548 for opt in self.options: opt.set("selected","0")
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
549
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
550 # misc methods
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
551 def get_options(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
552 opts = []
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
553 for opt in self.options: opts.append(opt.text)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
554 return opts
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
555
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
556 def get_captions(self):
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
557 captions = []
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
558 for opt in self.options: captions.append(opt.get("caption"))
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
559 self.captions = captions
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
560 return captions
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
561
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
562 def get_option(self, index):
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
563 return self.options[index].text
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
564
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
565 def get_caption(self, index):
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
566 captions = self.get_captions()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
567 return captions[index] or ''
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
568
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
569 def add_option(self, caption, value):
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
570 elem = Element('option')
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
571 elem.set("value","0")
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
572 elem.set('caption', caption)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
573 elem.set("selected","0")
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
574 elem.text = value
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
575 self.list.append(elem)
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
576 self.list_reload()
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
577
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
578 def remove_option(self,index):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
579 self.list.remove(self.options[index])
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
580 self.list_reload()
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
581
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
582 def edit_option(self, index, value):
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
583 self.options[index].text = value
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
584
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
585 def edit_caption(self, index, value):
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
586 self.options[index].set('caption', value)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
587 self.captions[index] = value
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
588
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
589 def has_send_button(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
590 if self.list.get("send_button") == '0': return False
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
591 else: return True
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
592
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
593 def get_size_constraint(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
594 if self.get_type() == L_DROP: return 0
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
595 else: return 1
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
596
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
597 def tohtml(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
598 opts = self.get_selections_text()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
599 text = ""
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
600 if not self.is_hide_title(): text = "<b>"+self.xml.get("name")+":</b> "
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
601 comma = ", "
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
602 text += comma.join(opts)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
603 return text
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
604
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
605 def get_value(self):
142
2345c12d93a7 Traipse Beta 'OpenRPG' {091123-01}
sirebral
parents: 135
diff changeset
606 return "\n".join(self.get_selections_text())
2345c12d93a7 Traipse Beta 'OpenRPG' {091123-01}
sirebral
parents: 135
diff changeset
607
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
608 def on_send_to_chat(self, evt):
142
2345c12d93a7 Traipse Beta 'OpenRPG' {091123-01}
sirebral
parents: 135
diff changeset
609 txt = self.get_selected_text()
212
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
610 txt = Parse.ParseLogic(txt, self.xml)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
611 if not self.is_raw_send():
212
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
612 Parse.Post(self.tohtml(), self.chat, True, True)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
613 return 1
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
614 actionlist = self.get_selections_text()
142
2345c12d93a7 Traipse Beta 'OpenRPG' {091123-01}
sirebral
parents: 135
diff changeset
615 for line in actionlist:
212
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
616 line = Parse.ParseLogic(line, self.xml)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
617 if(line != ""):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
618 if line[0] != "/": ## it's not a slash command
212
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
619 Parse.Post(line, self.chat, True, True)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
620 else:
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
621 action = line
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
622 self.chat.chat_cmds.docmd(action)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
623 return 1
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
624
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
625
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
626 F_LIST = wx.NewId()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
627 F_SEND = wx.NewId()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
628
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
629
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
630 class listbox_panel(wx.Panel):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
631 def __init__(self, parent, handler):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
632 wx.Panel.__init__(self, parent, -1)
212
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
633 #ScrolledPanel.__init__(self, parent, wx.ID_ANY, style=wx.NO_BORDER|wx.VSCROLL|wx.HSCROLL)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
634 self.handler = handler
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
635 self.chat = handler.chat
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
636 opts = []
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
637 values = handler.get_options()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
638 captions = handler.get_captions()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
639 for value in values:
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
640 if captions[values.index(value)] != '': opts.append(captions[values.index(value)])
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
641 else: opts.append(value)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
642 cur_opt = handler.get_selected_text()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
643 type = handler.get_type()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
644 label = handler.xml.get('name')
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
645
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
646 if type == L_DROP:
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
647 self.list = wx.ComboBox(self, F_LIST, cur_opt, choices=opts, style=wx.CB_READONLY)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
648 if self.list.GetSize()[0] > 200:
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
649 self.list.Destroy()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
650 self.list = wx.ComboBox(self, F_LIST, cur_opt, size=(200, -1), choices=opts, style=wx.CB_READONLY)
212
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
651 elif type == L_LIST: self.list = wx.ListBox(self, F_LIST, choices=opts)
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
652 elif type == L_RADIO: self.list = wx.RadioBox(self, F_LIST, label, choices=opts, majorDimension=3)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
653 elif type == L_CHECK:
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
654 self.list = wx.CheckListBox(self,F_LIST,choices=opts)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
655 self.set_checks()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
656
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
657 for i in handler.get_selections_text():
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
658 if type == L_DROP: self.list.SetValue( i )
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
659 else: self.list.SetStringSelection( i )
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
660 if type == L_DROP: sizer = wx.BoxSizer(wx.HORIZONTAL)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
661 else: sizer = wx.BoxSizer(wx.VERTICAL)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
662
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
663 if type != L_RADIO:
212
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
664 sizer.Add(wx.StaticText(self, -1, label+": "), 0, wx.EXPAND|wx.ALL)
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
665 sizer.Add(self.list, 1, wx.EXPAND|wx.ALL)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
666 if handler.has_send_button():
212
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
667 sizer.Add(wx.Button(self, F_SEND, "Send"), 0, wx.EXPAND|wx.ALL)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
668 self.Bind(wx.EVT_BUTTON, self.handler.on_send_to_chat, id=F_SEND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
669 self.sizer = sizer
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
670 self.SetSizer(sizer)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
671 self.SetAutoLayout(True)
212
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
672 #self.SetupScrolling()
13054be69834 Traipse Beta 'OpenRPG' {100428-00}
sirebral
parents: 191
diff changeset
673 #parent.SetSize(self.GetBestSize())
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
674 self.Fit()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
675
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
676 if type == L_DROP: self.Bind(wx.EVT_COMBOBOX, self.on_change, id=F_LIST)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
677 elif type == L_LIST: self.Bind(wx.EVT_LISTBOX, self.on_change, id=F_LIST)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
678 elif type == L_RADIO: self.Bind(wx.EVT_RADIOBOX, self.on_change, id=F_LIST)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
679 elif type == L_CHECK:self.Bind(wx.EVT_CHECKLISTBOX, self.on_check, id=F_LIST)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
680 self.type = type
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
681
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
682 def on_change(self,evt):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
683 self.handler.set_selected_node(self.list.GetSelection())
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
684
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
685 def on_check(self,evt):
142
2345c12d93a7 Traipse Beta 'OpenRPG' {091123-01}
sirebral
parents: 135
diff changeset
686 for i in xrange(self.list.GetCount()): self.handler.set_selected_node(i, bool2int(self.list.IsChecked(i)))
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
687
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
688 def set_checks(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
689 for i in self.handler.get_selections_index(): self.list.Check(i)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
690
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
691
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
692 BUT_ADD = wx.NewId()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
693 BUT_REM = wx.NewId()
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
694 BUT_REF = wx.NewId()
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
695 BUT_EDIT = wx.NewId()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
696 F_TYPE = wx.NewId()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
697 F_NO_TITLE = wx.NewId()
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
698 LIST_CTRL = wx.NewId()
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
699
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
700 class listbox_edit_panel(wx.Panel):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
701 def __init__(self, parent, handler):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
702 wx.Panel.__init__(self, parent, -1)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
703 self.handler = handler
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
704 self.parent = parent
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
705 sizer = wx.StaticBoxSizer(wx.StaticBox(self, -1, "List Box Properties"), wx.VERTICAL)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
706
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
707 self.text = wx.TextCtrl(self, P_TITLE, handler.xml.get('name'))
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
708 self.listbox = wx.ListCtrl(self, LIST_CTRL, style=wx.LC_REPORT)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
709 self.listbox.InsertColumn(0, 'Caption')
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
710 self.listbox.InsertColumn(1, 'Value')
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
711 self.listbox.SetColumnWidth(0, 75)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
712 self.listbox.SetColumnWidth(1, 300)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
713 self.reload_options()
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
714
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
715 opts = ['Drop Down', 'List Box', 'Radio Box', 'Check List']
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
716 self.type_radios = wx.RadioBox(self,F_TYPE,"List Type",choices=opts)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
717 self.type_radios.SetSelection(handler.get_type())
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
718
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
719 self.send_button = wx.CheckBox(self, F_SEND_BUTTON, " Send Button")
142
2345c12d93a7 Traipse Beta 'OpenRPG' {091123-01}
sirebral
parents: 135
diff changeset
720 self.send_button.SetValue(handler.has_send_button())
2345c12d93a7 Traipse Beta 'OpenRPG' {091123-01}
sirebral
parents: 135
diff changeset
721
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
722 self.raw_send = wx.CheckBox(self, F_RAW_SEND, " Send as Macro")
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
723 self.raw_send.SetValue(handler.is_raw_send())
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
724
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
725 self.hide_title = wx.CheckBox(self, F_NO_TITLE, " Hide Title")
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
726 self.hide_title.SetValue(handler.is_hide_title())
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
727
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
728 but_sizer = wx.BoxSizer(wx.HORIZONTAL)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
729 but_sizer.Add(wx.Button(self, BUT_ADD, "Add"), 1, wx.EXPAND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
730 but_sizer.Add(wx.Size(10,10))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
731 but_sizer.Add(wx.Button(self, BUT_EDIT, "Edit"), 1, wx.EXPAND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
732 but_sizer.Add(wx.Size(10,10))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
733 but_sizer.Add(wx.Button(self, BUT_REM, "Remove"), 1, wx.EXPAND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
734
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
735 sizer.Add(wx.StaticText(self, -1, "Title:"), 0, wx.EXPAND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
736 sizer.Add(self.text, 0, wx.EXPAND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
737 sizer.Add(wx.Size(10,10))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
738 sizer.Add(self.type_radios, 0, wx.EXPAND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
739 sizer.Add(wx.Size(10,10))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
740 sizer.Add(self.send_button, 0 , wx.EXPAND)
142
2345c12d93a7 Traipse Beta 'OpenRPG' {091123-01}
sirebral
parents: 135
diff changeset
741 sizer.Add(self.hide_title, 0, wx.EXPAND)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
742 sizer.Add(self.raw_send, 0, wx.EXPAND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
743 sizer.Add(wx.Size(10,10))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
744 sizer.Add(wx.StaticText(self, -1, "Options:"), 0, wx.EXPAND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
745 sizer.Add(self.listbox,1,wx.EXPAND);
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
746 sizer.Add(but_sizer,0,wx.EXPAND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
747
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
748 self.SetSizer(sizer)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
749 self.SetAutoLayout(True)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
750 self.Fit()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
751 parent.SetSize(self.GetBestSize())
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
752
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
753 self.Bind(wx.EVT_TEXT, self.on_text, id=P_TITLE)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
754 self.Bind(wx.EVT_BUTTON, self.on_edit, id=BUT_EDIT)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
755 self.Bind(wx.EVT_BUTTON, self.on_remove, id=BUT_REM)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
756 self.Bind(wx.EVT_BUTTON, self.on_add, id=BUT_ADD)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
757 self.Bind(wx.EVT_RADIOBOX, self.on_type, id=F_TYPE)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
758 self.Bind(wx.EVT_CHECKBOX, self.on_hide_button, id=F_NO_TITLE)
142
2345c12d93a7 Traipse Beta 'OpenRPG' {091123-01}
sirebral
parents: 135
diff changeset
759 self.Bind(wx.EVT_CHECKBOX, self.on_send_button, id=F_SEND_BUTTON)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
760 self.Bind(wx.EVT_CHECKBOX, self.on_raw_button, id=F_RAW_SEND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
761
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
762 def on_type(self,evt):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
763 self.handler.set_type(evt.GetInt())
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
764
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
765 def on_add(self,evt):
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
766 self.dlg = wx.Frame(self, -1, 'Text', size=(300,150))
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
767 edit_panel = wx.Panel(self.dlg, -1)
184
dcae32e219f1 Traipse Beta 'OpenRPG' {100117-00}
sirebral
parents: 183
diff changeset
768 sizer = wx.GridBagSizer(1, 1)
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
769 edit_panel.SetSizer(sizer)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
770 caption_text = wx.StaticText(edit_panel, -1, 'Caption')
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
771 self.caption_entry = wx.TextCtrl(edit_panel, -1, '')
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
772 value_text = wx.StaticText(edit_panel, -1, 'Value')
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
773 self.value_entry = wx.TextCtrl(edit_panel, -1, '')
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
774 button_ok = wx.Button(edit_panel, wx.ID_OK)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
775 button_cancel = wx.Button(edit_panel, wx.ID_CANCEL)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
776 button_ref = wx.Button(edit_panel, BUT_REF, "Reference")
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
777 sizer.Add(caption_text, (0,0))
184
dcae32e219f1 Traipse Beta 'OpenRPG' {100117-00}
sirebral
parents: 183
diff changeset
778 sizer.Add(self.caption_entry, (0,1), span=(1,4), flag=wx.EXPAND)
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
779 sizer.Add(value_text, (1,0))
184
dcae32e219f1 Traipse Beta 'OpenRPG' {100117-00}
sirebral
parents: 183
diff changeset
780 sizer.Add(self.value_entry, (1,1), span=(1,4), flag=wx.EXPAND)
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
781 sizer.Add(button_ok, (3,0))
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
782 sizer.Add(button_cancel, (3,1))
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
783 sizer.Add(button_ref, (3,2), flag=wx.EXPAND)
184
dcae32e219f1 Traipse Beta 'OpenRPG' {100117-00}
sirebral
parents: 183
diff changeset
784 sizer.AddGrowableCol(3)
dcae32e219f1 Traipse Beta 'OpenRPG' {100117-00}
sirebral
parents: 183
diff changeset
785 sizer.AddGrowableRow(2)
dcae32e219f1 Traipse Beta 'OpenRPG' {100117-00}
sirebral
parents: 183
diff changeset
786 self.dlg.SetSize((275, 125))
dcae32e219f1 Traipse Beta 'OpenRPG' {100117-00}
sirebral
parents: 183
diff changeset
787 self.dlg.SetMinSize((275, 125))
dcae32e219f1 Traipse Beta 'OpenRPG' {100117-00}
sirebral
parents: 183
diff changeset
788 self.dlg.Layout()
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
789 self.Bind(wx.EVT_BUTTON, self.on_reference, id=BUT_REF)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
790 self.Bind(wx.EVT_BUTTON, self.on_add_option, id=wx.ID_OK)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
791 self.Bind(wx.EVT_BUTTON, self.on_edit_cancel, id=wx.ID_CANCEL)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
792 self.dlg.Show()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
793
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
794 def on_add_option(self, evt):
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
795 self.handler.add_option(self.caption_entry.GetValue(), self.value_entry.GetValue())
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
796 self.reload_options()
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
797 self.dlg.Destroy()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
798 component.add('tree', component.get('tree_fs')) ## Backup
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
799 return
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
800
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
801 ## EZ_Tree Core TaS - Prof.Ebral ##
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
802 def on_reference(self, evt, car=None):
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
803 self.do_tree = wx.Frame(self, -1, 'EZ Tree')
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
804 self.ez_tree = orpg.gametree.gametree
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
805 self.temp_wnd = self.ez_tree.game_tree(self.do_tree, self.ez_tree.EZ_REF)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
806 self.temp_wnd.Bind(wx.EVT_LEFT_DCLICK, self.on_ldclick)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
807 component.get('tree_fs').save_tree(settings.get("gametree"))
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
808 self.temp_wnd.load_tree(settings.get("gametree"))
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
809 self.do_tree.Show()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
810
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
811 def get_grid_ref(self, obj, complete):
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
812 self.temp_wnd.Freeze()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
813 self.grid_ref = complete
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
814 self.mini_grid = wx.Frame(self, -1, 'EZ Tree Grid')
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
815 self.temp_grid = obj.get_use_panel(self.mini_grid)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
816 self.temp_grid.grid.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK, self.on_grid_ldclick)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
817 self.mini_grid.Show()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
818
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
819 def on_grid_ldclick(self, evt):
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
820 complete = self.grid_ref
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
821 row = str(evt.GetRow()+1)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
822 col = str(evt.GetCol()+1)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
823 complete = complete[:len(complete)-2] + '::'+'('+row+','+col+')'+complete[len(complete)-2:]
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
824 self.value_entry.AppendText(complete)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
825 self.mini_grid.Destroy()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
826
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
827 def on_ldclick(self, evt):
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
828 self.rename_flag = 0
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
829 pt = evt.GetPosition()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
830 (item, flag) = self.temp_wnd.HitTest(pt)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
831 if item.IsOk():
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
832 obj = self.temp_wnd.GetPyData(item)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
833 self.temp_wnd.SelectItem(item)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
834 start = self.handler.xml.get('map').split('::')
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
835 end = obj.xml.get('map').split('::')
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
836 if obj.xml.get('class') not in ['rpg_grid_handler', 'textctrl_handler']: do = 'None'
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
837 elif end[0] == '' or start[0] != end[0]: do = 'Root'
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
838 elif start == end: do = 'Child'
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
839 elif start != end: do = 'Parent'
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
840 if do == 'Root':
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
841 complete = "!@"
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
842 for e in end:
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
843 if e != '': complete += e +'::'
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
844 complete = complete + obj.xml.get('name') + '@!'
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
845 elif do == 'Parent':
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
846 while start[0] == end[0]:
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
847 del end[0], start[0]
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
848 if len(start) == 0 or len(end) == 0: break
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
849 complete = "!#"
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
850 for e in end: complete += e +'::'
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
851 complete = complete + obj.xml.get('name') + '#!'
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
852 elif do == 'Child':
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
853 while start[0] == end[0]:
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
854 del end[0], start[0]
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
855 if len(start) == 0 or len(end) == 0: break
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
856 complete = "!!"
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
857 for e in end: complete += e +'::'
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
858 complete = complete + obj.xml.get('name') + '!!'
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
859 if do != 'None':
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
860 if obj.xml.get('class') == 'rpg_grid_handler':
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
861 self.get_grid_ref(obj, complete)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
862 else: self.value_entry.AppendText(complete); self.reload_options()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
863 self.do_tree.Destroy()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
864 if do == 'None':
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
865 wx.MessageBox('Invalid Reference', 'Error')
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
866 ##### #####
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
867
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
868 def on_edit_ok(self, evt):
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
869 self.handler.edit_caption(self.index, self.caption_entry.GetValue())
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
870 self.handler.edit_option(self.index, self.value_entry.GetValue())
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
871 self.reload_options()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
872 self.dlg.Destroy()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
873 component.add('tree', component.get('tree_fs')) ## Backup
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
874 return
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
875
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
876 def on_edit_cancel(self, evt):
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
877 self.dlg.Destroy()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
878 component.add('tree', component.get('tree_fs')) ## Backup
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
879 return
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
880
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
881 def on_remove(self,evt):
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
882 index = self.listbox.GetFocusedItem()
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
883 if index >= 0:
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
884 self.handler.remove_option(index)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
885 self.reload_options()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
886
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
887 def on_edit(self,evt):
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
888 self.index = self.listbox.GetFocusedItem()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
889 if self.index >= 0:
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
890 self.dlg = wx.Frame(self, -1, 'Text', size=(300,150))
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
891 edit_panel = wx.Panel(self.dlg, -1)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
892 sizer = wx.GridBagSizer(1, 2)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
893 edit_panel.SetSizer(sizer)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
894 caption_text = wx.StaticText(edit_panel, -1, 'Caption')
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
895 self.caption_entry = wx.TextCtrl(edit_panel, -1, self.handler.get_caption(self.index))
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
896 value_text = wx.StaticText(edit_panel, -1, 'Value')
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
897 self.value_entry = wx.TextCtrl(edit_panel, -1, self.handler.get_option(self.index))
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
898 button_ok = wx.Button(edit_panel, wx.ID_OK)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
899 button_cancel = wx.Button(edit_panel, wx.ID_CANCEL)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
900 button_ref = wx.Button(edit_panel, BUT_REF, "Reference")
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
901 sizer.Add(caption_text, (0,0))
184
dcae32e219f1 Traipse Beta 'OpenRPG' {100117-00}
sirebral
parents: 183
diff changeset
902 sizer.Add(self.caption_entry, (0,1), span=(1,4), flag=wx.EXPAND)
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
903 sizer.Add(value_text, (1,0))
184
dcae32e219f1 Traipse Beta 'OpenRPG' {100117-00}
sirebral
parents: 183
diff changeset
904 sizer.Add(self.value_entry, (1,1), span=(1,4), flag=wx.EXPAND)
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
905 sizer.Add(button_ok, (3,0))
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
906 sizer.Add(button_cancel, (3,1))
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
907 sizer.Add(button_ref, (3,2), flag=wx.EXPAND)
184
dcae32e219f1 Traipse Beta 'OpenRPG' {100117-00}
sirebral
parents: 183
diff changeset
908 sizer.AddGrowableCol(3)
dcae32e219f1 Traipse Beta 'OpenRPG' {100117-00}
sirebral
parents: 183
diff changeset
909 sizer.AddGrowableRow(2)
dcae32e219f1 Traipse Beta 'OpenRPG' {100117-00}
sirebral
parents: 183
diff changeset
910 self.dlg.SetSize((275, 125))
dcae32e219f1 Traipse Beta 'OpenRPG' {100117-00}
sirebral
parents: 183
diff changeset
911 self.dlg.SetMinSize((275, 125))
dcae32e219f1 Traipse Beta 'OpenRPG' {100117-00}
sirebral
parents: 183
diff changeset
912 self.dlg.Layout()
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
913 self.Bind(wx.EVT_BUTTON, self.on_reference, id=BUT_REF)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
914 self.Bind(wx.EVT_BUTTON, self.on_edit_ok, id=wx.ID_OK)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
915 self.Bind(wx.EVT_BUTTON, self.on_edit_cancel, id=wx.ID_CANCEL)
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
916 self.dlg.Show()
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
917
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
918 def reload_options(self):
183
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
919 self.listbox.DeleteAllItems()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
920 values = self.handler.get_options()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
921 captions = self.handler.get_captions()
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
922 for index in range(len(values)):
0d9b746b5751 Traipse Beta 'OpenRPG' {100115-00}
sirebral
parents: 156
diff changeset
923 self.listbox.Append((captions[index], values[index]))
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
924
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
925 def on_text(self,evt):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
926 id = evt.GetId()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
927 txt = self.text.GetValue()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
928 if not len(txt): return
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
929 if id == P_TITLE:
243
3bbfd84619c0 Traipse Beta 'OpenRPG' {101018-00}
sirebral
parents: 242
diff changeset
930 #self.handler.xml.set('name',txt)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
931 self.handler.rename(txt)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
932
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
933 def on_send_button(self,evt):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
934 self.handler.list.set("send_button", str( bool2int(evt.Checked()) ))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
935
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
936 def on_hide_button(self,evt):
142
2345c12d93a7 Traipse Beta 'OpenRPG' {091123-01}
sirebral
parents: 135
diff changeset
937 self.handler.list.set("hide_title", str( bool2int(evt.Checked()) ))
2345c12d93a7 Traipse Beta 'OpenRPG' {091123-01}
sirebral
parents: 135
diff changeset
938
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
939 def on_raw_button(self,evt):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
940 self.handler.list.set("raw_mode",str(bool2int(evt.Checked())))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
941
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
942
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
943 ###############################
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
944 ## link image handlers
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
945 ###############################
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
946
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
947 class link_handler(node_handler):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
948 """ A nodehandler for URLs. Will open URL in a wxHTMLFrame
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
949 <nodehandler name='?' module='forms' class='link_handler' >
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
950 <link href='http//??.??' />
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
951 </nodehandler >
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
952 """
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
953 def __init__(self,xml,tree_node):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
954 node_handler.__init__(self,xml,tree_node)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
955 self.link = self.xml[0]
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
956
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
957 def on_use(self,evt):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
958 href = self.link.get("href")
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
959 wb = webbrowser.get()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
960 wb.open(href)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
961
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
962 def get_design_panel(self,parent):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
963 return link_edit_panel(parent,self)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
964
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
965 def get_use_panel(self,parent):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
966 return link_panel(parent,self)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
967
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
968 def tohtml(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
969 href = self.link.get("href")
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
970 title = self.xml.get("name")
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
971 return "<a href='"+href+"' >"+title+"</a>"
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
972
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
973 class link_panel(wx.StaticText):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
974 def __init__(self,parent,handler):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
975 self.handler = handler
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
976 label = handler.xml.get('name')
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
977 wx.StaticText.__init__(self,parent,-1,label)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
978 self.SetForegroundColour(wx.BLUE)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
979 self.Bind(wx.EVT_LEFT_DOWN, self.handler.on_use)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
980
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
981 P_URL = wx.NewId()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
982
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
983 class link_edit_panel(wx.Panel):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
984 def __init__(self, parent, handler):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
985 wx.Panel.__init__(self, parent, -1)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
986 self.handler = handler
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
987 sizer = wx.StaticBoxSizer(wx.StaticBox(self, -1, "Link Properties"), wx.VERTICAL)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
988
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
989 self.text = {}
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
990 self.text[P_TITLE] = wx.TextCtrl(self, P_TITLE, handler.xml.get('name'))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
991 self.text[P_URL] = wx.TextCtrl(self, P_URL, handler.link.get('href'))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
992
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
993 sizer.Add(wx.StaticText(self, -1, "Title:"), 0, wx.EXPAND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
994 sizer.Add(self.text[P_TITLE], 0, wx.EXPAND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
995 sizer.Add(wx.Size(10,10))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
996 sizer.Add(wx.StaticText(self, -1, "URL:"), 0, wx.EXPAND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
997 sizer.Add(self.text[P_URL], 0, wx.EXPAND)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
998 self.SetSizer(sizer)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
999 self.Bind(wx.EVT_TEXT, self.on_text, id=P_TITLE)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1000 self.Bind(wx.EVT_TEXT, self.on_text, id=P_URL)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1001
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1002 def on_text(self,evt):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1003 id = evt.GetId()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1004 txt = self.text[id].GetValue()
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1005 if not len(txt): return
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1006 if id == P_TITLE:
243
3bbfd84619c0 Traipse Beta 'OpenRPG' {101018-00}
sirebral
parents: 242
diff changeset
1007 #self.handler.xml.set('name',txt)
156
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1008 self.handler.rename(txt)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1009 elif id == P_URL: self.handler.link.set('href',txt)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1010
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1011 ##########################
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1012 ## webimg node handler
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1013 ##########################
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1014 class webimg_handler(node_handler):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1015 """ A nodehandler for URLs. Will open URL in a wxHTMLFrame
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1016 <nodehandler name='?' module='forms' class='webimg_handler' >
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1017 <link href='http//??.??' />
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1018 </nodehandler >
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1019 """
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1020 def __init__(self,xml,tree_node):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1021 node_handler.__init__(self,xml,tree_node)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1022 self.link = self.xml[0]
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1023
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1024 def get_design_panel(self,parent):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1025 return link_edit_panel(parent,self)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1026
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1027 def get_use_panel(self,parent):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1028 img = img_helper().load_url(self.link.get("href"))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1029 if not img is None: return wx.StaticBitmap(parent,-1,img,size= wx.Size(img.GetWidth(),img.GetHeight()))
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1030 return wx.EmptyBitmap(1, 1)
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1031
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1032 def tohtml(self):
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1033 href = self.link.get("href")
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1034 title = self.xml.get("name")
3b6888bb53b5 Traipse Beta 'OpenRPG' {091125-02}
sirebral
parents: 152
diff changeset
1035 return "<img src='"+href+"' alt="+title+" >"