[pygobject] Wrap gio.FileIOStream.query_info_async() and add a test



commit 0fe00109c4f6fc27cbaae9b0a24ecfac71355d2f
Author: Gian Mario Tagliaretti <gianmt gnome org>
Date:   Tue Dec 29 09:54:05 2009 +0100

    Wrap gio.FileIOStream.query_info_async() and add a test

 gio/Makefile.am            |    1 +
 gio/gfileiostream.override |   68 ++++++++++++++++++++++++++++++++++++++++++++
 gio/gio.override           |    1 +
 tests/test_gio.py          |   18 +++++++++++
 4 files changed, 88 insertions(+), 0 deletions(-)
---
diff --git a/gio/Makefile.am b/gio/Makefile.am
index ae2c2b3..1c5b41f 100644
--- a/gio/Makefile.am
+++ b/gio/Makefile.am
@@ -46,6 +46,7 @@ GIO_OVERRIDES = 			\
 	gfileenumerator.override	\
 	gfileinfo.override		\
 	gfileinputstream.override	\
+	gfileiostream.override		\
 	gfileoutputstream.override	\
 	gicon.override			\
 	giostream.override		\
diff --git a/gio/gfileiostream.override b/gio/gfileiostream.override
new file mode 100644
index 0000000..7be6124
--- /dev/null
+++ b/gio/gfileiostream.override
@@ -0,0 +1,68 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * pygobject - Python bindings for GObject
+ * Copyright (C) 2009  Gian Mario Tagliaretti
+ *
+ *   gfileiostream.override: module overrides for GFileIOStream
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+%%
+override g_file_io_stream_query_info_async kwargs
+static PyObject *
+_wrap_g_file_io_stream_query_info_async(PyGObject *self,
+                                           PyObject *args,
+                                           PyObject *kwargs)
+{
+    static char *kwlist[] = { "attributes", "callback",
+                              "io_priority", "cancellable", "user_data", NULL };
+    GCancellable *cancellable;
+    PyGObject *pycancellable = NULL;
+    int io_priority = G_PRIORITY_DEFAULT;
+    char *attributes;
+    PyGIONotify *notify;
+
+    notify = pygio_notify_new();
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+                                "sO|iOO:gio.FileIOStream.query_info_async",
+                                kwlist,
+                                &attributes,
+                                &notify->callback,
+                                &io_priority,
+                                &pycancellable,
+                                &notify->data))
+
+    if (!pygio_notify_callback_is_valid(notify))
+        goto error;
+
+    if (!pygio_check_cancellable(pycancellable, &cancellable))
+        goto error;
+
+    pygio_notify_reference_callback(notify);
+
+    g_file_io_stream_query_info_async(G_FILE_IO_STREAM(self->obj),
+                         attributes, io_priority, cancellable,
+                         (GAsyncReadyCallback)async_result_callback_marshal,
+                         notify);
+
+    Py_INCREF(Py_None);
+    return Py_None;
+
+ error:
+    pygio_notify_free(notify);
+    return NULL;
+}
diff --git a/gio/gio.override b/gio/gio.override
index 172395b..c9b13c3 100644
--- a/gio/gio.override
+++ b/gio/gio.override
@@ -238,6 +238,7 @@ include
   gfileenumerator.override
   gfileinfo.override
   gfileinputstream.override
+  gfileiostream.override
   gfileoutputstream.override
   gicon.override
   giostream.override
diff --git a/tests/test_gio.py b/tests/test_gio.py
index 49d83e8..a9ef159 100644
--- a/tests/test_gio.py
+++ b/tests/test_gio.py
@@ -1093,3 +1093,21 @@ class TestIOStream(unittest.TestCase):
 
         loop = glib.MainLoop()
         loop.run()
+
+
+    def testQueryInfoAsync(self):
+        def callback(stream, result):
+            try:
+                info = stream.query_info_finish(result)
+                self.failUnless(isinstance(info, gio.FileInfo))
+                self.failUnless(info.get_attribute_uint64("standard::size"), 7)
+            finally:
+                loop.quit()
+        
+        ostream = self.iofile.get_output_stream()
+        ostream.write("testing")
+
+        self.iofile.query_info_async("standard", callback)
+
+        loop = glib.MainLoop()
+        loop.run()



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]