static void select_item(GooCanvasItem *item, GooCanvasItem *item_text) { gchar *item_id; if(item_selected) { item_id = "#UP"; g_object_set(item_selected, "svg-id", item_id, NULL); g_object_set(item_selected_text, "fill-color-rgba", gc_skin_get_color("gcompris/helpunselect"), NULL); } item_id = "#UP_SELECTED"; g_object_set(item, "svg-id", item_id, NULL); g_object_set(item_text, "fill-color-rgba", gc_skin_get_color("gcompris/helpselect"), NULL); item_selected = item; item_selected_text = item_text; }
/* guint32 gc_skin_get_color(gchar* id); */ static PyObject* py_gc_skin_get_color(PyObject* self, PyObject* args) { gchar* id; guint32 result; /* Parse arguments */ if(!PyArg_ParseTuple(args, "s:gc_skin_get_color", &id)) return NULL; /* Call the corresponding C function */ result = gc_skin_get_color(id); /* Create and return the result */ return PyLong_FromUnsignedLong(result); }
static void display_files(GooCanvasItem *root_item, gchar *rootdir) { GooCanvasItem *item; const gchar *one_dirent; GDir *dir; /* Initial image position */ guint ix = 0.0; guint iy = 30.0; GtkWidget *w; GooCanvasItem *bg_item; GtkWidget *canvas; /* The scrolled part */ GList *dir_list = NULL; GList *file_list = NULL; GList *listrunner; GtkAdjustment *adj; if(!rootitem) return; /* Display the directory content */ dir = g_dir_open(rootdir, 0, NULL); if (!dir) { g_warning("gcompris_file_selector : no root directory found in %s", rootdir); g_free(rootdir); return; } /* Delete the previous file root if any */ if(file_root_item) goo_canvas_item_remove(file_root_item); /* Create a root item to put the image list in it */ file_root_item = goo_canvas_group_new (root_item, NULL); /* * Create the scrollbar * -------------------- */ canvas = goo_canvas_new(); goo_canvas_widget_new (file_root_item, canvas, DRAWING_AREA_X1, DRAWING_AREA_Y1, DRAWING_AREA_X2 - DRAWING_AREA_X1 - 20.0, DRAWING_AREA_Y2 - DRAWING_AREA_Y1 - 35.0, NULL); gtk_widget_show (canvas); /* Set the new canvas to the background color or it's white */ bg_item = goo_canvas_rect_new (goo_canvas_get_root_item(GOO_CANVAS(canvas)), 0, 0, DRAWING_AREA_X2 - DRAWING_AREA_X1 + 200, DRAWING_AREA_Y2 - DRAWING_AREA_Y1, "fill-color-rgba", gc_skin_get_color("gcompris/fileselectbg"), "line-width", 0.0, NULL); adj = \ GTK_ADJUSTMENT (gtk_adjustment_new (0.00, 0.00, IMAGE_HEIGHT, 10, IMAGE_HEIGHT, (DRAWING_AREA_Y2 - DRAWING_AREA_Y1)/3) ); w = gtk_vscrollbar_new (adj); goo_canvas_widget_new (file_root_item, w, DRAWING_AREA_X2 - 15.0, DRAWING_AREA_Y1, 30.0, DRAWING_AREA_Y2 - DRAWING_AREA_Y1 - 20.0, NULL); gtk_widget_show (w); /* Set the scrollwheel event */ g_signal_connect (adj, "value_changed", (GtkSignalFunc) item_event_scroll, canvas); /* Display the directory name * -------------------------- */ item = goo_canvas_text_new (file_root_item, rootdir, (gdouble)control_area_x1, (gdouble)directory_label_y, -1, GTK_ANCHOR_NW, "font", "Sans 7", "fill-color-rgba", gc_skin_get_color("gcompris/fileselectcol"), NULL); /* Insert all files in a sorted list */ while((one_dirent = g_dir_read_name(dir)) != NULL) { gchar *filename; filename = g_strdup_printf("%s/%s", rootdir, (gchar*)(one_dirent)); if(g_file_test(filename, G_FILE_TEST_IS_DIR)) { dir_list = g_list_insert_sorted(dir_list, filename, (GCompareFunc)strcmp); } else { file_list = g_list_insert_sorted(file_list, filename, (GCompareFunc)strcmp); } } /* Concat the directory list and file list */ file_list = g_list_concat(dir_list, file_list); g_list_free(dir_list); dir_list = NULL; /* We have the list sorted, now display it */ listrunner = g_list_first(file_list); while(listrunner) { /* add the file to the display */ gchar *svg_id; gchar *allfilename = listrunner->data; gchar *filename = g_path_get_basename(allfilename); gchar *ext = g_strrstr(filename, "."); gchar *file_wo_ext = g_strdup(filename); if(ext) { gchar *ext2 = g_strrstr(file_wo_ext, "."); *ext2 = '\0'; } if(g_file_test(allfilename, G_FILE_TEST_IS_DIR)) svg_id = "#FOLDER"; else svg_id = "#FILE"; item = goo_canvas_svg_new (goo_canvas_get_root_item(GOO_CANVAS(canvas)), gc_skin_rsvg_get(), "svg-id", svg_id, NULL); SET_ITEM_LOCATION_CENTER(item, ix + (IMAGE_WIDTH + IMAGE_GAP)/2, iy); if(g_file_test(allfilename, G_FILE_TEST_IS_DIR)) { g_signal_connect(item, "button_press_event", (GtkSignalFunc) item_event_directory, allfilename); } else { g_signal_connect(item, "button_press_event", (GtkSignalFunc) item_event_file_selector, allfilename); } gc_item_focus_init(item, NULL); g_object_set_data_full (G_OBJECT (item), "allfilename", allfilename, g_free); /* The type */ if(ext) { GooCanvasItem *_item = \ goo_canvas_text_new (goo_canvas_get_root_item(GOO_CANVAS(canvas)), ext, ix + (IMAGE_WIDTH + IMAGE_GAP)/2, iy + 10, -1, GTK_ANCHOR_CENTER, "font", "Sans 6", "fill-color-rgba", gc_skin_get_color("gcompris/fileselectcol"), NULL); g_signal_connect(_item, "button_press_event", (GtkSignalFunc) item_event_file_selector, allfilename); gc_item_focus_init(_item, item); } /* The filename */ GooCanvasItem *name_item = \ goo_canvas_text_new (goo_canvas_get_root_item(GOO_CANVAS(canvas)), file_wo_ext, ix + (IMAGE_WIDTH + IMAGE_GAP)/2, iy + IMAGE_HEIGHT - 30, -1, GTK_ANCHOR_CENTER, "font", "Sans 7", "fill-color-rgba", gc_skin_get_color("gcompris/fileselectcol"), NULL); g_free(file_wo_ext); g_free(filename); if(g_file_test(allfilename, G_FILE_TEST_IS_DIR)) { g_signal_connect(name_item, "button_press_event", (GtkSignalFunc) item_event_directory, allfilename); } else { g_signal_connect(name_item, "button_press_event", (GtkSignalFunc) item_event_file_selector, allfilename); } gc_item_focus_init(name_item, item); ix += IMAGE_WIDTH + IMAGE_GAP; if(ix >= DRAWING_AREA_X2 - DRAWING_AREA_X1 - (IMAGE_WIDTH + IMAGE_GAP) ) { ix=0; iy+=IMAGE_HEIGHT + IMAGE_GAP; goo_canvas_set_bounds (GOO_CANVAS(canvas), 0, 0, DRAWING_AREA_X2- DRAWING_AREA_X1, iy + IMAGE_HEIGHT + IMAGE_GAP); if(iy >= DRAWING_AREA_Y2-DRAWING_AREA_Y1) { g_object_set(bg_item, "height", (double)iy + IMAGE_HEIGHT + IMAGE_GAP, NULL); g_object_set(adj, "upper", (double)iy - IMAGE_HEIGHT + IMAGE_GAP - 1, NULL); } } listrunner = g_list_next(listrunner); } g_dir_close(dir); g_list_free(file_list); }
void gc_help_start (GcomprisBoard *gcomprisBoard) { gchar *item_id = "#UP"; GooCanvasItem *item; gint y = 0; gint y_start = 0; gint x_start = 0; gchar *name = NULL; gchar *text_to_display = NULL; if(rootitem) return; gc_board_pause(TRUE); caller_cursor = gc_cursor_get(); gc_cursor_set(GCOMPRIS_DEFAULT_CURSOR); item_selected = NULL; item_selected_text = NULL; name = gcomprisBoard->title; gc_help_has_board(gcomprisBoard); rootitem = goo_canvas_group_new (goo_canvas_get_root_item(gc_get_canvas()), NULL); item = goo_canvas_svg_new (rootitem, gc_skin_rsvg_get(), "svg-id", "#DIALOG", "pointer-events", GOO_CANVAS_EVENTS_NONE, NULL); GooCanvasBounds bounds; guint pixmap_width = 40; goo_canvas_item_get_bounds(item, &bounds); x_start = bounds.x1; y_start = bounds.y1; y = bounds.y2 - 26; y_start += 15; if(gcomprisBoard->section && gcomprisBoard->name) { text_to_display = g_strdup_printf("%s/%s", gcomprisBoard->section, gcomprisBoard->name); goo_canvas_text_new (rootitem, text_to_display, BOARDWIDTH*0.10, y_start, -1, GTK_ANCHOR_NW, "font", gc_skin_font_board_tiny, "fill-color-rgba", gc_skin_color_title, NULL); g_free(text_to_display); } y_start += 30; goo_canvas_text_new (rootitem, name, BOARDWIDTH/2, y_start, -1, GTK_ANCHOR_CENTER, "font", gc_skin_font_title, "fill-color-rgba", gc_skin_color_title, NULL); y_start += 80; // Prerequisite Button if(prerequisite) { item_prerequisite = goo_canvas_svg_new (rootitem, gc_skin_rsvg_get(), "svg-id", item_id, NULL); SET_ITEM_LOCATION(item_prerequisite, (BOARDWIDTH*0.2) - pixmap_width/2, y_start - 10) g_signal_connect(item_prerequisite, "button_press_event", (GtkSignalFunc) item_event_help, "prerequisite"); gc_item_focus_init(item_prerequisite, NULL); item_prerequisite_text = \ goo_canvas_text_new (rootitem, _("Prerequisite"), BOARDWIDTH*0.20, y_start + GAP_TO_BUTTON, -1, GTK_ANCHOR_CENTER, "font", gc_skin_font_content, "fill-color-rgba", gc_skin_get_color("gcompris/helpunselect"), NULL); g_signal_connect(item_prerequisite_text, "button_press_event", (GtkSignalFunc) item_event_help, "prerequisite"); } // Goal Button if(goal) { item_goal = goo_canvas_svg_new (rootitem, gc_skin_rsvg_get(), "svg-id", item_id, NULL); SET_ITEM_LOCATION(item_goal, (BOARDWIDTH*0.4) - pixmap_width/2, y_start - 10); g_signal_connect(item_goal, "button_press_event", (GtkSignalFunc) item_event_help, "goal"); gc_item_focus_init(item_goal, NULL); item_goal_text = goo_canvas_text_new (rootitem, _("Goal"), BOARDWIDTH*0.4, y_start + GAP_TO_BUTTON, -1, GTK_ANCHOR_CENTER, "font", gc_skin_font_content, "fill-color-rgba", gc_skin_get_color("gcompris/helpunselect"), NULL); g_signal_connect(item_goal_text, "button_press_event", (GtkSignalFunc) item_event_help, "goal"); } // Manual Button if(manual) { item_manual = goo_canvas_svg_new (rootitem, gc_skin_rsvg_get(), "svg-id", item_id, NULL); SET_ITEM_LOCATION(item_manual, (BOARDWIDTH*0.6) - pixmap_width/2, y_start - 10); g_signal_connect(item_manual, "button_press_event", (GtkSignalFunc) item_event_help, "manual"); gc_item_focus_init(item_manual, NULL); item_manual_text = goo_canvas_text_new (rootitem, _("Manual"), BOARDWIDTH*0.6, y_start + GAP_TO_BUTTON, -1, GTK_ANCHOR_CENTER, "font", gc_skin_font_content, "fill-color-rgba", gc_skin_get_color("gcompris/helpunselect"), NULL); g_signal_connect(item_manual_text, "button_press_event", (GtkSignalFunc) item_event_help, "manual"); } // Credit Button if(credit) { item_credit = goo_canvas_svg_new (rootitem, gc_skin_rsvg_get(), "svg-id", item_id, NULL); SET_ITEM_LOCATION(item_credit, (BOARDWIDTH*0.8) - pixmap_width/2, y_start - 10); g_signal_connect(item_credit, "button_press_event", (GtkSignalFunc) item_event_help, "credit"); gc_item_focus_init(item_credit, NULL); item_credit_text = goo_canvas_text_new (rootitem, _("Credit"), BOARDWIDTH*0.8, y_start + GAP_TO_BUTTON, -1, GTK_ANCHOR_CENTER, "font", gc_skin_font_content, "fill-color-rgba", gc_skin_get_color("gcompris/helpunselect"), NULL); g_signal_connect(item_credit_text, "button_press_event", (GtkSignalFunc) item_event_help, "credit"); } // CONTENT // default text to display if(prerequisite) { text_to_display = prerequisite; select_item(item_prerequisite, item_prerequisite_text); } else if(goal) { text_to_display = goal; select_item(item_goal, item_goal_text); } else if(manual) { text_to_display = manual; select_item(item_manual, item_manual_text); } else if(credit) { text_to_display = credit; select_item(item_credit, item_credit_text); } y_start += 45; /* 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); gtk_signal_connect(GTK_OBJECT(view), "button-press-event", (GtkSignalFunc) event_disable_right_click_popup, NULL); PangoFontDescription *font_desc; font_desc = pango_font_description_from_string (gc_skin_font_content); gtk_widget_modify_font (view, font_desc); pango_font_description_free (font_desc); GdkColor fg_color; GdkColor bg_color; gc_skin_get_gdkcolor("gcompris/helpfg", &fg_color); gc_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); goo_canvas_widget_new (rootitem, sw, x_start + 40, y_start, 618.0, 280.0, NULL); gtk_widget_show_all (sw); set_content(text_to_display); // OK gc_util_button_text_svg(rootitem, BOARDWIDTH * 0.5, y, "#BUTTON_TEXT", _("OK"), (GtkSignalFunc) item_event_help, "ok"); gc_bar_hide(TRUE); help_displayed = TRUE; }
static void display_confirm(gchar *title, gchar *question_text, gchar *yes_text, gchar *no_text, ConfirmCallBack iscb) { if(rootitem) return; bg_x = BG_X; bg_y = BG_Y; titre_x = T_X; titre_w = T_W; titre_y = T_Y;; titre_h = T_H; text_zone_x = T_Z_X; text_zone_w = T_Z_W; text_zone_y = T_Z_Y; text_zone_h = T_Z_H; button_x = T_B_X; button_w = T_B_W; button_y = T_B_Y; button_h = T_B_Y; button_x_int = T_B_X_INT; gc_bar_hide(TRUE); gc_board_pause(TRUE); confirmCallBack=iscb; rootitem = goo_canvas_group_new (goo_canvas_get_root_item(gc_get_canvas()), NULL); goo_canvas_svg_new (rootitem, gc_skin_rsvg_get(), "svg-id", "#DIALOG", "pointer-events", GOO_CANVAS_EVENTS_NONE, NULL); /* Title */ goo_canvas_text_new (rootitem, title, titre_x + titre_w/2, titre_y + titre_h/2, -1, GTK_ANCHOR_CENTER, "font", gc_skin_font_title, "fill-color-rgba", gc_skin_color_title, NULL); text = goo_canvas_text_new (rootitem, question_text, text_zone_x, text_zone_y, 500, GTK_JUSTIFY_CENTER, "font", gc_skin_font_title, "fill-color-rgba", gc_skin_color_title, NULL); /* * Buttons * ------- */ GooCanvasBounds bounds; // CANCEL no_button = goo_canvas_svg_new (rootitem, gc_skin_rsvg_get(), "svg-id", "#BUTTON_TEXT", NULL); goo_canvas_item_get_bounds(no_button, &bounds); gint button_width = bounds.x2 - bounds.x1; button_x += button_width / 2; SET_ITEM_LOCATION_CENTER(no_button, button_x, button_y + 2*button_h/3); g_signal_connect(no_button, "button_press_event", (GtkSignalFunc) button_event, "/no/"); gc_item_focus_init(no_button, NULL); // CANCEL CROSS no_cross = goo_canvas_svg_new (rootitem, gc_skin_rsvg_get(), "svg-id", "#UNCHECKED", NULL); SET_ITEM_LOCATION_CENTER(no_cross, button_x , button_y + 2*button_h/3); g_signal_connect(no_cross, "button_press_event", (GtkSignalFunc) button_event, "/no/"); gc_item_focus_init(no_cross, no_button); goo_canvas_text_new (rootitem, no_text, (gdouble) button_x + button_width/2 + button_x_int , (gdouble) button_y + 2*button_h/3, -1, GTK_ANCHOR_WEST, "font", gc_skin_font_subtitle, "fill-color-rgba", gc_skin_get_color("gcompris/helpfg"), NULL); // OK yes_button = goo_canvas_svg_new (rootitem, gc_skin_rsvg_get(), "svg-id", "#BUTTON_TEXT", NULL); SET_ITEM_LOCATION_CENTER(yes_button, button_x , button_y + button_h/3); g_signal_connect(yes_button, "button_press_event", (GtkSignalFunc) button_event, "/yes/"); gc_item_focus_init(yes_button, NULL); // OK stick yes_stick = goo_canvas_svg_new (rootitem, gc_skin_rsvg_get(), "svg-id", "#CHECKED", NULL); SET_ITEM_LOCATION_CENTER(yes_stick, button_x , button_y + button_h/3); g_signal_connect(yes_stick, "button_press_event", (GtkSignalFunc) button_event, "/yes/"); gc_item_focus_init(yes_stick, yes_button); goo_canvas_text_new (rootitem, yes_text, (gdouble) button_x + button_width/2 + button_x_int , (gdouble) button_y + button_h/3, -1, GTK_ANCHOR_WEST, "font", gc_skin_font_subtitle, "fill-color-rgba", gc_skin_get_color("gcompris/helpfg"), NULL); confirm_displayed = TRUE; }
/** \brief create the area in which we display the board title and description * */ static void create_info_area(GooCanvasItem *parent, MenuItems *menuitems) { gint x = (double) info_x + info_w/2.0; gint y = info_y; g_assert(parent); /* The description background */ menuitems->bg = goo_canvas_rect_new (parent, info_x, info_y, info_w, info_h, "stroke_color_rgba", 0xFFFFFFFFL, "fill_color_rgba", gc_skin_get_color("menu/description_bg_color"), "line-width", (double) 2, "radius-x", (double) 10, "radius-y", (double) 10, NULL); g_object_set(menuitems->bg, "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL); menuitems->boardname_item = \ goo_canvas_text_new (parent, "", x, y + 20, -1, GTK_ANCHOR_CENTER, "font", gc_skin_font_board_big, "fill-color-rgba", gc_skin_get_color("menu/text"), "alignment", PANGO_ALIGN_CENTER, NULL); menuitems->description_item = \ goo_canvas_text_new (parent, "", x, y + 70, info_w - 10, GTK_ANCHOR_CENTER, "font", gc_skin_font_board_medium, "fill-color-rgba", gc_skin_get_color("menu/text"), "alignment", PANGO_ALIGN_CENTER, NULL); menuitems->author_item = \ goo_canvas_text_new (parent, "", x, y + 110, -1, GTK_ANCHOR_CENTER, "font", gc_skin_font_board_tiny, "fill-color-rgba", gc_skin_get_color("menu/text"), "alignment", PANGO_ALIGN_CENTER, NULL); }
static void menu_start (GcomprisBoard *agcomprisBoard) { current_x = 0.0; current_y = 0.0; /* initialisations */ /* in case we will make this parametrable */ panel_x = P_X; panel_y = P_Y; panel_w = P_W; panel_h = P_H; top_x = T_X; top_y = T_Y; top_w = T_W; top_h = T_H; top_int_x = T_INT_X; top_arrow_size = T_ARROW_SIZE; display_x = D_X; display_y = D_Y; display_w = D_W; display_h = D_H; display_int_x = D_INT_X; display_int_y = D_INT_Y; info_x = I_X; info_y = I_Y; info_w = I_W; info_h = I_H; icon_size = ICON_SIZE; icon_size_panel = ICON_SIZE_PANEL; icon_size_top = ICON_SIZE_TOP; if(agcomprisBoard != NULL) { RsvgHandle *svg_handle; gcomprisBoard=agcomprisBoard; /* set initial values for this level */ gcomprisBoard->level = 1; gcomprisBoard->maxlevel=1; /* Set back the bar to it's original location */ gc_bar_set(GC_BAR_CONFIG|GC_BAR_ABOUT|GC_BAR_JOURNAL|GC_BAR_SHARE); menuitems = g_new(MenuItems, 1); svg_handle = gc_skin_rsvg_get(); gc_set_background_by_id (goo_canvas_get_root_item(gcomprisBoard->canvas), svg_handle, "#BACKGROUND"); boardRootItem = \ goo_canvas_group_new (goo_canvas_get_root_item(gcomprisBoard->canvas), NULL); g_object_set_data_full(G_OBJECT (boardRootItem), "menuitems", menuitems, g_free); goo_canvas_svg_new (boardRootItem, svg_handle, "svg-id", "#SELECTOR", "pointer-events", GOO_CANVAS_EVENTS_NONE, NULL); goo_canvas_svg_new (boardRootItem, svg_handle, "svg-id", "#BUTTON_HORIZONTAL", "pointer-events", GOO_CANVAS_EVENTS_NONE, NULL); create_info_area(boardRootItem, menuitems); create_panel(boardRootItem); if (menu_position) display_section(menu_position); else display_welcome(menuitems); { if ( strcmp(gc_prop_get()->profile->name, GC_PROFILE_DEFAULT) != 0 ) { gchar *text = g_strdup_printf(_("Profile: %s"), gc_prop_get()->profile->name); goo_canvas_text_new (boardRootItem, text, BOARDWIDTH - 10, BOARDHEIGHT - 30, -1, GTK_ANCHOR_EAST, "font", gc_skin_font_board_tiny, "fill-color-rgba", gc_skin_get_color("menu/text"), "alignment", PANGO_ALIGN_RIGHT, NULL); g_free(text); } } { gchar *text = g_strdup_printf(_("Number of activities: %d"), gc_board_get_number_of_activity()); goo_canvas_text_new (boardRootItem, text, BOARDWIDTH - 10, BOARDHEIGHT - 10, -1, GTK_ANCHOR_EAST, "font", gc_skin_font_board_tiny, "fill-color-rgba", gc_skin_get_color("menu/text"), "alignment", PANGO_ALIGN_RIGHT, NULL); g_free(text); } menu_pause(FALSE); } }
void gc_selector_images_start (GcomprisBoard *gcomprisBoard, gchar *dataset, ImageSelectorCallBack iscb, void *user_context) { gint y_start = 0; gchar *dataseturl = NULL; GtkWidget *w; if(sugar_detected()) { sugar_choose_image(iscb, user_context); return; } if(rootitem) return; gc_bar_hide(TRUE); gc_board_pause(TRUE); imageSelectorCallBack = iscb; current_user_context = user_context; rootitem = goo_canvas_group_new (goo_canvas_get_root_item(gc_get_canvas()), NULL); images_selector_displayed = TRUE; goo_canvas_svg_new (rootitem, gc_skin_rsvg_get(), "svg-id", "#IMAGE_SELECTOR", "pointer-events", GOO_CANVAS_EVENTS_NONE, NULL); y_start += 110; /* * Create the list scrollbar * ------------------------- */ canvas_list_selector = goo_canvas_new (); goo_canvas_widget_new (rootitem, canvas_list_selector, LIST_AREA_X1, LIST_AREA_Y1, LIST_AREA_X2 - LIST_AREA_X1, LIST_AREA_Y2 - LIST_AREA_Y1 - 35.0, NULL); gtk_widget_show (canvas_list_selector); /* Set the new canvas to the background color or it's white */ list_bg_item = goo_canvas_rect_new (goo_canvas_get_root_item(GOO_CANVAS(canvas_list_selector)), 0, 0, (LIST_AREA_X2 - LIST_AREA_X1) * gc_zoom_factor_get(), (LIST_AREA_Y2 - LIST_AREA_Y1) * gc_zoom_factor_get(), "fill-color-rgba", gc_skin_get_color("gcompris/imageselectbg_left"), "line-width", 0.0, NULL); list_adj = \ GTK_ADJUSTMENT (gtk_adjustment_new (0.00, 0.00, 0.00, 10, IMAGE_HEIGHT, (LIST_AREA_Y2 - LIST_AREA_Y1) * gc_zoom_factor_get()) ); w = gtk_vscrollbar_new (list_adj); goo_canvas_widget_new (rootitem, w, LIST_AREA_X2 - 5.0, LIST_AREA_Y1, 30.0, LIST_AREA_Y2 - LIST_AREA_Y1 - 20.0, NULL); gtk_widget_show (w); /* Set the scrollwheel event */ g_signal_connect (list_adj, "value_changed", (GCallback) item_event_scroll, canvas_list_selector); /* * Create the image scrollbar * -------------------------- */ canvas_image_selector = goo_canvas_new (); goo_canvas_widget_new (rootitem, canvas_image_selector, DRAWING_AREA_X1, DRAWING_AREA_Y1, DRAWING_AREA_X2 - DRAWING_AREA_X1, DRAWING_AREA_Y2 - DRAWING_AREA_Y1, NULL); gtk_widget_show (canvas_image_selector); /* Set the new canvas to the background color or it's white */ image_bg_item = \ goo_canvas_rect_new (goo_canvas_get_root_item(GOO_CANVAS(canvas_image_selector)), 0, 0, (DRAWING_AREA_X2 - DRAWING_AREA_X1) * gc_zoom_factor_get(), (DRAWING_AREA_Y2 - DRAWING_AREA_Y1) * gc_zoom_factor_get(), "fill-color-rgba", gc_skin_get_color("gcompris/imageselectbg_right"), "line-width", 0.0, NULL); image_adj = \ GTK_ADJUSTMENT (gtk_adjustment_new (0.00, 0.00, 0.00, 10, IMAGE_HEIGHT, (DRAWING_AREA_Y2 - DRAWING_AREA_Y1) * gc_zoom_factor_get()) ); w = gtk_vscrollbar_new (image_adj); goo_canvas_widget_new (rootitem, w, DRAWING_AREA_X2 - 5.0, DRAWING_AREA_Y1, 30.0, DRAWING_AREA_Y2 - DRAWING_AREA_Y1 - 20.0, NULL); gtk_widget_show (w); /* Set the scrollwheel event */ g_signal_connect (image_adj, "value_changed", (GCallback) item_event_scroll, canvas_image_selector); /* * DISPLAY IMAGES */ /* Initial image position */ isy = 0.0; /* I need the following : -> if dataset is a file read it. -> if dataset is a directory, read all xml file in it. */ dataseturl = \ gc_file_find_absolute(dataset, NULL); /* if the file doesn't exist */ if(g_file_test ((dataseturl), G_FILE_TEST_IS_DIR) ) { g_warning("dataset %s is a directory. Trying to read xml", dataseturl); read_dataset_directory(dataseturl); } else if(dataseturl) { /* Read the given data set file, local or net */ read_xml_file(dataseturl); } else { /* Network code for dataset directory */ GSList *filelist = NULL; GSList *i = NULL; g_free(dataseturl); dataseturl = g_strconcat("boards/", dataset, NULL); /* TODO */ filelist = NULL; //gc_net_dir_read_name(dataseturl, ".xml"); for (i = filelist; i != NULL; i = g_slist_next (i)) { gchar *url = gc_file_find_absolute(i->data, NULL); g_warning("processing dataset=%s\n", (char *)i->data); read_xml_file(url); g_free(url); } g_slist_free(filelist); } g_free(dataseturl); /* * OK Button * --------- */ gc_util_button_text_svg(rootitem, (BOARDWIDTH*0.5), BOARDHEIGHT - 32, "#BUTTON_TEXT", _("OK"), (GCallback) item_event_images_selector, "/ok/"); }