X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Finstance.c;h=54a4bf64b05faa4e777c84563943333edffea80a;hb=9638c3cc3c60587117673f7d1b821e8c960fe355;hp=2bd06b0b9a4b8c898657222223eb970180206b31;hpb=cfbef984de0dc53c8b882d7706556656b9934de2;p=melted_gui diff --git a/src/instance.c b/src/instance.c index 2bd06b0..54a4bf6 100644 --- a/src/instance.c +++ b/src/instance.c @@ -39,62 +39,228 @@ #include "player.h" #include "library.h" #include "playlist.h" +#include "control.h" GtkTargetEntry drag_targets[] = { { (char*) "application/playlist_item_t", 0, 0 } }; -gboolean instance_button_click(instance_t* app, control_buttons_t button) +static gboolean library_tree_key(GtkWidget *widget, GdkEventKey *event, gpointer data) +{ + instance_t* app = (instance_t*)data; + + switch(event->keyval) + { + case GDK_C: + case GDK_c: + if(event->state & GDK_CONTROL_MASK) + { + int count; + playlist_item_t* items; + + items = library_get_selected_items(app, &count); + + if(items) + { + int i; + + for(i = 0; i < count; i++) + app->clipboard.item[i] = items[i]; + + app->clipboard.count = count; + }; + + return TRUE; + }; + break; + case GDK_V: + case GDK_v: + if(event->state & GDK_CONTROL_MASK) + { + g_warning("CTRL+v\n"); + return TRUE; + }; + break; + case GDK_X: + case GDK_x: + if(event->state & GDK_CONTROL_MASK) + { + g_warning("CTRL+x\n"); + return TRUE; + }; + break; + case GDK_KEY_BackSpace: +// omnplay_library_add(app, 0); + return TRUE; + case GDK_KEY_F5: +// omnplay_library_refresh(app); + return TRUE; + }; + + return FALSE; +}; + +static gboolean playlist_grid_key(GtkWidget *widget, GdkEventKey *event, gpointer data) +{ + instance_t* app = (instance_t*)data; + + switch(event->keyval) + { + case GDK_C: + case GDK_c: + if(event->state & GDK_CONTROL_MASK) + { + playlist_item_copy(app); + return TRUE; + }; + break; + case GDK_V: + case GDK_v: + if(event->state & GDK_CONTROL_MASK) + { + playlist_item_paste(app, 0); + return TRUE; + }; + break; + case GDK_X: + case GDK_x: + if(event->state & GDK_CONTROL_MASK) + { + playlist_item_copy(app); + playlist_delete_selected_items(app); + return TRUE; + }; + break; + case GDK_S: + case GDK_s: + if(event->state & GDK_CONTROL_MASK) + { + playlist_save(app); + return TRUE; + }; + break; + case GDK_O: + case GDK_o: + if(event->state & GDK_CONTROL_MASK) + { + playlist_load(app); + return TRUE; + }; + break; + case GDK_KEY_uparrow: + if(event->state & GDK_CONTROL_MASK) + { + playlist_item_swap(app, -1); + return TRUE; + }; + break; + case GDK_KEY_downarrow: + if(event->state & GDK_CONTROL_MASK) + { + playlist_item_swap(app, -1); + return TRUE; + }; + break; + case GDK_KEY_space: + control_route(app, BUTTON_PLAYER_PLAY); + return TRUE; + case GDK_KEY_Return: + control_route(app, BUTTON_PLAYER_CUE); + return TRUE; + case GDK_KEY_Insert: +// omnplay_playlist_item_add(app, 0); + return TRUE; + case GDK_KEY_Delete: + playlist_delete_selected_items(app); + return TRUE; + case GDK_E: + case GDK_e: + playlist_item_edit(app); + return TRUE; + }; + + return FALSE; +}; + +static gboolean library_tree_button(GtkWidget *widget, GdkEventButton *event, gpointer data) +{ +// g_warning("on_library_grid_button: event->button=%d, event->type=%d", event->button, event->type); + + if(event->button==1 && event->type==GDK_2BUTTON_PRESS) + { + playlist_item_add_from_library((instance_t* )data, 0); + return TRUE; + }; + + return FALSE; +}; + +static gboolean playlist_grid_button(GtkWidget *widget, GdkEventButton *event, gpointer data) +{ + instance_t* app = (instance_t*)data; + +// g_warning("on_playlist_grid_button"); + + if(event->button==1 && event->type==GDK_2BUTTON_PRESS) + { + playlist_item_edit(app); + return TRUE; + }; + + return FALSE; +}; + +static gboolean instance_button_click(instance_t* app, control_buttons_t button) { -#if 0 switch(button) { case BUTTON_PLAYLIST_ITEM_ADD: - omnplay_playlist_item_add(app, 0); + playlist_item_add(app, 0); break; case BUTTON_PLAYLIST_ITEM_DEL: - omnplay_playlist_item_del(app); + playlist_delete_selected_items(app); break; case BUTTON_PLAYLIST_ITEM_EDIT: - omnplay_playlist_item_edit(app); + playlist_item_edit(app); break; case BUTTON_PLAYLIST_LOAD: - omnplay_playlist_load(app); + playlist_load(app); break; case BUTTON_PLAYLIST_SAVE: - omnplay_playlist_save(app); + playlist_save(app); break; case BUTTON_PLAYLIST_BLOCK_SINGLE: case BUTTON_PLAYLIST_BLOCK_LOOP: - omnplay_playlist_block(app, button); + playlist_block(app, (BUTTON_PLAYLIST_BLOCK_LOOP == button)?1:0); break; case BUTTON_PLAYLIST_ITEM_UP: - omnplay_playlist_item_swap(app, -1); + playlist_item_swap(app, -1); break; case BUTTON_PLAYLIST_ITEM_DOWN: - omnplay_playlist_item_swap(app, +1); + playlist_item_swap(app, +1); break; case BUTTON_PLAYER_CUE: case BUTTON_PLAYER_PLAY: case BUTTON_PLAYER_PAUSE: case BUTTON_PLAYER_STOP: - omnplay_ctl(app, button); + control_route(app, button); break; case BUTTON_LIBRARY_ADD: - omnplay_library_add(app, 0); + playlist_item_add_from_library(app, 0); break; case BUTTON_LIBRARY_REFRESH: - omnplay_library_refresh(app); +// omnplay_library_refresh(app); break; case BUTTON_LIBRARY_FIND: - omnplay_library_search(app, 0); +// omnplay_library_search(app, 0); break; case BUTTON_LIBRARY_FIND_NEXT: - omnplay_library_search(app, 1); +// omnplay_library_search(app, 1); break; case BUTTON_PLAYLIST_RELINK: - omnplay_playlist_relink(app); +// omnplay_playlist_relink(app); break; + default: + g_warning("instance_button_click: unknow button clicked"); }; -#endif return TRUE; }; @@ -161,23 +327,21 @@ void instance_init(instance_t* app) gtk_signal_connect( GTK_OBJECT( app->window ), "destroy", GTK_SIGNAL_FUNC(on_main_window_destroy), app); -#if 0 gtk_widget_add_events(app->playlist_grid, GDK_BUTTON_PRESS_MASK); gtk_widget_add_events(app->playlist_grid, GDK_KEY_PRESS_MASK); gtk_signal_connect(GTK_OBJECT(app->playlist_grid), "key-press-event", - GTK_SIGNAL_FUNC(on_playlist_grid_key), app); + GTK_SIGNAL_FUNC(playlist_grid_key), app); - gtk_widget_add_events(app->library_grid, GDK_BUTTON_PRESS_MASK); - gtk_widget_add_events(app->library_grid, GDK_KEY_PRESS_MASK); - gtk_signal_connect(GTK_OBJECT(app->library_grid), "key-press-event", - GTK_SIGNAL_FUNC(on_library_grid_key), app); + gtk_widget_add_events(app->library_tree, GDK_BUTTON_PRESS_MASK); + gtk_widget_add_events(app->library_tree, GDK_KEY_PRESS_MASK); + gtk_signal_connect(GTK_OBJECT(app->library_tree), "key-press-event", + GTK_SIGNAL_FUNC(library_tree_key), app); gtk_signal_connect(GTK_OBJECT(app->playlist_grid), "button-press-event", - GTK_SIGNAL_FUNC(on_playlist_grid_button), app); + GTK_SIGNAL_FUNC(playlist_grid_button), app); - gtk_signal_connect(GTK_OBJECT(app->library_grid), "button-press-event", - GTK_SIGNAL_FUNC(on_library_grid_button), app); -#endif + gtk_signal_connect(GTK_OBJECT(app->library_tree), "button-press-event", + GTK_SIGNAL_FUNC(library_tree_button), app); /* create lock */ pthread_mutexattr_init(&attr);