pygobject r828 - in trunk: . examples/gio gio tests
- From: johan svn gnome org
- To: svn-commits-list gnome org
- Subject: pygobject r828 - in trunk: . examples/gio gio tests
- Date: Fri, 18 Jul 2008 20:21:22 +0000 (UTC)
Author: johan
Date: Fri Jul 18 20:21:22 2008
New Revision: 828
URL: http://svn.gnome.org/viewvc/pygobject?rev=828&view=rev
Log:
* examples/gio/directory-async.py:
* gio/gfile.override:
* gio/gfileenumerator.override:
* gio/gio.defs:
* tests/test_gio.py:
Wrap gio.File.enumerate_children_async, add tests, docstring
and an example.
Also document gio.File.enumerate while we're at it.
Added:
trunk/examples/gio/
trunk/examples/gio/directory-async.py
Modified:
trunk/ChangeLog
trunk/gio/gfile.override
trunk/gio/gfileenumerator.override
trunk/gio/gio.defs
trunk/tests/test_gio.py
Added: trunk/examples/gio/directory-async.py
==============================================================================
--- (empty file)
+++ trunk/examples/gio/directory-async.py Fri Jul 18 20:21:22 2008
@@ -0,0 +1,14 @@
+import gobject
+import gio
+import gtk
+
+def callback(gfile, result):
+ for file_info in gfile.enumerate_children_finish(result):
+ print file_info.get_name()
+ loop.quit()
+
+gfile = gio.File("/")
+gfile.enumerate_children_async("standard::*", callback)
+
+loop = gobject.MainLoop()
+loop.run()
Modified: trunk/gio/gfile.override
==============================================================================
--- trunk/gio/gfile.override (original)
+++ trunk/gio/gfile.override Fri Jul 18 20:21:22 2008
@@ -200,9 +200,9 @@
return NULL;
g_file_load_contents_async(G_FILE(self->obj),
- cancellable,
- (GAsyncReadyCallback)async_result_callback_marshal,
- notify);
+ cancellable,
+ (GAsyncReadyCallback)async_result_callback_marshal,
+ notify);
Py_INCREF(Py_None);
return Py_None;
@@ -242,9 +242,67 @@
return Py_None;
}
}
+%%
+override g_file_enumerate_children_async kwargs
+static PyObject *
+_wrap_g_file_enumerate_children_async(PyGObject *self, PyObject *args, PyObject *kwargs)
+{
+ static char *kwlist[] = { "attributes", "flags", "callback",
+ "io_priority", "cancellable", "user_data", NULL };
+ PyGAsyncRequestNotify *notify;
+ char *attributes;
+ PyObject *py_flags = NULL;
+ int io_priority = G_PRIORITY_DEFAULT;
+ GFileQueryInfoFlags flags = G_FILE_QUERY_INFO_NONE;
+ GCancellable *cancellable = NULL;
+ PyGObject *py_cancellable = NULL;
+
+ notify = g_slice_new0(PyGAsyncRequestNotify);
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+ "sO|OiOO:GFile.enumerate_children_async",
+ kwlist,
+ &attributes,
+ ¬ify->callback,
+ &py_flags,
+ &io_priority,
+ &py_cancellable,
+ ¬ify->data))
+ {
+ g_slice_free(PyGAsyncRequestNotify, notify);
+ return NULL;
+ }
+
+ if (!PyCallable_Check(notify->callback))
+ {
+ PyErr_SetString(PyExc_TypeError, "callback argument not callable");
+ g_slice_free(PyGAsyncRequestNotify, notify);
+ return NULL;
+ }
+ Py_INCREF(notify->callback);
+ Py_XINCREF(notify->data);
+
+ if (py_flags && pyg_flags_get_value(G_TYPE_FILE_QUERY_INFO_FLAGS,
+ py_flags, (gpointer)&flags))
+ return NULL;
+
+ if (!pygio_check_cancellable(py_cancellable, &cancellable))
+ return NULL;
+
+ g_file_enumerate_children_async(G_FILE(self->obj),
+ attributes,
+ flags,
+ io_priority,
+ (GCancellable *) cancellable,
+ (GAsyncReadyCallback)async_result_callback_marshal,
+ notify);
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
/* GFile.append_to_async */
/* GFile.create_async */
-/* GFile.enumerate_children_async */
/* GFile.eject_mountable */
/* GFile.find_enclosing_mount_async */
/* GFile.mount_enclosing_volume */
Modified: trunk/gio/gfileenumerator.override
==============================================================================
--- trunk/gio/gfileenumerator.override (original)
+++ trunk/gio/gfileenumerator.override Fri Jul 18 20:21:22 2008
@@ -24,6 +24,7 @@
static PyObject*
_wrap_g_file_enumerator_tp_iter(PyGObject *self)
{
+ Py_INCREF (self);
return (PyObject *) self;
}
%%
@@ -34,12 +35,18 @@
GFileInfo *file_info;
GError *error = NULL;
+ if (!iter->obj) {
+ PyErr_SetNone(PyExc_StopIteration);
+ return NULL;
+ }
+
file_info = g_file_enumerator_next_file(G_FILE_ENUMERATOR(iter->obj),
NULL,
&error);
if (pyg_error_check(&error)) {
return NULL;
}
+
if (!file_info) {
PyErr_SetNone(PyExc_StopIteration);
return NULL;
Modified: trunk/gio/gio.defs
==============================================================================
--- trunk/gio/gio.defs (original)
+++ trunk/gio/gio.defs Fri Jul 18 20:21:22 2008
@@ -1499,6 +1499,27 @@
)
(define-method enumerate_children
+ (docstring
+"F.enumerate_children(attributes, [flags, cancellable]) -> enumerator\n"
+"Gets the requested information about the files in a directory.\n"
+"The result is a gio.FileEnumerator object that will give out gio.FileInfo\n"
+"objects for all the files in the directory.\n"
+"The attribute value is a string that specifies the file attributes that\n"
+"should be gathered. It is not an error if it's not possible to read a \n"
+"particular requested attribute from a file - it just won't be set.\n"
+"attribute should be a comma-separated list of attribute or attribute\n"
+"wildcards. The wildcard \"*\" means all attributes, and a wildcard like\n"
+"\"standard::*\" means all attributes in the standard namespace.\n"
+"An example attribute query be \"standard::*,owner::user\". The standard\n"
+"attributes are available as defines, like gio.FILE_ATTRIBUTE_STANDARD_NAME.\n"
+"\n"
+"If cancellable is not None, then the operation can be cancelled by\n"
+"triggering the cancellable object from another thread. If the operation was\n"
+"cancelled, the error gio.ERROR_CANCELLED will be returned.\n"
+"\n"
+"If the file does not exist, the gio.ERROR_NOT_FOUND error will be returned.\n"
+"If the file is not a directory, the gio.FILE_ERROR_NOTDIR error will\n"
+"be returned. Other errors are possible too.")
(of-object "GFile")
(c-name "g_file_enumerate_children")
(return-type "GFileEnumerator*")
@@ -1511,6 +1532,18 @@
)
(define-method enumerate_children_async
+ (docstring
+"F.enumerate_children_async(attributes, callback,\n"
+" [flags, io_priority, cancellable, user_data])\n"
+"Asynchronously gets the requested information about the files in a directory.\n"
+"The result is a GFileEnumerator object that will give out GFileInfo objects\n"
+"for all the files in the directory.\n"
+"\n"
+"For more details, see gio.File.enumerate_children() which is the synchronous\n"
+"version of this call.\n"
+"\n"
+"When the operation is finished, callback will be called. You can then call\n"
+"gio.File.enumerate_children_finish() to get the result of the operation.")
(of-object "GFile")
(c-name "g_file_enumerate_children_async")
(return-type "none")
Modified: trunk/tests/test_gio.py
==============================================================================
--- trunk/tests/test_gio.py (original)
+++ trunk/tests/test_gio.py Fri Jul 18 20:21:22 2008
@@ -61,7 +61,7 @@
self.assertRaises(TypeError, gio.File, foo="bar")
self.assertRaises(TypeError, gio.File, uri=1)
self.assertRaises(TypeError, gio.File, path=1)
-
+
def testLoadContents(self):
self._f.write("testing load_contents")
self._f.seek(0)
@@ -70,11 +70,11 @@
self.assertEqual(cont, "testing load_contents")
self.assertEqual(leng, 21)
self.assertNotEqual(etag, '')
-
+
def testLoadContentsAsync(self):
self._f.write("testing load_contents_async")
self._f.seek(0)
-
+
def callback(contents, result):
try:
cont, leng, etag = contents.load_contents_finish(result)
@@ -83,10 +83,10 @@
self.assertNotEqual(etag, '')
finally:
loop.quit()
-
+
canc = gio.Cancellable()
self.file.load_contents_async(callback, cancellable=canc)
-
+
loop = gobject.MainLoop()
loop.run()
@@ -103,6 +103,22 @@
else:
raise AssertionError
+ def testEnumerateChildrenAsync(self):
+ def callback(gfile, result):
+ try:
+ for file_info in gfile.enumerate_children_finish(result):
+ if file_info.get_name() == 'test_gio.py':
+ break
+ else:
+ raise AssertionError
+ finally:
+ loop.quit()
+
+ self.file.enumerate_children_async(
+ "standard::*", callback)
+ loop = gobject.MainLoop()
+ loop.run()
+
class TestInputStream(unittest.TestCase):
def setUp(self):
@@ -264,14 +280,14 @@
self.failUnless(isinstance(mounts, list))
if not mounts:
return
-
+
self.failUnless(isinstance(mounts[0], gio.Mount))
# Bug 538601
icon = mounts[0].get_icon()
if not icon:
return
self.failUnless(isinstance(icon, gio.Icon))
-
+
class TestThemedIcon(unittest.TestCase):
def setUp(self):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]