backported Roman's latest updates on HEAD to 2.8 branch
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@45694 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
@@ -50,6 +50,12 @@ existed.
|
||||
wx.aui.PyAuiDocArt and wx.aui.PyAuiTabArt can now be derived from in
|
||||
wxPython and plugged in to wx.AUI.
|
||||
|
||||
XRCed has a new experimental feature to add controls by draging icons
|
||||
on the test window using the right button. Mouse position is tracked
|
||||
to highlight the future parent.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
0.1.8-5 (under construction)
|
||||
0.1.8-5
|
||||
-------
|
||||
|
||||
Preferences for default "sizeritem" parameters for new panels and
|
||||
|
@@ -71,3 +71,16 @@ class Globals:
|
||||
|
||||
|
||||
g = Globals()
|
||||
|
||||
|
||||
class MyDataObject(wx.PyDataObjectSimple):
|
||||
def __init__(self):
|
||||
wx.PyDataObjectSimple.__init__(self, wx.CustomDataFormat('XRCed_DND'))
|
||||
self.data = ''
|
||||
def GetDataSize(self):
|
||||
return len(self.data)
|
||||
def GetDataHere(self):
|
||||
return self.data # returns a string
|
||||
def SetData(self, data):
|
||||
self.data = data
|
||||
return True
|
||||
|
@@ -1,26 +1,25 @@
|
||||
#----------------------------------------------------------------------
|
||||
# This file was generated by encode_bitmaps.py
|
||||
#
|
||||
from wx import ImageFromStream, BitmapFromImage
|
||||
from wx import EmptyIcon
|
||||
from wx import ImageFromStream, BitmapFromImage, EmptyIcon
|
||||
import cStringIO
|
||||
|
||||
|
||||
def getAutoRefreshData():
|
||||
return \
|
||||
"\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x17\x08\x06\
|
||||
\x00\x00\x00\x11!\x8f-\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\
|
||||
\x00\xfaIDATH\x89\xb5T\xbb\x0e\x830\x0c<'\x1d\xe8\x9f2\x06X*>\xa0\xea\xd2\
|
||||
\xd6c\xff\xb4,m:\x01\xc1\x8a\x93@\x95\x932\x90\xc7\x1d\xf6\xd9&2\x165a\xaa\
|
||||
\xb2\x038\x95^|\x7f?^\xee\x9d\x8d\xa5\xdc\xbb\xa2\x08B\xf2\x17sR\xb4X`~\x1c#\
|
||||
\x0f\xff<'\x92\x8c F\xde\xf5\x03I\x91\xe7\xe3\xae\x8a\x14{\xd0:W\x94s\t\xd2\
|
||||
\xcaT\x0b]K\x8f&^,\x10\x9a\xdb\xf5\x03\xf9\xeb\xf6\x9c\x1b^\xd2\xb7K@\x12\
|
||||
\x03\xc0L\xce\r\xa3u\x0e\xcdM\x17Q=8\x1bK\xb3y\xf2\x11\x8d\xebY\x0ej\x049\
|
||||
\xc8\x14\x01\xf1\x08\x0e\x8d\x8a0E\xd3%}\xb7\xfa,\xca6Z\xaaS\xdd\xb4\x1a|H \
|
||||
\x14\n\xbfi\xdc\xd6<7\xbc\x08JdM\x0e\xcbU\x1a\x18+e@T\x1d\x19\x9b\\\x13\xe0\
|
||||
\xe7\xa5\xed3\xb3\xd7\xdegS\x14\x1b\r\xda\xf8\x8e\xa1\xb8\x0fbf\xcb\t\xfb\
|
||||
\x97\x00\x10\x1f\xcb)\xf2\xdd\x02GP\xbd\xd1~)\x14\xa25\xbe/\xa7J\x00\x00\x00\
|
||||
\x00IEND\xaeB`\x82"
|
||||
"\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x18\x08\x06\
|
||||
\x00\x00\x00\xe0w=\xf8\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\
|
||||
\x00\xfdIDATH\x89\xc5T\xcb\x12\x820\x0c\xdc\x14\x0f\xf5O9\x16\xb88|\x80\xe3E\
|
||||
\xcd\xd1?\x95\x8b\xe2\xa9P2M[P\xc6\x9d\xe9\x81>vI6\t\x91\xa9\xb0'\xcc\xae\
|
||||
\xec\x00\x0e\xa5\x17\x9f\xef\xd7(\xf7\x8e\xa6\xa2\xdc\xbb\xa2\x08B\xf2\x07sR\
|
||||
\xb4X\xc0?\x8e\x91\x87\x7f\x9e\x13IF\x10#o\xda\x8e\xa4\xc8\xfdvUE\x8a=\xa8\
|
||||
\x9d+\xca\xb9\x04ie\xaa\x85\xae\xa5G\x13/\x16\x08\xcdm\xda\x8e\xc6\xf3\xf2\
|
||||
\x9c-O\xe9[% \x89\x01\xc0\x93\xb3e\xd4\xce\xc1^t\x11\xd5\x83\xa3\xa9\xc8\x9b\
|
||||
'\x1fQ?\x9f\xe5\xa0F\x90\x83L\x11\x10\x8f`\xd3\xa8\x08S4\x9c\xd2ww\x9fE\xd9F\
|
||||
Ku\xaa\x1bf\x837\t\x84B\xe17\xf5\xcb\x9ag\xcb\x93\xa0D\xd6\xe4\xb0\\\xa5\x81\
|
||||
\xb1R\x06D\xd5\x91\xa9\x92k\x00F\xbf\xb4}f\x1e\xb5\xf7\xd9\x14\xc5F\x836\xbe\
|
||||
c(\xee\x83\x98\xd9r\xc2~%\x00\xc4\xc7r\x8a|\xb5\xc0\x16\xfc\xb7\xd1~\x81\x0f\
|
||||
\xa3~\xa27=\x9c\x90\xeb\x00\x00\x00\x00IEND\xaeB`\x82"
|
||||
|
||||
def getAutoRefreshBitmap():
|
||||
return BitmapFromImage(getAutoRefreshImage())
|
||||
@@ -76,23 +75,24 @@ def getIconIcon():
|
||||
#----------------------------------------------------------------------
|
||||
def getLocateData():
|
||||
return \
|
||||
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x17\x08\x06\
|
||||
\x00\x00\x00\x11!\x8f-\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\
|
||||
\x01\x84IDATH\x89\xb5U\xc1\x8d\x830\x10\\\'W\x07\xc2=\xe4\x83RG>i\xc2\xba\\\
|
||||
\x1d\x10\xdc\x04\x9f+$\x1fz\x00\xd1\x88\xef\x01k\xc6\xeb\x05r\xd2\xddJH\x04\
|
||||
\xdb3\xbb\xb3\xb3\x8e1\xa73\xfdg|\x1cm(\xab"\xec\xad\x8f\xaf\xc9\xec\xad\x9b\
|
||||
\xad\n\x12`\xbbqz8&:\xed\x82\xdb\x15\xdc]\xdc\x0c8,\xefb}\xab\xd2\x8c \x01_\
|
||||
\x80# \xc4\xd8M&!\xda Iz\xa0\x81\x13\x11}>\xbe\x8c\x06\x10\xbf\xdf\x8b@v\xae\
|
||||
\xae\xac\x8a\x80r%=(\xabe\xa3\x00/\xefz\xf9c\xb7\x02\xc5=\x03\x91\xbb\xb9H\
|
||||
\x1e%\xc2\xec$x\x94\x03z\xe0.\x8e\x90\x18\xc9\xfc\xb7\x8fI\xa4=\x00\xb7 \xf8\
|
||||
\xb3\xa9\x03g\x84\xebc7\xe5\xd5-\x18\xcf\xa6\x0e9\x01d\xcf\x81\xe0\xe3k2\xee\
|
||||
\x967\x9c\xc1\xb0\n\x8e\xd8\x83\xa8?x\x1b\x7fK\x9f\'\x86P\xcep\x1f\xd49\xd0\
|
||||
\x82\xb3\xfcmdW\x05J\xe0{O\x9a$DsE\xcf\xa6\x0er\x8f\xef}\xb2/#\xf0\xbd\x8fZr\
|
||||
\x03\xe5\x1c\xb0\\h\xe1-;\xa7\x12-Zb\xd3dF\xb8\xce.\xd3086\x07M\x1d"\x11ha9h\
|
||||
\\U~]\x0fDd\xd3\xec\x18\x88\x07(j~\xa1\x0c\x9c#\x9bd"\xb0\xe2\x90g\xae\r\x9a\
|
||||
\x06.M\x91\xd9T#\xd1$J\xbe\x0bpL\xe6\xcf\xfep4\xf0]\x02\xa2\xd9-xqi\x81\x92H\
|
||||
\xf0C\x02$"ZoI\xa9\xb3\x06\xbc2\x9c\xceo?\xf6j\x83\xbd\xda\xd0\xb6mx\xf7\xcc\
|
||||
\x0f\x93Y\xfb-\xb8Y\x01\xd4\x00\x00\x00\x00IEND\xaeB`\x82'
|
||||
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x18\x08\x06\
|
||||
\x00\x00\x00\xe0w=\xf8\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\
|
||||
\x01\x88IDATH\x89\xb5V\xc1\x8d\x830\x10\\\'W\x07\xc2=\xf0A\xa9#\x9f4a\xdd]\
|
||||
\x1d\t\xb8\t>WH>\xf4\x00\xa2\x11\xdf\x03\xd6\x8c\xd7\x0b\xe4\xa4\xcbJ\x91\
|
||||
\x12l\xcf\xec\xce\xce\x9a\x18s:\xd3;\xe3\xe3hCY\x17ao}|Nfo\xddlU\x90\x00\xdb\
|
||||
\x8d\xd3\xc31\xd1i\x17\xdc\xae\xe0\xaer3\xe0\xb0|\x17\xeb[\x95f\x04\t\xf8\
|
||||
\x02\x1c\x01!\xc6n2\t\xd1\x06I\xd2\x03\r\x9c\x88\xe8\xf3\xeb\xdbh\x00\xf1\
|
||||
\xf9\xad\x08d\xe7\xea\xca\xba\x08(W\xd2\x83\xb2^6\n\xf0\xf2\xa6\x97?v+P\xdc3\
|
||||
\x10\xb9\xab\x8b\xe4Q"\xccN\x82G9\xa0\x07\xaer\x84\xc4H\xe6\x7f|L"\xed\x01\
|
||||
\xb8\x05\xc1\x9b\xc7=pF\xb8>vS^\xdd\x82\xd1<\xee!\'\x80\xec9\x10||N\xc6]\xf3\
|
||||
\x863\x18V\xc1\x11{\x10\xf5\x07o\xe3o\xe9\xf3\xc4\x10\xca\x19\xee\x83:\x07Zp\
|
||||
\x96\x7f\x8d\xec\xaa@\t|\xefI\x93\x84h\xae\xa8y\xdc\x83\xdc\xe3{\x9f\xec\xcb\
|
||||
\x08|\xef\xa3\x96\xdc@9\x07,\x17Zx\xcb\xce\xa9D\x8b\x96\xd84\x99\x11\xae\xb3\
|
||||
\xcb4\x0c\x8e\xcdAS\x87H\x04ZX\x0e\x1aW\x95_\xd7\x03\x11\xd94;\x06\xe2\x01\
|
||||
\x8a\x9aW\x94\x81sd\x93L\x04V\x1c\xf2\xcc\xb5A\xd3\xc0\xa5)2\x9bj$\x9aD\xc9s\
|
||||
\x01\x8e\xc9\xfc\xdb\x0bG\x03\xdf% \x9a\xdd\x82\x17\x97\x16(\x89\x04?$@"\xa2\
|
||||
\xf5\x96\x94:k\xc0+\xc3\xe9\xfc\xf2\xc7^l\xb0\x17\x1b\xda\xb6\r/\x9f{\xf7\
|
||||
\xdf\x96_\xc7\x90\xfb4\xe23\t\xcc\x00\x00\x00\x00IEND\xaeB`\x82'
|
||||
|
||||
def getLocateBitmap():
|
||||
return BitmapFromImage(getLocateImage())
|
||||
@@ -109,23 +109,24 @@ def getLocateIcon():
|
||||
#----------------------------------------------------------------------
|
||||
def getLocateArmedData():
|
||||
return \
|
||||
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x17\x08\x06\
|
||||
\x00\x00\x00\x11!\x8f-\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\
|
||||
\x01zIDATH\x89\xb5U\xc1\x8d\xc2@\x0c\x9c\xe5\xeeO\x07\x14@\x03@!H\x14\xc0?\n\
|
||||
\xd4\x91D\xfb\xa7\x00$\n\x01\x1a\xa0\x00:\xa0\x82\xe5\x81\x86L\xbc\xde \xa4\
|
||||
\xbby\xc6\xce\x8c=\xb6\x93\x10&?\xf8O\xfc~J\xd8\xccgi,~\xbc\xdd\xc3X<\x94:P\
|
||||
\xe2j\xea\xbf\x1c\x1f\x9f\x85&c\xe4\xd5\xb4\'\xbf\xac+\xc4\xc7\x8b\xf4\xb2\
|
||||
\xae`\xe3\xa5N3\x01%\'1\t\x15\xab\xf3=\xa8PId \xe0\x91\x03@\xbd\xdb\x87z\xb7\
|
||||
\xcf,\xa8w\xfb\xb0:\xbf\xac)\x89\x0cf\xb0\x99\xcf\x92G~^\xf9\xed\x93\x1c\x00\
|
||||
\x98\x13\x1f\xc0b[\x81\x05\xbd;PeKN;t\x06\x97u\x05\x15V\xb1\xeb!\xfa\x16\xe9\
|
||||
\xb6(y\xd76\xc9ZD{lw\xe4\xe8\xda&e\x02Z=\xa1\xe4\xc7\xdb=,\xb6\xf9\xc0I\xa6]\
|
||||
\x10\xd9\xa1\xb1=Zv=Dl\xe6\xb3\xc4=\xa7\x98Z\xca\x9cL\xd9\xeb\xa0\x04V\xf9-\
|
||||
\xb2\x0e\x06\x16\x9c"<K\x80\x97]]\xdb\xa4,\xe7\x14\x07y\x99\xc0\xf2\x14\xdf^\
|
||||
r\x80\xd6\x16\xb5Ks\xbcu\x1eX\xc4o\x8b\x0emi*\xd28\xb7\xcc\xe3 \x8a\x87\xe6\
|
||||
\x1d\x91\x85\xae\xb0=4v\x95\t\x00\xfd.\xabH\xd76\x89\x1b\xa6\x9e[r\xc6\xb3K\
|
||||
\x06zo\x99\xa8\x95{\x87V"Wdk\xea\x89x\x16\xe9sK\xae\xc5\xfc\xd9\x0f\xc7#\x1f\
|
||||
\x15\x00\x86\xbe\x97`\xe7a\xe3\xa3\x02*\x04\xf4\x9f\x11\xeb\xb3G\xfc\x95\x00\
|
||||
A\xdbtK>\xe1\t\xf2\xe2\x0b\rG\xef\x97\xb3\x00\x00\x00\x00IEND\xaeB`\x82'
|
||||
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x18\x08\x06\
|
||||
\x00\x00\x00\xe0w=\xf8\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\
|
||||
\x01~IDATH\x89\xb5U\xc1\x8d\xc2@\x0c\x9c\xe5\xeeO\x07\x14@\x03@!H\x14\xc0?\n\
|
||||
\xd4\x91D\xfb\xa7\x00$\n\x01\x1a\xa0\x00:\xa0\x82\xbd\x07\x1a2\xf1z\x838\xdd\
|
||||
\xcd3vf\xec\xb1\x9d\x840\xf9\xc2\x7f\xe2\xfb]\xc2f>Kc\xf1\xe3\xed\x1e\xc6\
|
||||
\xe2\xa1\xd4\x81\x12WS\xff\xe5\xf8x/4\x19#\xaf\xa6=\xf9e]!>\x9e\xa4\x97u\x05\
|
||||
\x1b/u\x9a\t(9\x89I\xa8X\x9d\xefA\x85J"\x03\x01\x8f\x1c\x00\xea\xdd>\xd4\xbb\
|
||||
}fA\xbd\xdb\x87\xd5\xf9iMId0\x83\xcd|\x96<\xf2\xf3\xcao\x9f\xe4\x00\xc0\x9c\
|
||||
\xf8\x00\x16\xdb\n,\xe8\xd5\x81*[r\xda\xa13\xb8\xac+\xa8\xb0\x8a]\x0f\xd1\
|
||||
\xb7H\xb7E\xc9\xbb\xb6I\xd6"\xdac\xbb#G\xd76)\x13\xd0\xea\t%?\xde\xeea\xb1\
|
||||
\xcd\x07N2\xed\x82\xc8\x0e\x8d\xed\xd1\xb2\xeb!b3\x9f%\xee9\xc5\xd4R\xe6d\
|
||||
\xca^\x07%\xb0\xcaO\x91u0\xb0\xe0\x14\xe1Y\x02<\xed\xea\xda&e9\xa78\xc8\xcb\
|
||||
\x04\x96\xa7\xf8\xf2\x92\x03\xb4\xb6\xa8]\x9a\xe3\xad\xf3\xc0"~[thKS\x91\xc6\
|
||||
\xb9e\x1e\x07Q<4\xef\x88,t\x85\xed\xa1\xb1\xabL\x00\xe8wYE\xba\xb6I\xdc0\xf5\
|
||||
\xdc\x923\x9e]2\xd0{\xcbD\xad\xdc;\xb4\x12\xb9"[SO\xc4\xb3H\x9f[r-\xe6\xcf~8\
|
||||
\x1e\xf9\xa8\x000\xf4\xbd\x04;\x0f\x1b\x1f\x15P!\xa0\xff\x8cX\x9f=\xe2\x8f\
|
||||
\x04\x08\xda\xa6[\xf2\x0e\x1f\t\xfc\x06?%\xb3\x0b\x14\x95x1\xa9\x00\x00\x00\
|
||||
\x00IEND\xaeB`\x82'
|
||||
|
||||
def getLocateArmedBitmap():
|
||||
return BitmapFromImage(getLocateArmedImage())
|
||||
@@ -142,16 +143,17 @@ def getLocateArmedIcon():
|
||||
#----------------------------------------------------------------------
|
||||
def getRefreshData():
|
||||
return \
|
||||
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x17\x08\x06\
|
||||
\x00\x00\x00\x11!\x8f-\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\
|
||||
\x00\xcaIDATH\x89\xc5\x94\xc1\x0e\x83 \x10Dw\xa1\x17\xff\xd4#m\xbf\xa3\xed\
|
||||
\x1e\xf9SOjO$Hve\x90\x10\xe7\xa6\xd1y0,\xc3\xec<\x8d\x94\x1b\xeaND\x0f\xf4\
|
||||
\xc3e[\xf7\xf2\xdd\xe4<\xd7\xfe\x83v\x90\x9bG\x91S(\x0cH?k\xe6\xf9\xcak\x90\
|
||||
\xd3\x1dh\xe6\xcf\xd7\x9bK\xc8\xef\xfb1!\xf0\x19\xcc!@\x99\x97bkL\xad\xad[\
|
||||
\xf1XpxL\xa3\x08E\x91C\x1cHL\xd5\x88\xf2\xa9I\xf9\xb7\xc8\x04L\xcesZ\xd5\x15\
|
||||
\xe3*\xa0\xd78ixU\xdc\x0bX\xb6u?\xbb\xa9]U\xd1b\x94OZ\x13\x00\xad\x03"{ \xe0\
|
||||
3\x98C8<#\xf1@\x00\xad\x1a\xac\xfa\xd6dvQ)m\xc5e\xc3v\x01\x88\xf4s\xa8]\xc6&\
|
||||
\xc0\x15\r\xbfh\x7f\xefOoH\x13\xe7\xb6\xfc\x00\x00\x00\x00IEND\xaeB`\x82'
|
||||
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x18\x08\x06\
|
||||
\x00\x00\x00\xe0w=\xf8\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\
|
||||
\x00\xccIDATH\x89\xd5\x94\xc1\x0e\x83 \x10Dw\xa1\x17\xff\xd4#m\xbf\xa3\xed\
|
||||
\x1e\xf9SOjO$Hve\x90\x90\xa6s\xd3\xe8<\x18\x96av\x9eF\xca\ru\'\xa2\x1b\xfa\
|
||||
\xe1\xb2\xad{\xf9nr\x9ek\xffA;\xc8\xcd\xa3\xc8)\x14\x06\xa4\x9f5\xf3|\xe55\
|
||||
\xc8\xe9\x0e4\xf3\xfb\xe3\xc9%\xe4\xf3~\x99\x10\xf8\x0c\xe6\x10\xa0\xccK\xb1\
|
||||
5\xa6\xd6\xd6\xadx,8<\xa6Q\x84\xa2\xc8!\x0e$\xa6jD\xf9\xd4\xa4\xfc[d\x02&\
|
||||
\xe79\xad\xea\x8aq\x15\xd0k\x9c4\xbc*~\x0bX\xb6u?\xbb\xa9]U\xd1b\x94OZ\x13\
|
||||
\x00\xad\x03"{ \xe03\x98C8<#\xf1@\x00\xad\x1a\xac\xfa\xd6dvQ)m\xc5e\xc3v\x01\
|
||||
\x88\xf4s\xa8]\xc6&\xc0\x15\xfd\xffM\xfe\x02\x1c\xdeoJ\xc0]$\xb0\x00\x00\x00\
|
||||
\x00IEND\xaeB`\x82'
|
||||
|
||||
def getRefreshBitmap():
|
||||
return BitmapFromImage(getRefreshImage())
|
||||
@@ -168,20 +170,20 @@ def getRefreshIcon():
|
||||
#----------------------------------------------------------------------
|
||||
def getTestData():
|
||||
return \
|
||||
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x17\x08\x06\
|
||||
\x00\x00\x00\x11!\x8f-\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\
|
||||
\x01\x1eIDATH\x89\xb5UK\x92\xc2 \x10}\r.r\x19G\x16.<N\xae0z\x8eh\x8e\x90\xe3\
|
||||
\xb8\x98\x05:\x97q\xe1\x0c.\xc6P|\x1a\xe8L)UTB\xa7y\x1f\x1a\x08\x91\xd2xgSoE\
|
||||
\x07\xb0\x92$\xb9\xdf\x1f\x97\xc6Hi\x92\xcc\xa5\xda\x12q\xc0K\x89X\x07\x9b\
|
||||
\x8f\xb5\x07\xb6\xd6V\t\xe6\xdc\xcb\xf5\x9b\'"\xa5\xa3n\x8cq\xb7;|\x07\xca=\
|
||||
\xcc3\xc6\xb8\x14\x8b\x94~m\x91O\xc7!_\xd2\x9a\xfa\x9a\x0b.\x8fs\xf1\xf2m\
|
||||
\x9a\xb9h\xa9\x0f\x1d\xa4\xef\x12\x17M\x07\xdds\x9f\xdd\xee\xf1\xb3\xab\x9c\
|
||||
\xa0\xd0\x85O\xb3\xd6\x16\'\xcd\xa0\xe1\xb8[\x95H\xe2m-\xaaA\nTS\x9f6q\x91g\
|
||||
\xd0%\xe0\x11\x81\xe4n\x91\x80\x8f\xe3\x18\x8d\xc5z\xc2:\xb4\x88>\xf7\x07/6Z\
|
||||
\xa2\x92\x0b\xae\xc8\\K\xd5g\x04\x12\xf0V<T\xcf\x12\x84.J \xdcwN=P\xa8\x01)M\
|
||||
\xa7\xe3\xe0v\xdb\t\x00p\xfe\xca\xaf\xec\xdd\xd6<\x81{\x1fK\xd5\x03\x8d\x1f\
|
||||
\x0e\xf0w*\xa7i\xca\xe2}_\x07\x16\x13\x84Di\xac\x06\xbc\x98\xe0\xbf\xed\x01\
|
||||
\xadi\xbd5g\xc8u\x0e\x00\x00\x00\x00IEND\xaeB`\x82'
|
||||
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x18\x08\x06\
|
||||
\x00\x00\x00\xe0w=\xf8\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\
|
||||
\x01"IDATH\x89\xb5VK\x92\xc2 \x10}\r.r\x19\x1d\x16.<N\xae\xa0\x9eC\xcd\x11r\
|
||||
\x9cY\xcc\x82\x19/\xe3\xc2\x19\\h(>\rt\xa6\x0cUT\x92N\xf3>4\x90\x10)\x8d%\
|
||||
\x9bZ\x14\x1d\xc0J\x92\xe4\xfe~]\x1a#\xa5I2\x96jS\xc4\x01\xcf%b\x1d|l\xd6\
|
||||
\x1e\xd8Z[%\x98r\xbf\x7f\xae<\x11)\x1duc\x8c\xbb\xdd\xe1;P\xeea\x9e1\xc6\xa5\
|
||||
X\xa4\xf4{\x8b|9\x9f\xf2)\xad\xa9\xaf\xb9\xe0\xf28\x17o_\xa6\x99\x8b\x96\xfa\
|
||||
\xd0Az/q\xd1t\xd0\xbd\xd6\xd9\xed\x1e_\xbb\xca\x0e\n]\xf84kmq\xd0\x04\x1a>w\
|
||||
\xab\x12I\xbc\xacE5H\x81j\xea\xd3&.\xf2\x04:\x07<"\x90\x9c-\x12\xf0a\x18\xa2\
|
||||
g\xb1\x9e\xb0\x0e-\xa2\xfd\xe1\xe8\xc5FSTr\xc1\x15\x99k\xa9\xfa\x8c@\x02\xde\
|
||||
\x8a\x87\xeaY\x82\xd0E\t\x84{\xcf\xa9\x07\n5 \xa5\xe9r>\xb9\xddv\x04\x00|~\
|
||||
\xe5G\xf6nk^\xc0\xbd\x8f\xa5\xea\x81\xc6\x07\x07x\xee\xcaq\x1c\xb3x\xdf\xd7\
|
||||
\x81\xc5\x04!Q\x1a\xab\x01\xcf&\xf8o[\xfc\xaf\xe2\x01cx\xbd7\x02\x98\x02\xd0\
|
||||
\x00\x00\x00\x00IEND\xaeB`\x82'
|
||||
|
||||
def getTestBitmap():
|
||||
return BitmapFromImage(getTestImage())
|
||||
@@ -649,19 +651,19 @@ def getToolMenuItemIcon():
|
||||
#----------------------------------------------------------------------
|
||||
def getToolMoveDownData():
|
||||
return \
|
||||
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x17\x08\x06\
|
||||
\x00\x00\x00\x11!\x8f-\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\
|
||||
\x00\xf8IDATH\x89\xb5UA\x12\x830\x08\\H\xbf\xd5\x96\x9f\xd9\xfc\xcc\xb6\xefR\
|
||||
zI\xa6)\xa2I\xac2\x93q$\x86ea\x83D\x1cp\xa6\xb1u\xe8<\xe9\xa9\x00\x00p\xbf]\
|
||||
\x0f\x03\xb9\xd4>\xf0\x18\x11\x07j\x05p\x19x\x01\xf3\x02\xfa\x18\xba\x0c\xc6\
|
||||
q\x04\x80\xcd sb\xc6\x156.\x80\x88X\xb0\xdd@\xab=x\xbe\xde\xf9\x80z}\x88\xe9\
|
||||
9\x14@\x1eH\xb5\xc9\xc4\x81\xbc\x9a\xc7\x1c,\x81\x0fk \xc4\xe1g\x01P\x11Q\
|
||||
\xeb\xaf\xad\x07\xa0\n,\xce\x1d.S\xcb\xe20\x99\xc6\x9e&\xb7\xc8\xb4\xd5\xfe\
|
||||
\x96\xe9.\x00\xa0.\xd3V\xab\xf6\x808\x90\x88@D\xa0\xa8\xd7-ZG\xabL5\xc9\xd0\
|
||||
\x93b\xb9\xdf-S\xe0;\x0e\x80\xe5H(\xf7\x16\xd9\xa3\xe1&\xcf\xa6\xfe\xf6\xbd\
|
||||
\x0c\xeeI\xb5\x89\xc1\x96\xe5\xac\xbb\xeeAi\xcc\x81l\x89\x86\xb2,\x95qM\xf6\
|
||||
\xa7\xaf\xf3\xa4\xde(\xd8\xea\xc3f\x82\x0b\xc4\x95\xc3=AK\xfb\x005\x00\x82C\
|
||||
\xb1\xf0h\xde\x00\x00\x00\x00IEND\xaeB`\x82'
|
||||
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x18\x08\x06\
|
||||
\x00\x00\x00\xe0w=\xf8\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\
|
||||
\x00\xfcIDATH\x89\xb5VA\x12\x83 \x0c\xdc\x84~\xabm~f\xf9\x99m\xdf\xa5\xe9\
|
||||
\x05\xa64F\x01\xab\x99\xc98\x82d\xd9d\t\x12q\xc0\x99\xc6v@\xe7IO\x05\x00\x80\
|
||||
\xfb\xedz\x18\xc8\xa5\xf6\x81\xc7\x888P+\x80\xcb\xc0\x0b\x98\x1d\xe8c\xe82\
|
||||
\x18\xc7\x11\x006\x83\xcc\x89\x19W\xd8\xb8\x00"b\xc1v\x03\xad\xd6\xe0\xf9z\
|
||||
\xe7\x05\xea\xd5!\xa6\xe7P\x00y \xd5"\x13\x07\xf2r\x1es\xb0\x04>\xac\x81\x10\
|
||||
\x87\x1f\x07\xa0"\xa2v\xbc\xe6\x0f@\x15X\xac;\\\xa6\x96\xc5a2\x8d=En\x91i\
|
||||
\xab\xfd-\xd3]\x00@]\xa6\xadV\xad\x01q \x11\x81\x88@Q\xcf[\xb4\x03\xad2\xd5$\
|
||||
CO\x8a\xe5|\xb7L\x81o;\x00\x96-\xa1\x9c[\xec\x1e\r\'y6\xf9\xb7\xefepO\xaaM\
|
||||
\x0c\xb6,\xef\xba\xeb\x1c\x94\xc6\x1c\xc8\xa6h(\xd3Ri\xd7d/}\x9d\'\xf5Z\xc1V\
|
||||
\x1d67\xb8@\\Y\xdc\x13\xf4\'\xde\xd9\xbf-\x1f\x95\xdb\x82J\xbd\xd8\x18k\x00\
|
||||
\x00\x00\x00IEND\xaeB`\x82'
|
||||
|
||||
def getToolMoveDownBitmap():
|
||||
return BitmapFromImage(getToolMoveDownImage())
|
||||
@@ -678,17 +680,18 @@ def getToolMoveDownIcon():
|
||||
#----------------------------------------------------------------------
|
||||
def getToolMoveLeftData():
|
||||
return \
|
||||
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x17\x08\x06\
|
||||
\x00\x00\x00\x11!\x8f-\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\
|
||||
\x00\xcaIDATH\x89\xb5\x95\xe1\x0e\x83 \x0c\x84\xafe\xaf\xa5\xb27g\xdbs\r\xfc\
|
||||
#\x0b#\xad\x14\xc1KL\x0c\x9a~\xbd\xf6\x8cD\xecp\xa7\xb8>H\xf1\x9bn\x05\x00\
|
||||
\xc0\xb6.\xd3 \x8f\xd6\x0b\x92#bGV\x80\xe8@*\x98/\xa0\xcf\xa1\xe8 \x84\x00\
|
||||
\x00S\xc6$\x02\xbc\xf75l.\x00\x00^\xefO\x9es\x1aIVs\xc9\xc4\x8e\xb6uI!\x84?g\
|
||||
\xd3\x00\xc0\xcfM*\xee\xe7\x02$Y\xe3k\x8a\xa9&K|\xbb\x1c\\\x89\xaf\x19\x90\
|
||||
\x97]\xc1\xc6\x01\xf1\x985\xb3\xa3j\xc1\xa6\xf8\x9e\x02\xca\xe2\xd2\xf9\xd3\
|
||||
\x10[\x15\x10\x8b\xee\xa2\xd2\xa9%\xb2\x97ST\xbb\xd2\xa4:`v\xa4\x8d\xa8\xab\
|
||||
\x91\xd3\x87GamD\x165S4\xd2=0\xf8%_\x02\xf4\xfc\x0e-\xda\x01\xe9\x13V\xf6\
|
||||
\xde\n\xe5\xa2\x00\x00\x00\x00IEND\xaeB`\x82'
|
||||
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x18\x08\x06\
|
||||
\x00\x00\x00\xe0w=\xf8\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\
|
||||
\x00\xceIDATH\x89\xb5\x96\xe1\x0e\x83 \x0c\x84\xafe\xaf\xa5\xb27\xef\xb6\xe7\
|
||||
\x1a\xf8G\x17GZ-\x02\x97\x98\x184|\xbd\xf6\x8c\x10q\xc0Hq\xb9\x90\xd37\x0f\
|
||||
\x05\x00\xc02O\xdd \x8f\xab\x174G\xc4\x81\xbc\x00\xd5\x81\xb6\xe1~\x01u\x0eU\
|
||||
\x07"\x02\x00]\xda\xa4\x02b\x8c%\xac/\x00\x00^\xef\xcf\xde\xe7\xdc\x92\xac\
|
||||
\xcb!\x13\x07Z\xe6)\x8b\xc8\x9f\xb3n\x00\xe0\xe7&\x1f\xee\xfb\x024y\xe3\xeb\
|
||||
\x8a\xa9%O|\xab\x1c\xdc\x89\xaf\x1b\xb0\x0f\xbb\x80\xb5\x03\xd2\xd6k\xe6@\
|
||||
\xc5\x80]\xf1=\x05\x1c7\xd7\xd6\x9f\x8e\xd8\x9a\x80t\xa8.\x19\x95z"{;E\xa5+K\
|
||||
\xa6\x03\xe6@V\x8b\xaa\n9}\xb8ml\xb5\xc8\xa3\xcb\x14\xb5T\x0f4~\xc9\xb7\x005\
|
||||
\xbfC\x8fh\xf4\xb1e\x05\xe0\xd1V\xfd\x0e\xdbmz\x00\x00\x00\x00IEND\xaeB`\x82\
|
||||
'
|
||||
|
||||
def getToolMoveLeftBitmap():
|
||||
return BitmapFromImage(getToolMoveLeftImage())
|
||||
@@ -705,17 +708,17 @@ def getToolMoveLeftIcon():
|
||||
#----------------------------------------------------------------------
|
||||
def getToolMoveRightData():
|
||||
return \
|
||||
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x17\x08\x06\
|
||||
\x00\x00\x00\x11!\x8f-\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\
|
||||
\x00\xcdIDATH\x89\xed\x94]\x0e\x02!\x0c\x84\xa7\xc5k\xed\x8f7sOf\xdd=\x97\
|
||||
\xd4\x170,\xc1Pv\xd1\'\'!\x01\x12\xfa1mS"vH\xa5\xfe\xa9\xc4\x8e\xd0I\\\xba\
|
||||
\x9c\xc6AS`\xbeN\x03r\x11;\x8a+\xff@M\x97\xd2\xa5\x88\x00@\xd3O\x9b\x00\xf3<\
|
||||
\xe7\xb0\xbe\x00\x00x\xac[,ts\xdeM\x80(bG\xd38\xa8\x88\xec\x9cu\x03\x00o7\
|
||||
\x9a\xecQrUjoS\x17}\x92\xa5\xbbL\x0e\xa2\x8et\x97\xd9\x01\xb1#\r\xd1[jav\xe0\
|
||||
\x93\x9c\xdfE@(\xd7\xe1\x10\xc0\x17\x02)\x80\xab\xc1\x89\t\xc0\xa1\x88\x11\
|
||||
\x14\xcfX\xb7\xfa[\x0b\xe0\x8c\xbe\x0e\xa8\xa6(-\xe4r\x00\xd04\xae\x17vt\xc3\
|
||||
\x7f\\\x07\xfd|\\w\x03\x84\xc9\xb8\x0b\x98\xb8i\xd6\x0b\'hn\x9c\n\x87\xccd\
|
||||
\x00\x00\x00\x00IEND\xaeB`\x82'
|
||||
"\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x18\x08\x06\
|
||||
\x00\x00\x00\xe0w=\xf8\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\
|
||||
\x00\xd3IDATH\x89\xed\x96a\x0e\xc2 \x0c\x85_\x8b\xd7\xda\x867s'\xb3n\xe7r\
|
||||
\xf5\x0f\x18F0+\x0c\xfd\xe5KH\x06\t\xfdxm\xd3\x8c\x88\x1dR\xe9\xf6TbG\xe8$.\
|
||||
\x1dN\xe3\xa0)0_\xa7\x01\xb9\x88\x1d\xc5\x95?\xe0H\x97\xd2\xa1\x88\x00@\xd5K\
|
||||
\xab\x00\xde\xfb\x1c\xd6\x17\x00\x00\x8fe\x8d\x85\xae\xce\xbb\t\x10E\xech\
|
||||
\x1a\x07\x15\x91\x9d\xb3n\x00\xe0\xedF\x93o\x94\\\x95\xda\xdb\xd4E\x9fd\xe9.\
|
||||
\x93\x83\xa8\x96\xee2; v\xa4!zM-\xcc\x0e\xb6$\xe7w\x11\x10\xcauh\x02l\x85@\n\
|
||||
\xe0jpb\x02p(b\x04\xc5=\x96\xf5\xf8\xae\x05pF_\x07\x1c\xa6(-\xe4\xdc\x00\xa8\
|
||||
\x1a\xd73;\xba\xe1?\xae\x83~>\xae\xbb\x01\xc2d\xdc\x05L\xdcT\x8b\xf2\xdf\x96\
|
||||
\xdez\x01\x15\x93n\xa3D\xe4_\xf7\x00\x00\x00\x00IEND\xaeB`\x82"
|
||||
|
||||
def getToolMoveRightBitmap():
|
||||
return BitmapFromImage(getToolMoveRightImage())
|
||||
@@ -732,19 +735,19 @@ def getToolMoveRightIcon():
|
||||
#----------------------------------------------------------------------
|
||||
def getToolMoveUpData():
|
||||
return \
|
||||
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x17\x08\x06\
|
||||
\x00\x00\x00\x11!\x8f-\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\
|
||||
\x00\xefIDATH\x89\xb5\x96Q\x12\xc2 \x0cD7\xc1k\xa9\xdc\xac\xc3\xcd\xaa\x9e\
|
||||
\x0b\xf0C\x19\x91\x92\x10:mf\xf2\xd3\xd2}IX\x98\x12\xb1\xc3\x99\xc1\xa7\xaa\
|
||||
\xb7\x80\x9cb\x96\x16\xa6\x14sR\xde\x9b\x00\x00p\xbf]7"E\x98\xd9\xd1,\xe02ZP\
|
||||
W\xddv`\x01\xaa{0\x1a\x89el*\xa0\xad\x90\xd9Q\x9d\x96B\x86.\xd2\x84\x98\x1d\
|
||||
\x85\x01\xc4dSm\xd6\xa1\x82,\x1d\x88\n\xc8)\xe6\x92\x04@\xa2\x84o\x01K\xaf8\
|
||||
\r\x00\x00\xc4\x8eJ\x02}\x1bk\xb1\xb1\xe9\xba\xae\x000}\xa0\xcc\x00\xef}\x0b\
|
||||
;\x16\x00\x00\x8f\xe7\xab\x8c;k\xd7\xc7n@\tbG33\x0f\x9dg\xc3\xab\xa2\xeaF\
|
||||
\x0c\xed\xa0\xa9\x80\xdexH8x\x01?\xbb\xd6\xb1\xcb\xa6\xed\x1d$\x89w;\x98\xb1\
|
||||
i\x99\xb9$\xbe\x01\xb4\x9b*\xd9\xd4"\\\x8b\x8a\x89O\'\x7f\xe9\xbd\xcf\xda7m\
|
||||
\x1ej\xd3\xae\xc6\xd9\x7f\x15o\xbc]\x81\xb1$]\x16\xd6\x00\x00\x00\x00IEND\
|
||||
\xaeB`\x82'
|
||||
"\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\x00\x00\x00\x18\x08\x06\
|
||||
\x00\x00\x00\xe0w=\xf8\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\
|
||||
\x00\xf1IDATH\x89\xd5\x96A\x12\x83 \x0cE\x7fB\xaf\xd5\xca\xcd\x1cnf\xdbs\t]\
|
||||
\xb4Li$\x01\x1c]43\xd9(\xfe\x97\x84\x0f#\x11;\x9c\x19|\xaa\xba\x04\xa4\xb8&m\
|
||||
a\x8ck\x8a\xc6\xfb.\x00\x00L\xb7\xebF$\x0b3;\x1a\x05\\Z\x0b\xca\xaae\x07=@s\
|
||||
\x0fZ#\xe9\x19\x9b\t\x90\x152;*\xb3\xa7\x90\xa6\x8b,!fG\xa1\x01\xe9\xb2\xa95\
|
||||
\xebP@\xe6\n\xc4\x04\xa4\xb8\xa6\x9c\x04@\xa3\x84O\x01s\xad8\x0b\x00\x00\xc4\
|
||||
\x8er\x02u\x1b[\xb1\xb1\xe9\xb2,\x000|\xa0\xba\x01\xde{\t;\x16\x00\x00\xf7\
|
||||
\xc73\x8f;Y\xd7\xc7n@\x0ebG#3\x0f\x95g\xcd\xab\xa2\xe8F\r\xeb\xa0\x99\x80\
|
||||
\xdaxH9x\x01_\xbb\x96\xb1\xcb\xa6\xf2\x0e\xd2\xc4\xab\x1d\x8c\xd84\xcf\\\x13\
|
||||
\xdf\x00\xe4\xa6j6\xed\x11.E\xd5\xc4\xbb\x93\x9f\xf4\xde'\xeb\x1b\x99\x87\
|
||||
\xda\xb4\xaa\xf1\xf7\x7f\x15/\xe4\x0f\x81\xb3\xb0\xca}\xd2\x00\x00\x00\x00IE\
|
||||
ND\xaeB`\x82"
|
||||
|
||||
def getToolMoveUpBitmap():
|
||||
return BitmapFromImage(getToolMoveUpImage())
|
||||
|
@@ -19,12 +19,18 @@ class Panel(wx.Notebook):
|
||||
g.panel = panel = self
|
||||
self.modified = False
|
||||
|
||||
# Set common button size for parameter buttons
|
||||
bTmp = wx.Button(self, -1, '')
|
||||
# Set common sizes
|
||||
import params
|
||||
params.buttonSize = (self.DLG_SZE(buttonSizeD)[0], bTmp.GetSize()[1])
|
||||
bTmp.Destroy()
|
||||
del bTmp
|
||||
cTmp = wx.Button(self, -1, '')
|
||||
params.buttonSize = (self.DLG_SZE(buttonSizeD)[0], cTmp.GetSize()[1])
|
||||
cTmp.Destroy()
|
||||
cTmp = wx.TextCtrl(self, -1, '')
|
||||
params.textSize = cTmp.GetSize()
|
||||
cTmp.Destroy()
|
||||
cTmp = wx.CheckBox(self, -1, 'growablerows ') # this is the longest
|
||||
ParamPage.labelSize = cTmp.GetSize()
|
||||
cTmp.Destroy()
|
||||
del cTmp
|
||||
|
||||
# List of child windows
|
||||
self.pages = []
|
||||
@@ -170,6 +176,7 @@ class Panel(wx.Notebook):
|
||||
|
||||
# General class for notebook pages
|
||||
class ParamPage(wx.Panel):
|
||||
labelSize = None
|
||||
def __init__(self, parent, xxx):
|
||||
wx.Panel.__init__(self, parent, -1)
|
||||
self.xxx = xxx
|
||||
@@ -266,38 +273,36 @@ class ParamPage(wx.Panel):
|
||||
|
||||
################################################################################
|
||||
|
||||
LABEL_WIDTH = 125
|
||||
|
||||
# Panel for displaying properties
|
||||
class PropPage(ParamPage):
|
||||
renameDict = {'orient':'orientation', 'option':'proportion',
|
||||
'usenotebooksizer':'usesizer', 'dontattachtoframe':'dontattach',
|
||||
}
|
||||
def __init__(self, parent, label, xxx):
|
||||
ParamPage.__init__(self, parent, xxx)
|
||||
self.box = wx.StaticBox(self, -1, label)
|
||||
self.box.SetFont(g.labelFont())
|
||||
topSizer = wx.StaticBoxSizer(self.box, wx.VERTICAL)
|
||||
sizer = wx.FlexGridSizer(len(xxx.allParams), 2, 0, 1)
|
||||
sizer = wx.FlexGridSizer(len(xxx.allParams), 2, 1, 5)
|
||||
sizer.AddGrowableCol(1)
|
||||
if xxx.hasName:
|
||||
label = wx.StaticText(self, -1, 'XML ID:', size=(LABEL_WIDTH,-1))
|
||||
label = wx.StaticText(self, -1, 'XML ID:', size=self.labelSize)
|
||||
control = ParamText(self, 'XML_name', 200)
|
||||
sizer.AddMany([ (label, 0, wx.ALIGN_CENTER_VERTICAL),
|
||||
(control, 0, wx.ALIGN_CENTER_VERTICAL | wx.BOTTOM | wx.GROW, 10) ])
|
||||
self.controlName = control
|
||||
for param in xxx.allParams:
|
||||
present = xxx.params.has_key(param)
|
||||
sParam = self.renameDict.get(param, param)
|
||||
if param in xxx.required:
|
||||
if isinstance(xxx, xxxComment):
|
||||
label = None
|
||||
else:
|
||||
label = wx.StaticText(self, paramIDs[param], param + ':',
|
||||
size = (LABEL_WIDTH,-1), name = param)
|
||||
label = wx.StaticText(self, paramIDs[param], sParam,
|
||||
size = self.labelSize, name = param)
|
||||
else:
|
||||
# Rename some parameters
|
||||
if param == 'usenotebooksizer': sParam = 'usesizer:'
|
||||
elif param == 'option': sParam = 'proportion'
|
||||
else: sParam = param + ':'
|
||||
label = wx.CheckBox(self, paramIDs[param], sParam,
|
||||
size = (LABEL_WIDTH,-1), name = param)
|
||||
size = self.labelSize, name = param)
|
||||
self.checks[param] = label
|
||||
try:
|
||||
typeClass = xxx.paramDict[param]
|
||||
@@ -360,17 +365,19 @@ class PropPage(ParamPage):
|
||||
|
||||
# Style notebook page
|
||||
class StylePage(ParamPage):
|
||||
renameDict = {'fg':'foreground', 'bg':'background'}
|
||||
def __init__(self, parent, label, xxx):
|
||||
ParamPage.__init__(self, parent, xxx)
|
||||
box = wx.StaticBox(self, -1, label)
|
||||
box.SetFont(g.labelFont())
|
||||
topSizer = wx.StaticBoxSizer(box, wx.VERTICAL)
|
||||
sizer = wx.FlexGridSizer(len(xxx.styles), 2, 0, 1)
|
||||
sizer = wx.FlexGridSizer(len(xxx.styles), 2, 1, 5)
|
||||
sizer.AddGrowableCol(1)
|
||||
for param in xxx.styles:
|
||||
present = xxx.params.has_key(param)
|
||||
sParam = self.renameDict.get(param, param)
|
||||
check = wx.CheckBox(self, paramIDs[param],
|
||||
param + ':', size = (LABEL_WIDTH,-1), name = param)
|
||||
sParam, size = self.labelSize, name = param)
|
||||
check.SetValue(present)
|
||||
control = paramDict[param](self, name = param)
|
||||
control.Enable(present)
|
||||
|
@@ -25,11 +25,12 @@ genericExStyles = [
|
||||
'wxWS_EX_PROCESS_UI_UPDATES'
|
||||
]
|
||||
|
||||
# Global var initialized in Panel.__init__ for button size in screen pixels
|
||||
buttonSize = None
|
||||
# Button size in dialog units
|
||||
# Global vars initialized in Panel.__init__ for button and textbox size in screen pixels
|
||||
buttonSize = textSise = None
|
||||
# Default Button size in dialog units
|
||||
buttonSizeD = (35,-1)
|
||||
|
||||
|
||||
# Class that can properly disable children
|
||||
class PPanel(wx.Panel):
|
||||
def __init__(self, parent, name):
|
||||
@@ -58,9 +59,10 @@ class ParamBinaryOr(PPanel):
|
||||
sizer = wx.BoxSizer()
|
||||
self.text = wx.TextCtrl(self, self.ID_TEXT_CTRL, size=wx.Size(200,-1))
|
||||
sizer.Add(self.text, 0, wx.RIGHT | wx.ALIGN_CENTER_VERTICAL, 5)
|
||||
self.button = wx.Button(self, self.ID_BUTTON_CHOICES, 'Edit...', size=buttonSize)
|
||||
sizer.Add(self.button, 0, wx.ALIGN_CENTER_VERTICAL)
|
||||
self.SetSizer(sizer)
|
||||
self.button = wx.Button(self, self.ID_BUTTON_CHOICES, 'Edit...',
|
||||
size=(buttonSize[0], textSize[1]))
|
||||
sizer.Add(self.button, 0, wx.EXPAND)
|
||||
self.SetSizerAndFit(sizer)
|
||||
wx.EVT_BUTTON(self, self.ID_BUTTON_CHOICES, self.OnButtonChoices)
|
||||
wx.EVT_TEXT(self, self.ID_TEXT_CTRL, self.OnChange)
|
||||
def GetValue(self):
|
||||
@@ -390,6 +392,8 @@ class ParamUnit(PPanel):
|
||||
self.SetSizer(sizer)
|
||||
self.spin.Bind(wx.EVT_SPIN_UP, self.OnSpinUp)
|
||||
self.spin.Bind(wx.EVT_SPIN_DOWN, self.OnSpinDown)
|
||||
self.text.Bind(wx.EVT_TEXT, self.OnChange)
|
||||
|
||||
def GetValue(self):
|
||||
return self.text.GetValue()
|
||||
def SetValue(self, value):
|
||||
|
Before Width: | Height: | Size: 316 B After Width: | Height: | Size: 342 B |
Before Width: | Height: | Size: 513 B After Width: | Height: | Size: 460 B |
Before Width: | Height: | Size: 502 B After Width: | Height: | Size: 471 B |
Before Width: | Height: | Size: 275 B After Width: | Height: | Size: 283 B |
Before Width: | Height: | Size: 350 B After Width: | Height: | Size: 351 B |
Before Width: | Height: | Size: 301 B After Width: | Height: | Size: 315 B |
Before Width: | Height: | Size: 291 B After Width: | Height: | Size: 279 B |
Before Width: | Height: | Size: 286 B After Width: | Height: | Size: 284 B |
Before Width: | Height: | Size: 284 B After Width: | Height: | Size: 299 B |
@@ -16,7 +16,6 @@ GROUP_WINDOWS, GROUP_MENUS, GROUP_SIZERS, GROUP_CONTROLS = range(GROUPNUM)
|
||||
|
||||
# States depending on current selection and Control/Shift keys
|
||||
STATE_ROOT, STATE_MENUBAR, STATE_TOOLBAR, STATE_MENU, STATE_STDDLGBTN, STATE_ELSE = range(6)
|
||||
|
||||
# Left toolbar for GUI elements
|
||||
class Tools(wx.Panel):
|
||||
TOOL_SIZE = (30, 30)
|
||||
@@ -108,6 +107,7 @@ class Tools(wx.Panel):
|
||||
button.SetBezelWidth(0)
|
||||
wx.EVT_KEY_DOWN(button, self.OnKeyDown)
|
||||
wx.EVT_KEY_UP(button, self.OnKeyUp)
|
||||
wx.EVT_RIGHT_DOWN(button, self.OnRightClick)
|
||||
button.SetToolTipString(text)
|
||||
self.curSizer.Add(button)
|
||||
self.groups[-1][1][id] = button
|
||||
@@ -160,6 +160,22 @@ class Tools(wx.Panel):
|
||||
else: box.SetLabel('[-] ' + box.name)
|
||||
self.Layout()
|
||||
|
||||
# Drag
|
||||
def OnRightClick(self, evt):
|
||||
do = MyDataObject()
|
||||
do.SetData(str(evt.GetId()))
|
||||
bm = evt.GetEventObject().GetBitmapLabel()
|
||||
if wx.Platform != '__WXMAC__':
|
||||
icon = wx.EmptyIcon()
|
||||
icon.CopyFromBitmap(bm)
|
||||
dragSource = wx.DropSource(self, icon)
|
||||
else: # on Mac DragSource requires cursor (but does not work anyway)
|
||||
curs = wx.CursorFromImage(wx.ImageFromBitmap(bm))
|
||||
dragSource = wx.DropSource(self, curs)
|
||||
dragSource.SetData(do)
|
||||
g.frame.SetStatusText('Release the mouse button over the test window')
|
||||
dragSource.DoDragDrop()
|
||||
|
||||
# Process key events
|
||||
def OnKeyDown(self, evt):
|
||||
if evt.GetKeyCode() == wx.WXK_CONTROL:
|
||||
|
@@ -11,6 +11,12 @@ import traceback
|
||||
# Constant to define standart window name
|
||||
STD_NAME = '_XRCED_T_W'
|
||||
|
||||
COLOUR_COMMENT = 'Blue'
|
||||
COLOUR_REF = 'DarkGreen'
|
||||
COLOUR_HIDDEN = 'Grey'
|
||||
COLOUR_HL = 'Red'
|
||||
COLOUR_DT = 'Green'
|
||||
|
||||
# Icons
|
||||
import images
|
||||
|
||||
@@ -412,20 +418,24 @@ def SetMenu(m, list, shift=False):
|
||||
################################################################################
|
||||
|
||||
class HighLightBox:
|
||||
colour = None
|
||||
def __init__(self, pos, size):
|
||||
if not self.colour: colour = self.colour = wx.NamedColour(COLOUR_HL)
|
||||
else: colour = self.colour
|
||||
if size.width == -1: size.width = 0
|
||||
if size.height == -1: size.height = 0
|
||||
w = g.testWin.panel
|
||||
l1 = wx.Window(w, -1, pos, wx.Size(size.width, 2))
|
||||
l1.SetBackgroundColour(wx.RED)
|
||||
l1.SetBackgroundColour(self.colour)
|
||||
l2 = wx.Window(w, -1, pos, wx.Size(2, size.height))
|
||||
l2.SetBackgroundColour(wx.RED)
|
||||
l2.SetBackgroundColour(self.colour)
|
||||
l3 = wx.Window(w, -1, wx.Point(pos.x + size.width - 2, pos.y), wx.Size(2, size.height))
|
||||
l3.SetBackgroundColour(wx.RED)
|
||||
l3.SetBackgroundColour(self.colour)
|
||||
l4 = wx.Window(w, -1, wx.Point(pos.x, pos.y + size.height - 2), wx.Size(size.width, 2))
|
||||
l4.SetBackgroundColour(wx.RED)
|
||||
l4.SetBackgroundColour(self.colour)
|
||||
self.lines = [l1, l2, l3, l4]
|
||||
self.size = size
|
||||
g.testWin.highLight = self
|
||||
# Move highlight to a new position
|
||||
def Replace(self, pos, size):
|
||||
if size.width == -1: size.width = 0
|
||||
@@ -442,6 +452,42 @@ class HighLightBox:
|
||||
def Refresh(self):
|
||||
map(wx.Window.Refresh, self.lines)
|
||||
|
||||
# Same for drop target
|
||||
class HighLightDTBox(HighLightBox):
|
||||
colour = None
|
||||
def __init__(self, pos, size):
|
||||
if not self.colour: colour = self.colour = wx.NamedColour(COLOUR_DT)
|
||||
else: colour = self.colour
|
||||
if size.width == -1: size.width = 0
|
||||
if size.height == -1: size.height = 0
|
||||
w = g.testWin.panel
|
||||
l1 = wx.Window(w, -1, pos, wx.Size(size.width, 2))
|
||||
l1.SetBackgroundColour(colour)
|
||||
l2 = wx.Window(w, -1, pos, wx.Size(2, size.height))
|
||||
l2.SetBackgroundColour(colour)
|
||||
l3 = wx.Window(w, -1, wx.Point(pos.x + size.width - 2, pos.y), wx.Size(2, size.height))
|
||||
l3.SetBackgroundColour(colour)
|
||||
l4 = wx.Window(w, -1, wx.Point(pos.x, pos.y + size.height - 2), wx.Size(size.width, 2))
|
||||
l4.SetBackgroundColour(colour)
|
||||
self.lines = [l1, l2, l3, l4]
|
||||
self.size = size
|
||||
self.item = None
|
||||
# Remove it
|
||||
def Remove(self):
|
||||
map(wx.Window.Destroy, self.lines)
|
||||
g.testWin.highLightDT = None
|
||||
|
||||
def updateHL(hl, hlClass, pos, size):
|
||||
if hl and hl.size == size:
|
||||
hl.Remove()
|
||||
hl = None
|
||||
if hl:
|
||||
hl.Replace(pos, size)
|
||||
hl.Refresh()
|
||||
else:
|
||||
hl = hlClass(pos, size)
|
||||
return hl
|
||||
|
||||
################################################################################
|
||||
|
||||
class XML_Tree(wx.TreeCtrl):
|
||||
@@ -555,6 +601,7 @@ class XML_Tree(wx.TreeCtrl):
|
||||
self.rootObj = xxxMainNode(self.dom)
|
||||
self.root = self.AddRoot('XML tree', self.rootImage,
|
||||
data=wx.TreeItemData(self.rootObj))
|
||||
self.itemColour = self.GetItemTextColour(self.root)
|
||||
self.SetItemHasChildren(self.root)
|
||||
nodes = self.mainNode.childNodes[:]
|
||||
for node in nodes:
|
||||
@@ -587,12 +634,12 @@ class XML_Tree(wx.TreeCtrl):
|
||||
data=wx.TreeItemData(xxx))
|
||||
# Different color for comments and references
|
||||
if xxx.className == 'comment':
|
||||
self.SetItemTextColour(item, 'Blue')
|
||||
self.SetItemTextColour(item, COLOUR_COMMENT)
|
||||
self.SetItemFont(item, self.fontComment)
|
||||
elif treeObj.ref:
|
||||
self.SetItemTextColour(item, 'DarkGreen')
|
||||
self.SetItemTextColour(item, COLOUR_REF)
|
||||
elif treeObj.hasStyle and treeObj.params.get('hidden', False):
|
||||
self.SetItemTextColour(item, 'Grey')
|
||||
self.SetItemTextColour(item, COLOUR_HIDDEN)
|
||||
# Try to find children objects
|
||||
if treeObj.hasChildren:
|
||||
nodes = treeObj.node.childNodes[:]
|
||||
@@ -623,12 +670,12 @@ class XML_Tree(wx.TreeCtrl):
|
||||
treeObj = xxx.treeObject()
|
||||
# Different color for references and comments
|
||||
if xxx.className == 'comment':
|
||||
self.SetItemTextColour(newItem, 'Blue')
|
||||
self.SetItemTextColour(newItem, COLOUR_COMMENT)
|
||||
self.SetItemFont(newItem, self.fontComment)
|
||||
elif treeObj.ref:
|
||||
self.SetItemTextColour(newItem, 'DarkGreen')
|
||||
self.SetItemTextColour(newItem, COLOUR_REF)
|
||||
elif treeObj.hasStyle and treeObj.params.get('hidden', False):
|
||||
self.SetItemTextColour(newItem, 'Grey')
|
||||
self.SetItemTextColour(newItem, COLOUR_HIDDEN)
|
||||
# Add children items
|
||||
if xxx.hasChildren:
|
||||
treeObj = xxx.treeObject()
|
||||
@@ -724,6 +771,7 @@ class XML_Tree(wx.TreeCtrl):
|
||||
self.UnselectAll()
|
||||
self.SelectItem(evt.GetItem())
|
||||
self.selectionChanging = False
|
||||
g.frame.SetStatusText('')
|
||||
|
||||
def ChangeSelection(self, item):
|
||||
# Apply changes
|
||||
@@ -731,8 +779,7 @@ class XML_Tree(wx.TreeCtrl):
|
||||
#oldItem = evt.GetOldItem()
|
||||
status = ''
|
||||
oldItem = self.selection
|
||||
# use GetItemParent as a way to determine if the itemId is still valid
|
||||
if oldItem and self.GetItemParent(oldItem):
|
||||
if oldItem:
|
||||
xxx = self.GetPyData(oldItem)
|
||||
# If some data was modified, apply changes
|
||||
if g.panel.IsModified():
|
||||
@@ -742,7 +789,7 @@ class XML_Tree(wx.TreeCtrl):
|
||||
g.testWin.highLight.Remove()
|
||||
self.needUpdate = True
|
||||
status = 'Changes were applied'
|
||||
g.frame.SetStatusText(status)
|
||||
if status: g.frame.SetStatusText(status)
|
||||
# Generate view
|
||||
self.selection = item
|
||||
if not self.selection.IsOk():
|
||||
@@ -787,18 +834,10 @@ class XML_Tree(wx.TreeCtrl):
|
||||
size = obj.GetSize()
|
||||
# Highlight
|
||||
# Negative positions are not working quite well
|
||||
hl = g.testWin.highLight
|
||||
# If highlight object has the same size SetDimension does not repaint it
|
||||
# so we must remove the old HL window
|
||||
if hl and hl.size == size:
|
||||
hl.Remove()
|
||||
hl = None
|
||||
if hl:
|
||||
hl.Replace(pos, size)
|
||||
else:
|
||||
g.testWin.highLight = hl = HighLightBox(pos, size)
|
||||
hl.Refresh()
|
||||
hl.item = item
|
||||
g.testWin.highLight = updateHL(g.testWin.highLight, HighLightBox, pos, size)
|
||||
g.testWin.highLight.item = item
|
||||
|
||||
def ShowTestWindow(self, item):
|
||||
xxx = self.GetPyData(item)
|
||||
@@ -906,6 +945,7 @@ class XML_Tree(wx.TreeCtrl):
|
||||
if not g.currentEncoding:
|
||||
xmlFlags != xrc.XRC_USE_LOCALE
|
||||
res = xrc.XmlResource('', xmlFlags)
|
||||
res.InitAllHandlers()
|
||||
xrc.XmlResource.Set(res) # set as global
|
||||
# Register handlers
|
||||
addHandlers()
|
||||
@@ -997,7 +1037,10 @@ class XML_Tree(wx.TreeCtrl):
|
||||
testWin.item = item
|
||||
wx.EVT_CLOSE(testWin, self.OnCloseTestWin)
|
||||
wx.EVT_SIZE(testWin, self.OnSizeTestWin)
|
||||
testWin.highLight = None
|
||||
# Add drop target
|
||||
testWin.SetDropTarget(DropTarget())
|
||||
# Reset highlights
|
||||
testWin.highLight = testWin.highLightDT = None
|
||||
if highLight and not self.pendingHighLight:
|
||||
self.HighLight(highLight)
|
||||
except:
|
||||
@@ -1236,3 +1279,88 @@ class XML_Tree(wx.TreeCtrl):
|
||||
node.data = evt.GetLabel()
|
||||
g.panel.SetData(xxx)
|
||||
evt.Skip()
|
||||
|
||||
################################################################################
|
||||
|
||||
# DragAndDrop
|
||||
|
||||
class DropTarget(wx.PyDropTarget):
|
||||
def __init__(self):
|
||||
self.do = MyDataObject()
|
||||
wx.DropTarget.__init__(self, self.do)
|
||||
|
||||
# Find best object for dropping
|
||||
def WhereToDrop(self, x, y, d):
|
||||
# Find object by position
|
||||
obj = wx.FindWindowAtPoint(g.testWin.ClientToScreen((x,y)))
|
||||
if not obj:
|
||||
return wx.DragNone, ()
|
||||
item = g.frame.FindObject(g.testWin.item, obj)
|
||||
if not item:
|
||||
return wx.DragNone, ()
|
||||
xxx = g.tree.GetPyData(item).treeObject()
|
||||
parentItem = None
|
||||
# Check if window has a XRC sizer, then use it as parent
|
||||
if obj.GetSizer():
|
||||
sizer = obj.GetSizer()
|
||||
sizerItem = g.frame.FindObject(g.testWin.item, sizer)
|
||||
if sizerItem:
|
||||
parentItem = sizerItem
|
||||
obj = sizer
|
||||
item = wx.TreeItemId()
|
||||
# if not sizer but can have children, it is parent with free placement
|
||||
elif xxx.hasChildren:
|
||||
parentItem = item
|
||||
item = wx.TreeItemId()
|
||||
# Otherwise, try to add to item's parent
|
||||
if not parentItem:
|
||||
parentItem = g.tree.GetItemParent(item)
|
||||
obj = g.tree.FindNodeObject(parentItem)
|
||||
parent = g.tree.GetPyData(parentItem).treeObject()
|
||||
return d,(obj,parent,parentItem,item)
|
||||
|
||||
# Drop
|
||||
def OnData(self, x, y, d):
|
||||
self.GetData()
|
||||
id = int(self.do.GetDataHere())
|
||||
d,other = self.WhereToDrop(x, y, d)
|
||||
if d != wx.DragNone:
|
||||
obj,parent,parentItem,item = other
|
||||
g.tree.selection = parentItem
|
||||
xxx = g.frame.CreateXXX(parent, parentItem, item, id)
|
||||
# Set coordinates if parent is not sizer
|
||||
if not parent.isSizer:
|
||||
xxx.set('pos', '%d,%d' % (x, y))
|
||||
g.panel.SetData(xxx)
|
||||
g.frame.SetStatusText('Object created')
|
||||
self.RemoveHL()
|
||||
return d
|
||||
|
||||
def OnDragOver(self, x, y, d):
|
||||
d,other = self.WhereToDrop(x, y, d)
|
||||
if d != wx.DragNone:
|
||||
obj,parent,parentItem,item = other
|
||||
pos, size = g.tree.FindNodePos(parentItem, obj), obj.GetSize()
|
||||
# Change tree item colour
|
||||
hl = g.testWin.highLightDT
|
||||
if hl and hl.item and hl.item != parentItem:
|
||||
g.tree.SetItemTextColour(hl.item, g.tree.itemColour)
|
||||
g.testWin.highLightDT = updateHL(hl, HighLightDTBox, pos, size)
|
||||
g.testWin.highLightDT.item = parentItem
|
||||
g.tree.SetItemTextColour(parentItem, COLOUR_DT)
|
||||
g.tree.EnsureVisible(parentItem)
|
||||
g.frame.SetStatusText('Drop target: %s' % parent.treeName())
|
||||
else:
|
||||
g.frame.SetStatusText('Inappropriate drop target')
|
||||
self.RemoveHL()
|
||||
return d
|
||||
|
||||
def OnLeave(self):
|
||||
self.RemoveHL()
|
||||
|
||||
def RemoveHL(self):
|
||||
hl = g.testWin.highLightDT
|
||||
if hl:
|
||||
if hl.item: g.tree.SetItemTextColour(hl.item, g.tree.itemColour)
|
||||
hl.Remove()
|
||||
|
||||
|
@@ -303,7 +303,7 @@ class Frame(wx.Frame):
|
||||
|
||||
# Build interface
|
||||
sizer = wx.BoxSizer(wx.VERTICAL)
|
||||
sizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND)
|
||||
#sizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND)
|
||||
# Horizontal sizer for toolbar and splitter
|
||||
self.toolsSizer = sizer1 = wx.BoxSizer()
|
||||
splitter = wx.SplitterWindow(self, -1, style=wx.SP_3DSASH)
|
||||
@@ -990,8 +990,9 @@ class Frame(wx.Frame):
|
||||
child = tree.GetNextSibling(child)
|
||||
return None
|
||||
|
||||
# Click event after locate activated
|
||||
def OnTestWinLeftDown(self, evt):
|
||||
pos = evt.GetPosition()
|
||||
# Restore normal event processing
|
||||
self.SetHandler(g.testWin)
|
||||
g.testWin.Disconnect(wx.ID_ANY, wx.ID_ANY, wx.wxEVT_LEFT_DOWN)
|
||||
item = self.FindObject(g.testWin.item, evt.GetEventObject())
|
||||
@@ -1103,19 +1104,24 @@ Homepage: http://xrced.sourceforge.net\
|
||||
parent = tree.GetPyData(parentLeaf)
|
||||
if parent.hasChild: parent = parent.child
|
||||
|
||||
self.CreateXXX(parent, parentLeaf, nextItem, evt.GetId())
|
||||
|
||||
# Actual method to create object and add to XML and wx trees
|
||||
def CreateXXX(self, parent, parentLeaf, nextItem, id):
|
||||
selected = tree.selection
|
||||
# Create object_ref?
|
||||
if evt.GetId() == ID_NEW.REF:
|
||||
if id == ID_NEW.REF:
|
||||
ref = wx.GetTextFromUser('Create reference to:', 'Create reference')
|
||||
if not ref: return
|
||||
xxx = MakeEmptyRefXXX(parent, ref)
|
||||
elif evt.GetId() == ID_NEW.COMMENT:
|
||||
elif id == ID_NEW.COMMENT:
|
||||
xxx = MakeEmptyCommentXXX(parent)
|
||||
else:
|
||||
# Create empty element
|
||||
if evt.GetId() >= ID_NEW.CUSTOM:
|
||||
className = pullDownMenu.customMap[evt.GetId()]
|
||||
if id >= ID_NEW.CUSTOM:
|
||||
className = pullDownMenu.customMap[id]
|
||||
else:
|
||||
className = pullDownMenu.createMap[evt.GetId()]
|
||||
className = pullDownMenu.createMap[id]
|
||||
xxx = MakeEmptyXXX(parent, className)
|
||||
|
||||
# Insert new node, register undo
|
||||
@@ -1127,16 +1133,20 @@ Homepage: http://xrced.sourceforge.net\
|
||||
xxx.setTreeName('%s%d' % (defaultIDs[cl], frame.maxIDs[cl]))
|
||||
# And for some other standard controls
|
||||
elif parent.__class__ == xxxStdDialogButtonSizer:
|
||||
xxx.setTreeName(pullDownMenu.stdButtonIDs[evt.GetId()][0])
|
||||
# We can even set label
|
||||
# ... we can even set automatically tree name
|
||||
xxx.setTreeName(pullDownMenu.stdButtonIDs[id][0])
|
||||
obj = xxx.treeObject()
|
||||
# ... and label
|
||||
elem = g.tree.dom.createElement('label')
|
||||
elem.appendChild(g.tree.dom.createTextNode(pullDownMenu.stdButtonIDs[evt.GetId()][1]))
|
||||
elem.appendChild(g.tree.dom.createTextNode(pullDownMenu.stdButtonIDs[id][1]))
|
||||
obj.params['label'] = xxxParam(elem)
|
||||
xxx.treeObject().node.appendChild(elem)
|
||||
|
||||
newItem = tree.InsertNode(parentLeaf, parent, xxx.node, nextItem)
|
||||
else: # comment node
|
||||
# Else, set label if exists to class name
|
||||
elif 'label' in xxx.treeObject().allParams:
|
||||
label = className
|
||||
if label[:2] == 'wx': label = label[2:]
|
||||
xxx.treeObject().set('label', label.upper())
|
||||
# For comment nodes, simply add node
|
||||
newItem = tree.InsertNode(parentLeaf, parent, xxx.node, nextItem)
|
||||
undoMan.RegisterUndo(UndoPasteCreate(parentLeaf, parent, newItem, selected))
|
||||
tree.EnsureVisible(newItem)
|
||||
@@ -1155,6 +1165,7 @@ Homepage: http://xrced.sourceforge.net\
|
||||
if not xxx.isElement:
|
||||
tree.EditLabel(newItem)
|
||||
self.SetModified()
|
||||
return xxx
|
||||
|
||||
# Replace one object with another
|
||||
def OnReplace(self, evt):
|
||||
@@ -1315,10 +1326,10 @@ Homepage: http://xrced.sourceforge.net\
|
||||
if tree.needUpdate:
|
||||
if conf.autoRefresh:
|
||||
if g.testWin:
|
||||
self.SetStatusText('Refreshing test window...')
|
||||
#self.SetStatusText('Refreshing test window...')
|
||||
# (re)create
|
||||
tree.CreateTestWin(g.testWin.item)
|
||||
self.SetStatusText('')
|
||||
#self.SetStatusText('')
|
||||
tree.needUpdate = False
|
||||
elif tree.pendingHighLight:
|
||||
try:
|
||||
@@ -1752,7 +1763,7 @@ Please upgrade wxWidgets to %d.%d.%d or higher.''' % MinWxVersion)
|
||||
# Store important data
|
||||
frame.handlers = getHandlers()[:]
|
||||
frame.custom = g.pullDownMenu.custom[:]
|
||||
frame.modules = set(sys.modules.keys())
|
||||
frame.modules = sys.modules.copy()
|
||||
|
||||
# Initialize
|
||||
frame.Clear()
|
||||
|
@@ -622,7 +622,7 @@
|
||||
</object>
|
||||
<object class="sizeritem">
|
||||
<object class="wxSpinCtrl" name="spin_proportion_panel">
|
||||
<size>50,-1</size>
|
||||
<size>30,-1d</size>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem">
|
||||
@@ -657,7 +657,7 @@
|
||||
</object>
|
||||
<object class="sizeritem">
|
||||
<object class="wxSpinCtrl" name="spin_proportion_control">
|
||||
<size>50,-1</size>
|
||||
<size>30,-1d</size>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem">
|
||||
@@ -685,6 +685,7 @@
|
||||
<item>always</item>
|
||||
<item>never</item>
|
||||
</content>
|
||||
<style>wxRA_SPECIFY_ROWS</style>
|
||||
</object>
|
||||
<flag>wxALL|wxALIGN_CENTRE_HORIZONTAL</flag>
|
||||
<border>5</border>
|
||||
|