comparison orpg/tools/orpg_settings.py @ 13:211ac836b6a0 grumpy-goblin

{090731-00} Fixes problem with Name & Settings window, cleans code.
author sirebral
date Fri, 31 Jul 2009 15:22:11 -0500
parents 4385a7d0efd1
children 97265586402b
comparison
equal deleted inserted replaced
12:d492f137cd3c 13:211ac836b6a0
43 temp_file = open(self.filename) 43 temp_file = open(self.filename)
44 txt = temp_file.read() 44 txt = temp_file.read()
45 temp_file.close() 45 temp_file.close()
46 self.xml_dom = self.xml.parseXml(txt) 46 self.xml_dom = self.xml.parseXml(txt)
47 47
48 if self.xml_dom is None: 48 if self.xml_dom is None: self.rebuildSettings()
49 self.rebuildSettings()
50 self.xml_dom = self.xml_dom._get_documentElement() 49 self.xml_dom = self.xml_dom._get_documentElement()
51 50
52 def rebuildSettings(self): 51 def rebuildSettings(self):
53 self.log.log("Settings file has be corrupted, rebuilding settings.", ORPG_INFO, True) 52 self.log.log("Settings file has be corrupted, rebuilding settings.", ORPG_INFO, True)
54 try: 53 try: os.remove(self.filename)
55 os.remove(self.filename) 54 except: pass
56 except:
57 pass
58 55
59 self.validate.config_file("settings.xml","default_settings.xml") 56 self.validate.config_file("settings.xml","default_settings.xml")
60 temp_file = open(self.filename) 57 temp_file = open(self.filename)
61 txt = temp_file.read() 58 txt = temp_file.read()
62 temp_file.close() 59 temp_file.close()
63 self.xml_dom = self.xml.parseXml(txt) 60 self.xml_dom = self.xml.parseXml(txt)
64 61
65 def get_setting(self, name): 62 def get_setting(self, name):
66 try: 63 try: return self.xml_dom.getElementsByTagName(name)[0].getAttribute("value")
67 return self.xml_dom.getElementsByTagName(name)[0].getAttribute("value") 64 except: return 0
68 except:
69 return 0
70 65
71 def get_setting_keys(self): 66 def get_setting_keys(self):
72 keys = [] 67 keys = []
73 tabs = self.xml_dom.getElementsByTagName("tab") 68 tabs = self.xml_dom.getElementsByTagName("tab")
74 for i in xrange(0, len(tabs)): 69 for i in xrange(0, len(tabs)):
75 if tabs[i].getAttribute("type") == 'grid': 70 if tabs[i].getAttribute("type") == 'grid':
76 children = tabs[i]._get_childNodes() 71 children = tabs[i]._get_childNodes()
77 for c in children: 72 for c in children: keys.append(c._get_tagName())
78 keys.append(c._get_tagName())
79 return keys 73 return keys
80 74
81 def set_setting(self, name, value): 75 def set_setting(self, name, value):
82 self.xml_dom.getElementsByTagName(name)[0].setAttribute("value", value) 76 self.xml_dom.getElementsByTagName(name)[0].setAttribute("value", value)
83 77
84 def add_setting(self, tab, setting, value, options, help): 78 def add_setting(self, tab, setting, value, options, help):
85 if len(self.xml_dom.getElementsByTagName(setting)) > 0: 79 if len(self.xml_dom.getElementsByTagName(setting)) > 0: return False
86 return False
87 tabs = self.xml_dom.getElementsByTagName("tab") 80 tabs = self.xml_dom.getElementsByTagName("tab")
88 newsetting = self.xml.parseXml('<' + setting + ' value="' + value + '" options="' + options + '" help="' + help + '" />')._get_documentElement() 81 newsetting = self.xml.parseXml('<' + setting + ' value="' + value + '" options="' + options + '" help="' + help + '" />')._get_documentElement()
89 for i in xrange(0, len(tabs)): 82 for i in xrange(0, len(tabs)):
90 if tabs[i].getAttribute("name") == tab and tabs[i].getAttribute("type") == 'grid': 83 if tabs[i].getAttribute("name") == tab and tabs[i].getAttribute("type") == 'grid':
91 tabs[i].appendChild(newsetting) 84 tabs[i].appendChild(newsetting)
92 return True 85 return True
93 return False 86 return False
94 87
95 def add_tab(self, parent, tabname, tabtype): 88 def add_tab(self, parent, tabname, tabtype):
96 tab_xml = '<tab ' 89 tab_xml = '<tab '
97 if tabtype == 'text': 90 if tabtype == 'text': tab_xml += 'name="' + tabname + '" type="text" />'
98 tab_xml += 'name="' + tabname + '" type="text" />' 91 else: tab_xml += 'name="' + tabname + '" type="' + tabtype + '"></tab>'
99 else:
100 tab_xml += 'name="' + tabname + '" type="' + tabtype + '"></tab>'
101 newtab = self.xml.parseXml(tab_xml)._get_documentElement() 92 newtab = self.xml.parseXml(tab_xml)._get_documentElement()
102 if parent != None: 93 if parent != None:
103 tabs = self.xml_dom.getElementsByTagName("tab") 94 tabs = self.xml_dom.getElementsByTagName("tab")
104 for i in xrange(0, len(tabs)): 95 for i in xrange(0, len(tabs)):
105 if tabs[i].getAttribute("name") == parent and tabs[i].getAttribute("type") == 'tab': 96 if tabs[i].getAttribute("name") == parent and tabs[i].getAttribute("type") == 'tab':
106 children = tabs[i]._get_childNodes() 97 children = tabs[i]._get_childNodes()
107 for c in children: 98 for c in children:
108 if c.getAttribute("name") == tabname: 99 if c.getAttribute("name") == tabname: return False
109 return False
110 tabs[i].appendChild(newtab) 100 tabs[i].appendChild(newtab)
111 return True 101 return True
112 else: 102 else:
113 children = self.xml_dom._get_childNodes() 103 children = self.xml_dom._get_childNodes()
114 for c in children: 104 for c in children:
115 if c.getAttribute("name") == tabname: 105 if c.getAttribute("name") == tabname: return False
116 return False
117 self.xml_dom.appendChild(newtab) 106 self.xml_dom.appendChild(newtab)
118 return True 107 return True
119 return False 108 return False
120 109
121 def updateIni(self): 110 def updateIni(self):
123 temp_file = open(defaultFile) 112 temp_file = open(defaultFile)
124 txt = temp_file.read() 113 txt = temp_file.read()
125 temp_file.close() 114 temp_file.close()
126 default_dom = self.xml.parseXml(txt)._get_documentElement() 115 default_dom = self.xml.parseXml(txt)._get_documentElement()
127 for child in default_dom.getChildren(): 116 for child in default_dom.getChildren():
128 if child._get_tagName() == 'tab' and child.hasChildNodes(): 117 if child._get_tagName() == 'tab' and child.hasChildNodes(): self.proccessChildren(child)
129 self.proccessChildren(child)
130 default_dom.unlink() 118 default_dom.unlink()
131 119
132 def proccessChildren(self, dom, parent=None): 120 def proccessChildren(self, dom, parent=None):
133 if dom._get_tagName() == 'tab': 121 if dom._get_tagName() == 'tab':
134 self.add_tab(parent, dom.getAttribute("name"), dom.getAttribute("type")) 122 self.add_tab(parent, dom.getAttribute("name"), dom.getAttribute("type"))
178 self.validate.config_file("settings.xml","default_settings.xml") 166 self.validate.config_file("settings.xml","default_settings.xml")
179 filename = open_rpg.get_component("dir_struct")["user"] + "settings.xml" 167 filename = open_rpg.get_component("dir_struct")["user"] + "settings.xml"
180 temp_file = open(filename) 168 temp_file = open(filename)
181 temp_file.close() 169 temp_file.close()
182 children = self.settings.xml_dom._get_childNodes() 170 children = self.settings.xml_dom._get_childNodes()
183 for c in children: 171 for c in children: self.build_window(c,self.tabber)
184 self.build_window(c,self.tabber)
185 172
186 def build_window(self, xml_dom, parent_wnd): 173 def build_window(self, xml_dom, parent_wnd):
187 name = xml_dom._get_nodeName() 174 name = xml_dom._get_nodeName()
188 #container = 0 175 #container = 0
189 if name=="tab": 176 if name=="tab": temp_wnd = self.do_tab_window(xml_dom,parent_wnd)
190 temp_wnd = self.do_tab_window(xml_dom,parent_wnd)
191 return temp_wnd 177 return temp_wnd
192 178
193 def do_tab_window(self, xml_dom, parent_wnd): 179 def do_tab_window(self, xml_dom, parent_wnd):
194 type = xml_dom.getAttribute("type") 180 type = xml_dom.getAttribute("type")
195 name = xml_dom.getAttribute("name") 181 name = xml_dom.getAttribute("name")
199 parent_wnd.AddPage(temp_wnd, name, False) 185 parent_wnd.AddPage(temp_wnd, name, False)
200 elif type == "tab": 186 elif type == "tab":
201 temp_wnd = orpgTabberWnd(parent_wnd, style=FNB.FNB_NO_X_BUTTON) 187 temp_wnd = orpgTabberWnd(parent_wnd, style=FNB.FNB_NO_X_BUTTON)
202 children = xml_dom._get_childNodes() 188 children = xml_dom._get_childNodes()
203 for c in children: 189 for c in children:
204 if c._get_nodeName() == "tab": 190 if c._get_nodeName() == "tab": self.do_tab_window(c, temp_wnd)
205 self.do_tab_window(c, temp_wnd)
206 temp_wnd.SetSelection(0) 191 temp_wnd.SetSelection(0)
207 parent_wnd.AddPage(temp_wnd, name, False) 192 parent_wnd.AddPage(temp_wnd, name, False)
208 elif type == "text": 193 elif type == "text":
209 temp_wnd = wx.TextCtrl(parent_wnd,-1) 194 temp_wnd = wx.TextCtrl(parent_wnd,-1)
210 parent_wnd.AddPage(temp_wnd, name, False) 195 parent_wnd.AddPage(temp_wnd, name, False)
211 else: 196 else: temp_wnd = None
212 temp_wnd = None
213 return temp_wnd 197 return temp_wnd
214 198
215 def do_grid_tab(self, xml_dom, parent_wnd): 199 def do_grid_tab(self, xml_dom, parent_wnd):
216 settings = [] 200 settings = []
217 children = xml_dom._get_childNodes() 201 children = xml_dom._get_childNodes()
231 new = [] 215 new = []
232 for wnd in tabbedwindows: 216 for wnd in tabbedwindows:
233 try: 217 try:
234 style = wnd.GetWindowStyleFlag() 218 style = wnd.GetWindowStyleFlag()
235 new.append(wnd) 219 new.append(wnd)
236 except: 220 except: pass
237 pass
238 tabbedwindows = new 221 tabbedwindows = new
239 open_rpg.add_component("tabbedWindows", tabbedwindows) 222 open_rpg.add_component("tabbedWindows", tabbedwindows)
240 rgbconvert = RGBHex() 223 rgbconvert = RGBHex()
241 224
242 for i in xrange(0,len(self.changes)): 225 for i in xrange(0,len(self.changes)):
275 top_frame.tree.Refresh() 258 top_frame.tree.Refresh()
276 top_frame.players.SetBackgroundColour('white') 259 top_frame.players.SetBackgroundColour('white')
277 top_frame.players.SetForegroundColour('black') 260 top_frame.players.SetForegroundColour('black')
278 top_frame.players.Refresh() 261 top_frame.players.Refresh()
279 262
280 if self.changes[i][0] == 'GMWhisperTab' and self.changes[i][1] == '1': 263 if self.changes[i][0] == 'GMWhisperTab' and self.changes[i][1] == '1': self.chat.parent.create_gm_tab()
281 self.chat.parent.create_gm_tab()
282 self.toggleToolBars(self.chat, self.changes[i]) 264 self.toggleToolBars(self.chat, self.changes[i])
283 try: 265 try: self.toggleToolBars(self.chat.parent.GMChatPanel, self.changes[i])
284 self.toggleToolBars(self.chat.parent.GMChatPanel, self.changes[i]) 266 except: pass
285 except: 267 for panel in self.chat.parent.whisper_tabs: self.toggleToolBars(panel, self.changes[i])
286 pass 268 for panel in self.chat.parent.group_tabs: self.toggleToolBars(panel, self.changes[i])
287 for panel in self.chat.parent.whisper_tabs: 269 for panel in self.chat.parent.null_tabs: self.toggleToolBars(panel, self.changes[i])
288 self.toggleToolBars(panel, self.changes[i]) 270
289 for panel in self.chat.parent.group_tabs: 271 if self.changes[i][0] == 'player': self.session.name = str(self.changes[i][1])
290 self.toggleToolBars(panel, self.changes[i]) 272
291 for panel in self.chat.parent.null_tabs: 273 if (self.changes[i][0][:3] == 'Tab' and self.changes[i][1][:6] == 'custom') or\
292 self.toggleToolBars(panel, self.changes[i]) 274 (self.changes[i][0][:3] == 'Tab' and self.settings.get_setting('TabTheme')[:6] == 'custom'):
293 275
294 if self.changes[i][0] == 'player':
295 self.session.name = self.changes[i][1]
296
297 if (self.changes[i][0] == 'TabTheme' and (self.changes[i][1] == 'customflat' or self.changes[i][1] == 'customslant')) or\
298 (self.changes[i][0] == 'TabTextColor' and (self.settings.get_setting('TabTheme') == 'customflat' or self.settings.get_setting('TabTheme') == 'customslant')) or\
299 (self.changes[i][0] == 'TabGradientFrom' and (self.settings.get_setting('TabTheme') == 'customflat' or self.settings.get_setting('TabTheme') == 'customslant')) or\
300 (self.changes[i][0] == 'TabGradientTo' and (self.settings.get_setting('TabTheme') == 'customflat' or self.settings.get_setting('TabTheme') == 'customslant')):
301 gfrom = self.settings.get_setting('TabGradientFrom') 276 gfrom = self.settings.get_setting('TabGradientFrom')
302 (fred, fgreen, fblue) = rgbconvert.rgb_tuple(gfrom) 277 (fred, fgreen, fblue) = rgbconvert.rgb_tuple(gfrom)
303 278
304 gto = self.settings.get_setting('TabGradientTo') 279 gto = self.settings.get_setting('TabGradientTo')
305 (tored, togreen, toblue) = rgbconvert.rgb_tuple(gto) 280 (tored, togreen, toblue) = rgbconvert.rgb_tuple(gto)
306 281
307 tabtext = self.settings.get_setting('TabTextColor') 282 tabtext = self.settings.get_setting('TabTextColor')
308 (tred, tgreen, tblue) = rgbconvert.rgb_tuple(tabtext) 283 (tred, tgreen, tblue) = rgbconvert.rgb_tuple(tabtext)
284
309 for wnd in tabbedwindows: 285 for wnd in tabbedwindows:
310 style = wnd.GetWindowStyleFlag() 286 style = wnd.GetWindowStyleFlag()
311 # remove old tabs style 287 # remove old tabs style
312 mirror = ~(FNB.FNB_VC71 | FNB.FNB_VC8 | FNB.FNB_FANCY_TABS | FNB.FNB_COLORFUL_TABS) 288 mirror = ~(FNB.FNB_VC71 | FNB.FNB_VC8 | FNB.FNB_FANCY_TABS | FNB.FNB_COLORFUL_TABS)
313 style &= mirror 289 style &= mirror
314 if self.settings.get_setting('TabTheme') == 'customslant': 290 if self.settings.get_setting('TabTheme') == 'customslant': style |= FNB.FNB_VC8
315 style |= FNB.FNB_VC8 291 else: style |= FNB.FNB_FANCY_TABS
316 else:
317 style |= FNB.FNB_FANCY_TABS
318 wnd.SetWindowStyleFlag(style) 292 wnd.SetWindowStyleFlag(style)
319 wnd.SetGradientColourTo(wx.Color(tored, togreen, toblue)) 293 wnd.SetGradientColourTo(wx.Color(tored, togreen, toblue))
320 wnd.SetGradientColourFrom(wx.Color(fred, fgreen, fblue)) 294 wnd.SetGradientColourFrom(wx.Color(fred, fgreen, fblue))
321 wnd.SetNonActiveTabTextColour(wx.Color(tred, tgreen, tblue)) 295 wnd.SetNonActiveTabTextColour(wx.Color(tred, tgreen, tblue))
322 wnd.Refresh() 296 wnd.Refresh()
328 wnd.Refresh() 302 wnd.Refresh()
329 self.settings.save() 303 self.settings.save()
330 self.Destroy() 304 self.Destroy()
331 305
332 def toggleToolBars(self, panel, changes): 306 def toggleToolBars(self, panel, changes):
333 if changes[0] == 'AliasTool_On': 307 if changes[0] == 'AliasTool_On': panel.toggle_alias(changes[1])
334 panel.toggle_alias(changes[1]) 308 elif changes[0] == 'DiceButtons_On': panel.toggle_dice(changes[1])
335 elif changes[0] == 'DiceButtons_On': 309 elif changes[0] == 'FormattingButtons_On': panel.toggle_formating(changes[1])
336 panel.toggle_dice(changes[1])
337 elif changes[0] == 'FormattingButtons_On':
338 panel.toggle_formating(changes[1])
339 310
340 class settings_grid(wx.grid.Grid): 311 class settings_grid(wx.grid.Grid):
341 """grid for gen info""" 312 """grid for gen info"""
342 def __init__(self, parent, settings, changed = []): 313 def __init__(self, parent, settings, changed = []):
343 wx.grid.Grid.__init__(self, parent, -1, style=wx.SUNKEN_BORDER | wx.WANTS_CHARS) 314 wx.grid.Grid.__init__(self, parent, -1, style=wx.SUNKEN_BORDER | wx.WANTS_CHARS)
352 self.SetColLabelValue(2,"Available Options") 323 self.SetColLabelValue(2,"Available Options")
353 self.settings = settings 324 self.settings = settings
354 for i in range(len(settings)): 325 for i in range(len(settings)):
355 self.SetCellValue(i,0,settings[i][0]) 326 self.SetCellValue(i,0,settings[i][0])
356 self.SetCellValue(i,1,settings[i][1]) 327 self.SetCellValue(i,1,settings[i][1])
357 if settings[i][1] and settings[i][1][0] == '#': 328 if settings[i][1] and settings[i][1][0] == '#': self.SetCellBackgroundColour(i,1,settings[i][1])
358 self.SetCellBackgroundColour(i,1,settings[i][1])
359 self.SetCellValue(i,2,settings[i][2]) 329 self.SetCellValue(i,2,settings[i][2])
360 330
361 def on_left_click(self,evt): 331 def on_left_click(self,evt):
362 row = evt.GetRow() 332 row = evt.GetRow()
363 col = evt.GetCol() 333 col = evt.GetCol()
364 if col == 2: 334 if col == 2: return
365 return
366 elif col == 0: 335 elif col == 0:
367 name = self.GetCellValue(row,0) 336 name = self.GetCellValue(row,0)
368 str = self.settings[row][3] 337 str = self.settings[row][3]
369 msg = wx.MessageBox(str,name) 338 msg = wx.MessageBox(str,name)
370 return 339 return
377 self.SetCellValue(row,2, hexcolor) 346 self.SetCellValue(row,2, hexcolor)
378 self.SetCellBackgroundColour(row,1,hexcolor) 347 self.SetCellBackgroundColour(row,1,hexcolor)
379 self.Refresh() 348 self.Refresh()
380 setting = self.GetCellValue(row,0) 349 setting = self.GetCellValue(row,0)
381 self.setting_data.append([setting, hexcolor]) 350 self.setting_data.append([setting, hexcolor])
382 else: 351 else: evt.Skip()
383 evt.Skip()
384 352
385 def on_cell_change(self,evt): 353 def on_cell_change(self,evt):
386 row = evt.GetRow() 354 row = evt.GetRow()
387 col = evt.GetCol() 355 col = evt.GetCol()
388 if col != 1: 356 if col != 1: return
389 return
390 setting = self.GetCellValue(row,0) 357 setting = self.GetCellValue(row,0)
391 value = self.GetCellValue(row,1) 358 value = self.GetCellValue(row,1)
392 self.setting_data.append([setting, value]) 359 self.setting_data.append([setting, value])
393 360
394 def get_h(self): 361 def get_h(self):
395 (w,h) = self.GetClientSizeTuple() 362 (w,h) = self.GetClientSizeTuple()
396 rows = self.GetNumberRows() 363 rows = self.GetNumberRows()
397 minh = 0 364 minh = 0
398 for i in range (0,rows): 365 for i in range (0,rows): minh += self.GetRowSize(i)
399 minh += self.GetRowSize(i)
400 minh += 120 366 minh += 120
401 return minh 367 return minh
402 368
403 def on_size(self,evt): 369 def on_size(self,evt):
404 (w,h) = self.GetClientSizeTuple() 370 (w,h) = self.GetClientSizeTuple()
405 cols = self.GetNumberCols() 371 cols = self.GetNumberCols()
406 col_w = w/(cols) 372 col_w = w/(cols)
407 for i in range(0,cols): 373 for i in range(0,cols): self.SetColSize(i,col_w)
408 self.SetColSize(i,col_w)
409 self.Refresh() 374 self.Refresh()