[glibmm] add Gio::Cancellable::connect() and disconnect()
- From: Jonathon Jongsma <jjongsma src gnome org>
- To: svn-commits-list gnome org
- Subject: [glibmm] add Gio::Cancellable::connect() and disconnect()
- Date: Sun, 17 May 2009 01:06:10 -0400 (EDT)
commit 9431f948b104acbc5b6819d80b13716c0ccbef55
Author: Jonathon Jongsma <jonathon quotidian org>
Date: Sun May 17 00:04:57 2009 -0500
add Gio::Cancellable::connect() and disconnect()
---
ChangeLog | 5 +++++
gio/src/cancellable.ccg | 27 +++++++++++++++++++++++++++
gio/src/cancellable.hg | 7 +++++++
3 files changed, 39 insertions(+), 0 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index d2a6933..1815776 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2009-05-16 Jonathon Jongsma <jonathon quotidian org>
+ * gio/src/cancellable.ccg:
+ * gio/src/cancellable.hg: add connect() and disconnect() functions
+
+2009-05-16 Jonathon Jongsma <jonathon quotidian org>
+
* gio/src/gio_docs.xml:
* gio/src/gio_methods.defs: update some defs
diff --git a/gio/src/cancellable.ccg b/gio/src/cancellable.ccg
index f87a48e..b9b0723 100644
--- a/gio/src/cancellable.ccg
+++ b/gio/src/cancellable.ccg
@@ -21,5 +21,32 @@
namespace Gio {
+extern "C" {
+
+void delete_slot(gpointer data)
+{
+ Cancellable::SlotCancelledCallback* callback =
+ reinterpret_cast<Cancellable::SlotCancelledCallback*>(data);
+ delete callback;
+}
+
+void slot_cancelled_proxy(GCancellable * /*cancellable*/, gpointer data)
+{
+ Cancellable::SlotCancelledCallback* callback =
+ reinterpret_cast<Cancellable::SlotCancelledCallback*>(data);
+ (*callback)();
+}
+
+} // extern "C"
+
+gulong
+Cancellable::connect(const SlotCancelledCallback& callback)
+{
+ SlotCancelledCallback* slot_copy = new SlotCancelledCallback(callback);
+ return g_cancellable_connect (gobj(),
+ G_CALLBACK(slot_cancelled_proxy),
+ slot_copy,
+ &delete_slot);
+}
} // namespace Gio
diff --git a/gio/src/cancellable.hg b/gio/src/cancellable.hg
index 777d0e0..9a9c9b2 100644
--- a/gio/src/cancellable.hg
+++ b/gio/src/cancellable.hg
@@ -39,6 +39,8 @@ protected:
_CTOR_DEFAULT
public:
+ typedef sigc::slot<void> SlotCancelledCallback;
+
_WRAP_CREATE()
_WRAP_METHOD(bool is_cancelled() const, g_cancellable_is_cancelled)
@@ -62,6 +64,11 @@ public:
// TODO: is this useful in the C++ API?
//_WRAP_METHOD(void make_pollfd(PollFD* pollfd), g_cancellable_make_pollfd)
+ _WRAP_METHOD_DOCS_ONLY(g_cancellable_connect)
+ gulong connect(const SlotCancelledCallback& callback);
+ _IGNORE(g_cancellable_connect)
+ _WRAP_METHOD(void disconnect(gulong handler_id), g_cancellable_disconnect)
+
_WRAP_SIGNAL(void cancelled(), cancelled)
};
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]