diff options
author | Bruno Coudoin <bcoudoin@src.gnome.org> | 2006-08-22 22:25:38 (GMT) |
---|---|---|
committer | Bruno Coudoin <bcoudoin@src.gnome.org> | 2006-08-22 22:25:38 (GMT) |
commit | 09a1b0a58f7266379faabeba419ffdb6807ba948 (patch) | |
tree | 5262e6cac66fc275dd20eba6fa7d9df7e32c84bd | |
parent | c6427287a3c13436404f720f411072ebea9aeeb8 (diff) |
- fixed bug#352350 Some typos in the PO file
- added ukrainian flag, waiting for po file.
- fixed several acivity make them work with gc_net_load_xml API
they no more get their xml data file locally
- fixed several activity to get their translations from gettext instead of
the xml data file itself. It saves a lot of space and makes packagers happy.
-rw-r--r-- | ChangeLog | 30 | ||||
-rw-r--r-- | boards/advanced_colors/Makefile.am | 3 | ||||
-rw-r--r-- | boards/flags/uk.png | bin | 0 -> 427 bytes | |||
-rw-r--r-- | boards/imageid/Makefile.am | 4 | ||||
-rw-r--r-- | boards/missing_letter/Makefile.am | 5 | ||||
-rw-r--r-- | boards/read_colors/Makefile.am | 4 | ||||
-rw-r--r-- | boards/scales/Makefile.am | 3 | ||||
-rw-r--r-- | boards/traffic.xml.in | 2 | ||||
-rwxr-xr-x | docs/gcompris2spip.pl | 7 | ||||
-rw-r--r-- | src/boards/advanced_colors.c | 76 | ||||
-rw-r--r-- | src/boards/imageid.c | 233 | ||||
-rw-r--r-- | src/boards/missingletter.c | 41 | ||||
-rw-r--r-- | src/boards/read_colors.c | 44 | ||||
-rw-r--r-- | src/gcompris/gcompris.c | 2 |
14 files changed, 183 insertions, 271 deletions
@@ -1,3 +1,33 @@ +2006-08-23 Bruno coudoin <bruno.coudoin@free.fr> + + - fixed bug#352350 Some typos in the PO file + - added ukrainian flag, waiting for po file. + - fixed several acivity make them work with gc_net_load_xml API + they no more get their xml data file locally + - fixed several activity to get their translations from gettext instead of + the xml data file itself. It saves a lot of space and makes packagers happy. + + * boards/advanced_colors/Makefile.am: + * boards/flags/uk.png: + * boards/imageid/Makefile.am: + * boards/missing_letter/Makefile.am: + * boards/read_colors/Makefile.am: + * boards/scales/Makefile.am: + * boards/traffic.xml.in: + * docs/gcompris2spip.pl: added russian and ukrainian + * src/boards/advanced_colors.c: (init_xml), (add_xml_data), + (parse_doc), (read_xml_file): + * src/boards/imageid.c: (pause_board), (imageid_destroy_all_items), + (imageid_create_item), (game_won), (process_ok_timeout), + (process_ok), (highlight_selected), (dump_xml), (init_xml), + (add_xml_data), (parse_doc), (read_xml_file), (destroy_board_list), + (destroy_board), (config_start): + * src/boards/missingletter.c: (init_xml), (add_xml_data), + (read_xml_file): + * src/boards/read_colors.c: (init_xml), (add_xml_data), + (read_xml_file): + * src/gcompris/gcompris.c: + 2006-08-22 Bruno coudoin <bruno.coudoin@free.fr> - cleanup, removed deprecated wordslevel* now the xml version diff --git a/boards/advanced_colors/Makefile.am b/boards/advanced_colors/Makefile.am index 64fa4cd..6fa389b 100644 --- a/boards/advanced_colors/Makefile.am +++ b/boards/advanced_colors/Makefile.am @@ -23,5 +23,4 @@ $(xml_DATA): %.xml: %.xml.in sed -e "s/\(\<\)\/*_//g" $< > $@ - - +CLEANFILES = $(xml_DATA) diff --git a/boards/flags/uk.png b/boards/flags/uk.png Binary files differnew file mode 100644 index 0000000..b85bc1b --- /dev/null +++ b/boards/flags/uk.png diff --git a/boards/imageid/Makefile.am b/boards/imageid/Makefile.am index 67b8ad6..d133977 100644 --- a/boards/imageid/Makefile.am +++ b/boards/imageid/Makefile.am @@ -14,6 +14,4 @@ xml_DATA = $(xml_in_files:.xml.in=.xml) $(xml_DATA): %.xml: %.xml.in sed -e "s/\(\<\)\/*_//g" $< > $@ - - - +CLEANFILES = $(xml_DATA) diff --git a/boards/missing_letter/Makefile.am b/boards/missing_letter/Makefile.am index 78582b5..cf7754f 100644 --- a/boards/missing_letter/Makefile.am +++ b/boards/missing_letter/Makefile.am @@ -1,5 +1,5 @@ -xmldir = $(pkgdatadir)/@PACKAGE_DATA_DIR@/scales +xmldir = $(pkgdatadir)/@PACKAGE_DATA_DIR@/missing_letter xml_in_files = \ board1.xml.in @@ -15,5 +15,4 @@ $(xml_DATA): %.xml: %.xml.in sed -e "s/\(\<\)\/*_//g" $< > $@ - - +CLEANFILES = $(xml_DATA) diff --git a/boards/read_colors/Makefile.am b/boards/read_colors/Makefile.am index 36f3ccf..4cb80d2 100644 --- a/boards/read_colors/Makefile.am +++ b/boards/read_colors/Makefile.am @@ -13,6 +13,4 @@ xml_DATA = $(xml_in_files:.xml.in=.xml) $(xml_DATA): %.xml: %.xml.in sed -e "s/\(\<\)\/*_//g" $< > $@ - - - +CLEANFILES = $(xml_DATA) diff --git a/boards/scales/Makefile.am b/boards/scales/Makefile.am index afbc52d..da44df8 100644 --- a/boards/scales/Makefile.am +++ b/boards/scales/Makefile.am @@ -32,5 +32,4 @@ $(xml_DATA): %.xml: %.xml.in sed -e "s/\(\<\)\/*_//g" $< > $@ - - +CLEANFILES = $(xml_DATA) diff --git a/boards/traffic.xml.in b/boards/traffic.xml.in index 19428cf..1f0ca80 100644 --- a/boards/traffic.xml.in +++ b/boards/traffic.xml.in @@ -13,7 +13,7 @@ <_description>Remove the red car from the parking lot through the gate on the right</_description> <_prerequisite></_prerequisite> <_goal>Remove the red car from the parking lot through the gate on the right</_goal> - <_manual>Each car can only move either horizontaly or verticaly. You must make some room in order to let the red car move through the gate on the right.</_manual> + <_manual>Each car can only move either horizontally or vertically. You must make some room in order to let the red car move through the gate on the right.</_manual> </Board> <Data directory=""/> </GCompris> diff --git a/docs/gcompris2spip.pl b/docs/gcompris2spip.pl index e32d715..2a1caf3 100755 --- a/docs/gcompris2spip.pl +++ b/docs/gcompris2spip.pl @@ -78,7 +78,7 @@ my %sections = ( "pt", 28, "pt_BR", 141, "ro", 0, - "ru", 0, + "ru", 160, "rw", 0, "sk", 0, "sl", 0, @@ -89,6 +89,7 @@ my %sections = ( "ta", 154, "th", 0, "tr", 157, + "uk", 161, "vi", 116, "wa", 0, "zh_CN", 0, @@ -135,7 +136,7 @@ my %rubriques = ( "pt", 56, "pt_BR", 142, "ro", 0, - "ru", 0, + "ru", 162, "rw", 0, "sk", 0, "sl", 0, @@ -146,6 +147,7 @@ my %rubriques = ( "ta", 155, "th", 0, "tr", 158, + "uk", 164, "vi", 117, "wa", 0, "zh_CN", 0, @@ -204,6 +206,7 @@ my %rubriques_all = ( "ta", 156, "th", 0, "tr", 159, + "uk", 165, "vi", 118, "wa", 0, "zh_CN", 0, diff --git a/src/boards/advanced_colors.c b/src/boards/advanced_colors.c index f952128..5f53505 100644 --- a/src/boards/advanced_colors.c +++ b/src/boards/advanced_colors.c @@ -445,19 +445,14 @@ static void highlight_selected(int c) { * ==================================== */ static void init_xml() { - GcomprisProperties *properties = gc_prop_get(); char *filename; - filename = g_strdup_printf("%s/%s/board%d.xml", - properties->package_data_dir, + + filename = gc_file_find_absolute("%s/board%d.xml", gcomprisBoard->boarddir, gcomprisBoard->level); - g_debug("filename = %s %s %s\n", - properties->package_data_dir, - filename, - gcomprisBoard->boarddir); - assert(g_file_test(filename, G_FILE_TEST_EXISTS)); assert(read_xml_file(filename)== TRUE); + g_free(filename); } @@ -466,45 +461,31 @@ static void add_xml_data(xmlDocPtr doc, xmlNodePtr xmlnode, GNode * child) { char *text = NULL; char *sColor = NULL; - int color = 0; int i; - gchar *lang; xmlnode = xmlnode->xmlChildrenNode; xmlnode = xmlnode->next; - while (xmlnode != NULL) { - if (!strcmp((char *)xmlnode->name, "pixmapfile")) - backgroundFile = (char *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1); - - lang = (char *)xmlGetProp(xmlnode, BAD_CAST "lang"); - - // try to match color[i] - for (i=0; i<8; i++) { - sColor = g_strdup_printf("color%d", i+1); - if (!strcmp((char *)xmlnode->name, sColor)) { - if (lang == NULL) { // get default value - text = (char *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1); - colors[i] = text; - } else { // get correct language - if ( !strncmp(lang, gc_locale_get(), strlen(lang)) ) { - text = (char *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1); - g_warning("color prop::lang=%s locale=%s text=%s\n", lang, gc_locale_get(), text); - colors[i] = text; - } - } - g_free(sColor); - break; - } - g_free(sColor); - } // end for - xmlnode = xmlnode->next; - } - - g_warning("colors found in XML:\n"); - for (color=0; color<8; color++) - g_warning("%d %s\n", color, colors[color]); + while (xmlnode != NULL) + { + if (!strcmp((char *)xmlnode->name, "pixmapfile")) + backgroundFile = (char *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1); + + // try to match color[i] + for (i=0; i<8; i++) + { + sColor = g_strdup_printf("color%d", i+1); + if (!strcmp((char *)xmlnode->name, sColor)) + { + colors[i] = gettext((char *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1)); + g_free(sColor); + break; + } + g_free(sColor); + } // end for + xmlnode = xmlnode->next; + } // I really don't know why this test, but otherwise, the list is doubled // with 1 line on 2 filled with NULL elements @@ -520,7 +501,7 @@ static void parse_doc(xmlDocPtr doc) for(node = doc->children->children; node != NULL; node = node->next) { if ( g_strcasecmp((char *)node->name, "Board") == 0 ) - add_xml_data(doc, node,NULL); + add_xml_data(doc, node, NULL); } } @@ -534,16 +515,9 @@ static gboolean read_xml_file(char *fname) g_return_val_if_fail(fname!=NULL,FALSE); - /* if the file doesn't exist */ - if(!g_file_test(fname, G_FILE_TEST_EXISTS)) - { - g_warning("Couldn't find file %s !", fname); - return FALSE; - } - g_warning("found file %s !", fname); - /* parse the new file and put the result into newdoc */ - doc = xmlParseFile(fname); + doc = gc_net_load_xml(fname); + /* in case something went wrong */ if(!doc) return FALSE; diff --git a/src/boards/imageid.c b/src/boards/imageid.c index 20afd8b..4a62406 100644 --- a/src/boards/imageid.c +++ b/src/boards/imageid.c @@ -47,14 +47,9 @@ static void highlight_selected(GnomeCanvasItem *); static void game_won(void); static void config_start(GcomprisBoard *agcomprisBoard, - GcomprisProfile *aProfile); + GcomprisProfile *aProfile); static void config_stop(void); -#ifdef DEBUG -static void dump_xml(void); -#endif - - typedef struct { char *pixmapfile; char *text1; @@ -142,7 +137,7 @@ GET_BPLUGIN_INFO(imageid) * in : boolean TRUE = PAUSE : FALSE = CONTINUE * */ -static void pause_board (gboolean pause) + static void pause_board (gboolean pause) { if(gcomprisBoard==NULL) return; @@ -257,7 +252,7 @@ static void imageid_next_level() static void imageid_destroy_all_items() { if(boardRootItem!=NULL) - gtk_object_destroy (GTK_OBJECT(boardRootItem)); + gtk_object_destroy (GTK_OBJECT(boardRootItem)); boardRootItem = NULL; } @@ -272,9 +267,9 @@ static GnomeCanvasItem *imageid_create_item(GnomeCanvasGroup *parent) Board * board; board_number = (gcomprisBoard->level-1) * NUMBER_OF_SUBLEVELS + gcomprisBoard->sublevel-1; -/* if (board_number >= g_list_length(board_list)) - board_number = g_list_length(board_list)-1; -*/ + /* if (board_number >= g_list_length(board_list)) + board_number = g_list_length(board_list)-1; + */ assert(board_number >= 0 && board_number < g_list_length(board_list)); place = ((int)(3.0*rand()/(RAND_MAX+1.0))); assert(place >= 0 && place < 3); @@ -338,20 +333,20 @@ static GnomeCanvasItem *imageid_create_item(GnomeCanvasGroup *parent) yp = (gcomprisBoard->height - 3*gdk_pixbuf_get_height(button_pixmap) - 2*VERTICAL_SEPARATION)/2; button1 = gnome_canvas_item_new (boardRootItem, - gnome_canvas_pixbuf_get_type (), - "pixbuf", button_pixmap, - "x", (double) xp, - "y", (double) yp, - NULL); + gnome_canvas_pixbuf_get_type (), + "pixbuf", button_pixmap, + "x", (double) xp, + "y", (double) yp, + NULL); gnome_canvas_item_new (boardRootItem, - gnome_canvas_text_get_type (), - "text", buf[0], - "font", gcompris_skin_font_board_big, - "x", (double) xp + gdk_pixbuf_get_width(button_pixmap)/2 + 1.0, - "y", (double) yp + gdk_pixbuf_get_height(button_pixmap)/2 + 1.0, - "anchor", GTK_ANCHOR_CENTER, - "fill_color_rgba", gcompris_skin_color_shadow, - NULL); + gnome_canvas_text_get_type (), + "text", buf[0], + "font", gcompris_skin_font_board_big, + "x", (double) xp + gdk_pixbuf_get_width(button_pixmap)/2 + 1.0, + "y", (double) yp + gdk_pixbuf_get_height(button_pixmap)/2 + 1.0, + "anchor", GTK_ANCHOR_CENTER, + "fill_color_rgba", gcompris_skin_color_shadow, + NULL); text1_item = gnome_canvas_item_new (boardRootItem, gnome_canvas_text_get_type (), "text", buf[0], @@ -364,20 +359,20 @@ static GnomeCanvasItem *imageid_create_item(GnomeCanvasGroup *parent) yp += gdk_pixbuf_get_height(button_pixmap) + VERTICAL_SEPARATION; button2 = gnome_canvas_item_new (boardRootItem, - gnome_canvas_pixbuf_get_type (), - "pixbuf", button_pixmap, - "x", (double) xp, - "y", (double) yp, - NULL); + gnome_canvas_pixbuf_get_type (), + "pixbuf", button_pixmap, + "x", (double) xp, + "y", (double) yp, + NULL); gnome_canvas_item_new (boardRootItem, - gnome_canvas_text_get_type (), - "text", buf[1], - "font", gcompris_skin_font_board_big, - "x", (double) xp + gdk_pixbuf_get_width(button_pixmap)/2 + 1.0, - "y", (double) yp + gdk_pixbuf_get_height(button_pixmap)/2 + 1.0, - "anchor", GTK_ANCHOR_CENTER, - "fill_color_rgba", gcompris_skin_color_shadow, - NULL); + gnome_canvas_text_get_type (), + "text", buf[1], + "font", gcompris_skin_font_board_big, + "x", (double) xp + gdk_pixbuf_get_width(button_pixmap)/2 + 1.0, + "y", (double) yp + gdk_pixbuf_get_height(button_pixmap)/2 + 1.0, + "anchor", GTK_ANCHOR_CENTER, + "fill_color_rgba", gcompris_skin_color_shadow, + NULL); text2_item = gnome_canvas_item_new (boardRootItem, gnome_canvas_text_get_type (), "text", buf[1], @@ -390,21 +385,21 @@ static GnomeCanvasItem *imageid_create_item(GnomeCanvasGroup *parent) yp += gdk_pixbuf_get_height(button_pixmap) + VERTICAL_SEPARATION; button3 = gnome_canvas_item_new (boardRootItem, - gnome_canvas_pixbuf_get_type (), - "pixbuf", button_pixmap, - "x", (double) xp, - "y", (double) yp, - NULL); + gnome_canvas_pixbuf_get_type (), + "pixbuf", button_pixmap, + "x", (double) xp, + "y", (double) yp, + NULL); gnome_canvas_item_new (boardRootItem, - gnome_canvas_text_get_type (), - "text", buf[2], - "font", gcompris_skin_font_board_big, - "x", (double) xp + gdk_pixbuf_get_width(button_pixmap)/2 + 1.0, - "y", (double) yp + gdk_pixbuf_get_height(button_pixmap)/2 + 1.0, - "anchor", GTK_ANCHOR_CENTER, - "fill_color_rgba", gcompris_skin_color_shadow, - NULL); + gnome_canvas_text_get_type (), + "text", buf[2], + "font", gcompris_skin_font_board_big, + "x", (double) xp + gdk_pixbuf_get_width(button_pixmap)/2 + 1.0, + "y", (double) yp + gdk_pixbuf_get_height(button_pixmap)/2 + 1.0, + "anchor", GTK_ANCHOR_CENTER, + "fill_color_rgba", gcompris_skin_color_shadow, + NULL); text3_item = gnome_canvas_item_new (boardRootItem, gnome_canvas_text_get_type (), "text", buf[2], @@ -436,9 +431,9 @@ static void game_won() gcomprisBoard->sublevel=1; gcomprisBoard->level++; if(gcomprisBoard->level>gcomprisBoard->maxlevel) { // the current board is finished : bail out - board_finished(BOARD_FINISHED_TUXLOCO); - return; - } + board_finished(BOARD_FINISHED_TUXLOCO); + return; + } } imageid_next_level(); } @@ -446,11 +441,11 @@ static void game_won() /* ==================================== */ static gboolean process_ok_timeout() { gcompris_display_bonus(gamewon, BONUS_SMILEY); - return FALSE; + return FALSE; } static void process_ok() { - // leave time to display the right answer + // leave time to display the right answer g_timeout_add(TIME_CLICK_TO_BONUS, process_ok_timeout, NULL); } /* ==================================== */ @@ -519,16 +514,16 @@ static void highlight_selected(GnomeCanvasItem * item) { } if (selected_button != NULL && selected_button != button) { - button_pixmap = gcompris_load_skin_pixmap("button_large.png"); - gnome_canvas_item_set(selected_button, "pixbuf", button_pixmap, NULL); - gdk_pixbuf_unref(button_pixmap); + button_pixmap = gcompris_load_skin_pixmap("button_large.png"); + gnome_canvas_item_set(selected_button, "pixbuf", button_pixmap, NULL); + gdk_pixbuf_unref(button_pixmap); } if (selected_button != button) { - button_pixmap_selected = gcompris_load_skin_pixmap("button_large_selected.png"); - gnome_canvas_item_set(button, "pixbuf", button_pixmap_selected, NULL); - selected_button = button; - gdk_pixbuf_unref(button_pixmap_selected); + button_pixmap_selected = gcompris_load_skin_pixmap("button_large_selected.png"); + gnome_canvas_item_set(button, "pixbuf", button_pixmap_selected, NULL); + selected_button = button; + gdk_pixbuf_unref(button_pixmap_selected); } } @@ -538,22 +533,8 @@ static void highlight_selected(GnomeCanvasItem * item) { * XML stuff * Ref : shapegame.c * ==================================== */ -static void init_xml() -{ - GcomprisProperties *properties = gc_prop_get(); - char *filename; - filename = g_strdup_printf("%s/%s/board1.xml", properties->package_data_dir, gcomprisBoard->boarddir); - g_debug("filename = %s %s %s\n", filename, properties->package_data_dir, gcomprisBoard->boarddir); - - assert(g_file_test(filename, G_FILE_TEST_EXISTS)); - assert(read_xml_file(filename)== TRUE); - g_free(filename); -#ifdef DEBUG - dump_xml(); -#endif -} /* ====== for DEBUG ======== */ -#ifdef DEBUG +#if 0 static void dump_xml() { GList *list; g_warning("XML lentgh = %d\n", g_list_length(board_list)); @@ -561,10 +542,21 @@ static void dump_xml() { for(list = board_list; list != NULL; list = list->next) { Board * board = list->data; g_warning("xml = %s %s %s %s\n", board->pixmapfile, board->text1, board->text2, board->text3); - } + } } #endif +static void init_xml() +{ + char *filename; + + filename = gc_file_find_absolute("%s/board1.xml", + gcomprisBoard->boarddir); + + assert(read_xml_file(filename)== TRUE); + g_free(filename); + +} /* ==================================== */ static void add_xml_data(xmlDocPtr doc, xmlNodePtr xmlnode, GNode * child) { @@ -578,73 +570,38 @@ static void add_xml_data(xmlDocPtr doc, xmlNodePtr xmlnode, GNode * child) xmlnode = xmlnode->next; while(xmlnode!=NULL) { - gchar *lang = (gchar *)xmlGetProp(xmlnode, BAD_CAST "lang"); - + if (!strcmp((char *)xmlnode->name, "pixmapfile")) pixmapfile = (gchar *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1); if (!found_text1 && !strcmp((char *)xmlnode->name, "text1")) { - if(lang==NULL && text1==NULL) + if(text1==NULL) { - text1 = (gchar *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1); - } - else if(!strncmp(gc_locale_get(), lang, 5)) - { - if(text1) free(text1); - text1 = (char *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1); - /* That's the perfect choice, do not continue or we may override it */ - found_text1 = TRUE; - } - else if(!strncmp(gc_locale_get(), lang, strlen(lang))) - { - if(text1) free(text1); - text1 = (gchar *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1); + text1 = \ + g_strdup(gettext((gchar *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1))); } } if (!found_text2 && !strcmp((char *)xmlnode->name, "text2")) { - if(lang==NULL && text2==NULL) - { - text2 = (gchar *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1); - } - else if(!strncmp(gc_locale_get(), lang, 5)) + if(text2==NULL) { - if(text2) free(text2); - text2 = (char *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1); - /* That's the perfect choice, do not continue or we may override it */ - found_text2 = TRUE; - } - else if(!strncmp(gc_locale_get(), lang, strlen(lang))) - { - if(text2) free(text2); - text2 = (gchar *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1); + text2 = \ + g_strdup(gettext((gchar *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1))); } } if (!found_text3 && !strcmp((char *)xmlnode->name, "text3")) { - if(lang==NULL && text3==NULL) - { - text3 = (gchar *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1); - } - else if(!strncmp(gc_locale_get(), lang, 5)) + if(text3==NULL) { - if(text3) free(text3); - text3 = (char *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1); - /* That's the perfect choice, do not continue or we may override it */ - found_text3 = TRUE; - } - else if(!strncmp(gc_locale_get(), lang, strlen(lang))) - { - if(text3) free(text3); - text3 = (gchar *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1); + text3 = \ + g_strdup(gettext((gchar *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1))); } } xmlnode = xmlnode->next; - g_free(lang); } // I really don't know why this test, but otherwise, the list is doubled // with 1 line on 2 filled with NULL elements @@ -666,7 +623,7 @@ static void parse_doc(xmlDocPtr doc) for(node = doc->children->children; node != NULL; node = node->next) { if ( g_strcasecmp((gchar *)node->name, "Board") == 0 ) - add_xml_data(doc, node,NULL); + add_xml_data(doc, node,NULL); } } @@ -680,16 +637,9 @@ static gboolean read_xml_file(char *fname) g_return_val_if_fail(fname!=NULL,FALSE); - /* if the file doesn't exist */ - if(!g_file_test(fname, G_FILE_TEST_EXISTS)) - { - g_warning("Couldn't find file %s !", fname); - return FALSE; - } - g_warning("found file %s !", fname); - /* parse the new file and put the result into newdoc */ - doc = xmlParseFile(fname); + doc = gc_net_load_xml(fname); + /* in case something went wrong */ if(!doc) return FALSE; @@ -710,8 +660,9 @@ static gboolean read_xml_file(char *fname) } /* ======================================= */ static void destroy_board_list() { -Board *board; - while(g_list_length(board_list)>0) + Board *board; + + while(g_list_length(board_list)>0) { board = g_list_nth_data(board_list, 0); board_list = g_list_remove (board_list, board); @@ -721,11 +672,11 @@ Board *board; /* ======================================= */ static void destroy_board(Board * board) { - g_free(board->pixmapfile); - g_free(board->text1); - g_free(board->text2); - g_free(board->text3); - g_free(board); + g_free(board->pixmapfile); + g_free(board->text1); + g_free(board->text2); + g_free(board->text3); + g_free(board); } @@ -794,7 +745,7 @@ static GcomprisConfCallback conf_ok(GHashTable *table) static void config_start(GcomprisBoard *agcomprisBoard, - GcomprisProfile *aProfile) + GcomprisProfile *aProfile) { board_conf = agcomprisBoard; profile_conf = aProfile; diff --git a/src/boards/missingletter.c b/src/boards/missingletter.c index dcb8e61..df1223a 100644 --- a/src/boards/missingletter.c +++ b/src/boards/missingletter.c @@ -555,6 +555,7 @@ static void highlight_selected(GnomeCanvasItem * item) { * Ref : shapegame.c * ==================================== */ /* ====== for DEBUG ======== */ +#if 0 static void dump_xml() { GList *list; g_warning("XML lentgh = %d\n", g_list_length(board_list)); @@ -564,16 +565,19 @@ static void dump_xml() { g_warning("xml = %s %s %s %s %s %s\n", board->pixmapfile, board->answer, board->question, board->l1, board->l2, board->l3); } } +#endif + /* ==================================== */ static void init_xml() { - GcomprisProperties *properties = gc_prop_get(); char *filename; - filename = g_strdup_printf("%s/%s/board1.xml", properties->package_data_dir, gcomprisBoard->boarddir); - assert(g_file_test(filename, G_FILE_TEST_EXISTS)); + + filename = gc_file_find_absolute("%s/board1.xml", + gcomprisBoard->boarddir); + assert(read_xml_file(filename)== TRUE); + g_free(filename); - dump_xml(); } /* ==================================== */ @@ -591,32 +595,18 @@ static void add_xml_data(xmlDocPtr doc, xmlNodePtr xmlnode, GNode * child) xmlnode = xmlnode->next; while (xmlnode != NULL && !found) { - gchar *lang = (gchar *)xmlGetProp(xmlnode, BAD_CAST "lang"); if (!strcmp((char *)xmlnode->name, "pixmapfile")) pixmapfile = (gchar *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1); if (!found && !strcmp((char *)xmlnode->name, "data")) { - if(lang==NULL && data==NULL) - { - data = (gchar *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1); - } - else if(!strncmp(gc_locale_get(), lang, 5)) + if(data==NULL) { - if(data) free(data); - data = (char *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1); - /* That's the perfect choice, do not continue or we may override it */ - found = TRUE; - } - else if(!strncmp(gc_locale_get(), lang, strlen(lang))) - { - if(data) free(data); - data = (gchar *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1); + data = gettext((gchar *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1)); } } xmlnode = xmlnode->next; - g_free(lang); } // I really don't know why this test, but otherwise, the list is doubled @@ -671,16 +661,9 @@ static gboolean read_xml_file(char *fname) g_return_val_if_fail(fname!=NULL,FALSE); - /* if the file doesn't exist */ - if(!g_file_test(fname, G_FILE_TEST_EXISTS)) - { - g_warning("Couldn't find file %s !", fname); - return FALSE; - } - g_warning("found file %s !", fname); - /* parse the new file and put the result into newdoc */ - doc = xmlParseFile(fname); + doc = gc_net_load_xml(fname); + /* in case something went wrong */ if(!doc) return FALSE; diff --git a/src/boards/read_colors.c b/src/boards/read_colors.c index f8f0c3f..5162425 100644 --- a/src/boards/read_colors.c +++ b/src/boards/read_colors.c @@ -407,13 +407,13 @@ static void highlight_selected(int c) { * ==================================== */ static void init_xml() { - GcomprisProperties *properties = gc_prop_get(); char *filename; - filename = g_strdup_printf("%s/%s/board1.xml", properties->package_data_dir, gcomprisBoard->boarddir); - g_warning("filename = %s %s %s\n", filename, properties->package_data_dir, gcomprisBoard->boarddir); - assert(g_file_test(filename, G_FILE_TEST_EXISTS)); + filename = gc_file_find_absolute("%s/board1.xml", + gcomprisBoard->boarddir); + assert(read_xml_file(filename)== TRUE); + g_free(filename); } @@ -422,9 +422,7 @@ static void add_xml_data(xmlDocPtr doc, xmlNodePtr xmlnode, GNode * child) { char *text = NULL; char *sColor = NULL; - int color = 0; int i; - gchar *lang; xmlnode = xmlnode->xmlChildrenNode; @@ -432,34 +430,21 @@ static void add_xml_data(xmlDocPtr doc, xmlNodePtr xmlnode, GNode * child) while (xmlnode != NULL) { - lang = (char *)xmlGetProp(xmlnode, BAD_CAST "lang"); - // try to match color[i] for (i=0; i<LAST_COLOR; i++) { sColor = g_strdup_printf("color%d", i+1); if (!strcmp((char *)xmlnode->name, sColor)) { - if (lang == NULL) { // get default value - text = (char *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1); - colors[i] = text; - } else { // get correct language - if ( !strncmp(lang, gc_locale_get(), strlen(lang)) ) { - text = (char *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1); - g_warning("color prop::lang=%s locale=%s text=%s\n", lang, gc_locale_get(), text); - colors[i] = text; - } - g_free(sColor); - break; - } + text = \ + gettext((char *)xmlNodeListGetString(doc, xmlnode->xmlChildrenNode, 1)); + colors[i] = text; + g_free(sColor); + break; } g_free(sColor); } // end for xmlnode = xmlnode->next; } - g_warning("colors found in XML:\n"); - for (color=0; color<LAST_COLOR; color++) - g_warning("%d %s\n", color, colors[color]); - // I really don't know why this test, but otherwise, the list is doubled // with 1 line on 2 filled with NULL elements if ( text == NULL) @@ -488,16 +473,9 @@ static gboolean read_xml_file(char *fname) g_return_val_if_fail(fname!=NULL,FALSE); - /* if the file doesn't exist */ - if(!g_file_test(fname, G_FILE_TEST_EXISTS)) - { - g_warning("Couldn't find file %s !", fname); - return FALSE; - } - g_warning("found file %s !", fname); - /* parse the new file and put the result into newdoc */ - doc = xmlParseFile(fname); + doc = gc_net_load_xml(fname); + /* in case something went wrong */ if(!doc) return FALSE; diff --git a/src/gcompris/gcompris.c b/src/gcompris/gcompris.c index a13ee22..0cd4658 100644 --- a/src/gcompris/gcompris.c +++ b/src/gcompris/gcompris.c @@ -207,7 +207,7 @@ static struct poptOption options[] = { {"web-only", '\0', POPT_ARG_NONE, &popt_web_only, 0, N_("Only when --server is provided, disable check for local resource first." - "Data are always taken from the web server."), NULL}, + " Data are always taken from the web server."), NULL}, #ifndef WIN32 /* Not supported on windows */ POPT_AUTOHELP #endif |