Esempio n. 1
0
static void
help_clicked_cb(GtkToolButton *button, gpointer user_data)
{
  beep();
  GcomprisBoard *board = gc_board_get_current();
  gc_help_start(board);
}
Esempio n. 2
0
/*
 * Display or not the exit button
 */
static void update_exit_button()
{

  if (gc_board_get_current() &&
      gc_board_get_current()->previous_board == NULL)
    {
      /* We are in the upper menu: show it */
      current_flags |= GC_BAR_EXIT;
      current_flags &= ~GC_BAR_HOME;
    }
  else
    {
      current_flags &= ~GC_BAR_EXIT;
      current_flags |= GC_BAR_HOME;
    }
}
Esempio n. 3
0
static void
config_clicked_cb(GtkToolButton *button, gpointer user_data)
{
  beep();
  GcomprisBoard *board = gc_board_get_current();
  if(board && board->plugin->config_start != NULL)
    board->plugin->config_start(board, gc_profile_get_current());
}
Esempio n. 4
0
static void
refresh_clicked_cb(GtkToolButton *button, gpointer user_data)
{
  beep();
  GcomprisBoard *board = gc_board_get_current();
  if(board && board->plugin->repeat != NULL)
    board->plugin->repeat();
}
Esempio n. 5
0
void gc_confirm_box_stop ()
{
  GcomprisBoard *gcomprisBoard = gc_board_get_current();

  // Destroy the box
  if(rootitem!=NULL)
    goo_canvas_item_remove(rootitem);

  rootitem = NULL;

  if(gcomprisBoard!=NULL && confirm_displayed)
    gc_board_pause(FALSE);

  gc_bar_hide(FALSE);
  confirm_displayed = FALSE;
}
Esempio n. 6
0
/*
 * Remove the displayed images_selector.
 * Do nothing if none is currently being dislayed
 */
void gc_selector_images_stop ()
{
  GcomprisBoard *gcomprisBoard = gc_board_get_current();

  if(gcomprisBoard != NULL && images_selector_displayed)
    {
      gc_board_pause(FALSE);
    }

  // Destroy the image_selector box
  if(rootitem!=NULL)
    goo_canvas_item_remove(rootitem);

  rootitem = NULL;
  current_root_set = NULL;

  gc_bar_hide(FALSE);
  images_selector_displayed = FALSE;
}
Esempio n. 7
0
/*
 * Remove the displayed file_selector.
 * Do nothing if none is currently being dislayed
 */
void
gc_selector_file_stop ()
{
  GcomprisBoard *gcomprisBoard = gc_board_get_current();

  if(gcomprisBoard!=NULL && file_selector_displayed)
    gc_board_pause(FALSE);

  // Destroy the file_selector box
  if(rootitem!=NULL)
    goo_canvas_item_remove(rootitem);

  rootitem = NULL;

  /* No need to destroy it since it's in rootitem but just clear it */
  file_root_item = NULL;

  gc_bar_hide(FALSE);
  file_selector_displayed = FALSE;

  //  if (current_extension)
  //    g_free(current_extension);
  current_extension = NULL;
}
Esempio n. 8
0
static void
bar_set_flags(const GComprisBarFlags flags)
{
  GcomprisBoard *board = gc_board_get_current();

  set_button(BUTTON_HELP, flags & GC_BAR_HELP || gc_help_has_board(board));
  set_button(BUTTON_ABOUT, flags & GC_BAR_ABOUT);

  set_button(BUTTON_PREV, flags & GC_BAR_LEVEL);
  set_button(BUTTON_LEVEL, flags & GC_BAR_LEVEL);
  set_button(BUTTON_NEXT, flags & GC_BAR_LEVEL);

  set_button(BUTTON_REFRESH, flags & (GC_BAR_REPEAT | GC_BAR_REPEAT_ICON));
  set_button(BUTTON_CONFIG, flags & GC_BAR_CONFIG);

  set_button(BUTTON_EXPANDER_1, TRUE);
  set_button(BUTTON_SCORE, max_score);
  set_button(BUTTON_EXPANDER_2, TRUE);

  set_button(BUTTON_ZOOM, TRUE);
  set_button(BUTTON_SEPARATOR, TRUE);
  set_button(BUTTON_BACK, board && board->previous_board);
  set_button(BUTTON_STOP, TRUE);
}
Esempio n. 9
0
static void
level_clicked_cb(GtkToolButton *button, gpointer user_data)
{
  beep();

  GcomprisBoard *board = gc_board_get_current();
  if (board == NULL)
      return;

  gint delta = GPOINTER_TO_INT(user_data);
  current_level += delta;

  if (current_level > board->maxlevel)
    current_level = 1;
  else if (current_level < 1)
    current_level = board->maxlevel;

  update_level();

  if (board->plugin->set_level != NULL)
    board->plugin->set_level(current_level);

  gc_bar_play_level_voice(current_level);
}
Esempio n. 10
0
/* Callback for the bar operations */
static gboolean
item_event_bar (GooCanvasItem  *item,
		GooCanvasItem  *target,
		GdkEventButton *event,
		GComprisBarFlags flag)
{
  GcomprisBoard *gcomprisBoard = gc_board_get_current();

  if(_hidden)
    return(FALSE);

  bar_reset_sound_id();
  gc_sound_play_ogg ("sounds/bleep.wav", NULL);

  switch (flag)
    {
    case GC_BAR_LEVEL:
      {
        current_level++;
        if(gcomprisBoard && current_level > gcomprisBoard->maxlevel)
          current_level=1;

        /* Set the level */
        if(gcomprisBoard && gcomprisBoard->plugin->set_level != NULL)
          gcomprisBoard->plugin->set_level(current_level);

        gc_bar_play_level_voice(current_level);
      }
      break;
    case GC_BAR_LEVEL_DOWN:
      {
        /* Decrease the level */
        current_level--;
        if(current_level < 1)
          current_level = gcomprisBoard->maxlevel;

        /* Set the level */
        if(gcomprisBoard && gcomprisBoard->plugin->set_level != NULL)
          gcomprisBoard->plugin->set_level(current_level);

        gc_bar_play_level_voice(current_level);
      }
      break;
    case GC_BAR_HOME:
      {
        bar_hide (TRUE);
        gc_board_stop();
      }
      break;
    case GC_BAR_HELP:
      {
        gc_help_start(gcomprisBoard);
      }
      break;
    case GC_BAR_REPEAT_ICON:
    case GC_BAR_REPEAT:
      {
        if(gcomprisBoard && gcomprisBoard->plugin->repeat != NULL)
          {
            gcomprisBoard->plugin->repeat();
          }
      }
      break;
    case GC_BAR_CONFIG:
      {
        if(gcomprisBoard && gcomprisBoard->plugin->config_start != NULL)
          {
            gcomprisBoard->plugin->config_start(gcomprisBoard,
                                                gc_profile_get_current());
          }
      }
      break;
    case GC_BAR_ABOUT:
      {
        gc_about_start();
      }
      break;
    case GC_BAR_EXIT:
      {
        GcomprisProperties *properties = gc_prop_get();

        if(strlen(properties->root_menu) == 1)
          gc_confirm_box( _("GCompris confirmation"),
                          _("Are you sure you want to quit?"),
                          _("Yes, I am sure!"),
                          _("No, I want to keep going"),
                          (ConfirmCallBack) confirm_quit);
        else
          confirm_quit(TRUE);
      }
      break;
    default:
      break;
    }
  return TRUE;
}
Esempio n. 11
0
/* Setting list of available icons in the control bar */
static void
bar_set (const GComprisBarFlags flags)
{
  // Always reset the zoom factor or the calculation
  // will be wrong
  goo_canvas_item_set_transform(rootitem, NULL);

  _hidden = FALSE;
  goo_canvas_item_raise(rootitem, NULL);

  /* Non yet initialized : Something Wrong */
  if(get_item(GC_BAR_LEVEL) == NULL)
    {
      g_message("in bar_set_level, level_item uninitialized : should not happen\n");
      return;
    }

  current_flags = flags;

  if(gc_help_has_board(gc_board_get_current()))
    current_flags |= GC_BAR_HELP;

  if(flags&GC_BAR_ABOUT)
    current_flags |= GC_BAR_ABOUT;

  if(flags&GC_BAR_CONFIG)
    current_flags |= GC_BAR_CONFIG;

  if(flags&GC_BAR_REPEAT_ICON)
    current_flags |= GC_BAR_REPEAT_ICON;

  if(flags&GC_BAR_REPEAT)
    current_flags |= GC_BAR_REPEAT;

  update_exit_button();

  GSList *list;
  double x = 0;
  for (list = buttons; list != NULL; list = list->next)
    {
      GooCanvasItem *item = (GooCanvasItem *)list->data;
      GComprisBarFlags flag =
        GPOINTER_TO_UINT(g_object_get_data(G_OBJECT (item), "flag"));

      if (flag & current_flags)
        {
          GooCanvasBounds bounds;
	  SET_ITEM_LOCATION(item, x, -20);
          goo_canvas_item_get_bounds(item, &bounds);
          gc_item_focus_init(item, NULL);
          x += bounds.x2 - bounds.x1 + BAR_GAP;

          g_object_set (item,
                        "visibility", GOO_CANVAS_ITEM_VISIBLE,
                        NULL);
        }
      else
          g_object_set (item,
                        "visibility", GOO_CANVAS_ITEM_INVISIBLE,
                        NULL);

    }

  /* Scale the bar back to fit the buttons, no more */
  SET_ITEM_LOCATION(bar_item, 0, 0);
  GooCanvasBounds bounds;
  goo_canvas_item_get_bounds(bar_item, &bounds);
  goo_canvas_item_scale(bar_item,
                        x / (bounds.x2 - bounds.x1),
                        1);

  // Always center the bar with its new bounds
  //SET_ITEM_LOCATION(rootitem, 0, _default_y);
  bar_location (-1, -1, -1);
}