]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/demo/Threads.py
HandlePrintClient shouldn't go above a top-level window
[wxWidgets.git] / wxPython / demo / Threads.py
index 6d9f5a1d5be8ded3565991aa99f3c9000e0b38df..07910dc4d75fabebba3a18b8ad12d841414cc61e 100644 (file)
@@ -1,14 +1,3 @@
-# 11/13/2003 - Jeff Grimmett (grimmtooth@softhome.net)
-#
-# o Updated for wx namespace
-# o Replaced deprecated whrandom with random module.
-#
-# 11/13/2003 - Jeff Grimmett (grimmtooth@softhome.net)
-#
-# o Currently uses lib.newevent; should probably be updated to use
-#   new-style event binder. OTOH, this is the only place we get
-#   to see that library used that I know of.
-#
 
 import  random
 import  time
@@ -44,9 +33,8 @@ class CalcBarThread:
     def Run(self):
         while self.keepGoing:
             evt = UpdateBarEvent(barNum = self.barNum, value = int(self.val))
-            wx.PostEvent(self.win.GetEventHandler(), evt)
-            #del evt
-
+            wx.PostEvent(self.win, evt)
             sleeptime = (random.random() * 2) + 0.5
             time.sleep(sleeptime/4)
 
@@ -108,19 +96,19 @@ class GraphWindow(wx.Window):
         dc.SetTextForeground(wx.BLUE)
         dc.SetBackground(wx.Brush(self.GetBackgroundColour()))
         dc.Clear()
-        dc.SetPen(wxPen(wxBLACK, 3, wxSOLID))
-        dc.DrawLine((self.linePos, 0), (self.linePos, size.height-10))
+        dc.SetPen(wx.Pen(wx.BLACK, 3, wx.SOLID))
+        dc.DrawLine(self.linePos, 0, self.linePos, size.height-10)
 
         bh = ypos = self.barHeight
         for x in range(len(self.values)):
             label, val = self.values[x]
-            dc.DrawText(label, (5, ypos))
+            dc.DrawText(label, 5, ypos)
 
             if val:
                 color = self.colors[ x % len(self.colors) ]
-                dc.SetPen(wxPen(color))
-                dc.SetBrush(wxBrush(color))
-                dc.DrawRectangle((self.linePos+3, ypos), (val, bh))
+                dc.SetPen(wx.Pen(color))
+                dc.SetBrush(wx.Brush(color))
+                dc.DrawRectangle(self.linePos+3, ypos, val, bh)
 
             ypos = ypos + 2*bh
             if ypos > size[1]-10:
@@ -128,17 +116,18 @@ class GraphWindow(wx.Window):
 
 
     def OnPaint(self, evt):
-        width, height = self.GetSize()
+        width, height = size =self.GetSize()
         bmp = wx.EmptyBitmap(width, height)
 
         dc = wx.MemoryDC()
         dc.SelectObject(bmp)
 
-        self.Draw(dc, (width, height))
+        
+        self.Draw(dc, size)
 
         wdc = wx.PaintDC(self)
         wdc.BeginDrawing()
-        wdc.Blit((0,0), size, dc, (0,0))
+        wdc.Blit(0,0, size[0], size[1], dc, 0,0)
         wdc.EndDrawing()
 
         dc.SelectObject(wx.NullBitmap)
@@ -223,19 +212,35 @@ class TestFrame(wx.Frame):
 
 
 
-#----------------------------------------------------------------------
+#---------------------------------------------------------------------------
+
+class TestPanel(wx.Panel):
+    def __init__(self, parent, log):
+        self.log = log
+        wx.Panel.__init__(self, parent, -1)
+
+        b = wx.Button(self, -1, "Show Threads sample", (50,50))
+        self.Bind(wx.EVT_BUTTON, self.OnButton, b)
+
+
+    def OnButton(self, evt):
+        win = TestFrame(self, self.log)
+        win.Show(True)
+
+
+#---------------------------------------------------------------------------
+
 
 def runTest(frame, nb, log):
-    win = TestFrame(frame, log)
-    frame.otherWin = win
-    win.Show(True)
-    return None
+    win = TestPanel(nb, log)
+    return win
 
 #----------------------------------------------------------------------
 
 
 
 
+
 overview = """\
 The main issue with multi-threaded GUI programming is the thread safty
 of the GUI itself.  On most platforms the GUI is not thread safe and
@@ -261,5 +266,5 @@ thread.
 if __name__ == '__main__':
     import sys,os
     import run
-    run.main(['', os.path.basename(sys.argv[0])])
+    run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])