You can subscribe to this list here.
2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(5) |
Dec
(2) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2001 |
Jan
(4) |
Feb
(5) |
Mar
(56) |
Apr
(110) |
May
(187) |
Jun
(317) |
Jul
(280) |
Aug
(191) |
Sep
(42) |
Oct
(104) |
Nov
(123) |
Dec
(80) |
2002 |
Jan
(281) |
Feb
(251) |
Mar
(238) |
Apr
(70) |
May
(118) |
Jun
(117) |
Jul
(74) |
Aug
(104) |
Sep
(42) |
Oct
(36) |
Nov
(60) |
Dec
(60) |
2003 |
Jan
(183) |
Feb
(45) |
Mar
(111) |
Apr
(89) |
May
(38) |
Jun
(37) |
Jul
(14) |
Aug
(31) |
Sep
(37) |
Oct
(87) |
Nov
(179) |
Dec
(93) |
2004 |
Jan
(32) |
Feb
(31) |
Mar
(1) |
Apr
(5) |
May
(76) |
Jun
(20) |
Jul
(4) |
Aug
(9) |
Sep
|
Oct
(5) |
Nov
(5) |
Dec
(30) |
2005 |
Jan
(33) |
Feb
(30) |
Mar
(41) |
Apr
(20) |
May
(73) |
Jun
(33) |
Jul
(151) |
Aug
(104) |
Sep
(76) |
Oct
(34) |
Nov
(86) |
Dec
(151) |
2006 |
Jan
(136) |
Feb
(39) |
Mar
(17) |
Apr
(18) |
May
(62) |
Jun
(92) |
Jul
(13) |
Aug
(15) |
Sep
(47) |
Oct
(207) |
Nov
(217) |
Dec
(48) |
2007 |
Jan
(66) |
Feb
(199) |
Mar
(130) |
Apr
(90) |
May
(70) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Digital X. <dig...@us...> - 2007-02-21 16:01:08
|
Update of /cvsroot/openrpg/openrpg1/orpg/mapper In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv14634/orpg/mapper Modified Files: map.py Log Message: Fix some GUI issues with Tabs Index: map.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/mapper/map.py,v retrieving revision 1.67 retrieving revision 1.68 diff -C2 -d -r1.67 -r1.68 *** map.py 14 Feb 2007 07:00:43 -0000 1.67 --- map.py 21 Feb 2007 16:00:27 -0000 1.68 *************** *** 1066,1070 **** self.current_layer = 2 ! self.layer_tabs = orpgTabberWnd(self, openrpg, style=FNB.FNB_NO_X_BUTTON|FNB.FNB_BOTTOM) self.layer_handlers = [] self.layer_handlers.append(background_handler(self.layer_tabs,-1,self.canvas)) --- 1066,1070 ---- self.current_layer = 2 ! self.layer_tabs = orpgTabberWnd(self, openrpg, style=FNB.FNB_NO_X_BUTTON|FNB.FNB_BOTTOM|FNB.FNB_NO_NAV_BUTTONS) self.layer_handlers = [] self.layer_handlers.append(background_handler(self.layer_tabs,-1,self.canvas)) |
From: Digital X. <dig...@us...> - 2007-02-21 16:01:07
|
Update of /cvsroot/openrpg/openrpg1/orpg/gametree/nodehandlers In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv14634/orpg/gametree/nodehandlers Modified Files: containers.py core.py forms.py Log Message: Fix some GUI issues with Tabs Index: forms.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/gametree/nodehandlers/forms.py,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -d -r1.50 -r1.51 *** forms.py 15 Nov 2006 12:11:24 -0000 1.50 --- forms.py 21 Feb 2007 16:00:27 -0000 1.51 *************** *** 637,641 **** opts = handler.get_options() ! self.listbox = wx.ListBox(self,F_LIST,choices=opts) opts = ['Drop Down', 'List Box', 'Radio Box', 'Check List'] self.type_radios = wx.RadioBox(self,F_TYPE,"List Type",choices=opts) --- 637,641 ---- opts = handler.get_options() ! self.listbox = wx.ListBox(self, F_LIST, choices=opts, style=wx.LB_HSCROLL|wx.LB_SINGLE|wx.LB_NEEDED_SB) opts = ['Drop Down', 'List Box', 'Radio Box', 'Check List'] self.type_radios = wx.RadioBox(self,F_TYPE,"List Type",choices=opts) Index: containers.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/gametree/nodehandlers/containers.py,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -d -r1.40 -r1.41 *** containers.py 14 Nov 2006 11:04:37 -0000 1.40 --- containers.py 21 Feb 2007 16:00:27 -0000 1.41 *************** *** 227,231 **** class tabbed_panel(orpgTabberWnd): def __init__(self, parent, handler, mode): ! orpgTabberWnd.__init__(self, parent, handler.openrpg) self.handler = handler self.parent = parent --- 227,231 ---- class tabbed_panel(orpgTabberWnd): def __init__(self, parent, handler, mode): ! orpgTabberWnd.__init__(self, parent, handler.openrpg, style=FNB.FNB_NO_X_BUTTON) self.handler = handler self.parent = parent Index: core.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/gametree/nodehandlers/core.py,v retrieving revision 1.43 retrieving revision 1.44 diff -C2 -d -r1.43 -r1.44 *** core.py 3 Feb 2007 14:32:47 -0000 1.43 --- core.py 21 Feb 2007 16:00:27 -0000 1.44 *************** *** 147,152 **** y = 200 ! self.myeditor.SetSizeHints(x, y, -1, -1) ! self.myeditor.Fit() self.myeditor.Thaw() --- 147,152 ---- y = 200 ! self.myeditor.SetSize((x, y)) ! self.myeditor.Layout() self.myeditor.Thaw() *************** *** 193,198 **** y = 200 ! self.mywindow.SetSizeHints(x, y, -1, -1) ! self.mywindow.Fit() self.mywindow.Thaw() --- 193,198 ---- y = 200 ! self.mywindow.SetSize((x, y)) ! self.mywindow.Layout() self.mywindow.Thaw() |
From: Digital X. <dig...@us...> - 2007-02-21 16:01:07
|
Update of /cvsroot/openrpg/openrpg1/orpg/chat In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv14634/orpg/chat Modified Files: chatwnd.py Log Message: Fix some GUI issues with Tabs Index: chatwnd.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/chat/chatwnd.py,v retrieving revision 1.162 retrieving revision 1.163 diff -C2 -d -r1.162 -r1.163 *** chatwnd.py 18 Feb 2007 16:14:44 -0000 1.162 --- chatwnd.py 21 Feb 2007 16:00:26 -0000 1.163 *************** *** 236,240 **** self.log.log("Enter chat_notebook", ORPG_DEBUG) ! orpgTabberWnd.__init__(self, parent, openrpg, True, size=size, style=FNB.FNB_X_ON_TAB|FNB.FNB_MOUSE_MIDDLE_CLOSES_TABS) self.settings = openrpg.get_component("settings") --- 236,240 ---- self.log.log("Enter chat_notebook", ORPG_DEBUG) ! orpgTabberWnd.__init__(self, parent, openrpg, True, size=size, style=FNB.FNB_DROPDOWN_TABS_LIST|FNB.FNB_NO_NAV_BUTTONS|FNB.FNB_MOUSE_MIDDLE_CLOSES_TABS) self.settings = openrpg.get_component("settings") |
From: Digital X. <dig...@us...> - 2007-02-21 16:00:42
|
Update of /cvsroot/openrpg/openrpg1/orpg In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv14634/orpg Modified Files: orpg_windows.py Log Message: Fix some GUI issues with Tabs Index: orpg_windows.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/orpg_windows.py,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -d -r1.39 -r1.40 *** orpg_windows.py 11 Feb 2007 03:49:36 -0000 1.39 --- orpg_windows.py 21 Feb 2007 16:00:28 -0000 1.40 *************** *** 81,85 **** class orpgTabberWnd(FNB.FlatNotebook): def __init__(self, parent, openrpg, closeable=False, size=wx.DefaultSize, style = False): ! nbstyle = FNB.FNB_DROPDOWN_TABS_LIST|FNB.FNB_NO_NAV_BUTTONS|FNB.FNB_NO_X_BUTTON|FNB.FNB_HIDE_ON_SINGLE_TAB|FNB.FNB_BACKGROUND_GRADIENT FNB.FlatNotebook.__init__(self, parent, -1, size=size, style=nbstyle) --- 81,85 ---- class orpgTabberWnd(FNB.FlatNotebook): def __init__(self, parent, openrpg, closeable=False, size=wx.DefaultSize, style = False): ! nbstyle = FNB.FNB_HIDE_ON_SINGLE_TAB|FNB.FNB_BACKGROUND_GRADIENT FNB.FlatNotebook.__init__(self, parent, -1, size=size, style=nbstyle) |
From: Digital X. <dig...@us...> - 2007-02-21 15:27:24
|
Update of /cvsroot/openrpg/openrpg1/plugins In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv32756/plugins Modified Files: xxquotebox.py Log Message: Index: xxquotebox.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/plugins/xxquotebox.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** xxquotebox.py 21 Feb 2007 14:01:32 -0000 1.2 --- xxquotebox.py 21 Feb 2007 15:27:20 -0000 1.3 *************** *** 153,157 **** box = '<br><center><table bgcolor="' + self.bgcolor + '" width="80%"' box += 'cellpadding="' + str(int(self.size * 5)) + '" cellspacing="0" ' + border + '>' ! box += '<tr><td><font size="' + str(self.size) + '" color="' + self.fontcolor + '"> box += bold + italics + msg + enditalics + endbold box += '</font></td></tr></table></center>' --- 153,157 ---- box = '<br><center><table bgcolor="' + self.bgcolor + '" width="80%"' box += 'cellpadding="' + str(int(self.size * 5)) + '" cellspacing="0" ' + border + '>' ! box += '<tr><td><font size="' + str(self.size) + '" color="' + self.fontcolor + '">' box += bold + italics + msg + enditalics + endbold box += '</font></td></tr></table></center>' |
From: Digital X. <dig...@us...> - 2007-02-21 15:23:35
|
Update of /cvsroot/openrpg/openrpg1/orpg In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv31149/orpg Modified Files: main.py Log Message: Added Change Log to the About menu Index: main.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/main.py,v retrieving revision 1.143 retrieving revision 1.144 diff -C2 -d -r1.143 -r1.144 *** main.py 19 Feb 2007 16:33:19 -0000 1.143 --- main.py 21 Feb 2007 15:23:31 -0000 1.144 *************** *** 262,266 **** ['&Help'], [' &About'], ! [' Online User Guide'] ]] --- 262,267 ---- ['&Help'], [' &About'], ! [' Online User Guide'], ! [' Change Log'] ]] *************** *** 822,825 **** --- 823,830 ---- wb.open("http://openrpg.digitalxero.net/wiki/index.php?page=OpenRPG+FAQ") + def OnMB_HelpChangeLog(self): + wb = webbrowser.get() + wb.open("http://openrpg.digitalxero.net/updates/developer/OpenRPG+ 1.7.x/release_notes.html") + ################################# |
From: Digital X. <dig...@us...> - 2007-02-21 15:22:08
|
Update of /cvsroot/openrpg/openrpg1/orpg/map In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv30444/orpg/map Modified Files: _lines.py Log Message: Index: _lines.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/map/_lines.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** _lines.py 21 Feb 2007 14:02:11 -0000 1.4 --- _lines.py 21 Feb 2007 15:22:06 -0000 1.5 *************** *** 10,14 **** def __init__(self, canvas, start=wx.Point(0,0), width=1, color="#000000", points=[]): MapObject.__init__(self, canvas=canvas) ! self.start = start self.color = color self.points = points --- 10,14 ---- def __init__(self, canvas, start=wx.Point(0,0), width=1, color="#000000", points=[]): MapObject.__init__(self, canvas=canvas) ! self.start = wx.Point(start[0], start[1]) self.color = color self.points = points |
From: Digital X. <dig...@us...> - 2007-02-21 15:16:27
|
Update of /cvsroot/openrpg/openrpg1/orpg In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv28292/orpg Modified Files: orpg_version.py Log Message: Index: orpg_version.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/orpg_version.py,v retrieving revision 1.101 retrieving revision 1.102 diff -C2 -d -r1.101 -r1.102 *** orpg_version.py 20 Feb 2007 10:21:55 -0000 1.101 --- orpg_version.py 21 Feb 2007 15:16:21 -0000 1.102 *************** *** 3,7 **** #BUILD NUMBER FORMAT: "YYMMDD-##" where ## is the incremental daily build index (if needed) ! BUILD = "070220-00" --- 3,7 ---- #BUILD NUMBER FORMAT: "YYMMDD-##" where ## is the incremental daily build index (if needed) ! BUILD = "070221-00" |
From: Digital X. <dig...@us...> - 2007-02-21 14:01:34
|
Update of /cvsroot/openrpg/openrpg1/plugins In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv30398/plugins Modified Files: xxquotebox.py Log Message: Index: xxquotebox.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/plugins/xxquotebox.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** xxquotebox.py 19 Feb 2007 04:21:28 -0000 1.1 --- xxquotebox.py 21 Feb 2007 14:01:32 -0000 1.2 *************** *** 127,133 **** msg = cmdargs if self.boxtype == 0: #old ! self.chat.InfoPost("<table bgcolor='"+self.bgcolor+"' border='0' cellpadding='0' \ ! cellspacing='0' width='100%'><tr><td><FONT SIZE='"+str(self.size)+"' \ ! color='"+self.fontcolor+"'><b>"+msg+"</b></font></table>", 1, 1) else: #new if self.border: --- 127,134 ---- msg = cmdargs if self.boxtype == 0: #old ! box = '<table bgcolor="' + self.bgcolor + '" border="0" cellpadding="0" cellspacing="0" width="100%">' ! box += '<tr><td><font size="' + str(self.size) + '" color="' + self.fontcolor + '">' ! box += '<b>' + msg + '</b></font></table>' ! self.chat.Post(box, True, True) else: #new if self.border: *************** *** 150,158 **** endbold = "" ! self.chat.InfoPost("<br><center><table bgcolor='"+self.bgcolor+ ! "' width='80%' cellpadding='"+str(int(self.size * 5))+ ! "' cellspacing='0'"+border+"><tr><td><font size='"+str(self.size)+ ! "'color='"+self.fontcolor+"'>"+bold+italics+msg+enditalics+endbold+ ! "</font></td></tr></table></center>", 1, 1) # changes size of font, as well as cell-padding size --- 151,160 ---- endbold = "" ! box = '<br><center><table bgcolor="' + self.bgcolor + '" width="80%"' ! box += 'cellpadding="' + str(int(self.size * 5)) + '" cellspacing="0" ' + border + '>' ! box += '<tr><td><font size="' + str(self.size) + '" color="' + self.fontcolor + '"> ! box += bold + italics + msg + enditalics + endbold ! box += '</font></td></tr></table></center>' ! self.chat.Post(box, True, True) # changes size of font, as well as cell-padding size |
From: Digital X. <dig...@us...> - 2007-02-20 10:21:55
|
Update of /cvsroot/openrpg/openrpg1/orpg In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv29784/orpg Modified Files: orpg_version.py Log Message: Index: orpg_version.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/orpg_version.py,v retrieving revision 1.100 retrieving revision 1.101 diff -C2 -d -r1.100 -r1.101 *** orpg_version.py 18 Feb 2007 16:20:57 -0000 1.100 --- orpg_version.py 20 Feb 2007 10:21:55 -0000 1.101 *************** *** 1,7 **** ! VERSION = "1.7.1" ! SERVER_MIN_CLIENT_VERSION = "1.7.1" #BUILD NUMBER FORMAT: "YYMMDD-##" where ## is the incremental daily build index (if needed) ! BUILD = "070218-00" --- 1,7 ---- ! VERSION = "1.7.2" ! SERVER_MIN_CLIENT_VERSION = "1.7.2" #BUILD NUMBER FORMAT: "YYMMDD-##" where ## is the incremental daily build index (if needed) ! BUILD = "070220-00" |
From: Digital X. <dig...@us...> - 2007-02-20 10:21:05
|
Update of /cvsroot/openrpg/openrpg1/orpg In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv29421/orpg Modified Files: Tag: BRANCH-1-7-1 orpg_version.py Log Message: Index: orpg_version.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/orpg_version.py,v retrieving revision 1.98.2.2 retrieving revision 1.98.2.3 diff -C2 -d -r1.98.2.2 -r1.98.2.3 *** orpg_version.py 18 Feb 2007 16:24:38 -0000 1.98.2.2 --- orpg_version.py 20 Feb 2007 10:21:03 -0000 1.98.2.3 *************** *** 3,7 **** #BUILD NUMBER FORMAT: "YYMMDD-##" where ## is the incremental daily build index (if needed) ! BUILD = "070218-00" --- 3,7 ---- #BUILD NUMBER FORMAT: "YYMMDD-##" where ## is the incremental daily build index (if needed) ! BUILD = "070220-00" |
From: Digital X. <dig...@us...> - 2007-02-20 10:19:55
|
Update of /cvsroot/openrpg/openrpg1/orpg/map In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv28804/orpg/map Modified Files: __init__.py _object.py Added Files: _canvas.py Log Message: Fixed a bug for OSX and starting up Fixed a miss spelling of Label (And added the ability to initate a label edit in the game tree by pressing F2) Fixed a bug that was causing images to not load on older clients The new map now has the abilit to multi select Objects --- NEW FILE: _canvas.py --- from threading import Lock import mimetypes import xml.dom.minidom as minidom import orpg.dirpath from orpg.orpg_wx import * from orpg.orpgCore import * from orpg.tools.rgbhex import RGBHex from _object import * from _circles import MapCircle from _grid import GridLayer from _fog import FogLayer USE_BUFFER = False if "wxMSW" in wx.PlatformInfo: USE_BUFFER = True class MapCanvas(wx.ScrolledWindow): def __init__(self, parent, openrpg): wx.ScrolledWindow.__init__(self, parent, wx.ID_ANY, style=wx.HSCROLL | wx.VSCROLL | wx.NO_FULL_REPAINT_ON_RESIZE | wx.SUNKEN_BORDER) self.openrpg = openrpg self.log = self.openrpg.get_component("log") self.xml = self.openrpg.get_component("xml") self.dir_struct = self.openrpg.get_component("dir_struct") self.validate = self.openrpg.get_component("validate") self.settings = self.openrpg.get_component("settings") self.session = self.openrpg.get_component("session") self.chat = self.openrpg.get_component("chat") self.lock = Lock() self.RGBHex = RGBHex() self.toolWnd = parent self.shift = False self.ctrl = False self.selectedObjects = [] self.overObjects = [] self.gridLayer = GridLayer(self) self.circleLayer = MapCircle(self) self.fogLayer = FogLayer(self) self.zOrder = {} self.zOrder['tiles'] = [] self.zOrder["back"] = [] self.zOrder["front"] = [] self.bgImage = None self.bgType = 'Image' self.bgPath = None self.backgroundColor = '#008040' self.gridType = 'Square' self.gridLines = wx.SOLID self.gridSnap = True self.gridSize = 60 self.gridColor = "#000000" self.whiteboardColor = "#000000" self.zoomScale = 1.0 self.lastZoomTime = time.time() self.lastZoomScale = 1.0 self.useFog = False self.fogRegion = [] self.fogColor = "#000000" self.zoomScale = 1.0 self.lastZoomTime = time.time() self.lastZoomScale = 1.0 self.zoomTimer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.OnZoomTimer, self.zoomTimer) #self.zoomTimer.Start(1000) self.imageCache = {} self._SetSize((1000,1000)) self.Bind(wx.EVT_PAINT, self.OnPaint) self.Bind(wx.EVT_SIZE, self.OnSize) self.Bind(wx.EVT_MOUSEWHEEL, self.OnZoom) self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown) self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDClick) self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp) self.Bind(wx.EVT_RIGHT_DOWN, self.OnRightDown) self.Bind(wx.EVT_MOTION, self.OnMotion) self.Bind(wx.EVT_SCROLLWIN, self.OnScroll) self.Bind(wx.EVT_CLOSE, self.OnClose) self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnBackground) self.Bind(wx.EVT_KEY_DOWN, self.OnKey) self.Bind(wx.EVT_KEY_UP, self.OnKey) self.Bind(EVT_ENTER_OBJECT, self.EnterObject) self.Bind(EVT_LEAVE_OBJECT, self.LeaveObject) self.Bind(EVT_SELECT_OBJECT, self.ObjectSelected) self.Bind(EVT_DESELECT_OBJECT, self.ObjectDeselected) self.roleTimer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.OnRoleTimer, self.roleTimer) wx.CallAfter(self.OnSize, None) #Public API def UpdateMap(self, send=True): cdc = wx.ClientDC(self) self.PrepareDC(cdc) cdc.SetBackgroundMode(wx.TRANSPARENT) if USE_BUFFER: bdc = wx.BufferedDC(cdc, self._buffer) bdc.Clear() dc = wx.GraphicsContext.Create(bdc) else: cdc.Clear() dc = wx.GraphicsContext.Create(cdc) dc.SetPen(wx.TRANSPARENT_PEN) dc.SetBrush(wx.TRANSPARENT_BRUSH) font = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT) dc.SetFont(font) #Draw BG Color r,g,b = self.RGBHex.rgb_tuple(self.backgroundColor) brush = wx.Brush(wx.Color(r,g,b,255)) dc.SetBrush(brush) size = self.GetClientSizeTuple() path = dc.CreatePath() dc.PushState() path.AddRectangle(0, 0, self.size[0]+2, self.size[1]+2) dc.DrawPath(path) dc.PopState() dc.SetBrush(wx.NullBrush) #Set the Zoom if USE_BUFFER: bdc.SetUserScale(self.zoomScale, self.zoomScale) else: cdc.SetUserScale(self.zoomScale, self.zoomScale) #Draw BG Image if self.bgImage != None: if self.bgType == 'Image': dc.DrawBitmap(self.bgImage, self.offset[0], self.offset[1], self.bgImage.GetWidth(), self.bgImage.GetHeight()) else: bmpW = self.bgImage.GetWidth() bmpH = self.bgImage.GetHeight() pos = wx.Point(self.offset[0], self.offset[1]) while pos.x < self.size[0]: dc.DrawBitmap(self.bgImage, pos.x, pos.y, self.bgImage.GetWidth(), self.bgImage.GetHeight()) while pos.y < self.size[1]: pos.y += bmpH dc.DrawBitmap(self.bgImage, pos.x, pos.y, self.bgImage.GetWidth(), self.bgImage.GetHeight()) pos.y = 0 pos.x += bmpW #Draw Tiles for tile in self.zOrder['tiles']: tile.Draw(dc) #Draw Grid self.gridLayer.Draw(dc) #Draw Objects for object in self.zOrder['back']: object.Draw(dc) zl = self.zOrder.keys() zl.remove('back') zl.remove('front') zl.remove('tiles') zl.sort() for layer in zl: for object in self.zOrder[layer]: object.Draw(dc) for object in self.zOrder['front']: object.Draw(dc) #Draw Fog if self.useFog: self.fogLayer.Draw(dc) dc.SetBrush(wx.NullBrush) #Reset the Zoom as we dont need to zoom in on the zoom scale if USE_BUFFER: bdc.SetUserScale(1, 1) else: cdc.SetUserScale(1, 1) if self.zoomScale != 1.0: pos = self.GetViewStart() unit = self.GetScrollPixelsPerUnit() pos = [pos[0]*unit[0],pos[1]*unit[1]] #dc.SetTextColour("black") dc.DrawText("Zoom Factor: " + str(self.zoomScale), pos[0], pos[1]) def Clear(self): self._SetSize((1000,1000)) self.selectedObjects = [] self.overObjects = [] self.bgImage = None self.bgType = 'Image' self.bgPath = None self.backgroundColor = '#008040' r, g, b = self.RGBHex.rgb_tuple(self.backgroundColor) self.toolWnd._SetColorBtn(wx.Color(r, g, b, 255), self.toolWnd.BGColorBtn) self.gridType = 'Square' self.gridLines = wx.SOLID self.gridSnap = True self.gridSize = 60 self.gridColor = "#000000" self.whiteboardColor = "#000000" r, g, b = self.RGBHex.rgb_tuple(self.whiteboardColor) self.toolWnd._SetColorBtn(wx.Color(r, g, b, 255), self.toolWnd.ColorBtn) self.zoomScale = 1.0 self.lastZoomTime = time.time() self.lastZoomScale = 1.0 self.useFog = False self.fogRegion = [] self.fogColor = "#000000" for layer in self.zOrder: for i in xrange(len(self.zOrder[layer])): del self.zOrder[layer][0] self.toolWnd.Freeze() for btn in self.toolWnd.exclusiveToolList: self.toolWnd.exclusiveToolList[btn].SetToggled(False) self.toolWnd.FogBtn.SetToggled(False) self.toolWnd.SelectorBtn.SetToggled(True) self.toolWnd.Thaw() #Map Events def OnBackground(self, event): #Dont do it pass def OnPaint(self, event): if USE_BUFFER: dc = wx.PaintDC(self) self.PrepareDC(dc) dc.DrawBitmap(self._buffer, 0, 0) else: event.Skip() def OnSize(self, event): self._buffer = wx.EmptyBitmap(self.size[0], self.size[1]) self._FixScroll() wx.CallAfter(self.UpdateMap) def OnZoom(self, event): if event.GetWheelRotation() < 0: self.zoomScale -= .1 if self.zoomScale < .5: self.zoomScale = .5 else: self.lastZoomTime = time.time() self._FixScroll() self.UpdateMap() else: self.zoomScale += .1 if self.zoomScale > 2: self.zoomScale = 2 else: self.lastZoomTime = time.time() self._FixScroll() self.UpdateMap() def OnKey(self, event): self.shift = False self.ctrl = False if event.ShiftDown(): self.shift = True elif event.ControlDown(): self.ctrl = True def EnterObject(self, event): obj = event.GetObject() self.overObjects.append(obj) if self.toolWnd.SelectorBtn.GetToggled(): obj.Highlight() def LeaveObject(self, event): obj = event.GetObject() self.overObjects.remove(obj) if self.toolWnd.SelectorBtn.GetToggled(): obj.UnHighlight() def ObjectSelected(self, event): obj = event.GetObject() self.selectedObjects.append(obj) self.overObjects.remove(obj) obj.UnHighlight() obj.Update() def ObjectDeselected(self, event): obj = event.GetObject() self.selectedObjects.remove(obj) obj.Update() def OnLeftDown(self, event): dc = wx.ClientDC(self) self.PrepareDC(dc) pos = event.GetLogicalPosition(dc) pos.x /= self.zoomScale pos.y /= self.zoomScale if self.toolWnd.AddShapeBtn.GetToggled() and self.toolWnd.currentShape == 'Circle': self.circleLayer.OnLeftDown(pos) elif self.toolWnd.SelectorBtn.GetToggled() and (self.selectedObjects == [] or self.ctrl or self.shift) and not (self.useFog and self.fogLayer.region.Contains(pos.x, pos.y) and not self.toolWnd.gmToolBar.IsShown()): print 'Selecting' self.initiatPos = pos self.lxd = 0 self.lyd = 0 if len(self.overObjects) == 0: return elif len(self.overObjects) == 1: self.overObjects[0].Select() else: if not self.shift: menu = wx.Menu("Object Selection") id = 0 for obj in self.overObjects: menu.Append(id, obj.GetName()) id += 1 def selectmenu(event): id = event.GetId() self.overObjects[id].Select() self.Unbind(wx.EVT_MENU) self.Bind(wx.EVT_MENU, selectmenu) self.PopupMenu(menu) else: for i in xrange(len(self.overObjects)): self.overObjects[0].Select() elif self.toolWnd.SelectorBtn.GetToggled() and not self.selectedObjects == []: xd = (self.initiatPos.x+pos.x)*(self.initiatPos.x+pos.x) yd = (self.initiatPos.y+pos.y)*(self.initiatPos.y+pos.y) for i in xrange(len(self.selectedObjects)): self.selectedObjects[0].Deselect() elif self.toolWnd.FogToolBtn.GetToggled(): self.fogLayer.OnLeftDown(event) def OnLeftDClick(self, event): pass def OnLeftUp(self, event): dc = wx.ClientDC(self) self.PrepareDC(dc) pos = event.GetLogicalPosition(dc) pos.x /= self.zoomScale pos.y /= self.zoomScale if self.toolWnd.AddShapeBtn.GetToggled() and self.toolWnd.currentShape == 'Circle': self.circleLayer.OnLeftUp(pos) elif self.toolWnd.FogToolBtn.GetToggled(): self.fogLayer.OnLeftUp(event) elif self.toolWnd.SelectorBtn.GetToggled() and self.selectedObjects == []: rgn = wx.Region(self.initiatPos.x, self.initiatPos.y, self.lxd, self.lyd) for object in self.zOrder['back']: if rgn.Contains(object.start.x, object.start.y): object.Select() zl = self.zOrder.keys() zl.remove('back') zl.remove('front') zl.remove('tiles') zl.sort() for layer in zl: for object in self.zOrder[layer]: if rgn.Contains(object.start.x, object.start.y): object.Select() for object in self.zOrder['front']: if rgn.Contains(object.start.x, object.start.y): object.Select() self.lxd = 0 self.lyd = 0 self.initiatPos = pos self.Refresh() def OnRightDown(self, event): mapmenu = wx.Menu() item = wx.MenuItem(mapmenu, wx.ID_ANY, "Load Map", "Load Map") #self.Bind(wx.EVT_MENU, self.OnOpenBtn, item) mapmenu.AppendItem(item) item = wx.MenuItem(mapmenu, wx.ID_ANY, "Save Map", "Save Map") #self.Bind(wx.EVT_MENU, self.OnSaveBtn, item) mapmenu.AppendItem(item) item = wx.MenuItem(mapmenu, wx.ID_ANY, "Default Map", "Default Map") self.Bind(wx.EVT_MENU, self.OnDefaultBtn, item) mapmenu.AppendItem(item) item = wx.MenuItem(mapmenu, wx.ID_ANY, "Map Properties", "Map Properties") #self.Bind(wx.EVT_MENU, OnMapPropsBtn, item) mapmenu.AppendItem(item) bgmenu = wx.Menu() item = wx.MenuItem(bgmenu, wx.ID_ANY, "Change Background Image", "Change Background Image") self.Bind(wx.EVT_MENU, self.OnBGBtn, item) bgmenu.AppendItem(item) item = wx.MenuItem(bgmenu, wx.ID_ANY, "Change Background Color", "Change Background Color") self.Bind(wx.EVT_MENU, self.OnBGColorBtn, item) bgmenu.AppendItem(item) item = wx.MenuItem(bgmenu, wx.ID_ANY, "Grid Properties", "Grid Properties") #self.Bind(wx.EVT_MENU, self.OnGridBtn, item) bgmenu.AppendItem(item) fogmenu = wx.Menu() item = wx.MenuItem(fogmenu, wx.ID_ANY, "Toggle Fog", "Toggle Fog") self.Bind(wx.EVT_MENU, self.OnFogBtn, item) fogmenu.AppendItem(item) item = wx.MenuItem(fogmenu, wx.ID_ANY, "Fog Color", "Fog Color") self.Bind(wx.EVT_MENU, self.OnFogColorBtn, item) fogmenu.AppendItem(item) menu = wx.Menu() if self.toolWnd.gmToolBar.IsShown(): menu.AppendMenu(wx.ID_ANY, "Map", mapmenu) menu.AppendMenu(wx.ID_ANY, "Background", bgmenu) menu.AppendMenu(wx.ID_ANY, "Fog", fogmenu) menu.AppendSeparator() item = wx.MenuItem(menu, wx.ID_ANY, "Miniture Properties", "Miniture Properties") #self.Bind(wx.EVT_MENU, self.OnColorBtn, item) menu.AppendItem(item) menu.AppendSeparator() item = wx.MenuItem(menu, wx.ID_ANY, "Whiteboard Color", "Whiteboard Color") self.Bind(wx.EVT_MENU, self.OnColorBtn, item) menu.AppendItem(item) def DeleteObject(event): id = event.GetId() obj = self.overObjects[id] self.zOrder[obj.zOrder].remove(obj) obj.Update() self.Unbind(wx.EVT_MENU, event) self.overObjects.remove(obj) del obj if len(self.overObjects): menu.AppendSeparator() id = 0 for obj in self.overObjects: objmenu = wx.Menu() item = wx.MenuItem(objmenu, id, "Move To Back", "Move To Back") self.Bind(wx.EVT_MENU, self.MoveToBack, item) objmenu.AppendItem(item) item = wx.MenuItem(objmenu, id, "Remove", "Remove") self.Bind(wx.EVT_MENU, DeleteObject, item) objmenu.AppendItem(item) item = wx.MenuItem(objmenu, id, "Properties", "Properties") #self.Bind(wx.EVT_MENU, obj.ShowProperties, item) objmenu.AppendItem(item) menu.AppendMenu(wx.ID_ANY, obj.GetName(), objmenu) menu.AppendSeparator() item = wx.MenuItem(menu, wx.ID_ANY, "Remove All Whiteboard Items", "Remove All Whiteboard Items") #self.Bind(wx.EVT_MENU, self.OnColorBtn, item) menu.AppendItem(item) self.PopupMenu(menu) def OnMotion(self, event): dc = wx.ClientDC(self) self.PrepareDC(dc) pos = event.GetLogicalPosition(dc) pos.x /= self.zoomScale pos.y /= self.zoomScale #HitTest for object in self.zOrder['back']: object.HitTest(pos) zl = self.zOrder.keys() zl.remove('back') zl.remove('front') zl.remove('tiles') zl.sort() for layer in zl: for object in self.zOrder[layer]: object.HitTest(pos) for object in self.zOrder['front']: object.HitTest(pos) if self.toolWnd.AddShapeBtn.GetToggled() and event.m_leftDown and self.toolWnd.currentShape == 'Circle': self.circleLayer.OnMotion(pos) elif self.toolWnd.SelectorBtn.GetToggled() and self.selectedObjects != [] and not (self.ctrl or self.shift): xd = (pos.x-self.initiatPos.x) yd = (pos.y-self.initiatPos.y) for obj in self.selectedObjects: obj.start.x += xd obj.start.y += yd obj.Update() self.initiatPos = pos elif self.toolWnd.SelectorBtn.GetToggled() and self.selectedObjects == [] and event.m_leftDown: dc.SetBrush(wx.TRANSPARENT_BRUSH) pen = wx.Pen(wx.BLACK, 3, wx.DOT) dc.SetPen(pen) dc.SetLogicalFunction(wx.INVERT) xd = (pos.x-self.initiatPos.x) yd = (pos.y-self.initiatPos.y) if self.lxd != 0 and self.lyd != 0: r = wx.Rect(self.initiatPos.x, self.initiatPos.y, self.lxd, self.lyd) dc.DrawRectangleRect(r) self.lxd = xd self.lyd = yd r = wx.Rect(self.initiatPos.x, self.initiatPos.y, self.lxd, self.lyd) dc.DrawRectangleRect(r) elif (self.toolWnd.FogToolBtn.GetToggled()) and event.m_leftDown: self.fogLayer.OnMotion(event) def MoveToBack(self, event): object = self.overObjects[event.GetId()] self.zOrder[object.zOrder].remove(object) self.zOrder['back'].append(object) object.zOrder = 'back' self.UpdateMap() def MoveToFront(self, event): object = self.overObjects[event.GetId()] self.zOrder[object.zOrder].remove(object) self.zOrder['front'].append(object) object.zOrder = 'front' self.UpdateMap() def MoveBack(self, event): object = self.overObjects[event.GetId()] self.zOrder[object.zOrder].remove(object) zl = self.zOrder.keys() zl.remove('back') zl.remove('front') zl.remove('tiles') zl.sort() lzo = 1 if len(zl): lzo = zl.pop() if object.zOrder == 'back' or object.zOrder == 1: self.zOrder['back'].append(object) object.zOrder = 'back' elif object.zOrder == 'front': if not self.zOrder.has_key(lzo): self.zOrder[lzo] = [] self.zOrder[lzo].append(object) object.zOrder = lzo else: object.zOrder -= 1 if not self.zOrder.has_key(object.zOrder): self.zOrder[object.zOrder] = [] self.zOrder[object.zOrder].append(object) self.UpdateMap() def MoveForward(self, event): object = self.overObjects[event.GetId()] self.zOrder[object.zOrder].remove(object) zl = self.zOrder.keys() zl.remove('back') zl.remove('front') zl.remove('tiles') zl.sort() lzo = 1 if len(zl): lzo = zl.pop() if object.zOrder == 'back': if not self.zOrder.has_key(1): self.zOrder[1] = [] self.zOrder[1].append(object) object.zOrder = 1 elif z == 'front': self.zOrder['front'].append(object) object.zOrder = 'front' else: object.zOrder += 1 if not self.zOrder.has_key(object.zOrder): self.zOrder[object.zOrder] = [] self.zOrder[object.zOrder].append(object) self.UpdateMap() def OnScroll(self, event): event.Skip() self.Refresh() def OnZoomTimer(self, event): if (time.time() - self.lastZoomTime) >= 3 and self.lastZoomScale != self.zoomScale: #Send Zoome Notice to other clients self.lastZoomTime = time.time() self.lastZoomScale = self.zoomScale def OnRoleTimer(self, event): #Figure out the users role if self.session.my_role() == self.session.ROLE_GM: self.role = 'GM' elif self.session.my_role() == self.session.ROLE_PLAYER: self.role = 'Player' else: self.role = 'Lurker' if self.role == 'GM' and not self.toolWnd.gmToolBar.IsShown() and not (str(self.session.group_id) == '0' and str(self.session.status) == '1'): self.toolWnd.Freeze() self.toolWnd.gmToolBar.Show() self.toolWnd.Thaw() elif self.role == 'Player' and not (str(self.session.group_id) == '0' and str(self.session.status) == '1'): if self.toolWnd.gmToolBar.IsShown(): self.toolWnd.Freeze() self.toolWnd.gmToolBar.Hide() self.toolWnd.Thaw() if not self.toolWnd.playerToolBar.IsShown(): self.toolWnd.Freeze() self.toolWnd.playerToolBar.Show() self.toolWnd.Thaw() elif self.role == 'Lurker' or (str(self.session.group_id) == '0' and str(self.session.status) == '1'): if self.toolWnd.playerToolBar.IsShown(): self.toolWnd.Freeze() self.toolWnd.gmToolBar.Hide() self.toolWnd.playerToolBar.Hide() self.toolWnd.Thaw() try: self.toolWnd.Layout() except: pass def OnClose(self, event): self.zoomTimer.Stop() self.roleTimer.Stop() event.Skip() #Toolbar Events def OnDefaultBtn(self, event): self.Clear() wx.CallAfter(self.UpdateMap) def OnColorBtn(self, event): newcolor = self.RGBHex.do_hex_color_dlg(self.toolWnd) if newcolor == None: return self.whiteboardColor = newcolor r, g, b = self.RGBHex.rgb_tuple(self.whiteboardColor) self.toolWnd._SetColorBtn(wx.Color(r, g, b, 255), self.toolWnd.ColorBtn) def OnBGColorBtn(self, event): newcolor = self.RGBHex.do_hex_color_dlg(self.toolWnd) if newcolor == None: return self.backgroundColor = newcolor r, g, b = self.RGBHex.rgb_tuple(self.backgroundColor) self.toolWnd._SetColorBtn(wx.Color(r, g, b, 255), self.toolWnd.BGColorBtn) self.UpdateMap() def OnFogColorBtn(self, event): newcolor = self.RGBHex.do_hex_color_dlg(self.toolWnd) if newcolor == None: return self.fogColor = newcolor r, g, b = self.RGBHex.rgb_tuple(self.fogColor) self.toolWnd._SetColorBtn(wx.Color(r, g, b, 255), self.toolWnd.FogColorBtn) self.UpdateMap() def OnExlusiveBtn(self, event): id = event.GetId() #This is backwards because the Toggle Switch does not get set until AFTER The mouse gets released if not self.toolWnd.exclusiveToolList[id].GetToggled(): self.toolWnd.Freeze() #Disable all mutualy exclusive tools for btn in self.toolWnd.exclusiveToolList: if self.toolWnd.exclusiveToolList[btn].GetId() != id: self.toolWnd.exclusiveToolList[btn].SetToggled(False) self.toolWnd.Thaw() else: wx.CallAfter(self.toolWnd.SelectorBtn.SetToggled, True) def OnFogBtn(self, event): if not self.toolWnd.FogBtn.GetToggled(): self.useFog = True else: self.useFog = False self.toolWnd.Freeze() self.toolWnd.SelectorBtn.SetToggled(True) self.toolWnd.FogToolBtn.SetToggled(False) self.toolWnd.Thaw() self.fogRegion = [] self.UpdateMap() def OnBGBtn(self, event): dlg = wx.Dialog(self.toolWnd, wx.ID_ANY, title="Background Properties") sizer = wx.BoxSizer(wx.HORIZONTAL) filename = wx.TextCtrl(dlg, wx.ID_ANY) filename.Hide() bgpath = wx.TextCtrl(dlg, wx.ID_ANY) if self.bgPath != None: bgpath.SetValue(self.bgPath) bgtype = wx.Choice(dlg, wx.ID_ANY, choices=['Image', 'Texture']) bgtype.SetStringSelection(self.bgType) browsebtn = wx.Button(dlg, wx.ID_ANY, "Browse") okbtn = wx.Button(dlg, wx.ID_OK) cancelbtn = wx.Button(dlg, wx.ID_CANCEL) sizer.Add(wx.StaticText(dlg, wx.ID_ANY, "Image Path"), 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 2) sizer.Add(bgpath, 0, wx.EXPAND|wx.ALL, 3) sizer.Add(wx.StaticText(dlg, wx.ID_ANY, "Image Type"), 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 2) sizer.Add(bgtype, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 3) sizer.Add(browsebtn, 0, wx.EXPAND|wx.ALL, 2) sizer.Add(okbtn, 0, wx.EXPAND|wx.ALL, 3) sizer.Add(cancelbtn, 0, wx.EXPAND|wx.ALL, 2) dlg.SetSizer(sizer) dlg.SetAutoLayout(True) dlg.Fit() def OnBrowse(event): filedlg = wx.FileDialog(self, "Select an Image File", self.dir_struct["user"], wildcard="Image files (*.bmp, *.gif, *.jpg, *.png)|*.bmp;*.gif;*.jpg;*.png", style=wx.HIDE_READONLY|wx.OPEN) if filedlg.ShowModal() != wx.ID_OK: filedlg.Destroy() return bgpath.SetValue(filedlg.GetPath()) filename.SetValue(filedlg.GetFilename()) dlg.Bind(wx.EVT_BUTTON, OnBrowse, browsebtn) dlg.Show() if not dlg.ShowModal() == wx.ID_OK: dlg.Destroy() return self.bgType = bgtype.GetStringSelection() if bgpath.GetValue().lower().find('http:') == -1: file = open(bgpath.GetValue(), "rb") imgdata = file.read() file.close() print filename.GetValue() (imgtype,j) = mimetypes.guess_type(filename.GetValue()) postdata = urllib.urlencode({'filename':filename.GetValue(), 'imgdata':imgdata, 'imgtype':imgtype}) thread.start_new_thread(self.__Upload, (postdata, bgpath.GetValue(), "Background")) else: self.bgImage = self._LoadImage(bgpath.GetValue()) self.UpdateMap() #Private Methods def _SetSize(self, size): if size[0] == -1: size[0] = self.size[0] if size[1] == -1: size[1] = self.size[1] if size[0] < 300: size = (300, size[1]) if size[1] < 300: size = (size[0], 300) size1 = self.GetClientSizeTuple() if size[0] < size1[0]: size = (size1[0], size[1]) if size[1] < size1[1]: size = (size[0], size1[1]) self.sizeChanged = 1 self.size = size self._FixScroll() def _FixScroll(self): scale = self.zoomScale pos = self.GetViewStart() unit = self.GetScrollPixelsPerUnit() pos = [pos[0]*unit[0],pos[1]*unit[1]] size = self.GetClientSize() unit = [10*scale,10*scale] if (unit[0] == 0 or unit[1] == 0): return pos[0] /= unit[0] pos[1] /= unit[1] mx = [int(self.size[0]*scale/unit[0])+1, int(self.size[1]*scale/unit[1]+1)] self.SetScrollbars(unit[0], unit[1], mx[0], mx[1], pos[0], pos[1]) def _LoadImage(self, path, miniId=None): if self.imageCache.has_key(path): return self.imageCache[path] while len(self.imageCache) > int(self.settings.get_setting("ImageCacheSize")): keys = self.imageCache.keys() del self.imageCache[keys[0]] thread.start_new_thread(self.__DownloadImage, (path, miniId)) return wx.Bitmap(orpg.dirpath.dir_struct["icon"] + "fetching.png", wx.BITMAP_TYPE_PNG) def _ClearCache(self): for key in self.imageCache: del self.imageCache[key] #Threads def __Upload(self, postdata, filename, type="Background"): self.lock.acquire() url = self.settings.get_setting('ImageServerBaseURL') file = urllib.urlopen(url, postdata) recvdata = file.read() file.close() try: xml_dom = minidom.parseString(recvdata)._get_documentElement() if xml_dom.nodeName == 'path': path = xml_dom.getAttribute('url') path = urllib.unquote(path) print path if type == 'Background': self.bgImage = self._LoadImage(path) self.bgPath = path else: self.minis.append(self.mapLayer.AddMiniture(path)) self.UpdateMap() else: self.chat.InfoPost(xml_dom.getAttribute('msg')) except Exception, e: print e print recvdata self.lock.release() def __DownloadImage(self, path, miniId): self.lock.acquire() uriPath = urllib.unquote(path) try: data = urllib.urlretrieve(uriPath) print data[1].getmaintype() if data[0] and data[1].getmaintype() == "image": imageType = data[1].gettype() img = wx.ImageFromMime(data[0], imageType).ConvertToBitmap() self.imageCache[path] = img print 'gotimg' if miniId == None: self.bgImage = img if self.bgType == 'Image': self._SetSize((img.GetHeight(), img.GetWidth())) else: mini = self.GetMiniById(miniId) mini.image = img self.UpdateMap() except Exception, e: self.chat.InfoPost("Unable to resolve/open the specified URI; image was NOT laoded:" + path) urllib.urlcleanup() self.lock.release() Index: __init__.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/map/__init__.py,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** __init__.py 19 Feb 2007 16:33:20 -0000 1.12 --- __init__.py 20 Feb 2007 10:19:53 -0000 1.13 *************** *** 134,137 **** --- 134,142 ---- self.Bind(wx.EVT_BUTTON, self.canvas.OnFogColorBtn, id=self.FogColorBtn.GetId()) + self.gmToolBar.AddSeparator() + + self.MiniPropsBtn = BP.ButtonInfo(self.playerToolBar, wx.ID_ANY, wx.Bitmap(orpg.dirpath.dir_struct["icon"] + 'questionhead.gif', wx.BITMAP_TYPE_GIF), kind=wx.ITEM_NORMAL, shortHelp="Miniture Properties", longHelp="Miniture Properties") + self.gmToolBar.AddButton(self.MiniPropsBtn) + self.gmToolBar.DoLayout() *************** *** 196,202 **** self.playerToolBar.AddButton(self.MiniBtn) - self.MiniPropsBtn = BP.ButtonInfo(self.playerToolBar, wx.ID_ANY, wx.Bitmap(orpg.dirpath.dir_struct["icon"] + 'questionhead.gif', wx.BITMAP_TYPE_GIF), kind=wx.ITEM_NORMAL, shortHelp="Miniture Properties", longHelp="Miniture Properties") - self.playerToolBar.AddButton(self.MiniPropsBtn) - self.playerToolBar.DoLayout() --- 201,204 ---- Index: _object.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/map/_object.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** _object.py 19 Feb 2007 16:33:20 -0000 1.1 --- _object.py 20 Feb 2007 10:19:53 -0000 1.2 *************** *** 40,44 **** self.hcolor = "#ffffff" self.lineWidth = 1 ! self.zOrder = 'back' self.selected = False self.inObject = False --- 40,44 ---- self.hcolor = "#ffffff" self.lineWidth = 1 ! self.zOrder = 'front' self.selected = False self.inObject = False |
From: Digital X. <dig...@us...> - 2007-02-20 10:19:54
|
Update of /cvsroot/openrpg/openrpg1/orpg/mapper In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv28804/orpg/mapper Modified Files: background.py miniatures.py Log Message: Fixed a bug for OSX and starting up Fixed a miss spelling of Label (And added the ability to initate a label edit in the game tree by pressing F2) Fixed a bug that was causing images to not load on older clients The new map now has the abilit to multi select Objects Index: miniatures.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/mapper/miniatures.py,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -d -r1.41 -r1.42 *** miniatures.py 14 Feb 2007 06:23:42 -0000 1.41 --- miniatures.py 20 Feb 2007 10:19:53 -0000 1.42 *************** *** 448,452 **** if self.path != None: ! xml_str += " path='" + urllib.quote(self.path) + "'" if self.locked: --- 448,452 ---- if self.path != None: ! xml_str += " path='" + urllib.quote(self.path).replace('%3A', ':') + "'" if self.locked: *************** *** 474,478 **** if self.local: xml_str += ' local="' + str(self.local) + '"' ! xml_str += ' localPath="' + str(urllib.quote(self.localPath)) + '"' xml_str += ' localTime="' + str(self.localTime) + '"' --- 474,478 ---- if self.local: xml_str += ' local="' + str(self.local) + '"' ! xml_str += ' localPath="' + str(urllib.quote(self.localPath).replace('%3A', ':')) + '"' xml_str += ' localTime="' + str(self.localTime) + '"' Index: background.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/mapper/background.py,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** background.py 14 Feb 2007 06:23:42 -0000 1.27 --- background.py 20 Feb 2007 10:19:53 -0000 1.28 *************** *** 277,281 **** if self.img_path != None: ! xml_str += ' path="' + urllib.quote(self.img_path) + '"' if self.type != None: --- 277,281 ---- if self.img_path != None: ! xml_str += ' path="' + urllib.quote(self.img_path).replace('%3A', ':') + '"' if self.type != None: *************** *** 284,288 **** if self.local and self.img_path != None: xml_str += ' local="True"' ! xml_str += ' localPath="' + urllib.quote(self.localPath) + '"' xml_str += ' localTime="' + str(self.localTime) + '"' --- 284,288 ---- if self.local and self.img_path != None: xml_str += ' local="True"' ! xml_str += ' localPath="' + urllib.quote(self.localPath).replace('%3A', ':') + '"' xml_str += ' localTime="' + str(self.localTime) + '"' |
From: Digital X. <dig...@us...> - 2007-02-20 10:19:54
|
Update of /cvsroot/openrpg/openrpg1 In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv28804 Modified Files: start.py Log Message: Fixed a bug for OSX and starting up Fixed a miss spelling of Label (And added the ability to initate a label edit in the game tree by pressing F2) Fixed a bug that was causing images to not load on older clients The new map now has the abilit to multi select Objects Index: start.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/start.py,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** start.py 17 Feb 2007 10:06:00 -0000 1.13 --- start.py 20 Feb 2007 10:19:53 -0000 1.14 *************** *** 1,3 **** ! #!/usr/bin/python python import getopt import pyver --- 1,3 ---- ! #!/usr/bin/env python import getopt import pyver *************** *** 13,20 **** app.MainLoop() ! ex = sys.executable.replace("Program Files", "Progra~1") ! os.execl(ex, ex, 'start.py', '-n') ! else: ! import orpg.main ! app = orpg.main.orpgApp(0) ! app.MainLoop() \ No newline at end of file --- 13,20 ---- app.MainLoop() ! if 'wxGTK' in wx.PlatformInfo: ! os.execl(sys.executable, sys.executable, 'start.py', '-n') ! ! import orpg.main ! app = orpg.main.orpgApp(0) ! app.MainLoop() \ No newline at end of file |
From: Digital X. <dig...@us...> - 2007-02-20 10:17:47
|
Update of /cvsroot/openrpg/openrpg1 In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv27837 Modified Files: Tag: BRANCH-1-7-1 start.py Log Message: Fixed a bug for OSX and starting up Fixed a miss spelling of Label (And added the ability to initate a label edit in the game tree by pressing F2) Fixed a bug that was causing images to not load on older clients Index: start.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/start.py,v retrieving revision 1.12.2.1 retrieving revision 1.12.2.2 diff -C2 -d -r1.12.2.1 -r1.12.2.2 *** start.py 17 Feb 2007 10:06:49 -0000 1.12.2.1 --- start.py 20 Feb 2007 10:17:45 -0000 1.12.2.2 *************** *** 1,3 **** ! #!/usr/bin/python python import getopt import pyver --- 1,3 ---- ! #!/usr/bin/env python import getopt import pyver *************** *** 13,20 **** app.MainLoop() ! ex = sys.executable.replace("Program Files", "Progra~1") ! os.execl(ex, ex, 'start.py', '-n') ! else: ! import orpg.main ! app = orpg.main.orpgApp(0) ! app.MainLoop() \ No newline at end of file --- 13,20 ---- app.MainLoop() ! if 'wxGTK' in wx.PlatformInfo: ! os.execl(sys.executable, sys.executable, 'start.py', '-n') ! ! import orpg.main ! app = orpg.main.orpgApp(0) ! app.MainLoop() \ No newline at end of file |
From: Digital X. <dig...@us...> - 2007-02-20 10:17:46
|
Update of /cvsroot/openrpg/openrpg1/orpg/mapper In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv27837/orpg/mapper Modified Files: Tag: BRANCH-1-7-1 background.py miniatures.py Log Message: Fixed a bug for OSX and starting up Fixed a miss spelling of Label (And added the ability to initate a label edit in the game tree by pressing F2) Fixed a bug that was causing images to not load on older clients Index: miniatures.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/mapper/miniatures.py,v retrieving revision 1.41 retrieving revision 1.41.2.1 diff -C2 -d -r1.41 -r1.41.2.1 *** miniatures.py 14 Feb 2007 06:23:42 -0000 1.41 --- miniatures.py 20 Feb 2007 10:17:45 -0000 1.41.2.1 *************** *** 448,452 **** if self.path != None: ! xml_str += " path='" + urllib.quote(self.path) + "'" if self.locked: --- 448,452 ---- if self.path != None: ! xml_str += " path='" + urllib.quote(self.path).replace('%3A', ':') + "'" if self.locked: *************** *** 474,478 **** if self.local: xml_str += ' local="' + str(self.local) + '"' ! xml_str += ' localPath="' + str(urllib.quote(self.localPath)) + '"' xml_str += ' localTime="' + str(self.localTime) + '"' --- 474,478 ---- if self.local: xml_str += ' local="' + str(self.local) + '"' ! xml_str += ' localPath="' + str(urllib.quote(self.localPath).replace('%3A', ':')) + '"' xml_str += ' localTime="' + str(self.localTime) + '"' Index: background.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/mapper/background.py,v retrieving revision 1.27 retrieving revision 1.27.2.1 diff -C2 -d -r1.27 -r1.27.2.1 *** background.py 14 Feb 2007 06:23:42 -0000 1.27 --- background.py 20 Feb 2007 10:17:45 -0000 1.27.2.1 *************** *** 277,281 **** if self.img_path != None: ! xml_str += ' path="' + urllib.quote(self.img_path) + '"' if self.type != None: --- 277,281 ---- if self.img_path != None: ! xml_str += ' path="' + urllib.quote(self.img_path).replace('%3A', ':') + '"' if self.type != None: *************** *** 284,288 **** if self.local and self.img_path != None: xml_str += ' local="True"' ! xml_str += ' localPath="' + urllib.quote(self.localPath) + '"' xml_str += ' localTime="' + str(self.localTime) + '"' --- 284,288 ---- if self.local and self.img_path != None: xml_str += ' local="True"' ! xml_str += ' localPath="' + urllib.quote(self.localPath).replace('%3A', ':') + '"' xml_str += ' localTime="' + str(self.localTime) + '"' |
From: Digital X. <dig...@us...> - 2007-02-20 10:17:46
|
Update of /cvsroot/openrpg/openrpg1/orpg/gametree In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv27837/orpg/gametree Modified Files: Tag: BRANCH-1-7-1 gametree.py Log Message: Fixed a bug for OSX and starting up Fixed a miss spelling of Label (And added the ability to initate a label edit in the game tree by pressing F2) Fixed a bug that was causing images to not load on older clients Index: gametree.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/gametree/gametree.py,v retrieving revision 1.63 retrieving revision 1.63.2.1 diff -C2 -d -r1.63 -r1.63.2.1 *** gametree.py 11 Feb 2007 03:49:33 -0000 1.63 --- gametree.py 20 Feb 2007 10:17:44 -0000 1.63.2.1 *************** *** 86,104 **** TOP_FEATURES = wx.NewId() - class dbl_clk_timer_class(wx.Timer): - def __init__(self,tree_ctrl): - self.tree_ctrl = tree_ctrl - wx.Timer.__init__(self, wx.NewId()) - - - def Notify(self): - if self.tree_ctrl.rename_flag: - self.tree_ctrl.EditLabel(self.item) - - def Start(self,item): - self.item = item - wx.Timer.Start(self, 250,1) # quarter second and the 1 is for a one-shot event - - class game_tree(wx.TreeCtrl): def __init__(self, parent, id, openrpg): --- 86,89 ---- *************** *** 145,151 **** self.root = self.AddRoot("Game Tree",self.icons['gear']) - # click timer - self.dbl_clk_timer = wx.Timer(self, wx.NewId()) #dbl_clk_timer_class(self) - self.Bind(wx.EVT_TIMER, self.editLable, self.dbl_clk_timer) self.was_labeling = 0 self.rename_flag = 0 --- 130,133 ---- *************** *** 253,256 **** --- 235,241 ---- except: pass + elif key_code == wx.WXK_F2: + self.rename_flag = 1 + self.EditLabel(curSelection) evt.Skip() *************** *** 1043,1071 **** pt = evt.GetPosition() (item, flag) = self.HitTest(pt) ! if item.IsOk(): ! if self.was_labeling: ! self.SelectItem(item) ! self.rename_flag = 0 ! self.was_labeling = 0 ! evt.Skip() ! else: ! if self.IsSelected(item): ! # this next if tests to ensure that the mouse up occurred over a label, and not the icon ! if (flag & wx.TREE_HITTEST_ONITEMLABEL) == wx.TREE_HITTEST_ONITEMLABEL : ! self.rename_flag = 1 ! self.citem = item ! self.dbl_clk_timer.Start(10,1) # derived from wxTimer ! evt.Skip() ! else: ! evt.Skip() ! else: ! self.SelectItem(item) ! evt.Skip() ! self.log.log("Exit game_tree->on_left_down(self, evt)", ORPG_DEBUG) ! def editLable(self, event): ! if self.rename_flag: ! self.EditLable(self.citem) def on_left_up(self, evt): --- 1028,1045 ---- pt = evt.GetPosition() (item, flag) = self.HitTest(pt) ! if item.IsOk() and self.was_labeling: ! self.SelectItem(item) ! self.rename_flag = 0 ! self.was_labeling = 0 ! elif self.IsSelected(item) and (flag & wx.TREE_HITTEST_ONITEMLABEL) == wx.TREE_HITTEST_ONITEMLABEL : ! # 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) ! evt.Skip() ! ! self.log.log("Exit game_tree->on_left_down(self, evt)", ORPG_DEBUG) def on_left_up(self, evt): |
From: Digital X. <dig...@us...> - 2007-02-20 10:17:46
|
Update of /cvsroot/openrpg/openrpg1/orpg In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv27837/orpg Modified Files: Tag: BRANCH-1-7-1 main.py Log Message: Fixed a bug for OSX and starting up Fixed a miss spelling of Label (And added the ability to initate a label edit in the game tree by pressing F2) Fixed a bug that was causing images to not load on older clients Index: main.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/main.py,v retrieving revision 1.137 retrieving revision 1.137.2.1 diff -C2 -d -r1.137 -r1.137.2.1 *** main.py 15 Feb 2007 15:13:30 -0000 1.137 --- main.py 20 Feb 2007 10:17:45 -0000 1.137.2.1 *************** *** 1361,1365 **** self.map.canvas.zoom_display_timer.Stop() self.map.canvas.image_timer.Stop() - self.tree.dbl_clk_timer.Stop() self.status.timer.Stop() --- 1361,1364 ---- *************** *** 1370,1374 **** del self.map.canvas.zoom_display_timer del self.map.canvas.image_timer - del self.tree.dbl_clk_timer del self.status.timer --- 1369,1372 ---- |
From: Digital X. <dig...@us...> - 2007-02-19 16:33:26
|
Update of /cvsroot/openrpg/openrpg1/images In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv8180/images Modified Files: circle.png Added Files: arc.png rectangle.png Log Message: New Map Multi Selection Added Changed Some buttons to have a Right click menu to switch between the Object Types --- NEW FILE: arc.png --- (This appears to be a binary file; contents omitted.) Index: circle.png =================================================================== RCS file: /cvsroot/openrpg/openrpg1/images/circle.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsp9Q3D7 and /tmp/cvsSWdInW differ --- NEW FILE: rectangle.png --- (This appears to be a binary file; contents omitted.) |
From: Digital X. <dig...@us...> - 2007-02-19 16:33:22
|
Update of /cvsroot/openrpg/openrpg1/orpg In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv8180/orpg Modified Files: main.py Log Message: New Map Multi Selection Added Changed Some buttons to have a Right click menu to switch between the Object Types Index: main.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/main.py,v retrieving revision 1.142 retrieving revision 1.143 diff -C2 -d -r1.142 -r1.143 *** main.py 19 Feb 2007 05:39:32 -0000 1.142 --- main.py 19 Feb 2007 16:33:19 -0000 1.143 *************** *** 451,455 **** pass ! imported = ['orpg.map', 'orpg.map._canvas', 'orpg.map._circles', 'orpg.map._fog', 'orpg.map._grid', 'orpg.map._lines', 'orpg.map._minis', 'orpg.map._text', 'orpg.map._tiles', 'orpg.tools.ButtonPanel'] for name in imported: if name in sys.modules: --- 451,455 ---- pass ! imported = ['orpg.map', 'orpg.map._canvas', 'orpg.map._object', 'orpg.map._circles', 'orpg.map._fog', 'orpg.map._grid', 'orpg.map._lines', 'orpg.map._minis', 'orpg.map._text', 'orpg.map._tiles', 'orpg.tools.ButtonPanel'] for name in imported: if name in sys.modules: |
From: Digital X. <dig...@us...> - 2007-02-19 16:33:22
|
Update of /cvsroot/openrpg/openrpg1/orpg/tools In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv8180/orpg/tools Modified Files: ButtonPanel.py rgbhex.py Log Message: New Map Multi Selection Added Changed Some buttons to have a Right click menu to switch between the Object Types Index: rgbhex.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/tools/rgbhex.py,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** rgbhex.py 4 Nov 2006 21:24:22 -0000 1.9 --- rgbhex.py 19 Feb 2007 16:33:20 -0000 1.10 *************** *** 26,30 **** # Description: rgb to hex utility ! import orpg.orpg_windows --- 26,30 ---- # Description: rgb to hex utility ! from orpg.orpg_wx import * *************** *** 91,99 **** return s ! def do_hex_color_dlg(self,parent): ! data = orpg.orpg_windows.wx.ColourData() ! data.SetChooseFull(1) ! dlg = orpg.orpg_windows.wx.ColourDialog(parent, data) ! if dlg.ShowModal() == orpg.orpg_windows.wx.ID_OK: data = dlg.GetColourData() (red,green,blue) = data.GetColour().Get() --- 91,99 ---- return s ! def do_hex_color_dlg(self, parent): ! data = wx.ColourData() ! data.SetChooseFull(True) ! dlg = wx.ColourDialog(parent, data) ! if dlg.ShowModal() == wx.ID_OK: data = dlg.GetColourData() (red,green,blue) = data.GetColour().Get() Index: ButtonPanel.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/tools/ButtonPanel.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ButtonPanel.py 15 Feb 2007 15:12:07 -0000 1.1 --- ButtonPanel.py 19 Feb 2007 16:33:20 -0000 1.2 *************** *** 974,977 **** --- 974,978 ---- self._shortHelp = shortHelp self._longHelp = longHelp + self._menu = None disabledbmp = GrayOut(bmp) *************** *** 1225,1228 **** --- 1226,1234 ---- return self._longHelp + def GetMenu(self): + return self._menu + + def SetMenu(self, Menu): + self._menu = Menu Bitmap = property(GetBitmap, SetBitmap) *************** *** 1286,1289 **** --- 1292,1296 ---- self.Bind(wx.EVT_MOTION, self.OnMouseMove) self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown) + self.Bind(wx.EVT_RIGHT_DOWN, self.OnRightDown) self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp) self.Bind(wx.EVT_LEAVE_WINDOW, self.OnMouseLeave) *************** *** 1813,1816 **** --- 1820,1833 ---- self._currentButton = tabId + def OnRightDown(self, event): + """ Handles the wx.EVT_RIGHT_DOWN event for ButtonPanel. """ + + tabId, hit = self.HitTest(event.GetPosition()) + + if hit == BP_HT_BUTTON: + btn = self._vButtons[tabId] + if btn.IsEnabled() and btn.GetMenu() != None: + self.PopupMenu(btn.GetMenu()) + def OnLeftUp(self, event): |
From: Digital X. <dig...@us...> - 2007-02-19 05:39:40
|
Update of /cvsroot/openrpg/openrpg1/orpg/gametree In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv22355/orpg/gametree Modified Files: gametree.py Log Message: Fixed a misspelling of Label Added the ability to use F2 to initiate a label edit for tree nodes Index: gametree.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/gametree/gametree.py,v retrieving revision 1.63 retrieving revision 1.64 diff -C2 -d -r1.63 -r1.64 *** gametree.py 11 Feb 2007 03:49:33 -0000 1.63 --- gametree.py 19 Feb 2007 05:39:32 -0000 1.64 *************** *** 86,104 **** TOP_FEATURES = wx.NewId() - class dbl_clk_timer_class(wx.Timer): - def __init__(self,tree_ctrl): - self.tree_ctrl = tree_ctrl - wx.Timer.__init__(self, wx.NewId()) - - - def Notify(self): - if self.tree_ctrl.rename_flag: - self.tree_ctrl.EditLabel(self.item) - - def Start(self,item): - self.item = item - wx.Timer.Start(self, 250,1) # quarter second and the 1 is for a one-shot event - - class game_tree(wx.TreeCtrl): def __init__(self, parent, id, openrpg): --- 86,89 ---- *************** *** 145,151 **** self.root = self.AddRoot("Game Tree",self.icons['gear']) - # click timer - self.dbl_clk_timer = wx.Timer(self, wx.NewId()) #dbl_clk_timer_class(self) - self.Bind(wx.EVT_TIMER, self.editLable, self.dbl_clk_timer) self.was_labeling = 0 self.rename_flag = 0 --- 130,133 ---- *************** *** 253,256 **** --- 235,241 ---- except: pass + elif key_code == wx.WXK_F2: + self.rename_flag = 1 + self.EditLabel(curSelection) evt.Skip() *************** *** 1043,1071 **** pt = evt.GetPosition() (item, flag) = self.HitTest(pt) ! if item.IsOk(): ! if self.was_labeling: ! self.SelectItem(item) ! self.rename_flag = 0 ! self.was_labeling = 0 ! evt.Skip() ! else: ! if self.IsSelected(item): ! # this next if tests to ensure that the mouse up occurred over a label, and not the icon ! if (flag & wx.TREE_HITTEST_ONITEMLABEL) == wx.TREE_HITTEST_ONITEMLABEL : ! self.rename_flag = 1 ! self.citem = item ! self.dbl_clk_timer.Start(10,1) # derived from wxTimer ! evt.Skip() ! else: ! evt.Skip() ! else: ! self.SelectItem(item) ! evt.Skip() ! self.log.log("Exit game_tree->on_left_down(self, evt)", ORPG_DEBUG) ! def editLable(self, event): ! if self.rename_flag: ! self.EditLable(self.citem) def on_left_up(self, evt): --- 1028,1045 ---- pt = evt.GetPosition() (item, flag) = self.HitTest(pt) ! if item.IsOk() and self.was_labeling: ! self.SelectItem(item) ! self.rename_flag = 0 ! self.was_labeling = 0 ! elif self.IsSelected(item) and (flag & wx.TREE_HITTEST_ONITEMLABEL) == wx.TREE_HITTEST_ONITEMLABEL : ! # 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) ! evt.Skip() ! ! self.log.log("Exit game_tree->on_left_down(self, evt)", ORPG_DEBUG) def on_left_up(self, evt): |
From: Digital X. <dig...@us...> - 2007-02-19 05:39:40
|
Update of /cvsroot/openrpg/openrpg1/orpg In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv22355/orpg Modified Files: main.py Log Message: Fixed a misspelling of Label Added the ability to use F2 to initiate a label edit for tree nodes Index: main.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/orpg/main.py,v retrieving revision 1.141 retrieving revision 1.142 diff -C2 -d -r1.141 -r1.142 *** main.py 18 Feb 2007 16:37:26 -0000 1.141 --- main.py 19 Feb 2007 05:39:32 -0000 1.142 *************** *** 451,455 **** pass ! imported = ['orpg.map', 'orpg.map._circles', 'orpg.map._fog', 'orpg.map._grid', 'orpg.map._lines', 'orpg.map._minis', 'orpg.map._text', 'orpg.map._tiles', 'orpg.tools.ButtonPanel'] for name in imported: if name in sys.modules: --- 451,455 ---- pass ! imported = ['orpg.map', 'orpg.map._canvas', 'orpg.map._circles', 'orpg.map._fog', 'orpg.map._grid', 'orpg.map._lines', 'orpg.map._minis', 'orpg.map._text', 'orpg.map._tiles', 'orpg.tools.ButtonPanel'] for name in imported: if name in sys.modules: *************** *** 1373,1377 **** self.map.canvas.zoom_display_timer.Stop() self.map.canvas.image_timer.Stop() - self.tree.dbl_clk_timer.Stop() self.status.timer.Stop() --- 1373,1376 ---- *************** *** 1382,1386 **** del self.map.canvas.zoom_display_timer del self.map.canvas.image_timer - del self.tree.dbl_clk_timer del self.status.timer --- 1381,1384 ---- |
From: Digital X. <dig...@us...> - 2007-02-19 05:38:28
|
Update of /cvsroot/openrpg/openrpg1/plugins In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv21969/plugins Modified Files: xxsrdlinker.py Log Message: Index: xxsrdlinker.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/plugins/xxsrdlinker.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** xxsrdlinker.py 19 Feb 2007 04:21:28 -0000 1.5 --- xxsrdlinker.py 19 Feb 2007 05:38:27 -0000 1.6 *************** *** 75,79 **** 'blind-fight': baseURL + 'feats.htm#blindFight', 'brew potion': baseURL + 'feats.htm#brewPotion', ! 'chaotic mind': baseURL + 'psionic/psionicFeats.htm#chaoticMind', 'cleave': baseURL + 'feats.htm#cleave', 'cloak dance': baseURL + 'psionic/psionicFeats.htm#cloakDance', --- 75,79 ---- 'blind-fight': baseURL + 'feats.htm#blindFight', 'brew potion': baseURL + 'feats.htm#brewPotion', ! 'chaotic mind': baseURL + 'psionic/psionicFeats.htm#chaoticMind', 'cleave': baseURL + 'feats.htm#cleave', 'cloak dance': baseURL + 'psionic/psionicFeats.htm#cloakDance', |
From: Digital X. <dig...@us...> - 2007-02-19 04:21:29
|
Update of /cvsroot/openrpg/openrpg1/plugins In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv24519/plugins Modified Files: xxsimpleinit.py xxsrdlinker.py Added Files: quotebox.xml xxquotebox.py Log Message: Added the Quote Box plugin Turned a few of the slash commands to not show their help durring plugin startup Index: xxsimpleinit.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/plugins/xxsimpleinit.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** xxsimpleinit.py 11 Feb 2007 03:49:36 -0000 1.5 --- xxsimpleinit.py 19 Feb 2007 04:21:28 -0000 1.6 *************** *** 25,33 **** def plugin_enabled(self): self.plugin_addcommand('/inittoggle', self.on_init, '- This will Show or Hide the Init window') ! self.plugin_addcommand('/rollinit', self.rollInit, '- This will roll a new set of Inits') ! self.plugin_addcommand('/startcombat', self.startInit, '- This will start the combat') ! self.plugin_addcommand('/nextPlayer', self.advanceInit, '- This will advance the Initiative to the next Player') ! self.plugin_addcommand('/stopcombat', self.stopInit, '- This will end the combat') ! self.plugin_addcommand('/pausecombat', self.pauseInit, '- This will pause the auto Advancer') self.InitSaves = self.plugindb.GetDict("xxsimpleinit", "InitSaves", {}) --- 25,33 ---- def plugin_enabled(self): self.plugin_addcommand('/inittoggle', self.on_init, '- This will Show or Hide the Init window') ! self.plugin_addcommand('/rollinit', self.rollInit, '- This will roll a new set of Inits', False) ! self.plugin_addcommand('/startcombat', self.startInit, '- This will start the combat', False) ! self.plugin_addcommand('/nextPlayer', self.advanceInit, '- This will advance the Initiative to the next Player', False) ! self.plugin_addcommand('/stopcombat', self.stopInit, '- This will end the combat', False) ! self.plugin_addcommand('/pausecombat', self.pauseInit, '- This will pause the auto Advancer', False) self.InitSaves = self.plugindb.GetDict("xxsimpleinit", "InitSaves", {}) Index: xxsrdlinker.py =================================================================== RCS file: /cvsroot/openrpg/openrpg1/plugins/xxsrdlinker.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** xxsrdlinker.py 9 Nov 2006 22:45:21 -0000 1.4 --- xxsrdlinker.py 19 Feb 2007 04:21:28 -0000 1.5 *************** *** 25,29 **** 'bluff': baseURL + "skills/bluff.htm", 'climb': baseURL + "skills/climb.htm", ! 'concentration': baseURL + "skills/concentration.htm", 'craft': baseURL + "skills/craft.htm", 'decipher script': baseURL + "skills/decipherScript.htm", --- 25,29 ---- 'bluff': baseURL + "skills/bluff.htm", 'climb': baseURL + "skills/climb.htm", ! 'concentration': baseURL + "psionic/skills/concentration.htm", 'craft': baseURL + "skills/craft.htm", 'decipher script': baseURL + "skills/decipherScript.htm", *************** *** 45,48 **** --- 45,49 ---- 'perform': baseURL + "skills/perform.htm", 'profession': baseURL + "skills/profession.htm", + 'psicraft': baseURL + "psionic/skills/psicraft.htm", 'ride': baseURL + "skills/ride.htm", 'search': baseURL + "skills/search.htm", *************** *** 56,59 **** --- 57,61 ---- 'tumble': baseURL + "skills/tumble.htm", 'use magic device': baseURL + "skills/useMagicDevice.htm", + 'use psionic device': baseURL + "psionic/skills/usePsionicDevice.htm", 'use rope': baseURL + "skills/useRope.htm", *************** *** 63,66 **** --- 65,69 ---- 'alertness': baseURL + 'feats.htm#alertness', 'animal affinity': baseURL + 'feats.htm#animalAffinity', + 'antipsionic magic': baseURL + 'psionic/psionicFeats.htm#antipsionicMagic', 'armor proficiency (heavy)': baseURL + 'feats.htm#armorProficiencyHeavy', 'armor proficiency (light)': baseURL + 'feats.htm#armorProficiencyLight', *************** *** 69,75 **** --- 72,81 ---- 'athletic': baseURL + 'feats.htm#athletic', 'augment summoning': baseURL + 'feats.htm#augmentSummoning', + 'autonomous': baseURL + 'psionic/psionicFeats.htm#autonomous', 'blind-fight': baseURL + 'feats.htm#blindFight', 'brew potion': baseURL + 'feats.htm#brewPotion', + 'chaotic mind': baseURL + 'psionic/psionicFeats.htm#chaoticMind', 'cleave': baseURL + 'feats.htm#cleave', + 'cloak dance': baseURL + 'psionic/psionicFeats.htm#cloakDance', 'combat casting': baseURL + 'feats.htm#combatCasting', 'combat expertise': baseURL + 'feats.htm#combatExpertise', *************** *** 898,901 **** --- 904,909 ---- 'vulnerability to energy': baseURL + "naturalSpecialAbilities.htm#vulnerabilitytoEnergy", + #Psionics + } --- NEW FILE: quotebox.xml --- <nodehandler class="group_handler" icon="image" module="containers" name="QuoteBox" version="1.0"> <group_atts border="1" cols="1"/> <nodehandler class="group_handler" icon="image" module="containers" name="QuoteBox Settings" version="1.0"> <group_atts border="1" cols="1"/> <nodehandler class="macro_handler" icon="8ball" module="chatmacro" name="Show Settings" version="1.0"> <text>/box</text> </nodehandler> <nodehandler class="macro_handler" icon="rome" module="chatmacro" name="Set BG Color" version="1.0"> <text>/box_bgcol</text> </nodehandler> <nodehandler class="macro_handler" icon="rome" module="chatmacro" name="Set Font Color" version="1.0"> <text>/box_fontcol</text> </nodehandler> <nodehandler class="macro_handler" icon="rome" module="chatmacro" name="Toggle Border" version="1.0"> <text>/box_border</text> </nodehandler> <nodehandler class="macro_handler" icon="rome" module="chatmacro" name="Toggle Italics" version="1.0"> <text>/box_italics</text> </nodehandler> <nodehandler class="macro_handler" icon="rome" module="chatmacro" name="Toggle Bold" version="1.0"> <text>/box_bold</text> </nodehandler> <nodehandler class="group_handler" icon="divider" module="containers" name="Change Size" version="1.0"> <group_atts border="1" cols="1"/> <nodehandler class="macro_handler" icon="rome" module="chatmacro" name="Set Size 1" version="1.0"> <text>/box_size 1</text> </nodehandler> <nodehandler class="macro_handler" icon="rome" module="chatmacro" name="Set Size 2" version="1.0"> <text>/box_size 2</text> </nodehandler> <nodehandler class="macro_handler" icon="rome" module="chatmacro" name="Set Size 3" version="1.0"> <text>/box_size 3</text> </nodehandler> <nodehandler class="macro_handler" icon="rome" module="chatmacro" name="Set Size 4" version="1.0"> <text>/box_size 4</text> </nodehandler> <nodehandler class="macro_handler" icon="rome" module="chatmacro" name="Set Size 5" version="1.0"> <text>/box_size 5</text> </nodehandler> <nodehandler class="macro_handler" icon="rome" module="chatmacro" name="Set Size 6" version="1.0"> <text>/box_size 6</text> </nodehandler> <nodehandler class="macro_handler" icon="rome" module="chatmacro" name="Set Size 7" version="1.0"> <text>/box_size 7</text> </nodehandler> </nodehandler> <nodehandler class="macro_handler" icon="rome" module="chatmacro" name="Set All Default" version="1.0"> <text>/box_default</text> </nodehandler> </nodehandler> <nodehandler class="textctrl_handler" icon="note" module="forms" name="QuoteBox Help!" version="1.0"> <text hide_title="0" multiline="1" raw_mode="0" send_button="0">To use the QuoteBox, simply type into the chat: /box *yourmessage* To change your QuoteBox's font color, size, etc., look in Settings under this node of your gametree.</text> </nodehandler> </nodehandler> --- NEW FILE: xxquotebox.py --- import os import orpg.dirpath import orpg.plugindb import orpg.pluginhandler from orpg.tools.rgbhex import RGBHex import wx __version__ = "2.0" # updated for OpenRPG+ 1.7.0 class Plugin(orpg.pluginhandler.PluginHandler): # Initialization subroutine. # # !self : instance of self # !openrpg : instance of the the base openrpg control def __init__(self, openrpg, plugindb, parent): orpg.pluginhandler.PluginHandler.__init__(self, openrpg, plugindb, parent) # The Following code should be edited to contain the proper information self.name = "Quote Box" self.author = "frobnic8 (er...@el...), mDuo13, Veggiesama" self.help = """This plugin allows you to put your text in a special box. Again, while it could (except for the color selection) be easily done with a text node, this plugin makes it faster, presents a consistant appearance, and saves you from silly HTML errors. Just type "/box" and some text to get started. Type /quotebox to load a help node into your game tree. Advanced commands: '/box': Displays the current settings. '/box *text*': Displays *text* in the box. '/box_size *size*': Lets you set the size of the text \tin the box, where *size* is a number from 1 to 7. The default is 3. '/box_bgcol': Brings up a color selection dialog for picking the background \tcolor of the box. The default is pale grey. '/box_fontcol': Brings up a color selection dialog for picking the color of \tthe font in the box. The default is black. '/box_border': Toggles a small black border around the box. '/box_italics': Toggles whether the text in the box should be italicized or not. '/box_bold': Toggles whether the text in the box should be bolded or not. '/box_type': Toggles between the old and new versions of the box. Defaults to new. '/box_default': Sets plugin to default settings. Credits go out to Travis for the original HTML code and Sunless DM for bringing it to mDuo13's attention.""" self.version = __version__ self.orpg_min_version="1.7.0" self.fontcolor = "#000000" self.bgcolor="#aaaaaa" self.size = 3 self.border = 0 self.italics = 0 self.bold = 1 self.boxtype = 1 self.r_h = RGBHex() def plugin_enabled(self): self.fontcolor = str(self.plugindb.GetString("xxquotebox", "fontcolor", "#000000")) self.bgcolor = str(self.plugindb.GetString("xxquotebox", "bgcolor", "#aaaaaa")) self.size = int(self.plugindb.GetString("xxquotebox", "size", "3")) self.border = int(self.plugindb.GetString("xxquotebox", "border", "0")) self.italics = int(self.plugindb.GetString("xxquotebox", "italics", "0")) self.bold = int(self.plugindb.GetString("xxquotebox", "bold", "1")) self.boxtype = int(self.plugindb.GetString("xxquotebox", "boxtype", "1")) self.plugin_addcommand('/box', self.on_box, "'/box': Displays the current settings <b>OR</b> '/box *text*': Displays *text* in the box.") self.plugin_addcommand('/box_size', self.on_box_size, "'/box_size *size*': Lets you set the size of the text in the box, where *size* is a number from 1 to 7. The default is 3.", False) self.plugin_addcommand('/box_bgcol', self.on_box_bgcol, "'/box_bgcol': Brings up a color selection dialog for picking the background color of the box. The default is pale grey.", False) self.plugin_addcommand('/box_fontcol', self.on_box_fontcol,"'/box_fontcol': Brings up a color selection dialog for picking the color of the font in the box. The default is black.", False) self.plugin_addcommand('/box_border', self.on_box_border, "'/box_border': Toggles a small black border around the box.", False) self.plugin_addcommand('/box_italics', self.on_box_italics,"'/box_italics': Toggles whether the text in the box should be italicized or not.", False) self.plugin_addcommand('/box_bold', self.on_box_bold, "'/box_bold': Toggles whether the text in the box should be bolded or not.", False) self.plugin_addcommand('/box_type', self.on_box_type, "'/box_type': Toggles between the old and new versions of the box. Defaults to new.", False) self.plugin_addcommand('/box_default', self.on_box_default,"'/box_default': Sets plugin to default settings.", False) self.plugin_addcommand('/quotebox', self.on_quotebox, "<b>TYPE /QUOTEBOX TO BEGIN.</b> Loads up a help node into gametree.") def plugin_disabled(self): self.plugin_removecmd('/box') self.plugin_removecmd('/box_size') self.plugin_removecmd('/box_bgcol') self.plugin_removecmd('/box_fontcol') self.plugin_removecmd('/box_border') self.plugin_removecmd('/box_italics') self.plugin_removecmd('/box_bold') self.plugin_removecmd('/box_type') self.plugin_removecmd('/box_default') self.plugin_removecmd('/box_quotebox') def save_changes(self): self.plugindb.SetString("xxquotebox", "fontcolor",str(self.fontcolor)) self.plugindb.SetString("xxquotebox", "bgcolor", str(self.bgcolor)) self.plugindb.SetString("xxquotebox", "size", str(self.size)) self.plugindb.SetString("xxquotebox", "border", str(self.border)) self.plugindb.SetString("xxquotebox", "italics", str(self.italics)) self.plugindb.SetString("xxquotebox", "bold", str(self.bold)) self.plugindb.SetString("xxquotebox", "boxtype", str(self.boxtype)) def on_box(self, cmdargs): #this is just an example function for a command you create. # cmdargs contains everything you typed after the command # so if you typed /test this is a test, cmdargs = this is a test # args are the individual arguments split. For the above example # args[0] = this , args[1] = is , args[2] = a , args[3] = test args = cmdargs.split(None,-1) # shows status information of the plugin in a dialog window if len(args) == 0: if self.boxtype == 0: msg_boxtype = "old" else: msg_boxtype = "new" self.dlg = wx.MessageDialog(None, 'Current settings used by the Quote Box plugin:\n'+ '\nsize: '+str(self.size)+'\nbgcolor: '+self.bgcolor+ '\nfontcolor: '+self.fontcolor+'\nborder: '+str(self.border)+ '\nitalics: '+str(self.italics)+'\nbold: '+str(self.bold)+ '\nboxtype: '+msg_boxtype+'\n'+ '\nSee the Plugin Info from the Tools/Plugin menu for '+ 'more information.', 'Quote Box Current Settings', wx.OK) self.dlg.ShowModal() self.dlg.Destroy() # making a box and using the cmdargs as the text inside else: msg = cmdargs if self.boxtype == 0: #old self.chat.InfoPost("<table bgcolor='"+self.bgcolor+"' border='0' cellpadding='0' \ cellspacing='0' width='100%'><tr><td><FONT SIZE='"+str(self.size)+"' \ color='"+self.fontcolor+"'><b>"+msg+"</b></font></table>", 1, 1) else: #new if self.border: border = " border='1'" else: border = "" if self.italics: italics = "<i>" enditalics = "</i>" else: italics = "" enditalics = "" if self.bold: bold = "<b>" endbold = "</b>" else: bold = "" endbold = "" self.chat.InfoPost("<br><center><table bgcolor='"+self.bgcolor+ "' width='80%' cellpadding='"+str(int(self.size * 5))+ "' cellspacing='0'"+border+"><tr><td><font size='"+str(self.size)+ "'color='"+self.fontcolor+"'>"+bold+italics+msg+enditalics+endbold+ "</font></td></tr></table></center>", 1, 1) # changes size of font, as well as cell-padding size # cell padding size = font size * 5 def on_box_size(self, cmdargs): try: self.size = int(cmdargs) self.save_changes() self.chat.InfoPost("Box size set to <b>" + str(self.size) + "</b>.") except: self.chat.InfoPost("That is not a valid font size.") # opens a color-choosing dialog for background color of table def on_box_bgcol(self, cmdargs): color = self.r_h.do_hex_color_dlg(None) if color != None: self.bgcolor = color self.save_changes() # opens a color-choosing dialog for font color of text def on_box_fontcol(self, cmdargs): color = self.r_h.do_hex_color_dlg(None) if color != None: self.fontcolor = color self.save_changes() # toggles whether border should be on or off def on_box_border(self, cmdargs): if self.border: self.border=0 self.chat.InfoPost("No longer using border on table.") else: self.border=1 self.chat.InfoPost("Using border on table.") self.save_changes() # toggles whether text should be italics or not def on_box_italics(self, cmdargs): if self.italics: self.italics=0 self.chat.InfoPost("No longer using italic text.") else: self.italics=1 self.chat.InfoPost("Using italic text.") self.save_changes() # toggles whether text should be bold or not def on_box_bold(self, cmdargs): if self.bold: self.bold=0 self.chat.InfoPost("No longer using bold text.") else: self.bold=1 self.chat.InfoPost("Using bold text.") self.save_changes() # toggles between old-style and new-style boxes def on_box_type(self, cmdargs): if self.boxtype: self.boxtype=0 self.chat.InfoPost("Now using old-style boxes (thin, full-width, left-aligned)") else: self.boxtype=1 self.chat.InfoPost("Now using new-style boxes (in middle, with thick borders)") self.save_changes() # reverts all quotebox settings back to default def on_box_default(self, cmdargs): self.fontcolor = "#000000" self.bgcolor="#aaaaaa" self.size = 3 self.border = 0 self.italics = 0 self.bold = 1 self.boxtype = 1 self.chat.InfoPost("Quotebox plugin reverted to default settings.") self.save_changes() # loads up quotebox.xml as a node in the gametree def on_quotebox(self, cmdargs): f = open(orpg.dirpath.dir_struct["plugins"]+ "quotebox.xml","r") self.gametree.insert_xml(f.read()) f.close() return 1 |