Changeset 264 for trunk

Show
Ignore:
Timestamp:
08/18/08 14:42:34 (4 years ago)
Author:
ath
Message:

Add a first support for CDJ keybindings.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/fm_gui/src/fm_cdj_gui.c

    r223 r264  
    22#include <glib-object.h> 
    33#include <gtk/gtk.h> 
     4#include <gdk/gdkkeysyms.h> 
    45#include <glade/glade.h> 
    56#include <rgc_client.h> 
     
    9495 
    9596 
     97static void 
     98_seek_direct                    (FmCDJData      *cdata, 
     99                                 gdouble        pos) 
     100{ 
     101        GValue *val = g_value_init_double (pos); 
     102        rgc_remote_object_call (cdata->element, "seek_direct", val, NULL); 
     103        g_value_destroy (val); 
     104} 
     105 
     106 
     107static void 
     108_seek                           (FmCDJData      *cdata, 
     109                                 gint           value) 
     110{ 
     111        GValue *val = g_value_init_int (value); 
     112        rgc_remote_object_call (cdata->element, "seek", val, NULL); 
     113        g_value_destroy (val); 
     114} 
     115 
     116 
     117static gboolean 
     118_key_pressed_cb                 (GtkWidget      *widget, 
     119                                 GdkEventKey    *key, 
     120                                 gpointer       user_data) 
     121{ 
     122        FmCDJData *cdata = (FmCDJData *) user_data; 
     123        //FmCDJGui *gui = cdata->gui; 
     124        gboolean handled = TRUE; 
     125        g_print ("received key %d, %s\n", key->keyval, gdk_keyval_name(key->keyval)); 
     126 
     127        switch (key->keyval) {   
     128                case GDK_Home: 
     129                        _seek_direct (cdata, 0.0); 
     130                        break; 
     131 
     132                case GDK_Left: 
     133                        _seek (cdata, -50); 
     134                        break; 
     135 
     136                case GDK_Right: 
     137                        _seek (cdata, 50); 
     138                        break; 
     139 
     140                default: 
     141                        handled = FALSE; 
     142        } 
     143 
     144        return handled; 
     145} 
     146 
     147 
    96148FmCDJGui * 
    97149fm_cdj_gui_new                          (gpointer       data) 
     
    167219 
    168220        _take_away_the_color (gui->layout_display, "#303030"); 
     221 
     222        gtk_widget_set_events (gui->window_cdj, GDK_KEY_PRESS_MASK); 
     223        g_signal_connect (G_OBJECT (gui->window_cdj), "key-press-event", G_CALLBACK (_key_pressed_cb), data); 
    169224 
    170225 
     
    235290        g_print("fm_cdj_gui_button_seek_clicked, value %d\n", value); 
    236291 
    237         GValue *val = g_value_init_int (value); 
    238         rgc_remote_object_call (cdata->element, "seek", val, NULL); 
    239         g_value_destroy (val); 
     292        _seek (cdata, value); 
    240293} 
    241294 
     
    467520        g_print ("%lf\n", pos); 
    468521 
    469         GValue *val = g_value_init_double (pos); 
    470         rgc_remote_object_call (cdata->element, "seek_direct", val, NULL); 
    471         g_value_destroy (val); 
     522        _seek_direct (cdata, pos); 
    472523 
    473524        return FALSE;