diff options
author | Jonathon Jongsma <jjongsma@src.gnome.org> | 2008-12-12 01:09:55 +0000 |
---|---|---|
committer | Jonathon Jongsma <jjongsma@src.gnome.org> | 2008-12-12 01:09:55 +0000 |
commit | 22e829e5ffbf8e39d2573772bafe90ed344066d9 (patch) | |
tree | c255852cbbe95016bee44c0feeae6b966a554f45 | |
parent | a556ef798a4ecbe69c52b9377e613deaf8c35ac7 (diff) | |
download | glibmm-22e829e5ffbf8e39d2573772bafe90ed344066d9.tar.gz |
Add convenience functions for one-shot timer/idle handlers
* glib/glibmm/main.h:
* glib/glibmm/main.cc: Added SignalIdle::connect_once,
SignalTimeout::connect_once, and SignalTimeout::connect_seconds_once.
svn path=/trunk/; revision=750
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | glib/glibmm/main.cc | 17 | ||||
-rw-r--r-- | glib/glibmm/main.h | 37 |
3 files changed, 60 insertions, 0 deletions
@@ -1,3 +1,9 @@ +2008-09-22 Dave Foster <daf@minuslab.net> + + * glib/glibmm/main.h: + * glib/glibmm/main.cc: Added SignalIdle::connect_once, + SignalTimeout::connect_once, and SignalTimeout::connect_seconds_once. + 2008-12-10 Przemysław Grzegorczyk <pgrzegorczyk@gmail.com> * Cleaned up glib includes since in the future, only glib.h (and diff --git a/glib/glibmm/main.cc b/glib/glibmm/main.cc index 16d3f595..b47f43ea 100644 --- a/glib/glibmm/main.cc +++ b/glib/glibmm/main.cc @@ -310,6 +310,12 @@ sigc::connection SignalTimeout::connect(const sigc::slot<bool>& slot, return connection; } +void SignalTimeout::connect_once(const sigc::slot<void>& slot, + unsigned int interval, int priority) +{ + connect(sigc::bind_return(slot, false), interval, priority); +} + /* Note that this is our equivalent of g_timeout_add_seconds(). */ sigc::connection SignalTimeout::connect_seconds(const sigc::slot<bool>& slot, unsigned int interval, int priority) @@ -333,6 +339,12 @@ sigc::connection SignalTimeout::connect_seconds(const sigc::slot<bool>& slot, return connection; } +void SignalTimeout::connect_seconds_once(const sigc::slot<void>& slot, + unsigned int interval, int priority) +{ + connect_seconds(sigc::bind_return(slot, false), interval, priority); +} + SignalTimeout signal_timeout() { return SignalTimeout(0); // 0 means default context @@ -368,6 +380,11 @@ sigc::connection SignalIdle::connect(const sigc::slot<bool>& slot, int priority) return connection; } +void SignalIdle::connect_once(const sigc::slot<void>& slot, int priority) +{ + connect(sigc::bind_return(slot, false), priority); +} + SignalIdle signal_idle() { return SignalIdle(0); // 0 means default context diff --git a/glib/glibmm/main.h b/glib/glibmm/main.h index 2d0b157c..85d7bcaf 100644 --- a/glib/glibmm/main.h +++ b/glib/glibmm/main.h @@ -160,6 +160,20 @@ public: sigc::connection connect(const sigc::slot<bool>& slot, unsigned int interval, int priority = PRIORITY_DEFAULT); + /** Connects an timeout handler that runs only once. + * This method takes a function pointer to a function with a void return + * and no parameters. After running once it is not called again. + * + * @see connect + * @param slot A slot to call when @a interval has elapsed. For example: + * @code + * void on_timeout_once() + * @endcode + * @param interval The timeout in milliseconds. + * @param priority The priority of the new event source. + */ + void connect_once(const sigc::slot<void>& slot, unsigned int interval, + int priority = PRIORITY_DEFAULT); /** Connects a timeout handler with whole second granularity. * @@ -191,6 +205,23 @@ public: sigc::connection connect_seconds(const sigc::slot<bool>& slot, unsigned int interval, int priority = PRIORITY_DEFAULT); + /** Connects an timeout handler that runs only once with whole second + * granularity. + * + * This method takes a function pointer to a function with a void return + * and no parameters. After running once it is not called again. + * + * @see connect_seconds + * @param slot A slot to call when @a interval has elapsed. For example: + * @code + * void on_timeout_once() + * @endcode + * @param interval The timeout in milliseconds. + * @param priority The priority of the new event source. + */ + void connect_seconds_once(const sigc::slot<void>& slot, unsigned int interval, + int priority = PRIORITY_DEFAULT); + private: GMainContext* context_; @@ -222,6 +253,12 @@ public: */ sigc::connection connect(const sigc::slot<bool>& slot, int priority = PRIORITY_DEFAULT_IDLE); + /** Connects an idle handler that runs only once. + * This method takes a function pointer to a function with a void return + * and no parameters. After running once it is not called again. + */ + void connect_once(const sigc::slot<void>& slot, int priority = PRIORITY_DEFAULT_IDLE); + private: GMainContext* context_; |