/* input handler */
static gboolean
input_cb (ClutterActor *stage,
	  ClutterEvent *event,
	  gpointer      data)
{
  SuperOH *oh = data;

  if (event->type == CLUTTER_BUTTON_PRESS)
    {
      ClutterButtonEvent *button_event;
      ClutterActor *e;
      gint x, y;

      clutter_event_get_coords (event, &x, &y);

      button_event = (ClutterButtonEvent *) event;
      g_print ("*** button press event (button:%d) ***\n",
	       button_event->button);

      e = clutter_stage_get_actor_at_pos (CLUTTER_STAGE (stage), x, y);

      if (e && (CLUTTER_IS_TEXTURE (e) || CLUTTER_IS_CLONE_TEXTURE (e)))
        {
	  clutter_actor_hide (e);
          return TRUE;
        }
    }
  else if (event->type == CLUTTER_KEY_RELEASE)
    {
      ClutterKeyEvent *kev = (ClutterKeyEvent *) event;

      g_print ("*** key press event (key:%c) ***\n",
	       clutter_key_event_symbol (kev));

      if (clutter_key_event_symbol (kev) == CLUTTER_q)
        {
	  clutter_main_quit ();
          return TRUE;
        }
      else if (clutter_key_event_symbol (kev) == CLUTTER_r)
        {
          gint i;

          for (i = 0; i < n_hands; i++)
            clutter_actor_show (oh->hand[i]);

          return TRUE;
        }
    }

  return FALSE;
}
static void
on_key_press_event (ClutterStage    *stage,
                    ClutterKeyEvent *event,
                    gpointer         user_data)
{
  TestThreadData *data;

  switch (clutter_key_event_symbol (event))
    {
    case CLUTTER_s:
      clutter_label_set_text (CLUTTER_LABEL (help_label), "Press 'q' to quit");

      clutter_timeline_start (timeline);
      
      data = test_thread_data_new ();
      data->stage = g_object_ref (stage);
      data->label = g_object_ref (count_label);
      data->progress = g_object_ref (progress_rect);
      data->timeline = g_object_ref (timeline);
      g_thread_create (test_thread_func, data, FALSE, NULL);
      break;
    case CLUTTER_q:
      clutter_main_quit ();
      break;
    }
}
Beispiel #3
0
static void
on_key_release_event (ClutterStage *stage,
                      ClutterEvent *event,
                      gpointer      null)
{
    static gint i = 0;

    switch (clutter_key_event_symbol ((ClutterKeyEvent*)event))
    {
    case CLUTTER_Escape:
        clutter_main_quit ();
        break;
    case CLUTTER_Left:
        i--;
        if (i == 0)
            i = 359;
        clutter_actor_set_rotation (CLUTTER_ACTOR (stage), CLUTTER_Y_AXIS, i,
                                    CLUTTER_STAGE_WIDTH ()/2,
                                    0,
                                    CLUTTER_STAGE_HEIGHT ());
        break;
    case CLUTTER_Right:
        i++;
        if (i == 360)
            i = 0;
        clutter_actor_set_rotation (CLUTTER_ACTOR (stage), CLUTTER_Y_AXIS, i,
                                    CLUTTER_STAGE_WIDTH ()/2,
                                    0,
                                    CLUTTER_STAGE_HEIGHT ());
        break;
    case CLUTTER_Up:
        if (!clutter_timeline_is_playing (timeline))
            clutter_timeline_start (timeline);
        break;
    default:
        break;
    }
}