/* gcompris - gcompris.h
*
* Copyright (C) 2000,2001,2002 Bruno Coudoin
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see .
*/
#ifndef _MAIN_H_
#define _MAIN_H_
#ifdef HAVE_CONFIG_H
# include
#endif
#include
#include
#include
#include
#include
#include
#include "plugin.h"
#include "gcompris-board.h"
#include "board.h"
#include "board_config.h"
#include "properties.h"
#include "gameutil.h"
#include "gc_net.h"
#include "bonus.h"
#include "timer.h"
#include "score.h"
#include "skin.h"
#include "anim.h"
#include "profile.h"
#include "gcompris_db.h"
#include "wordlist.h"
#include "gcompris_im.h"
#include "gcompris_alphabeta.h"
#include "drag.h"
#ifdef USE_CAIRO
#include "gcompris-cairo.h"
#endif
#ifdef DMALLOC
#include "dmalloc.h"
#endif
#define BOARDWIDTH 800
#define BOARDHEIGHT 520
#define BARHEIGHT 80
#define DEFAULT_SKIN "gartoon"
#define _(String) gettext (String)
#define gettext_noop(String) String
#ifndef N_
#define N_(String) gettext_noop (String)
#endif
/*****************************************************************************/
/* Method usefull for boards provided by gcompris */
void gc_board_end(void);
/* Control Bar methods */
void gc_bar_start (GnomeCanvas *theCanvas);
GnomeCanvasItem *gc_set_background(GnomeCanvasGroup *parent, gchar *file);
void gc_bar_set_level (GcomprisBoard *gcomprisBoard);
void gc_bar_set_repeat_icon (GdkPixbuf *pixmap);
/* Status bar control */
typedef enum
{
GC_BAR_LEVEL = 1 << 0,
GC_BAR_OK = 1 << 1,
GC_BAR_REPEAT = 1 << 2,
GC_BAR_CONFIG = 1 << 3,
GC_BAR_ABOUT = 1 << 4,
GC_BAR_REPEAT_ICON = 1 << 5,
GC_BAR_QUIT = 1 << 6,
} GComprisBarFlags;
/* Difficulty filtering */
typedef enum {
GCOMPRIS_FILTER_NONE,
GCOMPRIS_FILTER_EQUAL,
GCOMPRIS_FILTER_UNDER,
GCOMPRIS_FILTER_ABOVE,
} GcomprisFilterType;
void gc_bar_set (const GComprisBarFlags flags);
void gc_bar_hide (gboolean hide);
/* General */
GnomeCanvas *gc_get_canvas(void);
GtkWidget *gc_get_window(void);
void gc_ignore_next_focus_out(void);
const gchar *gc_locale_get(void);
void gc_locale_set(gchar *locale);
char *gc_locale_get_user_default(void);
gchar *gc_locale_get_name(gchar *locale);
void gc_cursor_set(guint gdk_cursor_type);
typedef void (*ImageSelectorCallBack) (gchar* image);
void gc_selector_images_start (GcomprisBoard *gcomprisBoard,
gchar *dataset,
ImageSelectorCallBack imscb);
void gc_selector_images_stop (void);
typedef void (*FileSelectorCallBack) (gchar *file, gchar *file_type); /* file_type is one string from file_types in the save */
void gc_selector_file_load (GcomprisBoard *gcomprisBoard,
gchar *rootdir,
gchar *file_types, /* A Comma separated text explaining the different file types */
FileSelectorCallBack fscb);
void gc_selector_file_save (GcomprisBoard *gcomprisBoard,
gchar *rootdir,
gchar *file_types, /* A Comma separated text explaining the different file types */
FileSelectorCallBack fscb);
void gc_selector_file_stop (void);
gchar *gc_db_get_filename();
/* Dialog box */
typedef void (*DialogBoxCallBack) ();
void gc_dialog(gchar *str, DialogBoxCallBack dbcb);
void gc_dialog_close();
/* Confirm box */
typedef void (*ConfirmCallBack) (gboolean answer);
void gc_confirm_box (gchar *title,
gchar *question_text,
gchar *yes_text,
gchar *no_text,
ConfirmCallBack iscb);
void gc_confirm_box_stop (void);
/* Use these instead of the gnome_canvas ones for proper fullscreen mousegrab
handling. */
int gc_canvas_item_grab (GnomeCanvasItem *item, unsigned int event_mask,
GdkCursor *cursor, guint32 etime);
void gc_canvas_item_ungrab (GnomeCanvasItem *item, guint32 etime);
/* Use it to tell the teacher where the kid failed */
void gc_log_set_comment (GcomprisBoard *gcomprisBoard, gchar *expected, gchar* got);
/* Do not use it if you use the bonus API in your board */
void gc_log_end (GcomprisBoard *gcomprisBoard, GCBonusStatusList status);
/* For menu type activity */
GList *gc_menu_getlist(gchar *section);
GcomprisBoard *gc_menu_section_get(gchar *section);
GList *gc_menu_get_boards();
/*=========================================================*/
/* Some global definition to keep a constant look and feel */
/* Boards coders are invited to use them */
#define COLOR_TITLE 0x0F0FC0FF
#define COLOR_TEXT_BUTTON 0x0F0FC0FF
#define COLOR_CONTENT 0x0D0DFAFF
#define COLOR_SUBTITLE 0xB00400FF
#define COLOR_SHADOW 0x000000FF
#define FONT_TITLE "Sans 20"
#define FONT_TITLE_FALLBACK "Sans 12"
#define FONT_SUBTITLE "Sans 16"
#define FONT_SUBTITLE_FALLBACK "Sans 12"
#define FONT_CONTENT "Sans 12"
#define FONT_CONTENT_FALLBACK "Sans 12"
#define FONT_BOARD_TINY "Sans 10"
#define FONT_BOARD_SMALL "Sans 12"
#define FONT_BOARD_MEDIUM "Sans 14"
#define FONT_BOARD_BIG "Sans 16"
#define FONT_BOARD_BIG_BOLD "Sans bold 16"
#define FONT_BOARD_FIXED "Fixed 12"
#define FONT_BOARD_TITLE "Sans 20"
#define FONT_BOARD_TITLE_BOLD "Sans bold 20"
#define FONT_BOARD_HUGE "Sans 28"
#define FONT_BOARD_HUGE_BOLD "Sans bold 28"
/*=========================================================*/
// These are gcompris defined cursors
// cursor defines must be over the last gnome cursor defined in gdkcursors.h
#define GCOMPRIS_FIRST_CUSTOM_CURSOR 1000
#define GCOMPRIS_DEFAULT_CURSOR 1001
#define GCOMPRIS_LINE_CURSOR 1003
#define GCOMPRIS_FILLRECT_CURSOR 1004
#define GCOMPRIS_RECT_CURSOR 1005
#define GCOMPRIS_FILLCIRCLE_CURSOR 1006
#define GCOMPRIS_CIRCLE_CURSOR 1007
#define GCOMPRIS_DEL_CURSOR 1008
#define GCOMPRIS_FILL_CURSOR 1009
#define GCOMPRIS_SELECT_CURSOR 1010
#endif