introduce clips page split
[rugen] / src / page_clips.c
index 27d9205..173f97e 100644 (file)
@@ -155,7 +155,13 @@ static void list_queue( page_clips this, int clip )
                GtkCellRenderer *renderer;
                GtkTreeViewColumn *column;
 
-               list_store = gtk_list_store_new( 6, G_TYPE_BOOLEAN, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_STRING, G_TYPE_INT );
+               list_store = gtk_list_store_new( 6,
+                       G_TYPE_BOOLEAN,
+                       G_TYPE_STRING,
+                       G_TYPE_STRING,
+                       G_TYPE_STRING,
+                       G_TYPE_STRING,
+                       G_TYPE_INT );
                gtk_tree_view_set_model( GTK_TREE_VIEW( treeview ), GTK_TREE_MODEL( list_store ) );
                
                renderer = gtk_cell_renderer_toggle_new( );
@@ -188,9 +194,17 @@ static void list_queue( page_clips this, int clip )
        
        for ( index = 0; index < mvcp_list_count( list ); index ++ )
        {
+               char tc1[12], tc2[12], tc3[12];
                mvcp_list_get( list, index, &entry );
                gtk_list_store_append( list_store, &iter );
-               gtk_list_store_set( list_store, &iter, 0, index == clip, 1, ( int )entry.in, 2, ( int )entry.out, 3, ( int )entry.size, 4, entry.full, 5, entry.clip, -1 );
+               gtk_list_store_set( list_store, &iter,
+                       0, index == clip,
+                       1, frames2tc( entry.in, entry.fps, tc1),
+                       2, frames2tc( entry.out, entry.fps, tc2),
+                       3, frames2tc( entry.size, entry.fps, tc3),
+                       4, entry.full,
+                       5, entry.clip,
+                       -1 );
        }
 
        this->clip = clip;
@@ -262,8 +276,20 @@ static gboolean on_ok( GtkWidget *dummy, gpointer data )
                                        mvcp_unit_append( this->dv, dv1394app_get_selected_unit( this->app ), temp, -1, -1 );
                                        break;
                                case 3:
-                                       mvcp_unit_clip_insert( this->dv, dv1394app_get_selected_unit( this->app ), mvcp_relative, 1, temp, -1, -1 );
+                               {
+                                       GtkWidget *widget = lookup_widget( this_page_get_widget( this ), "treeview1" );
+                                       GtkTreeSelection *select = gtk_tree_view_get_selection( GTK_TREE_VIEW( widget ) );
+                                       GtkTreeModel *model;
+                                       GtkTreeIter iter;
+                                       int clip;
+                                       
+                                       if ( gtk_tree_selection_get_selected( select, &model, &iter ) )
+                                       {
+                                               gtk_tree_model_get( model, &iter, 5, &clip,     -1 );
+                                               mvcp_unit_clip_insert( this->dv, dv1394app_get_selected_unit( this->app ), mvcp_absolute, clip, temp, -1, -1 );
+                                       }
                                        break;
+                               }
                        }
                        
                        free( temp );
@@ -392,21 +418,51 @@ static gboolean on_refresh( GtkWidget *button, gpointer data )
 static gboolean on_up( GtkWidget *dummy, gpointer data )
 {
        page_clips this = data;
-       mvcp_unit_clip_move( this->dv, dv1394app_get_selected_unit( this->app ), mvcp_relative, 0, mvcp_relative, -1 );
+       GtkWidget *widget = lookup_widget( this_page_get_widget( this ), "treeview1" );
+       GtkTreeSelection *select = gtk_tree_view_get_selection( GTK_TREE_VIEW( widget ) );
+       GtkTreeModel *model;
+       GtkTreeIter iter;
+       int clip;
+
+       if ( gtk_tree_selection_get_selected( select, &model, &iter ) )
+       {
+               gtk_tree_model_get( model, &iter, 5, &clip,     -1 );
+               mvcp_unit_clip_move( this->dv, dv1394app_get_selected_unit( this->app ), mvcp_absolute, clip, mvcp_absolute, clip - 1 < 0 ? 0 : clip - 1 );
+       }
        return TRUE;
 }
 
 static gboolean on_down( GtkWidget *dummy, gpointer data )
 {
        page_clips this = data;
-       mvcp_unit_clip_move( this->dv, dv1394app_get_selected_unit( this->app ), mvcp_relative, 0, mvcp_relative, 1 );
+       GtkWidget *widget = lookup_widget( this_page_get_widget( this ), "treeview1" );
+       GtkTreeSelection *select = gtk_tree_view_get_selection( GTK_TREE_VIEW( widget ) );
+       GtkTreeModel *model;
+       GtkTreeIter iter;
+       int clip;
+
+       if ( gtk_tree_selection_get_selected( select, &model, &iter ) )
+       {
+               gtk_tree_model_get( model, &iter, 5, &clip,     -1 );
+               mvcp_unit_clip_move( this->dv, dv1394app_get_selected_unit( this->app ), mvcp_absolute, clip, mvcp_absolute, clip + 1 );
+       }
        return TRUE;
 }
 
 static gboolean on_remove( GtkWidget *dummy, gpointer data )
 {
        page_clips this = data;
-       mvcp_unit_remove_current_clip( this->dv, dv1394app_get_selected_unit( this->app ) );
+       GtkWidget *widget = lookup_widget( this_page_get_widget( this ), "treeview1" );
+       GtkTreeSelection *select = gtk_tree_view_get_selection( GTK_TREE_VIEW( widget ) );
+       GtkTreeModel *model;
+       GtkTreeIter iter;
+       int clip;
+
+       if ( gtk_tree_selection_get_selected( select, &model, &iter ) )
+       {
+               gtk_tree_model_get( model, &iter, 5, &clip,     -1 );
+               mvcp_unit_clip_remove( this->dv, dv1394app_get_selected_unit( this->app ), mvcp_absolute, clip );
+       }
        return TRUE;
 }
 
@@ -438,8 +494,8 @@ static GtkWidget *this_page_get_widget( page_clips this )
 
 static void this_page_get_toolbar_info( page this, GtkIconSize size, GtkWidget **icon, char **label )
 {
-       *icon = gtk_image_new_from_stock( "gtk-find",  size );
-       *label = "_Clips";
+       *icon = gtk_image_new_from_stock( "gtk-justify-fill",  size );
+       *label = _("_Playlist");
 }
 
 static void this_page_on_connect( page_clips this )