hello everyone!
i'm tinkering with different examples to see how far i can modify them
without having them break on me. The problem came when i was trying to
add a frame around SplitTree so that i can compile and run in spe.. It
"apparently" runs without any errors, but it doesn't show anything,
just run and then terminates.. anyways, here is the code, only the
first couple of lines (frame class) and last couple of lines is mine,
the rest is lifted out of the SplitTree example (also, i took out log
parameter on the TestPanel class):
import wx
import wx.gizmos as gizmos
class Base(wx.Frame):
def __init__(self,parent,id,title):
wx.Frame.__init__(self,parent,wx.ID_ANY, title,
style=wx.DEFAULT_FRAME_STYLE|wx.NO_FULL_REPAINT_ON_RESIZE)
panel = TestPanel(self)
self.Show(True)
class TestTree(gizmos.RemotelyScrolledTreeCtrl):
def __init__(self, parent, style=wx.TR_HAS_BUTTONS):
gizmos.RemotelyScrolledTreeCtrl.__init__(self, parent, -1, style=style)
# make an image list
im1 = im2 = -1
self.il = wx.ImageList(16, 16)
im1 = self.il.Add(wx.ArtProvider.GetBitmap(wx.ART_FOLDER,
wx.ART_TOOLBAR, (16,16)))
im2 = self.il.Add(wx.ArtProvider.GetBitmap(wx.ART_NORMAL_FILE,
wx.ART_TOOLBAR, (16,16)))
self.SetImageList(self.il)
# Add some items
root = self.AddRoot("Root")
for i in range(30):
item = self.AppendItem(root, "Item %d" % i, im1)
for j in range(10):
child = self.AppendItem(item, "Child %d" % j, im2)
self.Expand(root)
class TestValueWindow(gizmos.TreeCompanionWindow):
def __init__(self, parent, style=0):
gizmos.TreeCompanionWindow.__init__(self, parent, -1, style=style)
self.SetBackgroundColour("WHITE")
# This method is called to draw each item in the value window
def DrawItem(self, dc, itemId, rect):
tree = self.GetTreeCtrl()
if tree:
text = "This is "
parent = tree.GetItemParent(itemId)
if parent.IsOk():
ptext = tree.GetItemText(parent)
text = text + ptext + " --> "
text = text + tree.GetItemText(itemId)
pen = wx.Pen(
wx.SystemSettings_GetColour(wx.SYS_COLOUR_3DLIGHT),
1, wx.SOLID
)
dc.SetPen(pen)
dc.SetBrush(wx.Brush(self.GetBackgroundColour(), wx.SOLID))
dc.DrawRectangle(rect.x, rect.y, rect.width+1, rect.height+1)
dc.SetTextForeground("BLACK")
dc.SetBackgroundMode(wx.TRANSPARENT)
tw, th = dc.GetTextExtent(text)
x = 5
y = rect.y + max(0, (rect.height - th) / 2)
dc.DrawText(text, x, y)
class TestPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, -1, size=(640,480))
self.log = log
scroller = gizmos.SplitterScrolledWindow(
self, -1, style=wx.NO_BORDER | wx.CLIP_CHILDREN | wx.VSCROLL
)
splitter = gizmos.ThinSplitterWindow(
scroller, -1, style=wx.SP_3DBORDER | wx.CLIP_CHILDREN
)
splitter.SetSashSize(2)
tree = TestTree(splitter, style = wx.TR_HAS_BUTTONS |
wx.TR_NO_LINES |
wx.TR_ROW_LINES |
#wx.TR_HIDE_ROOT |
wx.NO_BORDER )
valueWindow = TestValueWindow(splitter, style=wx.NO_BORDER)
wx.CallAfter(splitter.SplitVertically, tree, valueWindow, 150)
scroller.SetTargetWindow(tree)
scroller.EnableScrolling(False, False)
valueWindow.SetTreeCtrl(tree)
tree.SetCompanionWindow(valueWindow)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(scroller, 1, wx.EXPAND|wx.ALL, 25)
self.SetSizer(sizer)
self.Layout()
app = wx.PySimpleApp()
frame = Base(None, -1, "TEST")
app.MainLoop()
Thanks alot!
···
--
www.programer.name - my own personal blog : )
"It's a wonderful world hobbes ol' buddy, let's go explorin'!" -
Calvin in "Calvin and Hobbes"