# HG changeset patch # User sirebral # Date 1250931734 18000 # Node ID 37a11fea33042b4fe4304302f50e744aacf5e626 # Parent f518bc709fd14612995138ab87426fb694f8ae75 More clean up. Images now posts a Chat Info post if image doesn't load. diff -r f518bc709fd1 -r 37a11fea3304 orpg/gametree/gametree.py --- a/orpg/gametree/gametree.py Fri Aug 21 21:49:42 2009 -0500 +++ b/orpg/gametree/gametree.py Sat Aug 22 04:02:14 2009 -0500 @@ -38,6 +38,8 @@ import time import os +from orpg.orpg_xml import xml +from orpg.tools.validate import validate from orpg.tools.orpg_log import logger from orpg.tools.decorators import debugging from orpg.gametree.nodehandlers import containers, forms, dnd3e, dnd35, chatmacro @@ -79,9 +81,7 @@ def __init__(self, parent, id): wx.TreeCtrl.__init__(self,parent,id, wx.DefaultPosition, wx.DefaultSize,style=wx.TR_EDIT_LABELS | wx.TR_HAS_BUTTONS) - self.orpgLog = component.get('log') - self.validate = component.get('validate') - self.xml = component.get('xml') + #self.xml = component.get('xml') # self.settings = component.get('settings') self.session = component.get('session') self.chat = component.get('chat') @@ -105,28 +105,25 @@ self.last_save_dir = dir_struct["user"] #Create tree from default if it does not exist - self.validate.config_file("tree.xml","default_tree.xml") + validate.config_file("tree.xml","default_tree.xml") component.add("tree", self) #build tree self.root = self.AddRoot("Game Tree",self.icons['gear']) self.was_labeling = 0 self.rename_flag = 0 self.image_cache = {} - self.orpgLog.log("Exit game_tree", ORPG_DEBUG) + logger.debug("Exit game_tree") @debugging def add_nodehandler(self, nodehandler, nodeclass): - if not self.nodehandlers.has_key(nodehandler): - self.nodehandlers[nodehandler] = nodeclass - else: - self.orpgLog.log("Nodehandler for " + nodehandler + " already exists!", ORPG_DEBUG, True) + if not self.nodehandlers.has_key(nodehandler): self.nodehandlers[nodehandler] = nodeclass + else: logger.debug("Nodehandler for " + nodehandler + " already exists!") @debugging def remove_nodehandler(self, nodehandler): if self.nodehandlers.has_key(nodehandler): del self.nodehandlers[nodehandler] - else: - self.orpgLog.log("No nodehandler for " + nodehandler + " exists!", ORPG_DEBUG, True) + else: logger.debug("No nodehandler for " + nodehandler + " exists!") @debugging def init_nodehandlers(self): @@ -183,17 +180,14 @@ cur = wx.StockCursor(wx.CURSOR_HAND) self.SetCursor(cur) self.drag_obj = obj - elif key_code == wx.WXK_LEFT: - self.Collapse(curSelection) + elif key_code == wx.WXK_LEFT: self.Collapse(curSelection) elif key_code == wx.WXK_DELETE: # Handle the delete key if curSelection: nextSelect = self.GetItemParent(curSelection) self.on_del(evt) try: - if self.GetItemText(nextSelect) != "": - self.SelectItem(nextSelect) - except: - pass + if self.GetItemText(nextSelect) != "": self.SelectItem(nextSelect) + except: pass elif key_code == wx.WXK_F2: self.rename_flag = 1 self.EditLabel(curSelection) @@ -213,7 +207,7 @@ else: self.load_tree(file) return else: - self.validate.config_file("tree.xml","default_tree.xml") + validate.config_file("tree.xml","default_tree.xml") self.load_tree(error=1) return @@ -224,15 +218,13 @@ xml_dom = None xml_doc = None try: - self.orpgLog.log("Reading Gametree file: " + filename + "...", ORPG_INFO, True) + logger.info("Reading Gametree file: " + filename + "...", True) tmp = open(filename,"r") - xml_doc = self.xml.parseXml(tmp.read()) + xml_doc = xml.parseXml(tmp.read()) tmp.close() - if xml_doc == None: - pass - else: - xml_dom = xml_doc._get_documentElement() - self.orpgLog.log("done.", ORPG_INFO, True) + if xml_doc == None: pass + else: xml_dom = xml_doc._get_documentElement() + logger.info("done.", True) except IOError: emsg = "Gametree Missing!\n"+filename+" cannot be found.\n\n"\ @@ -240,7 +232,7 @@ "(Selecting 'No' will cause a new default gametree to be generated)" fn = filename[ ((filename.rfind(os.sep))+len(os.sep)):] self.locate_valid_tree("Gametree Error", emsg, dir_struct["user"], fn) - self.orpgLog.log(emsg, ORPG_GENERAL) + logger.general(emsg) return if not xml_dom: @@ -255,7 +247,7 @@ "Would you like to select a different gametree file to use?\n"\ "(Selecting 'No' will cause a new default gametree to be generated)" self.locate_valid_tree("Corrupt Gametree!", emsg, dir_struct["user"], fn) - self.orpgLog.log(emsg, ORPG_GENERAL) + logger.general(emsg) return if xml_dom._get_tagName() != "gametree": @@ -264,47 +256,45 @@ "Would you like to select a different gametree file to use?\n"\ "(Selecting 'No' will cause a new default gametree to be generated)" self.locate_valid_tree("Invalid Gametree!", emsg, dir_struct["user"], fn) - self.orpgLog.log(emsg, ORPG_DEBUG) - self.orpgLog.log("Exit game_tree->load_tree(self, filename, error)", ORPG_DEBUG) + logger.debug(emsg) return # get gametree version - we could write conversion code here! self.master_dom = xml_dom - self.orpgLog.log("Master Dom Set", ORPG_DEBUG) + logger.debug("Master Dom Set") try: version = self.master_dom.getAttribute("version") # see if we should load the gametree loadfeatures = int(self.settings.get_setting("LoadGameTreeFeatures")) if loadfeatures: - xml_dom = self.xml.parseXml(open(dir_struct["template"]+"feature.xml","r").read()) + xml_dom = xml.parseXml(open(dir_struct["template"]+"feature.xml","r").read()) xml_dom = xml_dom._get_documentElement() xml_dom = self.master_dom.appendChild(xml_dom) self.settings.set_setting("LoadGameTreeFeatures","0") ## load tree - self.orpgLog.log("Features loaded (if required)", ORPG_DEBUG) + logger.debug("Features loaded (if required)") self.CollapseAndReset(self.root) children = self.master_dom._get_childNodes() - self.orpgLog.log("Parsing Gametree Nodes ", ORPG_INFO, True) + logger.info("Parsing Gametree Nodes ", True) for c in children: print '.', self.load_xml(c,self.root) - self.orpgLog.log("done", ORPG_INFO, True) + logger.info("done", True) self.Expand(self.root) self.SetPyData(self.root,self.master_dom) if error != 1: infile = open(filename, "rb") outfile = open(dir_struct["user"]+"lastgood.xml", "wb") outfile.write(infile.read()) - else: - self.orpgLog.log("Not overwriting lastgood.xml file.", ORPG_INFO, True) + else: logger.info("Not overwriting lastgood.xml file.", True) except Exception, e: - self.orpgLog.log(traceback.format_exc(), ORPG_GENERAL) + logger.general(traceback.format_exc()) wx.MessageBox("Corrupt Tree!\nYour game tree is being regenerated. To\nsalvage a recent version of your gametree\nexit OpenRPG and copy the lastgood.xml\nfile in your myfiles directory\nto "+filename+ "\nin your myfiles directory.\nlastgood.xml WILL BE OVERWRITTEN NEXT TIME YOU RUN OPENRPG.") os.rename(filename,filename+".corrupt") - self.validate.config_file("tree.xml","default_tree.xml") + validate.config_file("tree.xml","default_tree.xml") self.load_tree(error=1) @debugging @@ -383,15 +373,11 @@ in_tag = 0 for x in xrange(len(player[0])) : if player[0][x] == "<" or player[0][x] == ">" or in_tag == 1 : - if player[0][x] == "<" : - in_tag = 1 - elif player[0][x] == ">" : - in_tag = 0 - else : - pass - else : - ret_string = ret_string + player[0][x] - self.orpgLog.log(ret_string, ORPG_DEBUG) + if player[0][x] == "<" : in_tag = 1 + elif player[0][x] == ">" : in_tag = 0 + else: pass + else: ret_string = ret_string + player[0][x] + logger.debug(ret_string) return ret_string @debugging @@ -414,20 +400,16 @@ myid = self.session.get_id() me = None for p in players: - if p[2] != myid: - opts.append("("+p[2]+") " + self.strip_html(p)) - else: - me = p - if len(opts): - players.remove(me) + if p[2] != myid: opts.append("("+p[2]+") " + self.strip_html(p)) + else: me = p + if len(opts): players.remove(me) if len(opts): dlg = orpgMultiCheckBoxDlg( self.GetParent(),opts,"Select Players:","Whisper To",[] ) if dlg.ShowModal() == wx.ID_OK: item = self.GetSelection() obj = self.GetPyData(item) selections = dlg.get_selections() - if len(selections) == len(opts): - self.chat.ParsePost(obj.tohtml(),True,True) + if len(selections) == len(opts): self.chat.ParsePost(obj.tohtml(),True,True) else: player_ids = [] for s in selections: @@ -481,23 +463,19 @@ myid = self.session.get_id() me = None for p in players: - if p[2] != myid: - opts.append("("+p[2]+") " + self.strip_html(p)) - else: - me = p + if p[2] != myid: opts.append("("+p[2]+") " + self.strip_html(p)) + else: me = p if len(opts): players.remove(me) dlg = orpgMultiCheckBoxDlg( None, opts, "Select Players:", "Send To", [] ) if dlg.ShowModal() == wx.ID_OK: item = self.GetSelection() obj = self.GetPyData(item) - xmldata = "" + self.xml.toxml(obj) + "" + xmldata = "" + xml.toxml(obj) + "" selections = dlg.get_selections() - if len(selections) == len(opts): - self.session.send(xmldata) + if len(selections) == len(opts): self.session.send(xmldata) else: - for s in selections: - self.session.send(xmldata,players[s][2]) + for s in selections: self.session.send(xmldata,players[s][2]) dlg.Destroy() @debugging @@ -519,10 +497,10 @@ name = "New " + obj.master_dom.getAttribute("name") icon = obj.master_dom.getAttribute("icon") xml_data = "" - xml_data += self.xml.toxml(obj) + xml_data += xml.toxml(obj) xml_data += "" self.insert_xml(xml_data) - self.orpgLog.log(xml_data, ORPG_DEBUG) + logger.debug(xml_data) @debugging def on_clone(self, evt): @@ -531,9 +509,8 @@ if obj.can_clone(): parent_node = self.GetItemParent(item) prev_sib = self.GetPrevSibling(item) - if not prev_sib.IsOk(): - prev_sib = parent_node - xml_dom = self.xml.parseXml(self.xml.toxml(obj)) + if not prev_sib.IsOk(): prev_sib = parent_node + xml_dom = xml.parseXml(xml.toxml(obj)) xml_dom = xml_dom._get_firstChild() parent = obj.master_dom._get_parentNode() xml_dom = parent.insertBefore(xml_dom, obj.master_dom) @@ -566,7 +543,7 @@ self.master_dom.setAttribute("version",GAMETREE_VERSION) self.settings.set_setting("gametree",filename) file = open(filename,"w") - file.write(self.xml.toxml(self.master_dom,1)) + file.write(xml.toxml(self.master_dom,1)) file.close() @debugging @@ -607,8 +584,7 @@ @debugging def on_tree_prop(self, evt): dlg = gametree_prop_dlg(self, self.settings) - if dlg.ShowModal() == wx.ID_OK: - pass + if dlg.ShowModal() == wx.ID_OK: pass dlg.Destroy() @debugging @@ -640,34 +616,25 @@ try: status_value = parent_obj.master_dom.getAttribute('status') name = parent_obj.master_dom.getAttribute('name') - except: - status_value = "none" + except: status_value = "none" parent_obj = parent_obj.master_dom._get_parentNode() while status_value!="useful" and status_value!="useless": try: status_value = parent_obj.getAttribute('status') name = parent_obj.getAttribute('name') - if status_value == "useless": - break - elif status_value == "useful": - break - except: - status_value = "none" - try: - parent_obj = parent_obj._get_parentNode() - except: - break + if status_value == "useless": break + elif status_value == "useful": break + except: status_value = "none" + try: parent_obj = parent_obj._get_parentNode() + except: break if status_value == "useful": dlg = wx.MessageDialog(self, `name` + " And everything beneath it are considered useful. \n\nAre you sure you want to delete this item?",'Important Item',wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION) - if dlg.ShowModal() == wx.ID_YES: - obj.delete() - else: - obj.delete() + if dlg.ShowModal() == wx.ID_YES: obj.delete() + else: obj.delete() except: if self.GetSelection() == self.GetRootItem(): msg = wx.MessageDialog(None,"You can't delete the root item.","Delete Error",wx.OK) - else: - msg = wx.MessageDialog(None,"Unknown error deleting node.","Delete Error",wx.OK) + else: msg = wx.MessageDialog(None,"Unknown error deleting node.","Delete Error",wx.OK) msg.ShowModal() msg.Destroy() @@ -683,40 +650,37 @@ def on_send_to_map(self, evt): item = self.GetSelection() obj = self.GetPyData(item) - if hasattr(obj,"on_send_to_map"): - obj.on_send_to_map(evt) + if hasattr(obj,"on_send_to_map"): obj.on_send_to_map(evt) @debugging def insert_xml(self, txt): - self.orpgLog.log("Enter game_tree->insert_xml(self, txt)", ORPG_DEBUG) #Updated to allow safe merging of gametree files #without leaving an unusable and undeletable node. # -- Snowdog 8/03 - xml_dom = self.xml.parseXml(txt) + xml_dom = xml.parseXml(txt) if xml_dom == None: wx.MessageBox("Import Failed: Invalid or missing node data") - self.orpgLog.log("Import Failed: Invalid or missing node data", ORPG_DEBUG) - self.orpgLog.log("Exit game_tree->insert_xml(self, txt)", ORPG_DEBUG) + logger.debug("Import Failed: Invalid or missing node data") + logger.debug("Exit game_tree->insert_xml(self, txt)") return xml_temp = xml_dom._get_documentElement() if not xml_temp: wx.MessageBox("Error Importing Node or Tree") - self.orpgLog.log("Error Importing Node or Tree", ORPG_DEBUG) - self.orpgLog.log("Exit game_tree->insert_xml(self, txt)", ORPG_DEBUG) + logger.debug("Error Importing Node or Tree") + logger.debug("Exit game_tree->insert_xml(self, txt)") return if xml_temp._get_tagName() == "gametree": children = xml_temp._get_childNodes() - for c in children: - self.load_xml(c, self.root) - self.orpgLog.log("Exit game_tree->insert_xml(self, txt)", ORPG_DEBUG) + for c in children: self.load_xml(c, self.root) + logger.debug("Exit game_tree->insert_xml(self, txt)") return if not xml_dom: wx.MessageBox("XML Error") - self.orpgLog.log("XML Error", ORPG_DEBUG) - self.orpgLog.log("Exit game_tree->insert_xml(self, txt)", ORPG_DEBUG) + logger.debug("XML Error") + logger.debug("Exit game_tree->insert_xml(self, txt)") return xml_dom = xml_dom._get_firstChild() @@ -731,7 +695,7 @@ self.icons = { } self._imageList= wx.ImageList(16,16,False) man = open(dir_struct["icon"]+"icons.xml","r") - xml_dom = self.xml.parseXml(man.read()) + xml_dom = xml.parseXml(man.read()) man.close() xml_dom = xml_dom._get_documentElement() node_list = xml_dom._get_childNodes() @@ -748,39 +712,34 @@ i = 0 text = xml_dom.getAttribute("name") icon = xml_dom.getAttribute("icon") - if self.icons.has_key(icon): - i = self.icons[icon] + if self.icons.has_key(icon): i = self.icons[icon] name = xml_dom._get_nodeName() - self.orpgLog.log("Text, icon and name set\n" + text + "\n" + icon + "\n" + name, ORPG_DEBUG) + logger.debug("Text, icon and name set\n" + text + "\n" + icon + "\n" + name) if prev_node: - if prev_node == parent_node: - new_tree_node = self.PrependItem(parent_node, text, i, i) - else: - new_tree_node = self.InsertItem(parent_node,prev_node, text, i, i) - else: - new_tree_node = self.AppendItem(parent_node, text, i, i) + if prev_node == parent_node: new_tree_node = self.PrependItem(parent_node, text, i, i) + else: new_tree_node = self.InsertItem(parent_node,prev_node, text, i, i) + else: new_tree_node = self.AppendItem(parent_node, text, i, i) - self.orpgLog.log("Node Added to tree", ORPG_DEBUG) + logger.debug("Node Added to tree") #create a nodehandler or continue loading xml into tree if name == "nodehandler": #wx.BeginBusyCursor() - self.orpgLog.log("We have a Nodehandler", ORPG_DEBUG) + logger.debug("We have a Nodehandler") try: py_class = xml_dom.getAttribute("class") - self.orpgLog.log("nodehandler class: " + py_class, ORPG_DEBUG) + logger.debug("nodehandler class: " + py_class) if not self.nodehandlers.has_key(py_class): raise Exception, "Unknown Nodehandler for " + py_class self.nodes[self.id] = self.nodehandlers[py_class](xml_dom, new_tree_node) self.SetPyData(new_tree_node, self.nodes[self.id]) - self.orpgLog.log("Node Data set", ORPG_DEBUG) + logger.debug("Node Data set") bmp = self.nodes[self.id].get_scaled_bitmap(16,16) - if bmp: - self.cached_load_of_image(bmp,new_tree_node,) - self.orpgLog.log("Node Icon loaded", ORPG_DEBUG) + if bmp: self.cached_load_of_image(bmp,new_tree_node,) + logger.debug("Node Icon loaded") self.id = self.id + 1 except Exception, er: - self.orpgLog.log(traceback.format_exc(), ORPG_GENERAL) - #self.orpgLog.log("Error Info: " + xml_dom.getAttribute("class") + "\n" + str(er), ORPG_GENERAL, True)?indent? + logger.general(traceback.format_exc()) + #logger.debug("Error Info: " + xml_dom.getAttribute("class") + "\n" + str(er), True)?indent? self.Delete(new_tree_node) parent = xml_dom._get_parentNode() parent.removeChild(xml_dom) @@ -811,12 +770,9 @@ if item.IsOk(): obj = self.GetPyData(item) self.SelectItem(item) - if(isinstance(obj,core.node_handler)): - obj.on_rclick(evt) - else: - self.PopupMenu(self.top_menu) - else: - self.PopupMenu(self.top_menu,pt) + if(isinstance(obj,core.node_handler)): obj.on_rclick(evt) + else: self.PopupMenu(self.top_menu) + else: self.PopupMenu(self.top_menu,pt) @debugging def on_ldclick(self, evt): @@ -829,14 +785,10 @@ if(isinstance(obj,core.node_handler)): if not obj.on_ldclick(evt): action = self.settings.get_setting("treedclick") - if action == "use": - obj.on_use(evt) - elif action == "design": - obj.on_design(evt) - elif action == "print": - obj.on_html_view(evt) - elif action == "chat": - self.on_send_to_chat(evt) + if action == "use": obj.on_use(evt) + elif action == "design": obj.on_design(evt) + elif action == "print": obj.on_html_view(evt) + elif action == "chat": self.on_send_to_chat(evt) @debugging def on_left_down(self, evt): @@ -849,8 +801,7 @@ elif (flag & wx.TREE_HITTEST_ONITEMLABEL) == wx.TREE_HITTEST_ONITEMLABEL and self.IsSelected(item): # this next if tests to ensure that the mouse up occurred over a label, and not the icon self.rename_flag = 1 - else: - self.SelectItem(item) + else: self.SelectItem(item) evt.Skip() @debugging @@ -877,13 +828,11 @@ if txt != "": obj = self.GetPyData(item) obj.master_dom.setAttribute('name',txt) - else: - evt.Veto() + else: evt.Veto() @debugging def on_label_begin(self, evt): - if not self.rename_flag: - evt.Veto() + if not self.rename_flag: evt.Veto() else: self.was_labeling = 1 item = evt.GetItem() @@ -906,13 +855,12 @@ def is_parent_node(self, node, compare_node): parent_node = self.GetItemParent(node) if compare_node == parent_node: - self.orpgLog.log("parent node", ORPG_DEBUG) + logger.debug("parent node") return 1 elif parent_node == self.root: - self.orpgLog.log("not parent", ORPG_DEBUG) + logger.debug("not parent") return 0 - else: - return self.is_parent_node(parent_node, compare_node) + else: return self.is_parent_node(parent_node, compare_node) CTRL_TREE_FILE = wx.NewId() CTRL_YES = wx.NewId() @@ -986,12 +934,8 @@ def on_ok(self,evt): self.settings.set_setting("gametree",self.ctrls[CTRL_TREE_FILE].GetValue()) self.settings.set_setting("SaveGameTreeOnExit",str(self.ctrls[CTRL_YES].GetValue())) - if self.ctrls[CTRL_USE].GetValue(): - self.settings.set_setting("treedclick","use") - elif self.ctrls[CTRL_DESIGN].GetValue(): - self.settings.set_setting("treedclick","design") - elif self.ctrls[CTRL_PRINT].GetValue(): - self.settings.set_setting("treedclick","print") - elif self.ctrls[CTRL_CHAT].GetValue(): - self.settings.set_setting("treedclick","chat") + if self.ctrls[CTRL_USE].GetValue(): self.settings.set_setting("treedclick","use") + elif self.ctrls[CTRL_DESIGN].GetValue(): self.settings.set_setting("treedclick","design") + elif self.ctrls[CTRL_PRINT].GetValue(): self.settings.set_setting("treedclick","print") + elif self.ctrls[CTRL_CHAT].GetValue(): self.settings.set_setting("treedclick","chat") self.EndModal(wx.ID_OK) diff -r f518bc709fd1 -r 37a11fea3304 orpg/gametree/nodehandlers/rpg_grid.py --- a/orpg/gametree/nodehandlers/rpg_grid.py Fri Aug 21 21:49:42 2009 -0500 +++ b/orpg/gametree/nodehandlers/rpg_grid.py Sat Aug 22 04:02:14 2009 -0500 @@ -29,7 +29,8 @@ __version__ = "$Id: rpg_grid.py,v 1.20 2006/11/15 12:11:24 digitalxero Exp $" from core import * -from forms import * +from forms import * +from orpg.minidom import Element, Text class rpg_grid_handler(node_handler): """ Node handler for rpg grid tool @@ -196,12 +197,12 @@ self._tc.SetDimensions(rect.x+1, rect.y+1, rect.width+2, rect.height+2) - def Show(self, show, attr): - """ - Show or hide the edit control. You can use the attr (if not None) - to set colours or fonts for the control. - """ - self.base_Show(show, attr) #deprecated DeprecationWarning: Please use PyGridCellEditor.Show instead. + #def Show(self, show, attr): #deprecated DeprecationWarning: Please use PyGridCellEditor.Show instead. + # """ + # Show or hide the edit control. You can use the attr (if not None) + # to set colours or fonts for the control. + # """ + # self.base_Show(show, attr) # Removed to prevent recursive error type. def BeginEdit(self, row, col, grid): @@ -283,7 +284,6 @@ evt.Skip() - def Destroy(self): """final cleanup""" self.base_Destroy() @@ -341,7 +341,6 @@ value = self.GetCellValue(row,col) cells = self.rows[row].getElementsByTagName('cell') t_node = cells[col]._get_firstChild() - print t_node t_node._set_nodeValue(value) if col == 0: self.handler.refresh_rows() @@ -362,7 +361,7 @@ if t_node == None: #doc = cells[i].ownerDocument #t_node = doc.createTextNode("") - t_node = minidom.Text("") + t_node = Text("") t_node = cells[i].appendChild(t_node) self.SetCellValue(rowi,i,t_node._get_nodeValue()) @@ -370,12 +369,12 @@ cols = self.GetNumberCols() #doc = self.handler.grid.ownerDocument #row = doc.createElement('row') - row = minidom.Element('row') + row = Element('row') for i in range(0,cols): #cell = doc.createElement('cell') - cell = minidom.Element('cell') + cell = Element('cell') #t_node = doc.createTextNode("") - t_node = minidom.Text("") + t_node = Text("") t_node = cell.appendChild(t_node) row.appendChild(cell) self.handler.grid.appendChild(row) @@ -387,9 +386,9 @@ #doc = self.handler.grid.ownerDocument for r in self.rows: #cell = doc.createElement('cell') - cell = minidom.Element('cell') + cell = Element('cell') #t_node = doc.createTextNode("") - t_node = minidom.Text("") + t_node = Text("") t_node = cell.appendChild(t_node) r.appendChild(cell) self.AppendCols(1) diff -r f518bc709fd1 -r 37a11fea3304 orpg/mapper/background.py --- a/orpg/mapper/background.py Fri Aug 21 21:49:42 2009 -0500 +++ b/orpg/mapper/background.py Sat Aug 22 04:02:14 2009 -0500 @@ -34,6 +34,11 @@ import os.path import time +from orpg.orpgCore import component +from orpg.tools.orpg_log import logger +from orpg.tools.decorators import debugging +from orpg.tools.orpg_settings import settings + ##----------------------------- ## background layer ##----------------------------- @@ -44,27 +49,24 @@ BG_COLOR = 3 class layer_back_ground(layer_base): + @debugging def __init__(self, canvas): self.canvas = canvas - self.log = self.canvas.log - self.log.log("Enter layer_back_ground", ORPG_DEBUG) - self.settings = self.canvas.settings + self.log = component.get('log') layer_base.__init__(self) self.canvas = canvas self.r_h = RGBHex() self.clear() - self.log.log("Exit layer_back_ground", ORPG_DEBUG) + @debugging def error_loading_image(self, image): - self.log.log("Enter layer_back_ground->error_loading_image(self, image)", ORPG_DEBUG) msg = "Unable to load image:" + `image` dlg = wx.MessageDialog(self.canvas,msg,'File not Found',wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() - self.log.log("Exit layer_back_ground->error_loading_image(self, image)", ORPG_DEBUG) + @debugging def clear(self): - self.log.log("Enter layer_back_ground->clear(self)", ORPG_DEBUG) self.type = BG_NONE self.bg_bmp = None self.bg_color = None @@ -73,75 +75,62 @@ self.localPath = '' self.localTime = -1 self.isUpdated = True - self.log.log("Exit layer_back_ground->clear(self)", ORPG_DEBUG) + @debugging def get_type(self): - self.log.log("Enter layer_back_ground->get_type(self)", ORPG_DEBUG) - self.log.log("Exit layer_back_ground->get_type(self)", ORPG_DEBUG) return self.type + @debugging def get_img_path(self): - self.log.log("Enter layer_back_ground->get_type(self)", ORPG_DEBUG) - if self.img_path: - self.log.log("Exit layer_back_ground->get_type(self) return " + self.img_path, ORPG_DEBUG) - return self.img_path - else: - self.log.log("Exit layer_back_ground->get_type(self) return None", ORPG_DEBUG) - return "" + if self.img_path: return self.img_path + else: return "" + @debugging def get_color(self): - self.log.log("Enter layer_back_ground->get_color(self)", ORPG_DEBUG) hexcolor = "#FFFFFF" if self.bg_color: (red,green,blue) = self.bg_color.Get() hexcolor = self.r_h.hexstring(red, green, blue) - self.log.log("Exit layer_back_ground->get_color(self)", ORPG_DEBUG) return hexcolor + @debugging def set_texture(self, path): - self.log.log("Enter layer_back_ground->set_texture(self, path)", ORPG_DEBUG) self.isUpdated = True - self.type = BG_TEXTURE if self.img_path != path: try: self.bg_bmp = ImageHandler.load(path, "texture", 0) if self.bg_bmp == None: - self.log.log("Invalid image type!", ORPG_GENERAL) + logger.general("Invalid image type!") raise Exception, "Invalid image type!" except: self.error_loading_image(path) self.img_path = path - self.log.log("Enter layer_back_ground->set_texture(self, path)", ORPG_DEBUG) + @debugging def set_image(self, path, scale): - self.log.log("Enter layer_back_ground->set_image(self, path, scale)", ORPG_DEBUG) self.isUpdated = True - self.type = BG_IMAGE if self.img_path != path: self.bg_bmp = ImageHandler.load(path, "background", 0) try: if self.bg_bmp == None: - self.log.log("Invalid image type!", ORPG_GENERAL) + logger.general("Invalid image type!") raise Exception, "Invalid image type!" except: self.error_loading_image(path) self.img_path = path - self.log.log("Exit layer_back_ground->set_image(self, path, scale)", ORPG_DEBUG) return (self.bg_bmp.GetWidth(),self.bg_bmp.GetHeight()) + @debugging def set_color(self, color): - self.log.log("Enter layer_back_ground->set_color(self, color)", ORPG_DEBUG) self.isUpdated = True self.type = BG_COLOR (r,g,b) = color.Get() self.bg_color = cmpColour(r,g,b) self.canvas.SetBackgroundColour(self.bg_color) - self.log.log("Exit layer_back_ground->set_color(self, color)", ORPG_DEBUG) + @debugging def layerDraw(self, dc, scale, topleft, size): - self.log.log("Enter layer_back_ground->layerDraw(self, dc, scale, topleft, size)", ORPG_DEBUG) if self.bg_bmp == None or not self.bg_bmp.Ok() or ((self.type != BG_TEXTURE) and (self.type != BG_IMAGE)): - self.log.log("Exit layer_back_ground->layerDraw(self, dc, scale, topleft, size) return False", ORPG_DEBUG) return False dc2 = wx.MemoryDC() dc2.SelectObject(self.bg_bmp) @@ -212,11 +201,10 @@ dc.Blit(posx, posy, newW, newH, dc2, cl, ct) dc2.SelectObject(wx.NullBitmap) del dc2 - self.log.log("Exit layer_back_ground->layerDraw(self, dc, scale, topleft, size)", ORPG_DEBUG) return True + @debugging def layerToXML(self, action="update"): - self.log.log("Enter layer_back_ground->layerToXML(self, " + action + ")", ORPG_DEBUG) xml_str = "layerToXML(self, " + action + ")", ORPG_DEBUG) + logger.debug(xml_str) if (action == "update" and self.isUpdated) or action == "new": self.isUpdated = False return xml_str else: return '' + @debugging def layerTakeDOM(self, xml_dom): - self.log.log("Enter layer_back_ground->layerTakeDOM(self, xml_dom)", ORPG_DEBUG) type = BG_COLOR color = xml_dom.getAttribute("color") - self.log.log("color=" + color, ORPG_DEBUG) + logger.debug("color=" + color) path = urllib.unquote(xml_dom.getAttribute("path")) - self.log.log("path=" + path, ORPG_DEBUG) - + logger.debug("path=" + path) # Begin ted's map changes if xml_dom.hasAttribute("color"): r,g,b = self.r_h.rgb_tuple(xml_dom.getAttribute("color")) @@ -251,16 +237,12 @@ # End ted's map changes if xml_dom.hasAttribute("type"): type = int(xml_dom.getAttribute("type")) - self.log.log("type=" + str(type), ORPG_DEBUG) - + logger.debug("type=" + str(type)) if type == BG_TEXTURE: if path != "": self.set_texture(path) - elif type == BG_IMAGE: if path != "": self.set_image(path, 1) - elif type == BG_NONE: self.clear() - if xml_dom.hasAttribute('local') and xml_dom.getAttribute('local') == 'True' and os.path.exists(urllib.unquote(xml_dom.getAttribute('localPath'))): self.localPath = urllib.unquote(xml_dom.getAttribute('localPath')) self.local = True @@ -273,12 +255,12 @@ (imgtype,j) = mimetypes.guess_type(filename[1]) postdata = urllib.urlencode({'filename':filename[1], 'imgdata':imgdata, 'imgtype':imgtype}) thread.start_new_thread(self.upload, (postdata, self.localPath, type)) - self.log.log("Exit layer_back_ground->layerTakeDOM(self, xml_dom)", ORPG_DEBUG) + @debugging def upload(self, postdata, filename, type): self.lock.acquire() if type == 'Image' or type == 'Texture': - url = self.settings.get_setting('ImageServerBaseURL') + url = component.get('settings').get_setting('ImageServerBaseURL') file = urllib.urlopen(url, postdata) recvdata = file.read() file.close() diff -r f518bc709fd1 -r 37a11fea3304 orpg/mapper/background_handler.py --- a/orpg/mapper/background_handler.py Fri Aug 21 21:49:42 2009 -0500 +++ b/orpg/mapper/background_handler.py Sat Aug 22 04:02:14 2009 -0500 @@ -35,10 +35,12 @@ import os from base import * +from orpg.tools.orpg_settings import settings + class background_handler(base_layer_handler): def __init__(self, parent, id, canvas): base_layer_handler.__init__(self, parent, id, canvas) - self.settings = self.canvas.settings + self.settings = settings def build_ctrls(self): base_layer_handler.build_ctrls(self) diff -r f518bc709fd1 -r 37a11fea3304 orpg/mapper/images.py --- a/orpg/mapper/images.py Fri Aug 21 21:49:42 2009 -0500 +++ b/orpg/mapper/images.py Sat Aug 22 04:02:14 2009 -0500 @@ -32,6 +32,7 @@ import thread from threading import Lock import time + from orpg.orpg_wx import * from orpg.orpgCore import component from orpg.dirpath import dir_struct @@ -50,6 +51,7 @@ __fetching = {} __queue = Queue.Queue(0) __lock = Lock() + chat = component.get("chat") def load(self, path, image_type, imageId): """Load an image, with a intermideary fetching image shown while it loads in a background thread""" @@ -76,10 +78,12 @@ self.__cache[path] = (path, d[0], d[1].gettype(), None) return wx.ImageFromMime(self.__cache[path][1], self.__cache[path][2]).ConvertToBitmap() else: - logger.general("Image refused to load or URI did not reference a valid image: " + path) ##logger.general + logger.general("Image refused to load or URI did not reference a valid image: " + path) + component.get('chat').InfoPost("Image refused to load or URI did not reference a valid image: " + path + "") return None except IOError: - logger.general("Unable to resolve/open the specified URI; image was NOT loaded: " + path) ##logger.general + logger.general("Unable to resolve/open the specified URI; image was NOT loaded: " + path) + component.get('chat').InfoPost("Unable to resolve/open the specified URI; image was NOT loaded: " + path + "") return None def cleanCache(self): @@ -112,11 +116,13 @@ self.__queue.put((self.__cache[path], image_type, imageId)) if self.__fetching.has_key(path): self.__fetching[path] = False #Fix for failed multi-load? else: - logger.general("Image refused to load or URI did not reference a valid image: " + path) ##logger.general + logger.general("Image refused to load or URI did not reference a valid image: " + path) + component.get('chat').InfoPost("Image refused to load or URI did not reference a valid image: " + path +"") del self.__fetching[path] except IOError: del self.__fetching[path] - logger.general("Unable to resolve/open the specified URI; image was NOT laoded: " + path) ##logger.general + logger.general("Unable to resolve/open the specified URI; image was NOT loaded: " + path) + component.get('chat').InfoPost(" Unable to resolve/open the specified URI; image was NOT loaded: " + path + "") finally: self.__lock.release() def __loadCacheThread(self, path, image_type, imageId): @@ -130,11 +136,13 @@ break except: del self.__fetching[path] - logger.general("Unable to resolve/open the specified URI; image was NOT loaded: " + path) ##logger.general + logger.general("Unable to resolve/open the specified URI; image was NOT loaded: " + path) + component.get('chat').InfoPost("Unable to resolve/open the specified URI; image was NOT loaded: " + path + "") return self.__lock.acquire() try: logger.debug("Adding Image to Queue from Cache: " + str(self.__cache[path])) + component.debug('chat').InfoPost("Adding Image to Queue from Cache: " + str(self.__cache[path]) + ") self.__queue.put((self.__cache[path], image_type, imageId)) finally: self.__lock.release() diff -r f518bc709fd1 -r 37a11fea3304 orpg/mapper/map.py --- a/orpg/mapper/map.py Fri Aug 21 21:49:42 2009 -0500 +++ b/orpg/mapper/map.py Sat Aug 22 04:02:14 2009 -0500 @@ -35,7 +35,7 @@ import random import os import thread -import gc +#import gc #Garbage Collecter Needed? import traceback from miniatures_handler import * @@ -48,6 +48,7 @@ from orpg.dirpath import dir_struct from images import ImageHandler from orpg.orpgCore import component +from orpg.tools.orpg_settings import settings # Various marker modes for player tools on the map MARKER_MODE_NONE = 0 @@ -58,8 +59,6 @@ class MapCanvas(wx.ScrolledWindow): def __init__(self, parent, ID, isEditor=0): self.parent = parent - self.log = component.get('log') - self.settings = component.get("settings") self.session = component.get("session") wx.ScrolledWindow.__init__(self, parent, ID, style=wx.HSCROLL | wx.VSCROLL | wx.FULL_REPAINT_ON_RESIZE | wx.SUNKEN_BORDER ) @@ -156,7 +155,7 @@ self.parent.layer_tabs.EnableTab(cidx, True) if not self.cacheSizeSet: self.cacheSizeSet = True - cacheSize = self.settings.get_setting("ImageCacheSize") + cacheSize = component.get('settings').get_setting("ImageCacheSize") if len(cacheSize): self.cacheSize = int(cacheSize) else: pass if not ImageHandler.Queue.empty(): @@ -193,11 +192,11 @@ def on_scroll(self, evt): if self.drag: self.drag.Hide() - if self.settings.get_setting("AlwaysShowMapScale") == "1": self.printscale() + if component.get('settings').get_setting("AlwaysShowMapScale") == "1": self.printscale() evt.Skip() def on_char(self, evt): - if self.settings.get_setting("AlwaysShowMapScale") == "1": self.printscale() + if component.get('settings').get_setting("AlwaysShowMapScale") == "1": self.printscale() evt.Skip() def printscale(self): @@ -275,7 +274,7 @@ del dc wdc = self.preppaint() wdc.DrawBitmap(bmp, topleft[0], topleft[1]) - if self.frame.settings.get_setting("AlwaysShowMapScale") == "1": + if settings.get_setting("AlwaysShowMapScale") == "1": self.showmapscale(wdc) try: evt.Skip() except: pass @@ -715,11 +714,9 @@ class map_wnd(wx.Panel): def __init__(self, parent, id): - self.log = component.get('log') wx.Panel.__init__(self, parent, id) self.canvas = MapCanvas(self, -1) self.session = component.get('session') - self.settings = component.get('settings') self.chat = component.get('chat') self.top_frame = component.get('frame') self.root_dir = os.getcwd() diff -r f518bc709fd1 -r 37a11fea3304 orpg/mapper/miniatures.py --- a/orpg/mapper/miniatures.py Fri Aug 21 21:49:42 2009 -0500 +++ b/orpg/mapper/miniatures.py Sat Aug 22 04:02:14 2009 -0500 @@ -34,6 +34,8 @@ import urllib import os.path +from orpg.tools.orpg_settings import settings + MIN_STICKY_BACK = -0XFFFFFF MIN_STICKY_FRONT = 0xFFFFFF @@ -417,7 +419,6 @@ class miniature_layer(layer_base): def __init__(self, canvas): self.canvas = canvas - self.settings = self.canvas.settings layer_base.__init__(self) self.id = -1 #added. self.miniatures = [] @@ -425,10 +426,10 @@ # Set the font of the labels to be the same as the chat window # only smaller. - font_size = int(self.settings.get_setting('defaultfontsize')) + font_size = int(settings.get_setting('defaultfontsize')) if (font_size >= 10): font_size -= 2 self.label_font = wx.Font(font_size, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, - False, self.settings.get_setting('defaultfont')) + False, settings.get_setting('defaultfont')) def next_serial(self): self.serial_number += 1 @@ -583,7 +584,7 @@ def upload(self, postdata, filename, modify=False, pos=cmpPoint(0,0)): self.lock.acquire() - url = self.settings.get_setting('ImageServerBaseURL') + url = settings.get_setting('ImageServerBaseURL') file = urllib.urlopen(url, postdata) recvdata = file.read() file.close() diff -r f518bc709fd1 -r 37a11fea3304 orpg/mapper/miniatures_handler.py --- a/orpg/mapper/miniatures_handler.py Fri Aug 21 21:49:42 2009 -0500 +++ b/orpg/mapper/miniatures_handler.py Sat Aug 22 04:02:14 2009 -0500 @@ -40,6 +40,8 @@ from grid import GRID_ISOMETRIC import os +from orpg.tools.orpg_settings import settings + LABEL_TOOL = wx.NewId() LAYER_TOOL = wx.NewId() MIN_LIST_TOOL = wx.NewId() @@ -103,7 +105,7 @@ self.use_serial = 1 self.auto_label_cb = None self.canvas = canvas - self.settings = self.canvas.settings + self.settings = settings self.mini_rclick_menu_extra_items = {} self.background_rclick_menu_extra_items = {} base_layer_handler.__init__(self, parent, id, canvas) diff -r f518bc709fd1 -r 37a11fea3304 orpg/orpg_version.py --- a/orpg/orpg_version.py Fri Aug 21 21:49:42 2009 -0500 +++ b/orpg/orpg_version.py Sat Aug 22 04:02:14 2009 -0500 @@ -4,7 +4,7 @@ #BUILD NUMBER FORMAT: "YYMMDD-##" where ## is the incremental daily build index (if needed) DISTRO = "Traipse Dev" DIS_VER = "Ornery Orc" -BUILD = "090821-01" +BUILD = "090822-00" # This version is for network capability. PROTOCOL_VERSION = "1.2" diff -r f518bc709fd1 -r 37a11fea3304 orpg/tools/decorators.py --- a/orpg/tools/decorators.py Fri Aug 21 21:49:42 2009 -0500 +++ b/orpg/tools/decorators.py Sat Aug 22 04:02:14 2009 -0500 @@ -100,7 +100,7 @@ @functools.wraps(func) def new_func(*args, **kwargs): - from orpg.tools.orpg_log import logger + from orpg_log import logger if not ORPG_DEBUG & logger.log_level: return func(*args, **kwargs)