summaryrefslogtreecommitdiff
path: root/capplets/default-applications/mate-da-xml.c
diff options
context:
space:
mode:
Diffstat (limited to 'capplets/default-applications/mate-da-xml.c')
-rw-r--r--capplets/default-applications/mate-da-xml.c391
1 files changed, 233 insertions, 158 deletions
diff --git a/capplets/default-applications/mate-da-xml.c b/capplets/default-applications/mate-da-xml.c
index 4105f2ce..ba41aa1f 100644
--- a/capplets/default-applications/mate-da-xml.c
+++ b/capplets/default-applications/mate-da-xml.c
@@ -2,6 +2,7 @@
* Authors: Luca Cavalli <[email protected]>
*
* Copyright 2005-2006 Luca Cavalli
+ * Copyright 2010 Perberos <[email protected]>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of version 2 of the GNU General Public License
@@ -28,8 +29,7 @@
#include "mate-da-item.h"
-static gboolean
-mate_da_xml_get_bool (const xmlNode *parent, const gchar *val_name)
+static gboolean mate_da_xml_get_bool(const xmlNode* parent, const gchar* val_name)
{
xmlNode *element;
gboolean ret_val = FALSE;
@@ -60,8 +60,7 @@ mate_da_xml_get_bool (const xmlNode *parent, const gchar *val_name)
return ret_val;
}
-static gchar*
-mate_da_xml_get_string (const xmlNode *parent, const gchar *val_name)
+static gchar* mate_da_xml_get_string(const xmlNode* parent, const gchar* val_name)
{
const gchar * const *sys_langs;
xmlChar *node_lang;
@@ -108,176 +107,250 @@ mate_da_xml_get_string (const xmlNode *parent, const gchar *val_name)
return ret_val;
}
-static gboolean
-is_executable_valid (gchar *executable)
+static gboolean is_executable_valid(gchar* executable)
{
- gchar *path;
+ gchar* path = g_find_program_in_path(executable);
- path = g_find_program_in_path (executable);
-
- if (path) {
- g_free (path);
- return TRUE;
- }
+ if (path)
+ {
+ g_free (path);
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
-static void
-mate_da_xml_load_xml (MateDACapplet *capplet, const gchar * filename)
+static void mate_da_xml_load_xml(MateDACapplet* capplet, const gchar* filename)
{
- xmlDoc *xml_doc;
- xmlNode *root, *section, *element;
- gchar *executable;
- MateDAWebItem *web_item;
- MateDASimpleItem *mail_item;
- MateDASimpleItem *media_item;
- MateDATermItem *term_item;
- MateDAVisualItem *visual_item;
- MateDAMobilityItem *mobility_item;
-
- xml_doc = xmlParseFile (filename);
-
- if (!xml_doc)
- return;
-
- root = xmlDocGetRootElement (xml_doc);
-
- for (section = root->children; section != NULL; section = section->next) {
- if (!xmlStrncmp(section->name, (const xmlChar*) "web-browsers", strlen("web-browsers"))) {
- for (element = section->children; element != NULL; element = element->next) {
- if (!xmlStrncmp (element->name, (const xmlChar*) "web-browser", strlen("web-browser"))) {
- executable = mate_da_xml_get_string (element, "executable");
- if (is_executable_valid (executable)) {
- web_item = mate_da_web_item_new ();
-
- web_item->generic.name = mate_da_xml_get_string (element, "name");
- web_item->generic.executable = executable;
- web_item->generic.command = mate_da_xml_get_string (element, "command");
- web_item->generic.icon_name = mate_da_xml_get_string (element, "icon-name");
-
- web_item->run_in_terminal = mate_da_xml_get_bool (element, "run-in-terminal");
- web_item->netscape_remote = mate_da_xml_get_bool (element, "netscape-remote");
- if (web_item->netscape_remote) {
- web_item->tab_command = mate_da_xml_get_string (element, "tab-command");
- web_item->win_command = mate_da_xml_get_string (element, "win-command");
- }
-
- capplet->web_browsers = g_list_append (capplet->web_browsers, web_item);
- }
- else
- g_free (executable);
- }
- }
+ xmlDoc* xml_doc;
+ xmlNode* root;
+ xmlNode* section;
+ xmlNode* element;
+ gchar* executable;
+ MateDAWebItem* web_item;
+ MateDASimpleItem* mail_item;
+ MateDASimpleItem* media_item;
+ MateDATermItem* term_item;
+ MateDAVisualItem* visual_item;
+ MateDAMobilityItem* mobility_item;
+ MateDAImageItem* image_item;
+
+ xml_doc = xmlParseFile(filename);
+
+ if (!xml_doc)
+ {
+ return;
}
- else if (!xmlStrncmp (section->name, (const xmlChar*) "mail-readers", strlen("mail-readers"))) {
- for (element = section->children; element != NULL; element = element->next) {
- if (!xmlStrncmp (element->name, (const xmlChar*) "mail-reader", strlen("mail-reader"))) {
- executable = mate_da_xml_get_string (element, "executable");
- if (is_executable_valid (executable)) {
- mail_item = mate_da_simple_item_new ();
- mail_item->generic.name = mate_da_xml_get_string (element, "name");
- mail_item->generic.executable = executable;
- mail_item->generic.command = mate_da_xml_get_string (element, "command");
- mail_item->generic.icon_name = mate_da_xml_get_string (element, "icon-name");
+ root = xmlDocGetRootElement(xml_doc);
- mail_item->run_in_terminal = mate_da_xml_get_bool (element, "run-in-terminal");
-
- capplet->mail_readers = g_list_append (capplet->mail_readers, mail_item);
- }
- else
- g_free (executable);
+ for (section = root->children; section != NULL; section = section->next)
+ {
+ if (!xmlStrncmp(section->name, (const xmlChar*) "web-browsers", strlen("web-browsers")))
+ {
+ for (element = section->children; element != NULL; element = element->next)
+ {
+ if (!xmlStrncmp (element->name, (const xmlChar*) "web-browser", strlen("web-browser")))
+ {
+ executable = mate_da_xml_get_string (element, "executable");
+
+ if (is_executable_valid (executable))
+ {
+ web_item = mate_da_web_item_new();
+
+ web_item->generic.name = mate_da_xml_get_string(element, "name");
+ web_item->generic.executable = executable;
+ web_item->generic.command = mate_da_xml_get_string(element, "command");
+ web_item->generic.icon_name = mate_da_xml_get_string(element, "icon-name");
+
+ web_item->run_in_terminal = mate_da_xml_get_bool(element, "run-in-terminal");
+ web_item->netscape_remote = mate_da_xml_get_bool(element, "netscape-remote");
+ if (web_item->netscape_remote)
+ {
+ web_item->tab_command = mate_da_xml_get_string(element, "tab-command");
+ web_item->win_command = mate_da_xml_get_string(element, "win-command");
+ }
+
+ capplet->web_browsers = g_list_append(capplet->web_browsers, web_item);
+ }
+ else
+ {
+ g_free(executable);
+ }
+ }
+ }
}
- }
- }
- else if (!xmlStrncmp (section->name, (const xmlChar*) "terminals", strlen("terminals"))) {
- for (element = section->children; element != NULL; element = element->next) {
- if (!xmlStrncmp (element->name, (const xmlChar*) "terminal", strlen("terminal"))) {
- executable = mate_da_xml_get_string (element, "executable");
- if (is_executable_valid (executable)) {
- term_item = mate_da_term_item_new ();
-
- term_item->generic.name = mate_da_xml_get_string (element, "name");
- term_item->generic.executable = executable;
- term_item->generic.command = mate_da_xml_get_string (element, "command");
- term_item->generic.icon_name = mate_da_xml_get_string (element, "icon-name");
-
- term_item->exec_flag = mate_da_xml_get_string (element, "exec-flag");
-
- capplet->terminals = g_list_append (capplet->terminals, term_item);
- }
- else
- g_free (executable);
+ else if (!xmlStrncmp(section->name, (const xmlChar*) "mail-readers", strlen("mail-readers")))
+ {
+ for (element = section->children; element != NULL; element = element->next)
+ {
+ if (!xmlStrncmp (element->name, (const xmlChar*) "mail-reader", strlen("mail-reader")))
+ {
+ executable = mate_da_xml_get_string(element, "executable");
+
+ if (is_executable_valid(executable))
+ {
+ mail_item = mate_da_simple_item_new();
+
+ mail_item->generic.name = mate_da_xml_get_string(element, "name");
+ mail_item->generic.executable = executable;
+ mail_item->generic.command = mate_da_xml_get_string(element, "command");
+ mail_item->generic.icon_name = mate_da_xml_get_string(element, "icon-name");
+
+ mail_item->run_in_terminal = mate_da_xml_get_bool(element, "run-in-terminal");
+
+ capplet->mail_readers = g_list_append(capplet->mail_readers, mail_item);
+ }
+ else
+ {
+ g_free (executable);
+ }
+ }
+ }
}
- }
- }
- else if (!xmlStrncmp (section->name, (const xmlChar*) "music-players", strlen("music-players"))) {
- for (element = section->children; element != NULL; element = element->next) {
- if (!xmlStrncmp (element->name, (const xmlChar*) "music-player", strlen("music-player"))) {
- executable = mate_da_xml_get_string (element, "executable");
- if (is_executable_valid (executable)) {
- media_item = mate_da_simple_item_new ();
-
- media_item->generic.name = mate_da_xml_get_string (element, "name");
- media_item->generic.executable = executable;
- media_item->generic.command = mate_da_xml_get_string (element, "command");
- media_item->generic.icon_name = mate_da_xml_get_string (element, "icon-name");
-
- media_item->run_in_terminal = mate_da_xml_get_bool (element, "run-in-terminal");
-
- capplet->media_players = g_list_append (capplet->media_players, media_item);
- }
- else
- g_free (executable);
+ else if (!xmlStrncmp(section->name, (const xmlChar*) "terminals", strlen("terminals")))
+ {
+ for (element = section->children; element != NULL; element = element->next)
+ {
+ if (!xmlStrncmp (element->name, (const xmlChar*) "terminal", strlen("terminal")))
+ {
+ executable = mate_da_xml_get_string(element, "executable");
+
+ if (is_executable_valid(executable))
+ {
+ term_item = mate_da_term_item_new();
+
+ term_item->generic.name = mate_da_xml_get_string(element, "name");
+ term_item->generic.executable = executable;
+ term_item->generic.command = mate_da_xml_get_string(element, "command");
+ term_item->generic.icon_name = mate_da_xml_get_string(element, "icon-name");
+
+ term_item->exec_flag = mate_da_xml_get_string(element, "exec-flag");
+
+ capplet->terminals = g_list_append(capplet->terminals, term_item);
+ }
+ else
+ {
+ g_free(executable);
+ }
+ }
+ }
}
- }
- }
- else if (!xmlStrncmp (section->name, (const xmlChar*) "a11y-visual", strlen("a11y-visual"))) {
- for (element = section->children; element != NULL; element = element->next) {
- if (!xmlStrncmp (element->name, (const xmlChar*) "visual", strlen("visual"))) {
- executable = mate_da_xml_get_string (element,"executable");
- if (is_executable_valid (executable)) {
- visual_item = mate_da_visual_item_new ();
-
- visual_item->generic.name = mate_da_xml_get_string (element, "name");
- visual_item->generic.executable = executable;
- visual_item->generic.command = mate_da_xml_get_string (element, "command");
- visual_item->generic.icon_name = mate_da_xml_get_string (element, "icon-name");
-
- visual_item->run_at_startup = mate_da_xml_get_bool (element, "run-at-startup");
-
- capplet->visual_ats = g_list_append (capplet->visual_ats, visual_item);
- }
- else
- g_free (executable);
+ else if (!xmlStrncmp(section->name, (const xmlChar*) "music-players", strlen("music-players")))
+ {
+ for (element = section->children; element != NULL; element = element->next)
+ {
+ if (!xmlStrncmp (element->name, (const xmlChar*) "music-player", strlen("music-player")))
+ {
+ executable = mate_da_xml_get_string(element, "executable");
+
+ if (is_executable_valid(executable))
+ {
+ media_item = mate_da_simple_item_new();
+
+ media_item->generic.name = mate_da_xml_get_string (element, "name");
+ media_item->generic.executable = executable;
+ media_item->generic.command = mate_da_xml_get_string (element, "command");
+ media_item->generic.icon_name = mate_da_xml_get_string (element, "icon-name");
+
+ media_item->run_in_terminal = mate_da_xml_get_bool (element, "run-in-terminal");
+
+ capplet->media_players = g_list_append (capplet->media_players, media_item);
+ }
+ else
+ {
+ g_free(executable);
+ }
+ }
+ }
}
- }
- }
- else if (!xmlStrncmp (section->name, (const xmlChar*) "a11y-mobility", strlen("a11y-mobility"))) {
- for (element = section->children; element != NULL; element = element->next) {
- if (!xmlStrncmp (element->name, (const xmlChar*) "mobility", strlen("mobility"))) {
- executable = mate_da_xml_get_string (element,"executable");
- if (is_executable_valid (executable)) {
- mobility_item = mate_da_mobility_item_new ();
-
- mobility_item->generic.name = mate_da_xml_get_string (element, "name");
- mobility_item->generic.executable = executable;
- mobility_item->generic.command = mate_da_xml_get_string (element, "command");
- mobility_item->generic.icon_name = mate_da_xml_get_string (element, "icon-name");
-
- mobility_item->run_at_startup = mate_da_xml_get_bool (element, "run-at-startup");
-
- capplet->mobility_ats = g_list_append (capplet->mobility_ats, mobility_item);
- }
- else
- g_free (executable);
+ else if (!xmlStrncmp(section->name, (const xmlChar*) "image-viewers", strlen("image-viewers")))
+ {
+ for (element = section->children; element != NULL; element = element->next)
+ {
+ if (!xmlStrncmp(element->name, (const xmlChar*) "image-viewer", strlen("image-viewer")))
+ {
+ executable = mate_da_xml_get_string(element, "executable");
+
+ if (is_executable_valid(executable))
+ {
+ image_item = mate_da_image_item_new();
+
+ image_item->generic.name = mate_da_xml_get_string(element, "name");
+ image_item->generic.executable = executable;
+ image_item->generic.command = mate_da_xml_get_string(element, "command");
+ image_item->generic.icon_name = mate_da_xml_get_string(element, "icon-name");
+
+ image_item->run_in_terminal = mate_da_xml_get_bool(element, "run-in-terminal");
+
+ capplet->image_viewers = g_list_append(capplet->image_viewers, image_item);
+ }
+ else
+ {
+ g_free(executable);
+ }
+ }
+ }
+ }
+ else if (!xmlStrncmp(section->name, (const xmlChar*) "a11y-visual", strlen("a11y-visual")))
+ {
+ for (element = section->children; element != NULL; element = element->next)
+ {
+ if (!xmlStrncmp (element->name, (const xmlChar*) "visual", strlen("visual")))
+ {
+ executable = mate_da_xml_get_string (element,"executable");
+
+ if (is_executable_valid (executable))
+ {
+ visual_item = mate_da_visual_item_new();
+
+ visual_item->generic.name = mate_da_xml_get_string(element, "name");
+ visual_item->generic.executable = executable;
+ visual_item->generic.command = mate_da_xml_get_string(element, "command");
+ visual_item->generic.icon_name = mate_da_xml_get_string(element, "icon-name");
+
+ visual_item->run_at_startup = mate_da_xml_get_bool(element, "run-at-startup");
+
+ capplet->visual_ats = g_list_append(capplet->visual_ats, visual_item);
+ }
+ else
+ {
+ g_free(executable);
+ }
+ }
+ }
+ }
+ else if (!xmlStrncmp(section->name, (const xmlChar*) "a11y-mobility", strlen("a11y-mobility")))
+ {
+ for (element = section->children; element != NULL; element = element->next)
+ {
+ if (!xmlStrncmp(element->name, (const xmlChar*) "mobility", strlen("mobility")))
+ {
+ executable = mate_da_xml_get_string(element,"executable");
+
+ if (is_executable_valid (executable))
+ {
+ mobility_item = mate_da_mobility_item_new ();
+
+ mobility_item->generic.name = mate_da_xml_get_string (element, "name");
+ mobility_item->generic.executable = executable;
+ mobility_item->generic.command = mate_da_xml_get_string (element, "command");
+ mobility_item->generic.icon_name = mate_da_xml_get_string (element, "icon-name");
+
+ mobility_item->run_at_startup = mate_da_xml_get_bool (element, "run-at-startup");
+
+ capplet->mobility_ats = g_list_append (capplet->mobility_ats, mobility_item);
+ }
+ else
+ {
+ g_free (executable);
+ }
+ }
+ }
}
- }
}
- }
- xmlFreeDoc (xml_doc);
+ xmlFreeDoc(xml_doc);
}
void mate_da_xml_load_list(MateDACapplet* capplet)
@@ -314,6 +387,7 @@ void mate_da_xml_free(MateDACapplet* capplet)
g_list_foreach(capplet->visual_ats, (GFunc) mate_da_visual_item_free, NULL);
g_list_foreach(capplet->mobility_ats, (GFunc) mate_da_mobility_item_free, NULL);
//g_list_foreach(capplet->filemanagers, (GFunc) mate_da_filemanager_item_free, NULL);
+ g_list_foreach(capplet->image_viewers, (GFunc) mate_da_image_item_free, NULL);
g_list_free(capplet->web_browsers);
g_list_free(capplet->mail_readers);
@@ -321,6 +395,7 @@ void mate_da_xml_free(MateDACapplet* capplet)
g_list_free(capplet->media_players);
g_list_free(capplet->visual_ats);
g_list_free(capplet->mobility_ats);
+ g_list_free(capplet->image_viewers);
//g_list_free(capplet->filemanagers);
g_object_unref(capplet->builder);