Mercurial > traipse
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() |