[gnome-shell] shell: move non-ShellGlobal functions from shell-global to shell-util
- From: Dan Winship <danw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] shell: move non-ShellGlobal functions from shell-global to shell-util
- Date: Mon, 16 May 2011 18:53:18 +0000 (UTC)
commit 61577e176e873ec264aa42575a3d143ecfed167f
Author: Dan Winship <danw gnome org>
Date: Wed Mar 23 16:01:10 2011 -0400
shell: move non-ShellGlobal functions from shell-global to shell-util
shell-global had become a dumping ground for functions that didn't
have anywhere else to be. Make shell-util the dumping ground instead,
and have shell-global only have methods that involve the ShellGlobal
object.
https://bugzilla.gnome.org/show_bug.cgi?id=648755
src/shell-global.c | 214 ---------------------------------------------------
src/shell-global.h | 18 -----
src/shell-util.c | 217 +++++++++++++++++++++++++++++++++++++++++++++++++++-
src/shell-util.h | 18 +++++
4 files changed, 234 insertions(+), 233 deletions(-)
---
diff --git a/src/shell-global.c b/src/shell-global.c
index cdf9fcb..9cb2c50 100644
--- a/src/shell-global.c
+++ b/src/shell-global.c
@@ -22,9 +22,6 @@
#include <gio/gio.h>
#include <gjs/gjs-module.h>
#include <girepository.h>
-#include <libxml/parser.h>
-#include <libxml/tree.h>
-#include <libxml/xmlmemory.h>
#include <meta/display.h>
#include <meta/util.h>
@@ -1086,146 +1083,6 @@ shell_global_reexec_self (ShellGlobal *global)
}
/**
- * shell_breakpoint:
- *
- * Using G_BREAKPOINT(), interrupt the current process. This is useful
- * in conjunction with a debugger such as gdb.
- */
-void
-shell_breakpoint (void)
-{
- G_BREAKPOINT ();
-}
-
-/**
- * shell_parse_search_provider:
- * @data: description of provider
- * @name: (out): location to store a display name
- * @url: (out): location to store template of url
- * @langs: (out) (transfer full) (element-type utf8): list of supported languages
- * @icon_data_uri: (out): location to store uri
- * @error: location to store GError
- *
- * Returns: %TRUE on success
- */
-gboolean
-shell_parse_search_provider (const char *data,
- char **name,
- char **url,
- GList **langs,
- char **icon_data_uri,
- GError **error)
-{
- xmlDocPtr doc = xmlParseMemory (data, strlen(data));
- xmlNode *root;
-
- *name = NULL;
- *url = NULL;
- *icon_data_uri = NULL;
- *langs = NULL;
-
- if (!doc)
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "Malformed xml");
- return FALSE;
- }
-
- root = xmlDocGetRootElement (doc);
- if (root && root->name && xmlStrcmp (root->name, (const xmlChar *)"OpenSearchDescription") == 0)
- {
- xmlNode *child;
- for (child = root->children; child; child = child->next)
- {
- if (!child->name)
- continue;
- if (xmlStrcmp (child->name, (const xmlChar *)"Language") == 0)
- {
- xmlChar *val = xmlNodeListGetString(doc, child->xmlChildrenNode, 1);
- if (!val)
- continue;
- *langs = g_list_append (*langs, g_strdup ((char *)val));
- xmlFree (val);
- }
- if (!*name && xmlStrcmp (child->name, (const xmlChar *)"ShortName") == 0)
- {
- xmlChar *val = xmlNodeListGetString(doc, child->xmlChildrenNode, 1);
- *name = g_strdup ((char *)val);
- xmlFree (val);
- }
- if (!*icon_data_uri && xmlStrcmp (child->name, (const xmlChar *)"Image") == 0)
- {
- xmlChar *val = xmlNodeListGetString(doc, child->xmlChildrenNode, 1);
- if (val)
- *icon_data_uri = g_strdup ((char *)val);
- xmlFree (val);
- }
- if (!*url && xmlStrcmp (child->name, (const xmlChar *)"Url") == 0)
- {
- xmlChar *template;
- xmlChar *type;
-
- type = xmlGetProp(child, (const xmlChar *)"type");
- if (!type)
- continue;
-
- if (xmlStrcmp (type, (const xmlChar *)"text/html") != 0)
- {
- xmlFree (type);
- continue;
- }
- xmlFree (type);
-
- template = xmlGetProp(child, (const xmlChar *)"template");
- if (!template)
- continue;
- *url = g_strdup ((char *)template);
- xmlFree (template);
- }
- }
- }
- else
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "Invalid OpenSearch document");
- xmlFreeDoc (doc);
- return FALSE;
- }
- xmlFreeDoc (doc);
- if (*icon_data_uri && *name && *url)
- return TRUE;
-
- if (*icon_data_uri)
- g_free (*icon_data_uri);
- else
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "search provider doesn't have icon");
-
- if (*name)
- g_free (*name);
- else if (error && !*error)
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "search provider doesn't have ShortName");
-
- if (*url)
- g_free (*url);
- else if (error && !*error)
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "search provider doesn't have template for url");
-
- if (*langs)
- {
- g_list_foreach (*langs, (GFunc)g_free, NULL);
- g_list_free (*langs);
- }
-
- *url = NULL;
- *name = NULL;
- *icon_data_uri = NULL;
- *langs = NULL;
-
- return FALSE;
-}
-
-/**
* shell_global_gc:
* @global: A #ShellGlobal
*
@@ -1487,25 +1344,6 @@ shell_global_sync_pointer (ShellGlobal *global)
}
/**
- * shell_get_event_state:
- * @event: a #ClutterEvent
- *
- * Gets the current state of the event (the set of modifier keys that
- * are pressed down). Thhis is a wrapper around
- * clutter_event_get_state() that strips out any un-declared modifier
- * flags, to make gjs happy; see
- * https://bugzilla.gnome.org/show_bug.cgi?id=597292.
- *
- * Return value: the state from the event
- */
-ClutterModifierType
-shell_get_event_state (ClutterEvent *event)
-{
- ClutterModifierType state = clutter_event_get_state (event);
- return state & CLUTTER_MODIFIER_MASK;
-}
-
-/**
* shell_global_get_settings:
* @global: A #ShellGlobal
*
@@ -1520,26 +1358,6 @@ shell_global_get_settings (ShellGlobal *global)
}
/**
- * shell_write_string_to_stream:
- * @stream: a #GOutputStream
- * @str: a UTF-8 string to write to @stream
- * @error: location to store GError
- *
- * Write a string to a GOutputStream as UTF-8. This is a workaround
- * for not having binary buffers in GJS.
- *
- * Return value: %TRUE if write succeeded
- */
-gboolean
-shell_write_string_to_stream (GOutputStream *stream,
- const char *str,
- GError **error)
-{
- return g_output_stream_write_all (stream, str, strlen (str),
- NULL, NULL, error);
-}
-
-/**
* shell_global_get_current_time:
* @global: A #ShellGlobal
*
@@ -1968,35 +1786,3 @@ shell_global_launch_calendar_server (ShellGlobal *global)
g_free (calendar_server_exe);
}
-
-/**
- * shell_get_file_contents_utf8_sync:
- * @path: UTF-8 encoded filename path
- * @error: a #GError
- *
- * Synchronously load the contents of a file as a NUL terminated
- * string, validating it as UTF-8. Embedded NUL characters count as
- * invalid content.
- *
- * Returns: (transfer full): File contents
- */
-char *
-shell_get_file_contents_utf8_sync (const char *path,
- GError **error)
-{
- char *contents;
- gsize len;
- if (!g_file_get_contents (path, &contents, &len, error))
- return NULL;
- if (!g_utf8_validate (contents, len, NULL))
- {
- g_free (contents);
- g_set_error (error,
- G_IO_ERROR,
- G_IO_ERROR_FAILED,
- "File %s contains invalid UTF-8",
- path);
- return NULL;
- }
- return contents;
-}
diff --git a/src/shell-global.h b/src/shell-global.h
index 67e657f..0b849aa 100644
--- a/src/shell-global.h
+++ b/src/shell-global.h
@@ -73,15 +73,6 @@ void shell_global_end_modal (ShellGlobal *global,
void shell_global_reexec_self (ShellGlobal *global);
-void shell_breakpoint (void);
-
-gboolean shell_parse_search_provider (const char *data,
- char **name,
- char **url,
- GList **langs,
- char **icon_data_uri,
- GError **error);
-
void shell_global_gc (ShellGlobal *global);
void shell_global_maybe_gc (ShellGlobal *global);
@@ -105,12 +96,6 @@ void shell_global_sync_pointer (ShellGlobal *global);
GSettings *shell_global_get_settings (ShellGlobal *global);
-ClutterModifierType shell_get_event_state (ClutterEvent *event);
-
-gboolean shell_write_string_to_stream (GOutputStream *stream,
- const char *str,
- GError **error);
-
guint32 shell_global_get_current_time (ShellGlobal *global);
GAppLaunchContext *shell_global_create_app_launch_context (ShellGlobal *global);
@@ -145,9 +130,6 @@ void shell_global_init_xdnd (ShellGlobal *global);
void shell_global_launch_calendar_server (ShellGlobal *global);
-char *shell_get_file_contents_utf8_sync (const char *path,
- GError **error);
-
G_END_DECLS
#endif /* __SHELL_GLOBAL_H__ */
diff --git a/src/shell-util.c b/src/shell-util.c
index 0ff9d12..7ecd8a3 100644
--- a/src/shell-util.c
+++ b/src/shell-util.c
@@ -7,7 +7,11 @@
#include <gconf/gconf-client.h>
#include <gtk/gtk.h>
-/* The code in this file adapted under the GPLv2+ from:
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+#include <libxml/xmlmemory.h>
+
+/* Some code in this file adapted under the GPLv2+ from:
*
* GNOME panel utils: gnome-panel/gnome-panel/panel-util.c
* (C) 1997, 1998, 1999, 2000 The Free Software Foundation
@@ -533,3 +537,214 @@ shell_util_format_date (const char *format,
g_date_time_unref (datetime);
return result;
}
+
+/**
+ * shell_get_event_state:
+ * @event: a #ClutterEvent
+ *
+ * Gets the current state of the event (the set of modifier keys that
+ * are pressed down). Thhis is a wrapper around
+ * clutter_event_get_state() that strips out any un-declared modifier
+ * flags, to make gjs happy; see
+ * https://bugzilla.gnome.org/show_bug.cgi?id=597292.
+ *
+ * Return value: the state from the event
+ */
+ClutterModifierType
+shell_get_event_state (ClutterEvent *event)
+{
+ ClutterModifierType state = clutter_event_get_state (event);
+ return state & CLUTTER_MODIFIER_MASK;
+}
+
+/**
+ * shell_write_string_to_stream:
+ * @stream: a #GOutputStream
+ * @str: a UTF-8 string to write to @stream
+ * @error: location to store GError
+ *
+ * Write a string to a GOutputStream as UTF-8. This is a workaround
+ * for not having binary buffers in GJS.
+ *
+ * Return value: %TRUE if write succeeded
+ */
+gboolean
+shell_write_string_to_stream (GOutputStream *stream,
+ const char *str,
+ GError **error)
+{
+ return g_output_stream_write_all (stream, str, strlen (str),
+ NULL, NULL, error);
+}
+
+/**
+ * shell_get_file_contents_utf8_sync:
+ * @path: UTF-8 encoded filename path
+ * @error: a #GError
+ *
+ * Synchronously load the contents of a file as a NUL terminated
+ * string, validating it as UTF-8. Embedded NUL characters count as
+ * invalid content.
+ *
+ * Returns: (transfer full): File contents
+ */
+char *
+shell_get_file_contents_utf8_sync (const char *path,
+ GError **error)
+{
+ char *contents;
+ gsize len;
+ if (!g_file_get_contents (path, &contents, &len, error))
+ return NULL;
+ if (!g_utf8_validate (contents, len, NULL))
+ {
+ g_free (contents);
+ g_set_error (error,
+ G_IO_ERROR,
+ G_IO_ERROR_FAILED,
+ "File %s contains invalid UTF-8",
+ path);
+ return NULL;
+ }
+ return contents;
+}
+
+/**
+ * shell_breakpoint:
+ *
+ * Using G_BREAKPOINT(), interrupt the current process. This is useful
+ * in conjunction with a debugger such as gdb.
+ */
+void
+shell_breakpoint (void)
+{
+ G_BREAKPOINT ();
+}
+
+/**
+ * shell_parse_search_provider:
+ * @data: description of provider
+ * @name: (out): location to store a display name
+ * @url: (out): location to store template of url
+ * @langs: (out) (transfer full) (element-type utf8): list of supported languages
+ * @icon_data_uri: (out): location to store uri
+ * @error: location to store GError
+ *
+ * Returns: %TRUE on success
+ */
+gboolean
+shell_parse_search_provider (const char *data,
+ char **name,
+ char **url,
+ GList **langs,
+ char **icon_data_uri,
+ GError **error)
+{
+ xmlDocPtr doc = xmlParseMemory (data, strlen (data));
+ xmlNode *root;
+
+ *name = NULL;
+ *url = NULL;
+ *icon_data_uri = NULL;
+ *langs = NULL;
+
+ if (!doc)
+ {
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "Malformed xml");
+ return FALSE;
+ }
+
+ root = xmlDocGetRootElement (doc);
+ if (root && root->name && xmlStrcmp (root->name, (const xmlChar *)"OpenSearchDescription") == 0)
+ {
+ xmlNode *child;
+ for (child = root->children; child; child = child->next)
+ {
+ if (!child->name)
+ continue;
+ if (xmlStrcmp (child->name, (const xmlChar *)"Language") == 0)
+ {
+ xmlChar *val = xmlNodeListGetString(doc, child->xmlChildrenNode, 1);
+ if (!val)
+ continue;
+ *langs = g_list_append (*langs, g_strdup ((char *)val));
+ xmlFree (val);
+ }
+ if (!*name && xmlStrcmp (child->name, (const xmlChar *)"ShortName") == 0)
+ {
+ xmlChar *val = xmlNodeListGetString(doc, child->xmlChildrenNode, 1);
+ *name = g_strdup ((char *)val);
+ xmlFree (val);
+ }
+ if (!*icon_data_uri && xmlStrcmp (child->name, (const xmlChar *)"Image") == 0)
+ {
+ xmlChar *val = xmlNodeListGetString(doc, child->xmlChildrenNode, 1);
+ if (val)
+ *icon_data_uri = g_strdup ((char *)val);
+ xmlFree (val);
+ }
+ if (!*url && xmlStrcmp (child->name, (const xmlChar *)"Url") == 0)
+ {
+ xmlChar *template;
+ xmlChar *type;
+
+ type = xmlGetProp(child, (const xmlChar *)"type");
+ if (!type)
+ continue;
+
+ if (xmlStrcmp (type, (const xmlChar *)"text/html") != 0)
+ {
+ xmlFree (type);
+ continue;
+ }
+ xmlFree (type);
+
+ template = xmlGetProp(child, (const xmlChar *)"template");
+ if (!template)
+ continue;
+ *url = g_strdup ((char *)template);
+ xmlFree (template);
+ }
+ }
+ }
+ else
+ {
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "Invalid OpenSearch document");
+ xmlFreeDoc (doc);
+ return FALSE;
+ }
+ xmlFreeDoc (doc);
+ if (*icon_data_uri && *name && *url)
+ return TRUE;
+
+ if (*icon_data_uri)
+ g_free (*icon_data_uri);
+ else
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ "search provider doesn't have icon");
+
+ if (*name)
+ g_free (*name);
+ else if (error && !*error)
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ "search provider doesn't have ShortName");
+
+ if (*url)
+ g_free (*url);
+ else if (error && !*error)
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ "search provider doesn't have template for url");
+
+ if (*langs)
+ {
+ g_list_foreach (*langs, (GFunc)g_free, NULL);
+ g_list_free (*langs);
+ }
+
+ *url = NULL;
+ *name = NULL;
+ *icon_data_uri = NULL;
+ *langs = NULL;
+
+ return FALSE;
+}
diff --git a/src/shell-util.h b/src/shell-util.h
index 7da5476..b495beb 100644
--- a/src/shell-util.h
+++ b/src/shell-util.h
@@ -19,6 +19,24 @@ void shell_util_get_transformed_allocation (ClutterActor *actor,
char *shell_util_format_date (const char *format,
gint64 time_ms);
+ClutterModifierType shell_get_event_state (ClutterEvent *event);
+
+gboolean shell_write_string_to_stream (GOutputStream *stream,
+ const char *str,
+ GError **error);
+
+char *shell_get_file_contents_utf8_sync (const char *path,
+ GError **error);
+
+void shell_breakpoint (void);
+
+gboolean shell_parse_search_provider (const char *data,
+ char **name,
+ char **url,
+ GList **langs,
+ char **icon_data_uri,
+ GError **error);
+
G_END_DECLS
#endif /* __SHELL_UTIL_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]