]> git.saurik.com Git - wxWidgets.git/commitdiff
wx.EventLoop is now implemented for wxMac.
authorRobin Dunn <robin@alldunn.com>
Fri, 13 Jan 2006 04:07:35 +0000 (04:07 +0000)
committerRobin Dunn <robin@alldunn.com>
Fri, 13 Jan 2006 04:07:35 +0000 (04:07 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36857 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

wxPython/docs/CHANGES.txt
wxPython/samples/mainloop/mainloop.py
wxPython/src/_evtloop.i

index 47f20fb7bd7881235744171372c9e007a8817715..de74e110f0a15653b33a325b5d746896b40459c7 100644 (file)
@@ -20,6 +20,7 @@ The following deprecated items have been removed:
 
     * wx.FontMapper SetConfig method
 
+wx.EventLoop is now implemented for wxMac.
 
 
 
index 1074b83b3d99710908e447010e8888ac5035cce2..64a60a96487a65da6e2a1f21edb267c91fe4f88b 100755 (executable)
@@ -67,44 +67,39 @@ class MyFrame(wx.Frame):
 class MyApp(wx.App):
     def MainLoop(self):
 
-        if "wxMac" in wx.PlatformInfo:
-            # TODO:  Does wxMac implement wxEventLoop yet???
-            wx.App.MainLoop()
-
-        else:
-            # Create an event loop and make it active.  If you are
-            # only going to temporarily have a nested event loop then
-            # you should get a reference to the old one and set it as
-            # the active event loop when you are done with this one...
-            evtloop = wx.EventLoop()
-            old = wx.EventLoop.GetActive()
-            wx.EventLoop.SetActive(evtloop)
-
-            # This outer loop determines when to exit the application,
-            # for this example we let the main frame reset this flag
-            # when it closes.
-            while self.keepGoing:
-                # At this point in the outer loop you could do
-                # whatever you implemented your own MainLoop for.  It
-                # should be quick and non-blocking, otherwise your GUI
-                # will freeze.  
-
-                # call_your_code_here()
-
-
-                # This inner loop will process any GUI events
-                # until there are no more waiting.
-                while evtloop.Pending():
-                    evtloop.Dispatch()
-
-                # Send idle events to idle handlers.  You may want to
-                # throttle this back a bit somehow so there is not too
-                # much CPU time spent in the idle handlers.  For this
-                # example, I'll just snooze a little...
-                time.sleep(0.10)
-                self.ProcessIdle()
-
-            wx.EventLoop.SetActive(old)
+        # Create an event loop and make it active.  If you are
+        # only going to temporarily have a nested event loop then
+        # you should get a reference to the old one and set it as
+        # the active event loop when you are done with this one...
+        evtloop = wx.EventLoop()
+        old = wx.EventLoop.GetActive()
+        wx.EventLoop.SetActive(evtloop)
+
+        # This outer loop determines when to exit the application,
+        # for this example we let the main frame reset this flag
+        # when it closes.
+        while self.keepGoing:
+            # At this point in the outer loop you could do
+            # whatever you implemented your own MainLoop for.  It
+            # should be quick and non-blocking, otherwise your GUI
+            # will freeze.  
+
+            # call_your_code_here()
+
+
+            # This inner loop will process any GUI events
+            # until there are no more waiting.
+            while evtloop.Pending():
+                evtloop.Dispatch()
+
+            # Send idle events to idle handlers.  You may want to
+            # throttle this back a bit somehow so there is not too
+            # much CPU time spent in the idle handlers.  For this
+            # example, I'll just snooze a little...
+            time.sleep(0.10)
+            self.ProcessIdle()
+
+        wx.EventLoop.SetActive(old)
 
 
 
index 124be3153539b9b5dcc6d3e46899f3214f4fdb94..de95253c705cec927a2c19c17cec092c5a2b4edb 100644 (file)
@@ -20,7 +20,7 @@
 %newgroup
 
 %{
-#ifdef __WXMAC__
+#if 0   // #ifdef __WXMAC__
 
 // A dummy class that raises an exception if used...    
 class wxEventLoop
@@ -72,4 +72,17 @@ public:
 };
 
 
+
+// This object sets the wxEventLoop given to the ctor as the currently active
+// one and unsets it in its dtor, this is especially useful in presence of
+// exceptions but is more tidy even when we don't use them
+class wxEventLoopActivator
+{
+public:
+    wxEventLoopActivator(wxEventLoop *evtLoop);
+    ~wxEventLoopActivator();
+};
+
+
 //---------------------------------------------------------------------------