Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBruno 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)
commit70297067de411e5c3699061ff345af8ce51bfb73 (patch)
treec73786ff21f46fb4200d5780f13f9e48fdbcbbfa
parent3ebab9293379e7394da313a385800e0c6cac98cd (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--ChangeLog18
-rw-r--r--boards/skins/babytoy/help_bg.pngbin29504 -> 23539 bytes
-rw-r--r--boards/skins/babytoy/skin.xml5
-rw-r--r--boards/skins/gartoon/skin.xml5
-rw-r--r--src/gcompris/gcompris_confirm.c11
-rw-r--r--src/gcompris/help.c97
-rw-r--r--src/gcompris/skin.c25
-rw-r--r--src/gcompris/skin.h8
8 files changed, 109 insertions, 60 deletions
diff --git a/ChangeLog b/ChangeLog
index e83eed8..1a80bfd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
index 31fbb74..b6be23e 100644
--- a/boards/skins/babytoy/help_bg.png
+++ b/boards/skins/babytoy/help_bg.png
Binary files differ
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