diff options
author | Bruno Coudoin <bcoudoin@src.gnome.org> | 2006-04-09 22:07:39 (GMT) |
---|---|---|
committer | Bruno Coudoin <bcoudoin@src.gnome.org> | 2006-04-09 22:07:39 (GMT) |
commit | 70297067de411e5c3699061ff345af8ce51bfb73 (patch) | |
tree | c73786ff21f46fb4200d5780f13f9e48fdbcbbfa | |
parent | 3ebab9293379e7394da313a385800e0c6cac98cd (diff) |
Added scroolbars in the help dialogs.
Added an entry in skin.c to get a GdkColor : gcompris_skin_get_gdkcolor()
Changed confirmation dialog to use the new colors for dialogs in skins
-rw-r--r-- | ChangeLog | 18 | ||||
-rw-r--r-- | boards/skins/babytoy/help_bg.png | bin | 29504 -> 23539 bytes | |||
-rw-r--r-- | boards/skins/babytoy/skin.xml | 5 | ||||
-rw-r--r-- | boards/skins/gartoon/skin.xml | 5 | ||||
-rw-r--r-- | src/gcompris/gcompris_confirm.c | 11 | ||||
-rw-r--r-- | src/gcompris/help.c | 97 | ||||
-rw-r--r-- | src/gcompris/skin.c | 25 | ||||
-rw-r--r-- | src/gcompris/skin.h | 8 |
8 files changed, 109 insertions, 60 deletions
@@ -1,3 +1,21 @@ +2006-04-10 Bruno coudoin <bruno.coudoin@free.fr> + + Added scroolbars in the help dialogs. + Added an entry in skin.c to get a GdkColor : gcompris_skin_get_gdkcolor() + Changed confirmation dialog to use the new colors for dialogs in skins + + * boards/skins/babytoy/help_bg.png: + * boards/skins/babytoy/skin.xml: + * boards/skins/gartoon/skin.xml: + * src/gcompris/gcompris_confirm.c: (display_confirm), + (set_content): + * src/gcompris/help.c: (gcompris_help_start), (gcompris_help_stop), + (select_item), (set_content): + * src/gcompris/skin.c: (gcompris_skin_xml_load), + (gcompris_skin_get_color_default), + (gcompris_skin_get_gdkcolor_default): + * src/gcompris/skin.h: + 2006-04-09 Bruno coudoin <bruno.coudoin@free.fr> Reworked bargame to load all it's images only once. diff --git a/boards/skins/babytoy/help_bg.png b/boards/skins/babytoy/help_bg.png Binary files differindex 31fbb74..b6be23e 100644 --- a/boards/skins/babytoy/help_bg.png +++ b/boards/skins/babytoy/help_bg.png diff --git a/boards/skins/babytoy/skin.xml b/boards/skins/babytoy/skin.xml index f65b1c5..3340efd 100644 --- a/boards/skins/babytoy/skin.xml +++ b/boards/skins/babytoy/skin.xml @@ -9,6 +9,11 @@ <color id="gcompris/subtitle" rgba="0xB00400FF"/> <color id="gcompris/shadow" rgba="0X000000FF"/> + <color id="gcompris/helpbg" rgba="0Xe1f6ffFF"/> + <color id="gcompris/helpfg" rgba="0X000000FF"/> + <color id="gcompris/helpselect" rgba="0X34682aFF"/> + <color id="gcompris/helpunselect" rgba="0X4252ffFF"/> + <!-- Defines the entry coordinate in your file_selector_bg.png --> <color id="gcompris/fileselectbg" rgba="0xf6f9b1FF"/> <color id="gcompris/fileselectcol" rgba="0X3558f0FF"/> diff --git a/boards/skins/gartoon/skin.xml b/boards/skins/gartoon/skin.xml index a019476..bc3e07c 100644 --- a/boards/skins/gartoon/skin.xml +++ b/boards/skins/gartoon/skin.xml @@ -10,6 +10,11 @@ <color id="gcompris/shadow" rgba="0XFFFFFFFF"/> <color id="gcompris/imageselectbg" rgba="0X6280d9FF"/> + <color id="gcompris/helpbg" rgba="0Xe8e7e2FF"/> + <color id="gcompris/helpfg" rgba="0X000000FF"/> + <color id="gcompris/helpselect" rgba="0X34682aFF"/> + <color id="gcompris/helpunselect" rgba="0X4252ffFF"/> + <color id="gcompris/fileselectbg" rgba="0X018404FF"/> <color id="gcompris/fileselectcol" rgba="0X000000FF"/> <number id="gcompris/fileselectx" value="85"/> diff --git a/src/gcompris/gcompris_confirm.c b/src/gcompris/gcompris_confirm.c index 8ebe684..176564f 100644 --- a/src/gcompris/gcompris_confirm.c +++ b/src/gcompris/gcompris_confirm.c @@ -1,6 +1,6 @@ /* gcompris - gcompris_confirm.c * - * Time-stamp: <2006/01/29 16:06:02 bruno> + * Time-stamp: <2006/04/10 00:00:58 bruno> * * Copyright (C) 2000 Bruno Coudoin * @@ -336,7 +336,7 @@ display_confirm(gchar *title, "x", (double) button_x + gdk_pixbuf_get_width(pixmap) + button_x_int , "y", (double) button_y + 2*button_h/3, "anchor", GTK_ANCHOR_WEST, - "fill_color_rgba", gcompris_skin_color_text_button, + "fill_color_rgba", gcompris_skin_get_color("gcompris/helpfg"), NULL); // OK @@ -384,7 +384,7 @@ display_confirm(gchar *title, "x", (double) button_x + gdk_pixbuf_get_width(pixmap) + button_x_int , "y", (double) button_y + button_h/3, "anchor", GTK_ANCHOR_WEST, - "fill_color_rgba", gcompris_skin_color_text_button, + "fill_color_rgba", gcompris_skin_get_color("gcompris/helpfg"), NULL); confirm_displayed = TRUE; @@ -428,6 +428,7 @@ set_content(GnomeCanvasRichText *item_content, color_string = g_strdup_printf("#%x", gcompris_skin_color_shadow >> 8); gdk_color_parse(color_string, color_s); + g_free(color_string); success = gdk_colormap_alloc_color(gdk_colormap_get_system(), color_s, FALSE, TRUE); @@ -441,13 +442,13 @@ set_content(GnomeCanvasRichText *item_content, gtk_text_buffer_get_start_iter(buffer, &iter_start); gtk_text_buffer_apply_tag(buffer, txt_tag, &iter_start, &iter_end); - g_free(color_string); /* * Set the text */ - color_string = g_strdup_printf("#%x", gcompris_skin_get_color("menu/text") >> 8); + color_string = g_strdup_printf("#%x", gcompris_skin_get_color("gcompris/helpunselect") >> 8); gdk_color_parse(color_string, color); + g_free(color_string); success = gdk_colormap_alloc_color(gdk_colormap_get_system(), color, FALSE, TRUE); diff --git a/src/gcompris/help.c b/src/gcompris/help.c index 33174cf..fac9c54 100644 --- a/src/gcompris/help.c +++ b/src/gcompris/help.c @@ -1,6 +1,6 @@ /* gcompris - help.c * - * Time-stamp: <2005/10/31 23:00:03 bruno> + * Time-stamp: <2006/04/09 23:28:08 bruno> * * Copyright (C) 2000 Bruno Coudoin * @@ -23,6 +23,7 @@ * The bar button common to each games * */ +#include <string.h> #include "gcompris.h" @@ -35,9 +36,6 @@ #define GAP_TO_BUTTON -20 -#define COLOR_SELECTED 0x34682aFF -#define COLOR_UNSELECTED 0x4252ffFF - static gint item_event_help(GnomeCanvasItem *item, GdkEvent *event, gpointer data); static void select_item(GnomeCanvasItem *item, GnomeCanvasItem *item_text); static void set_content(char *text); @@ -45,7 +43,6 @@ static void set_content(char *text); static gboolean help_displayed = FALSE; static GnomeCanvasItem *rootitem = NULL; -static GnomeCanvasItem *item_content = NULL; static gchar *prerequisite = NULL; static gchar *goal = NULL; @@ -65,7 +62,7 @@ static GnomeCanvasItem *item_credit_text = NULL; static GnomeCanvasItem *item_selected = NULL; static GnomeCanvasItem *item_selected_text = NULL; - +static GtkTextBuffer *buffer_content; /* * Main entry point * ---------------- @@ -205,7 +202,7 @@ void gcompris_help_start (GcomprisBoard *gcomprisBoard) "x", (double) BOARDWIDTH*0.20, "y", (double) y_start - gdk_pixbuf_get_height(pixmap) + GAP_TO_BUTTON, "anchor", GTK_ANCHOR_CENTER, - "fill_color_rgba", COLOR_UNSELECTED, + "fill_color_rgba", gcompris_skin_get_color("gcompris/helpunselect"), NULL); gtk_signal_connect(GTK_OBJECT(item_prerequisite_text), "event", (GtkSignalFunc) item_event_help, @@ -233,7 +230,7 @@ void gcompris_help_start (GcomprisBoard *gcomprisBoard) "x", (double) BOARDWIDTH*0.4, "y", (double) y_start - gdk_pixbuf_get_height(pixmap) + GAP_TO_BUTTON, "anchor", GTK_ANCHOR_CENTER, - "fill_color_rgba", COLOR_UNSELECTED, + "fill_color_rgba", gcompris_skin_get_color("gcompris/helpunselect"), NULL); gtk_signal_connect(GTK_OBJECT(item_goal_text), "event", (GtkSignalFunc) item_event_help, @@ -261,7 +258,7 @@ void gcompris_help_start (GcomprisBoard *gcomprisBoard) "x", (double) BOARDWIDTH*0.6, "y", (double) y_start - gdk_pixbuf_get_height(pixmap) + GAP_TO_BUTTON, "anchor", GTK_ANCHOR_CENTER, - "fill_color_rgba", COLOR_UNSELECTED, + "fill_color_rgba", gcompris_skin_get_color("gcompris/helpunselect"), NULL); gtk_signal_connect(GTK_OBJECT(item_manual_text), "event", (GtkSignalFunc) item_event_help, @@ -289,7 +286,7 @@ void gcompris_help_start (GcomprisBoard *gcomprisBoard) "x", (double) BOARDWIDTH*0.8, "y", (double) y_start - gdk_pixbuf_get_height(pixmap) + GAP_TO_BUTTON, "anchor", GTK_ANCHOR_CENTER, - "fill_color_rgba", COLOR_UNSELECTED, + "fill_color_rgba", gcompris_skin_get_color("gcompris/helpunselect"), NULL); gtk_signal_connect(GTK_OBJECT(item_credit_text), "event", (GtkSignalFunc) item_event_help, @@ -325,21 +322,44 @@ void gcompris_help_start (GcomprisBoard *gcomprisBoard) y_start += 5; - item_content = gnome_canvas_item_new (GNOME_CANVAS_GROUP(rootitem), - gnome_canvas_rich_text_get_type (), - "x", (double) x_start + 40, - "y", (double) y_start, - "width", 620.0, - "height", 400.0, - "anchor", GTK_ANCHOR_NW, - "grow_height", FALSE, - "cursor_visible", FALSE, - "cursor_blink", FALSE, - "editable", FALSE, - NULL); + /* Create a scrolled area for the text content */ + GtkWidget *view; + GtkWidget *sw; + view = gtk_text_view_new (); + gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (view), GTK_WRAP_WORD); + gtk_text_view_set_editable(GTK_TEXT_VIEW (view), FALSE); + gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW (view), FALSE); + + PangoFontDescription *font_desc; + font_desc = pango_font_description_from_string (gcompris_skin_font_content); + gtk_widget_modify_font (view, font_desc); + pango_font_description_free (font_desc); + + GdkColor fg_color; + GdkColor bg_color; + gcompris_skin_get_gdkcolor("gcompris/helpfg", &fg_color); + gcompris_skin_get_gdkcolor("gcompris/helpbg", &bg_color); + gtk_widget_modify_base(view, GTK_STATE_NORMAL, &bg_color); + gtk_widget_modify_text(view, GTK_STATE_NORMAL, &fg_color); + + buffer_content = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)); + sw = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), + GTK_POLICY_AUTOMATIC, + GTK_POLICY_AUTOMATIC); + gtk_container_add (GTK_CONTAINER (sw), view); - set_content(text_to_display); + gnome_canvas_item_new (GNOME_CANVAS_GROUP(rootitem), + gnome_canvas_widget_get_type (), + "widget", GTK_WIDGET(sw), + "x", (double) x_start + 40, + "y", (double) y_start, + "width", 618.0, + "height", 280.0, + NULL); + gtk_widget_show_all (sw); + set_content(text_to_display); // OK pixmap = gcompris_load_skin_pixmap("button_large.png"); @@ -403,10 +423,6 @@ void gcompris_help_stop () // Destroy the help box if(rootitem!=NULL) { - /* WORKAROUND: There is a bug in the richtex item and we need to remove it first */ - while (g_idle_remove_by_data (item_content)); - gtk_object_destroy (item_content); - gtk_object_destroy(GTK_OBJECT(rootitem)); gcomprisBoard->plugin->pause_board(FALSE); } @@ -438,7 +454,7 @@ static void select_item(GnomeCanvasItem *item, GnomeCanvasItem *item_text) "pixbuf", pixmap, NULL); gnome_canvas_item_set(item_selected_text, - "fill_color_rgba", COLOR_UNSELECTED, + "fill_color_rgba", gcompris_skin_get_color("gcompris/helpunselect"), NULL); gdk_pixbuf_unref(pixmap); @@ -452,32 +468,17 @@ static void select_item(GnomeCanvasItem *item, GnomeCanvasItem *item_text) NULL); gdk_pixbuf_unref(pixmap); gnome_canvas_item_set(item_text, - "fill_color_rgba", COLOR_SELECTED, + "fill_color_rgba", gcompris_skin_get_color("gcompris/helpselect"), NULL); item_selected = item; item_selected_text = item_text; } /* Apply the style to the given RichText item */ -static void set_content(gchar *text) { - - GtkTextIter iter_start, iter_end; - GtkTextBuffer *buffer; - GtkTextTag *txt_tag; - - gnome_canvas_item_set(item_content, - "text", text, - NULL); - - buffer = gnome_canvas_rich_text_get_buffer(GNOME_CANVAS_RICH_TEXT(item_content)); - txt_tag = gtk_text_buffer_create_tag(buffer, NULL, - "foreground", "blue", - "font", "Sans 10", - NULL); - gtk_text_buffer_get_end_iter(buffer, &iter_end); - gtk_text_buffer_get_start_iter(buffer, &iter_start); - gtk_text_buffer_apply_tag(buffer, txt_tag, &iter_start, &iter_end); - +static void set_content(gchar *text) +{ + gtk_text_buffer_set_text (buffer_content, "", 0); + gtk_text_buffer_insert_at_cursor(buffer_content, text, -1); } /* Callback for the bar operations */ diff --git a/src/gcompris/skin.c b/src/gcompris/skin.c index 79b8e22..a31a44a 100644 --- a/src/gcompris/skin.c +++ b/src/gcompris/skin.c @@ -299,8 +299,8 @@ void gcompris_skin_xml_load (gchar* skin) while(node !=NULL) { if(g_strcasecmp((gchar *)node->name, "color")==0){ - key = xmlGetProp(node, "id"); - data = xmlGetProp(node, "rgba"); + key = xmlGetProp(node, BAD_CAST "id"); + data = xmlGetProp(node, BAD_CAST "rgba"); if((key!=NULL)&&(data!=NULL)){ if(gcompris_skin_str_to_color(data, &color)){ g_hash_table_insert(gcompris_skin_colors, key, GUINT_TO_POINTER(color)); @@ -311,8 +311,8 @@ void gcompris_skin_xml_load (gchar* skin) if(data!=NULL) g_free(data); } else if(g_strcasecmp((gchar *)node->name, "font")==0){ - key = xmlGetProp(node, "id"); - data = xmlGetProp(node, "name"); + key = xmlGetProp(node, BAD_CAST "id"); + data = xmlGetProp(node, BAD_CAST "name"); if((key!=NULL)&&(data!=NULL)){ g_hash_table_insert(gcompris_skin_fonts, key, data); } else { @@ -390,6 +390,23 @@ guint32 gcompris_skin_get_color_default(gchar* id, guint32 def) } /* + * Get the skin gdkcolor associated to the id + * + * The color is returned in the given gdkcolor + */ +void gcompris_skin_get_gdkcolor_default(gchar* id, guint32 def, GdkColor *gdkcolor) +{ + gchar *tmp; + guint32 color; + + color = gcompris_skin_get_color_default(id, def); + + tmp = g_strdup_printf("#%06X", gcompris_skin_get_color(id) >> 8); + gdk_color_parse(tmp, gdkcolor); + g_free(tmp); +} + +/* * Get the skin font name associated to the id */ gchar* gcompris_skin_get_font_default(gchar* id, gchar* def) diff --git a/src/gcompris/skin.h b/src/gcompris/skin.h index fba1521..db437a8 100644 --- a/src/gcompris/skin.h +++ b/src/gcompris/skin.h @@ -52,10 +52,12 @@ void gcompris_skin_load (gchar* skin); void gcompris_skin_free (void); guint32 gcompris_skin_get_color_default(gchar* id, guint32 def); +void gcompris_skin_get_gdkcolor_default(gchar* id, guint32 def, GdkColor *gdkcolor); gchar* gcompris_skin_get_font_default(gchar* id, gchar* def); -#define gcompris_skin_get_color(id) gcompris_skin_get_color_default(id, 0x0D0DFA00) -#define gcompris_skin_get_font(id) gcompris_skin_get_font_default(id, "Sans 12") -#define gcompris_skin_get_number(id) gcompris_skin_get_number_default(id, 0) +#define gcompris_skin_get_gdkcolor(id, gdkcolor) gcompris_skin_get_gdkcolor_default(id, 0x0D0DFA00, gdkcolor) +#define gcompris_skin_get_color(id) gcompris_skin_get_color_default(id, 0x0D0DFA00) +#define gcompris_skin_get_font(id) gcompris_skin_get_font_default(id, "Sans 12") +#define gcompris_skin_get_number(id) gcompris_skin_get_number_default(id, 0) #endif |