Add files necessary to run Expat configure.
[wxWidgets.git] / interface / wx / timer.h
index 4b7d1fbb177b86185861679e77ed78986fe0c100..123c626fd6bb9acb7ad054a11cfbbeca3a3af41c 100644 (file)
@@ -3,9 +3,18 @@
 // Purpose:     interface of wxTimer
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
 // Purpose:     interface of wxTimer
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 /////////////////////////////////////////////////////////////////////////////
 
+// generate notifications periodically until the timer is stopped (default)
+#define wxTIMER_CONTINUOUS false
+
+// only send the notification once and then stop the timer
+#define wxTIMER_ONE_SHOT true
+
+wxEventType wxEVT_TIMER;
+
+
 /**
     @class wxTimer
 
 /**
     @class wxTimer
 
@@ -77,7 +86,7 @@ public:
     wxEvtHandler* GetOwner() const;
 
     /**
     wxEvtHandler* GetOwner() const;
 
     /**
-        Returns @true if the timer is one shot, i.e. if it will stop after firing
+        Returns @true if the timer is one shot, i.e.\ if it will stop after firing
         the first notification automatically.
     */
     bool IsOneShot() const;
         the first notification automatically.
     */
     bool IsOneShot() const;
@@ -92,6 +101,10 @@ public:
         used and SetOwner() wasn't called.
 
         Perform whatever action which is to be taken periodically here.
         used and SetOwner() wasn't called.
 
         Perform whatever action which is to be taken periodically here.
+
+        Notice that throwing exceptions from this method is currently not
+        supported, use event-based timer handling approach if an exception can
+        be thrown while handling timer notifications.
     */
     virtual void Notify();
 
     */
     virtual void Notify();
 
@@ -115,10 +128,21 @@ public:
         To make your code more readable you may also use the following symbolic constants:
         - wxTIMER_CONTINUOUS: Start a normal, continuously running, timer
         - wxTIMER_ONE_SHOT: Start a one shot timer
         To make your code more readable you may also use the following symbolic constants:
         - wxTIMER_CONTINUOUS: Start a normal, continuously running, timer
         - wxTIMER_ONE_SHOT: Start a one shot timer
+        Alternatively, use StartOnce().
+
         If the timer was already running, it will be stopped by this method before
         restarting it.
     */
         If the timer was already running, it will be stopped by this method before
         restarting it.
     */
-    virtual bool Start(int milliseconds = -1, bool oneShot = false);
+    virtual bool Start(int milliseconds = -1, bool oneShot = wxTIMER_CONTINUOUS);
+
+    /**
+        Starts the timer for a once-only notification.
+
+        This is a simple wrapper for Start() with @c wxTIMER_ONE_SHOT parameter.
+
+        @since 2.9.5
+     */
+    bool StartOnce(int milliseconds = -1);
 
     /**
         Stops the timer.
 
     /**
         Stops the timer.
@@ -127,6 +151,19 @@ public:
 };
 
 
 };
 
 
+/**
+   @class wxTimerRunner
+
+   Starts the timer in its ctor, stops in the dtor.
+*/ 
+class wxTimerRunner
+{
+public:
+    wxTimerRunner(wxTimer& timer);
+    wxTimerRunner(wxTimer& timer, int milli, bool oneShot = false);
+    void Start(int milli, bool oneShot = false);
+    ~wxTimerRunner();
+};
 
 /**
     @class wxTimerEvent
 
 /**
     @class wxTimerEvent
@@ -145,11 +182,12 @@ public:
 
     private:
         wxTimer m_timer;
 
     private:
         wxTimer m_timer;
+        wxDECLARE_EVENT_TABLE();
     };
 
     };
 
-    BEGIN_EVENT_TABLE(MyFrame, wxFrame)
+    wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
         EVT_TIMER(TIMER_ID, MyFrame::OnTimer)
         EVT_TIMER(TIMER_ID, MyFrame::OnTimer)
-    END_EVENT_TABLE()
+    wxEND_EVENT_TABLE()
 
     MyFrame::MyFrame()
            : m_timer(this, TIMER_ID)
 
     MyFrame::MyFrame()
            : m_timer(this, TIMER_ID)
@@ -171,6 +209,9 @@ public:
 class wxTimerEvent : public wxEvent
 {
 public:
 class wxTimerEvent : public wxEvent
 {
 public:
+    wxTimerEvent();
+    wxTimerEvent(wxTimer& timer);
+
     /**
         Returns the interval of the timer which generated this event.
     */
     /**
         Returns the interval of the timer which generated this event.
     */