Mercurial > traipse_dev
comparison orpg/mapper/background.py @ 152:6081bdc2b8d5 beta
Traipse Beta 'OpenRPG' {091125-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 (Beta)
Added Bookmarks
Fix to Remote Admin Commands
Minor fix to text based Server
Fix to Pretty Print, from Core
Fix to Splitter Nodes not being created
Fix to massive amounts of images loading, from Core
Added 'boot' command to remote admin
Added confirmation window for sent nodes
Minor changes to allow for portability to an OpenSUSE linux OS
Miniatures Layer pop up box allows users to turn off Mini labels, from FlexiRPG
Zoom Mouse plugin added
Images added to Plugin UI
Switching to Element Tree
Map efficiency, from FlexiRPG
Added Status Bar to Update Manager
default_manifest.xml renamed to default_upmana.xml
Cleaner clode for saved repositories
New TrueDebug Class in orpg_log (See documentation for usage)
Mercurial's hgweb folder is ported to upmana
Pretty important update that can help remove thousands of dead children from your
gametree.
Children, <forms />, <group_atts />, <horizontal />, <cols />, <rows />, <height
/>, etc... are all tags now. Check your gametree and look for dead children!!
New Gametree Recursion method, mapping, and context sensitivity. !Infinite Loops
return error instead of freezing the software!
New Syntax added for custom PC sheets
Tip of the Day added, from Core and community
Fixed Whiteboard ID to prevent random line or text deleting. Modified ID's to
prevent non updated clients from ruining the fix.
author | sirebral |
---|---|
date | Wed, 25 Nov 2009 06:16:35 -0600 |
parents | e842a5f1b775 |
children | dcae32e219f1 |
comparison
equal
deleted
inserted
replaced
150:6c5f46a5924b | 152:6081bdc2b8d5 |
---|---|
27 # utilities in the orpg project. | 27 # utilities in the orpg project. |
28 # | 28 # |
29 __version__ = "$Id: background.py,v 1.29 2007/03/09 14:11:55 digitalxero Exp $" | 29 __version__ = "$Id: background.py,v 1.29 2007/03/09 14:11:55 digitalxero Exp $" |
30 | 30 |
31 from base import * | 31 from base import * |
32 import thread | 32 import thread, urllib, os.path, time, mimetypes |
33 import urllib | |
34 import os.path | |
35 import time | |
36 import mimetypes | |
37 | 33 |
38 from orpg.orpgCore import component | 34 from orpg.orpgCore import component |
39 from orpg.tools.orpg_log import logger | 35 from orpg.tools.orpg_log import logger |
40 from orpg.tools.decorators import debugging | |
41 from orpg.tools.orpg_settings import settings | 36 from orpg.tools.orpg_settings import settings |
42 | 37 |
43 ##----------------------------- | 38 ##----------------------------- |
44 ## background layer | 39 ## background layer |
45 ##----------------------------- | 40 ##----------------------------- |
57 layer_base.__init__(self) | 52 layer_base.__init__(self) |
58 self.canvas = canvas | 53 self.canvas = canvas |
59 self.r_h = RGBHex() | 54 self.r_h = RGBHex() |
60 self.clear() | 55 self.clear() |
61 | 56 |
62 | |
63 def error_loading_image(self, image): | 57 def error_loading_image(self, image): |
64 msg = "Unable to load image:" + `image` | 58 msg = "Unable to load image:" + `image` |
65 dlg = wx.MessageDialog(self.canvas,msg,'File not Found',wx.ICON_EXCLAMATION) | 59 dlg = wx.MessageDialog(self.canvas,msg,'File not Found',wx.ICON_EXCLAMATION) |
66 dlg.ShowModal() | 60 dlg.ShowModal() |
67 dlg.Destroy() | 61 dlg.Destroy() |
68 | |
69 | 62 |
70 def clear(self): | 63 def clear(self): |
71 self.type = BG_NONE | 64 self.type = BG_NONE |
72 self.bg_bmp = None | 65 self.bg_bmp = None |
73 self.bg_color = None | 66 self.bg_color = None |
75 self.local = False | 68 self.local = False |
76 self.localPath = '' | 69 self.localPath = '' |
77 self.localTime = -1 | 70 self.localTime = -1 |
78 self.isUpdated = True | 71 self.isUpdated = True |
79 | 72 |
80 | |
81 def get_type(self): | 73 def get_type(self): |
82 return self.type | 74 return self.type |
83 | |
84 | 75 |
85 def get_img_path(self): | 76 def get_img_path(self): |
86 if self.img_path: return self.img_path | 77 if self.img_path: return self.img_path |
87 else: return "" | 78 else: return "" |
88 | |
89 | 79 |
90 def get_color(self): | 80 def get_color(self): |
91 hexcolor = "#FFFFFF" | 81 hexcolor = "#FFFFFF" |
92 if self.bg_color: | 82 if self.bg_color: |
93 (red,green,blue) = self.bg_color.Get() | 83 (red,green,blue) = self.bg_color.Get() |
94 hexcolor = self.r_h.hexstring(red, green, blue) | 84 hexcolor = self.r_h.hexstring(red, green, blue) |
95 return hexcolor | 85 return hexcolor |
96 | |
97 | 86 |
98 def set_texture(self, path): | 87 def set_texture(self, path): |
99 self.isUpdated = True | 88 self.isUpdated = True |
100 self.type = BG_TEXTURE | 89 self.type = BG_TEXTURE |
101 if self.img_path != path: | 90 if self.img_path != path: |
104 if self.bg_bmp == None: | 93 if self.bg_bmp == None: |
105 logger.general("Invalid image type!") | 94 logger.general("Invalid image type!") |
106 raise Exception, "Invalid image type!" | 95 raise Exception, "Invalid image type!" |
107 except: self.error_loading_image(path) | 96 except: self.error_loading_image(path) |
108 self.img_path = path | 97 self.img_path = path |
109 | |
110 | 98 |
111 def set_image(self, path, scale): | 99 def set_image(self, path, scale): |
112 self.isUpdated = True | 100 self.isUpdated = True |
113 self.type = BG_IMAGE | 101 self.type = BG_IMAGE |
114 if self.img_path != path: | 102 if self.img_path != path: |
119 raise Exception, "Invalid image type!" | 107 raise Exception, "Invalid image type!" |
120 except: self.error_loading_image(path) | 108 except: self.error_loading_image(path) |
121 self.img_path = path | 109 self.img_path = path |
122 return (self.bg_bmp.GetWidth(),self.bg_bmp.GetHeight()) | 110 return (self.bg_bmp.GetWidth(),self.bg_bmp.GetHeight()) |
123 | 111 |
124 | |
125 def set_color(self, color): | 112 def set_color(self, color): |
126 self.isUpdated = True | 113 self.isUpdated = True |
127 self.type = BG_COLOR | 114 self.type = BG_COLOR |
128 (r,g,b) = color.Get() | 115 (r,g,b) = color.Get() |
129 self.bg_color = cmpColour(r,g,b) | 116 self.bg_color = cmpColour(r,g,b) |
130 self.canvas.SetBackgroundColour(self.bg_color) | 117 self.canvas.SetBackgroundColour(self.bg_color) |
131 | |
132 | 118 |
133 def layerDraw(self, dc, scale, topleft, size): | 119 def layerDraw(self, dc, scale, topleft, size): |
134 if self.bg_bmp == None or not self.bg_bmp.Ok() or ((self.type != BG_TEXTURE) and (self.type != BG_IMAGE)): | 120 if self.bg_bmp == None or not self.bg_bmp.Ok() or ((self.type != BG_TEXTURE) and (self.type != BG_IMAGE)): |
135 return False | 121 return False |
136 dc2 = wx.MemoryDC() | 122 dc2 = wx.MemoryDC() |
202 dc.Blit(posx, posy, newW, newH, dc2, cl, ct) | 188 dc.Blit(posx, posy, newW, newH, dc2, cl, ct) |
203 dc2.SelectObject(wx.NullBitmap) | 189 dc2.SelectObject(wx.NullBitmap) |
204 del dc2 | 190 del dc2 |
205 return True | 191 return True |
206 | 192 |
207 | |
208 def layerToXML(self, action="update"): | 193 def layerToXML(self, action="update"): |
209 xml_str = "<bg" | 194 xml_str = "<bg" |
210 if self.bg_color != None: | 195 if self.bg_color != None: |
211 (red,green,blue) = self.bg_color.Get() | 196 (red,green,blue) = self.bg_color.Get() |
212 hexcolor = self.r_h.hexstring(red, green, blue) | 197 hexcolor = self.r_h.hexstring(red, green, blue) |
221 logger.debug(xml_str) | 206 logger.debug(xml_str) |
222 if (action == "update" and self.isUpdated) or action == "new": | 207 if (action == "update" and self.isUpdated) or action == "new": |
223 self.isUpdated = False | 208 self.isUpdated = False |
224 return xml_str | 209 return xml_str |
225 else: return '' | 210 else: return '' |
226 | |
227 | 211 |
228 def layerTakeDOM(self, xml_dom): | 212 def layerTakeDOM(self, xml_dom): |
229 type = BG_COLOR | 213 type = BG_COLOR |
230 color = xml_dom.getAttribute("color") | 214 color = xml_dom.getAttribute("color") |
231 logger.debug("color=" + color) | 215 logger.debug("color=" + color) |
255 filename = os.path.split(self.localPath) | 239 filename = os.path.split(self.localPath) |
256 (imgtype,j) = mimetypes.guess_type(filename[1]) | 240 (imgtype,j) = mimetypes.guess_type(filename[1]) |
257 postdata = urllib.urlencode({'filename':filename[1], 'imgdata':imgdata, 'imgtype':imgtype}) | 241 postdata = urllib.urlencode({'filename':filename[1], 'imgdata':imgdata, 'imgtype':imgtype}) |
258 thread.start_new_thread(self.upload, (postdata, self.localPath, type)) | 242 thread.start_new_thread(self.upload, (postdata, self.localPath, type)) |
259 | 243 |
260 | |
261 def upload(self, postdata, filename, type): | 244 def upload(self, postdata, filename, type): |
262 self.lock.acquire() | 245 self.lock.acquire() |
263 if type == 'Image' or type == 'Texture': | 246 if type == 'Image' or type == 'Texture': |
264 url = component.get('settings').get_setting('ImageServerBaseURL') | 247 url = component.get('settings').get_setting('ImageServerBaseURL') |
265 file = urllib.urlopen(url, postdata) | 248 file = urllib.urlopen(url, postdata) |