From efae0c7ddeba8f96fe6d6c6d1a1bcae582f8836b Mon Sep 17 00:00:00 2001 From: Perberos Date: Mon, 5 Dec 2011 06:31:39 -0300 Subject: fixing xdg issue with web browsers and email clients on default applications.\n Adding useless file-manager,instant-message, text-editor tabs for future use. --- capplets/default-applications/mate-da-xml.c | 69 +++++++++++++++-------------- 1 file changed, 35 insertions(+), 34 deletions(-) (limited to 'capplets/default-applications/mate-da-xml.c') diff --git a/capplets/default-applications/mate-da-xml.c b/capplets/default-applications/mate-da-xml.c index 288495c7..4105f2ce 100644 --- a/capplets/default-applications/mate-da-xml.c +++ b/capplets/default-applications/mate-da-xml.c @@ -47,10 +47,10 @@ mate_da_xml_get_bool (const xmlNode *parent, const gchar *val_name) if (!xmlStrncmp (element->name, xml_val_name, len)) { xmlChar *cont = xmlNodeGetContent (element); - if (!xmlStrcasecmp (cont, "true") || !xmlStrcasecmp (cont, "1")) - ret_val = TRUE; + if (!xmlStrcasecmp(cont, (const xmlChar*) "true") || !xmlStrcasecmp(cont, (const xmlChar*) "1")) + ret_val = TRUE; else - ret_val = FALSE; + ret_val = FALSE; xmlFree (cont); } @@ -91,7 +91,7 @@ mate_da_xml_get_string (const xmlNode *parent, const gchar *val_name) } else { for (i = 0; sys_langs[i] != NULL; i++) { - if (!strcmp (sys_langs[i], node_lang)) { + if (!strcmp(sys_langs[i], (char*) node_lang)) { ret_val = (gchar *) xmlNodeGetContent (element); /* since sys_langs is sorted from most desirable to * least desirable, exit at first match @@ -144,9 +144,9 @@ mate_da_xml_load_xml (MateDACapplet *capplet, const gchar * filename) root = xmlDocGetRootElement (xml_doc); for (section = root->children; section != NULL; section = section->next) { - if (!xmlStrncmp (section->name, "web-browsers", 12)) { + if (!xmlStrncmp(section->name, (const xmlChar*) "web-browsers", strlen("web-browsers"))) { for (element = section->children; element != NULL; element = element->next) { - if (!xmlStrncmp (element->name, "web-browser", 11)) { + 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 (); @@ -170,9 +170,9 @@ mate_da_xml_load_xml (MateDACapplet *capplet, const gchar * filename) } } } - else if (!xmlStrncmp (section->name, "mail-readers", 12)) { + 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, "mail-reader", 11)) { + 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 (); @@ -191,9 +191,9 @@ mate_da_xml_load_xml (MateDACapplet *capplet, const gchar * filename) } } } - else if (!xmlStrncmp (section->name, "terminals", 9)) { + else if (!xmlStrncmp (section->name, (const xmlChar*) "terminals", strlen("terminals"))) { for (element = section->children; element != NULL; element = element->next) { - if (!xmlStrncmp (element->name, "terminal", 8)) { + 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 (); @@ -212,9 +212,9 @@ mate_da_xml_load_xml (MateDACapplet *capplet, const gchar * filename) } } } - else if (!xmlStrncmp (section->name, "media-players", 13)) { + 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, "media-player", 12)) { + 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 (); @@ -233,9 +233,9 @@ mate_da_xml_load_xml (MateDACapplet *capplet, const gchar * filename) } } } - else if (!xmlStrncmp (section->name, "a11y-visual", 11)) { + 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, "visual", 6)) { + 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 (); @@ -254,9 +254,9 @@ mate_da_xml_load_xml (MateDACapplet *capplet, const gchar * filename) } } } - else if (!xmlStrncmp (section->name, "a11y-mobility", 13)) { + 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, "mobility", 8)) { + 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 (); @@ -305,23 +305,24 @@ void mate_da_xml_load_list(MateDACapplet* capplet) } } -void -mate_da_xml_free (MateDACapplet *capplet) +void mate_da_xml_free(MateDACapplet* capplet) { - g_list_foreach (capplet->web_browsers, (GFunc) mate_da_web_item_free, NULL); - g_list_foreach (capplet->mail_readers, (GFunc) mate_da_simple_item_free, NULL); - g_list_foreach (capplet->terminals, (GFunc) mate_da_term_item_free, NULL); - g_list_foreach (capplet->media_players, (GFunc) mate_da_simple_item_free, NULL); - 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_free (capplet->web_browsers); - g_list_free (capplet->mail_readers); - g_list_free (capplet->terminals); - g_list_free (capplet->media_players); - g_list_free (capplet->visual_ats); - g_list_free (capplet->mobility_ats); - - g_object_unref (capplet->builder); - g_free (capplet); + g_list_foreach(capplet->web_browsers, (GFunc) mate_da_web_item_free, NULL); + g_list_foreach(capplet->mail_readers, (GFunc) mate_da_simple_item_free, NULL); + g_list_foreach(capplet->terminals, (GFunc) mate_da_term_item_free, NULL); + g_list_foreach(capplet->media_players, (GFunc) mate_da_simple_item_free, NULL); + 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_free(capplet->web_browsers); + g_list_free(capplet->mail_readers); + g_list_free(capplet->terminals); + g_list_free(capplet->media_players); + g_list_free(capplet->visual_ats); + g_list_free(capplet->mobility_ats); + //g_list_free(capplet->filemanagers); + + g_object_unref(capplet->builder); + g_free(capplet); } -- cgit v1.2.1 From d4d97389b3a30d43edadcd059ffcf584a4f4d914 Mon Sep 17 00:00:00 2001 From: Perberos Date: Mon, 5 Dec 2011 11:58:30 -0300 Subject: adding support for image viewers on default applications (please, check the list of image viewers and fill it!) --- capplets/default-applications/mate-da-xml.c | 391 +++++++++++++++++----------- 1 file changed, 233 insertions(+), 158 deletions(-) (limited to 'capplets/default-applications/mate-da-xml.c') 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 * * Copyright 2005-2006 Luca Cavalli + * Copyright 2010 Perberos * * 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); -- cgit v1.2.1 From 06d81df2871a25a93cdf7cffaf87f5cd4f15fe84 Mon Sep 17 00:00:00 2001 From: Perberos Date: Tue, 6 Dec 2011 08:07:40 -0300 Subject: adding support for select text editor and file manager --- capplets/default-applications/mate-da-xml.c | 226 ++++++++++++++++++---------- 1 file changed, 149 insertions(+), 77 deletions(-) (limited to 'capplets/default-applications/mate-da-xml.c') diff --git a/capplets/default-applications/mate-da-xml.c b/capplets/default-applications/mate-da-xml.c index ba41aa1f..eba290db 100644 --- a/capplets/default-applications/mate-da-xml.c +++ b/capplets/default-applications/mate-da-xml.c @@ -31,80 +31,92 @@ static gboolean mate_da_xml_get_bool(const xmlNode* parent, const gchar* val_name) { - xmlNode *element; + xmlNode* element; gboolean ret_val = FALSE; - xmlChar *xml_val_name; + xmlChar* xml_val_name; gint len; - g_return_val_if_fail (parent != NULL, FALSE); - g_return_val_if_fail (parent->children != NULL, ret_val); - g_return_val_if_fail (val_name != NULL, FALSE); + if (parent != NULL && parent->children != NULL && val_name == NULL) + { + xml_val_name = xmlCharStrdup(val_name); + len = xmlStrlen(xml_val_name); - xml_val_name = xmlCharStrdup (val_name); - len = xmlStrlen (xml_val_name); + for (element = parent->children; element != NULL; element = element->next) + { + if (!xmlStrncmp(element->name, xml_val_name, len)) + { + xmlChar* cont = xmlNodeGetContent(element); - for (element = parent->children; element != NULL; element = element->next) { - if (!xmlStrncmp (element->name, xml_val_name, len)) { - xmlChar *cont = xmlNodeGetContent (element); + if (!xmlStrcasecmp(cont, (const xmlChar*) "true") || !xmlStrcasecmp(cont, (const xmlChar*) "1")) + { + ret_val = TRUE; + } + else + { + ret_val = FALSE; + } - if (!xmlStrcasecmp(cont, (const xmlChar*) "true") || !xmlStrcasecmp(cont, (const xmlChar*) "1")) - ret_val = TRUE; - else - ret_val = FALSE; + xmlFree(cont); + } + } - xmlFree (cont); + xmlFree(xml_val_name); } - } - xmlFree (xml_val_name); return ret_val; } static gchar* mate_da_xml_get_string(const xmlNode* parent, const gchar* val_name) { - const gchar * const *sys_langs; - xmlChar *node_lang; - xmlNode *element; - gchar *ret_val = NULL; - xmlChar *xml_val_name; - gint len; - gint i; - - g_return_val_if_fail (parent != NULL, ret_val); - g_return_val_if_fail (parent->children != NULL, ret_val); - g_return_val_if_fail (val_name != NULL, ret_val); - -#if GLIB_CHECK_VERSION (2, 6, 0) - sys_langs = g_get_language_names (); -#endif - - xml_val_name = xmlCharStrdup (val_name); - len = xmlStrlen (xml_val_name); - - for (element = parent->children; element != NULL; element = element->next) { - if (!xmlStrncmp (element->name, xml_val_name, len)) { - node_lang = xmlNodeGetLang (element); - - if (node_lang == NULL) { - ret_val = (gchar *) xmlNodeGetContent (element); - } - else { - for (i = 0; sys_langs[i] != NULL; i++) { - if (!strcmp(sys_langs[i], (char*) node_lang)) { - ret_val = (gchar *) xmlNodeGetContent (element); - /* since sys_langs is sorted from most desirable to - * least desirable, exit at first match - */ - break; - } + const gchar* const* sys_langs; + xmlChar* node_lang; + xmlNode* element; + gchar* ret_val = NULL; + xmlChar* xml_val_name; + gint len; + gint i; + + if (parent != NULL && parent->children != NULL && val_name != NULL) + { + #if GLIB_CHECK_VERSION (2, 6, 0) + sys_langs = g_get_language_names(); + #endif + + xml_val_name = xmlCharStrdup(val_name); + len = xmlStrlen(xml_val_name); + + for (element = parent->children; element != NULL; element = element->next) + { + if (!xmlStrncmp(element->name, xml_val_name, len)) + { + node_lang = xmlNodeGetLang(element); + + if (node_lang == NULL) + { + ret_val = (gchar *) xmlNodeGetContent(element); + } + else + { + for (i = 0; sys_langs[i] != NULL; i++) + { + if (!strcmp(sys_langs[i], (char*) node_lang)) + { + ret_val = (gchar*) xmlNodeGetContent(element); + /* since sys_langs is sorted from most desirable to + * least desirable, exit at first match */ + break; + } + } + } + + xmlFree(node_lang); + } } - } - xmlFree (node_lang); + + xmlFree(xml_val_name); } - } - xmlFree (xml_val_name); - return ret_val; + return ret_val; } static gboolean is_executable_valid(gchar* executable) @@ -134,6 +146,8 @@ static void mate_da_xml_load_xml(MateDACapplet* capplet, const gchar* filename) MateDAVisualItem* visual_item; MateDAMobilityItem* mobility_item; MateDAImageItem* image_item; + MateDATextItem* text_item; + MateDAFileItem* file_item; xml_doc = xmlParseFile(filename); @@ -292,6 +306,62 @@ static void mate_da_xml_load_xml(MateDACapplet* capplet, const gchar* filename) } } } + else if (!xmlStrncmp(section->name, (const xmlChar*) "text-editors", strlen("text-editors"))) + { + for (element = section->children; element != NULL; element = element->next) + { + if (!xmlStrncmp(element->name, (const xmlChar*) "text-editor", strlen("text-editor"))) + { + executable = mate_da_xml_get_string(element, "executable"); + + if (is_executable_valid(executable)) + { + text_item = mate_da_text_item_new(); + + text_item->generic.name = mate_da_xml_get_string(element, "name"); + text_item->generic.executable = executable; + text_item->generic.command = mate_da_xml_get_string(element, "command"); + text_item->generic.icon_name = mate_da_xml_get_string(element, "icon-name"); + + text_item->run_in_terminal = mate_da_xml_get_bool(element, "run-in-terminal"); + + capplet->text_editors = g_list_append(capplet->text_editors, text_item); + } + else + { + g_free(executable); + } + } + } + } + else if (!xmlStrncmp(section->name, (const xmlChar*) "file-managers", strlen("file-managers"))) + { + for (element = section->children; element != NULL; element = element->next) + { + if (!xmlStrncmp(element->name, (const xmlChar*) "file-manager", strlen("file-manager"))) + { + executable = mate_da_xml_get_string(element, "executable"); + + if (is_executable_valid(executable)) + { + file_item = mate_da_file_item_new(); + + file_item->generic.name = mate_da_xml_get_string(element, "name"); + file_item->generic.executable = executable; + file_item->generic.command = mate_da_xml_get_string(element, "command"); + file_item->generic.icon_name = mate_da_xml_get_string(element, "icon-name"); + + file_item->run_in_terminal = mate_da_xml_get_bool(element, "run-in-terminal"); + + capplet->file_managers = g_list_append(capplet->file_managers, file_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) @@ -380,24 +450,26 @@ void mate_da_xml_load_list(MateDACapplet* capplet) void mate_da_xml_free(MateDACapplet* capplet) { - g_list_foreach(capplet->web_browsers, (GFunc) mate_da_web_item_free, NULL); - g_list_foreach(capplet->mail_readers, (GFunc) mate_da_simple_item_free, NULL); - g_list_foreach(capplet->terminals, (GFunc) mate_da_term_item_free, NULL); - g_list_foreach(capplet->media_players, (GFunc) mate_da_simple_item_free, NULL); - 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); - g_list_free(capplet->terminals); - 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); - g_free(capplet); + g_list_foreach(capplet->web_browsers, (GFunc) mate_da_web_item_free, NULL); + g_list_foreach(capplet->mail_readers, (GFunc) mate_da_simple_item_free, NULL); + g_list_foreach(capplet->terminals, (GFunc) mate_da_term_item_free, NULL); + g_list_foreach(capplet->media_players, (GFunc) mate_da_simple_item_free, NULL); + 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->image_viewers, (GFunc) mate_da_image_item_free, NULL); + g_list_foreach(capplet->text_editors, (GFunc) mate_da_text_item_free, NULL); + g_list_foreach(capplet->file_managers, (GFunc) mate_da_file_item_free, NULL); + + g_list_free(capplet->web_browsers); + g_list_free(capplet->mail_readers); + g_list_free(capplet->terminals); + 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->text_editors); + g_list_free(capplet->file_managers); + + g_object_unref(capplet->builder); + g_free(capplet); } -- cgit v1.2.1 From 0e3c4a26638e0685da1c9ad21546ad5c962d3e5c Mon Sep 17 00:00:00 2001 From: Perberos Date: Tue, 6 Dec 2011 08:42:47 -0300 Subject: adding support for video players --- capplets/default-applications/mate-da-xml.c | 31 +++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'capplets/default-applications/mate-da-xml.c') diff --git a/capplets/default-applications/mate-da-xml.c b/capplets/default-applications/mate-da-xml.c index eba290db..46b31789 100644 --- a/capplets/default-applications/mate-da-xml.c +++ b/capplets/default-applications/mate-da-xml.c @@ -148,6 +148,7 @@ static void mate_da_xml_load_xml(MateDACapplet* capplet, const gchar* filename) MateDAImageItem* image_item; MateDATextItem* text_item; MateDAFileItem* file_item; + MateDASimpleItem* video_item; xml_doc = xmlParseFile(filename); @@ -278,6 +279,34 @@ static void mate_da_xml_load_xml(MateDACapplet* capplet, const gchar* filename) } } } + else if (!xmlStrncmp(section->name, (const xmlChar*) "video-players", strlen("video-players"))) + { + for (element = section->children; element != NULL; element = element->next) + { + if (!xmlStrncmp (element->name, (const xmlChar*) "video-player", strlen("video-player"))) + { + executable = mate_da_xml_get_string(element, "executable"); + + if (is_executable_valid(executable)) + { + video_item = mate_da_simple_item_new(); + + video_item->generic.name = mate_da_xml_get_string (element, "name"); + video_item->generic.executable = executable; + video_item->generic.command = mate_da_xml_get_string (element, "command"); + video_item->generic.icon_name = mate_da_xml_get_string (element, "icon-name"); + + video_item->run_in_terminal = mate_da_xml_get_bool (element, "run-in-terminal"); + + capplet->video_players = g_list_append (capplet->video_players, video_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) @@ -454,6 +483,7 @@ void mate_da_xml_free(MateDACapplet* capplet) g_list_foreach(capplet->mail_readers, (GFunc) mate_da_simple_item_free, NULL); g_list_foreach(capplet->terminals, (GFunc) mate_da_term_item_free, NULL); g_list_foreach(capplet->media_players, (GFunc) mate_da_simple_item_free, NULL); + g_list_foreach(capplet->video_players, (GFunc) mate_da_simple_item_free, NULL); 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->image_viewers, (GFunc) mate_da_image_item_free, NULL); @@ -464,6 +494,7 @@ void mate_da_xml_free(MateDACapplet* capplet) g_list_free(capplet->mail_readers); g_list_free(capplet->terminals); g_list_free(capplet->media_players); + g_list_free(capplet->video_players); g_list_free(capplet->visual_ats); g_list_free(capplet->mobility_ats); g_list_free(capplet->image_viewers); -- cgit v1.2.1