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)
+ {
+// omnplay_playlist_save(app);
+ return TRUE;
+ };
+ break;
+ case GDK_O:
+ case GDK_o:
+ if(event->state & GDK_CONTROL_MASK)
+ {
+// omnplay_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:
+// omnplay_ctl(app, BUTTON_PLAYER_PLAY);
+ return TRUE;
+ case GDK_KEY_Return:
+// omnplay_ctl(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:
+// omnplay_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)
+ {
+// omnplay_library_add((omnplay_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)
+ {
+// omnplay_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);
+// omnplay_ctl(app, button);
break;
case BUTTON_LIBRARY_ADD:
- omnplay_library_add(app, 0);
+// 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;
};
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);