diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rwxr-xr-x | atk/atkstreamablecontent.c | 35 | ||||
-rwxr-xr-x | atk/atkstreamablecontent.h | 24 |
3 files changed, 63 insertions, 3 deletions
@@ -1,3 +1,10 @@ +2006-06-14 Bill Haneman <bill.haneman@sun.com> + + * atk/atkstreamablecontent.h, atkstreamablecontent.c: + (atk_streamable_content_get_uri): New method, returns a string + representing a URI from which content may be streamed. + See RFE #344885. + 2006-06-08 Bill Haneman <bill.haneman@sun.com> * atk/Makefile.am: Added $(srcfile) to win32 diff --git a/atk/atkstreamablecontent.c b/atk/atkstreamablecontent.c index 6b56456..969e57e 100755 --- a/atk/atkstreamablecontent.c +++ b/atk/atkstreamablecontent.c @@ -116,3 +116,38 @@ atk_streamable_content_get_stream (AtkStreamableContent *streamable, else return NULL; } + +/* + * atk_streamable_content_get_uri: + * @streamable: a GObject instance that implements AtkStreamableContentIface + * @mime_type: a gchar* representing the mime type, or NULL to request a URI + * for the default mime type. + * + * Get a string representing a URI in IETF standard format + * (see http://www.ietf.org/rfc/rfc2396.txt) from which the object's content + * may be streamed in the specified mime-type, if one is available. + * If mime_type is NULL, the URI for the default (and possibly only) mime-type is + * returned. + * + * Note that it is possible for get_uri to return NULL but for + * get_stream to work nonetheless, since not all GIOChannels connect to URIs. + * + * Returns: Returns a string representing a URI, or NULL if no corresponding URI + * can be constructed. + */ + GIOChannel* +atk_streamable_content_get_uri (AtkStreamableContent *streamable, + const gchar *mime_type) +{ + AtkStreamableContentIface *iface; + + g_return_val_if_fail (mime_type != NULL, NULL); + g_return_val_if_fail (ATK_IS_STREAMABLE_CONTENT (streamable), NULL); + + iface = ATK_STREAMABLE_CONTENT_GET_IFACE (streamable); + + if (iface->get_uri) + return (iface->get_uri) (streamable, mime_type); + else + return NULL; +} diff --git a/atk/atkstreamablecontent.h b/atk/atkstreamablecontent.h index 718120c..eb7f56e 100755 --- a/atk/atkstreamablecontent.h +++ b/atk/atkstreamablecontent.h @@ -48,7 +48,8 @@ struct _AtkStreamableContentIface /* * Gets the specified mime type supported by this object. * The mime types are 0-based so the first mime type is - * at index 0, the second at index 1 and so on. + * at index 0, the second at index 1 and so on. The mime-type + * at index 0 should be considered the "default" data type for the stream. * * This assumes that the strings for the mime types are stored in the * AtkStreamableContent. Alternatively the G_CONST_RETURN could be removed @@ -58,7 +59,7 @@ struct _AtkStreamableContentIface G_CONST_RETURN gchar* (* get_mime_type) (AtkStreamableContent *streamable, gint i); /* - * Is one possible implementation for this method that it constructs the + * One possible implementation for this method is that it constructs the * content appropriate for the mime type and then creates a temporary * file containing the content, opens the file and then calls * g_io_channel_unix_new_fd(). @@ -66,10 +67,24 @@ struct _AtkStreamableContentIface GIOChannel* (* get_stream) (AtkStreamableContent *streamable, const gchar *mime_type); +/* + * Returns a string representing a URI in IETF standard format + * (see http://www.ietf.org/rfc/rfc2396.txt) from which the object's content + * may be streamed in the specified mime-type. + * If mime_type is NULL, the URI for the default (and possibly only) mime-type is + * returned. + * + * returns NULL if the mime-type is not supported, or if no URI can be + * constructed. Note that it is possible for get_uri to return NULL but for + * get_stream to work nonetheless, since not all GIOChannels connect to URIs. + */ + G_CONST_RETURN gchar* (* get_uri) (AtkStreamableContent *streamable, + const gchar *mime_type); + + AtkFunction pad1; AtkFunction pad2; AtkFunction pad3; - AtkFunction pad4; }; GType atk_streamable_content_get_type (void); @@ -79,6 +94,9 @@ G_CONST_RETURN gchar* atk_streamable_content_get_mime_type (AtkStreamableCon gint i); GIOChannel* atk_streamable_content_get_stream (AtkStreamableContent *streamable, const gchar *mime_type); +); +gchar* atk_streamable_content_get_uri (AtkStreamableContent *streamable, + const gchar *mime_type); #ifdef __cplusplus |