Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

Storyboard Class Reference

#include <storyboard.h>

Collaboration diagram for Storyboard:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 Storyboard (KinoCommon *common)
 ~Storyboard ()
void redraw ()
void select (int scene)
void setSensitive (bool sensitive)
void moveScene (unsigned int destScene)
GtkTreeView * getView ()
GtkTreeStore * getModel ()
bool getSkipSelect ()
void reset ()
bool getSkip ()
void setSkip ()
void clearSkip ()
SMIL::MediaClippingTimegetTime ()

Private Attributes

GtkTreeView * view
GtkTreeStore * model
KinoCommoncommon
int selection
bool skipSelect
bool skip
SMIL::MediaClippingTime m_time

Constructor & Destructor Documentation

Storyboard::Storyboard KinoCommon common  ) 
 

Definition at line 451 of file storyboard.cc.

References COLUMN_NAME, COLUMN_NAME_MODE, COLUMN_THUMBNAIL, COLUMN_VALUE, COLUMN_VALUE_MODE, KinoCommon::getCurrentScene(), KinoCommon::getWidget(), lookup_widget(), model, N_COLUMNS, on_name_edited(), on_name_show_popup(), on_name_start_editing(), on_value_edited(), on_value_show_popup(), on_value_start_editing(), select(), selection, tree_model_row_inserted_cb(), tree_view_row_activated(), tree_view_row_select(), and view.

00451                                            :
00452         common( common ), skipSelect( false ), skip( false )
00453 {
00454     GtkCellRenderer* renderer;
00455     GtkTreeViewColumn* column;
00456     GtkTreeSelection* select;
00457 
00458     gdk_threads_enter();
00459 
00460     // Create the tree view
00461     view = GTK_TREE_VIEW( lookup_widget( common->getWidget(), "treeview_storyboard" ) );
00462     g_signal_connect( G_OBJECT( view ), "button-release-event", G_CALLBACK( tree_view_row_select ), this );
00463     g_signal_connect( G_OBJECT( view ), "row-activated", G_CALLBACK( tree_view_row_activated ), this );
00464     gtk_tree_view_set_enable_search( view, FALSE );
00465 
00466     // Store the current scene
00467     selection = common->getCurrentScene();
00468 
00469     // Create the model and connect it to the view
00470     model = gtk_tree_store_new( N_COLUMNS, G_TYPE_OBJECT, G_TYPE_STRING,
00471         G_TYPE_INT, G_TYPE_STRING, G_TYPE_INT );
00472     gtk_tree_view_set_model( view, GTK_TREE_MODEL( model ) );
00473     g_signal_connect( G_OBJECT( model ), "row-inserted",
00474                       G_CALLBACK( tree_model_row_inserted_cb ), static_cast<gpointer>( this ) );
00475 
00476     // Add the thumbnail column
00477     renderer = gtk_cell_renderer_pixbuf_new();
00478     column = gtk_tree_view_column_new_with_attributes(
00479                  _( "Storyboard" ), renderer, "pixbuf", COLUMN_THUMBNAIL, NULL );
00480     gtk_tree_view_column_set_fixed_width( column, 100 );
00481     gtk_tree_view_column_set_min_width( column, 100 );
00482     gtk_tree_view_column_set_max_width( column, 100 );
00483     gtk_tree_view_append_column( view, column );
00484     gtk_tree_view_set_expander_column( view, column );
00485 
00486     // Add the meta name column
00487     column = gtk_tree_view_column_new();
00488     gtk_tree_view_column_set_title( column, _("Property") );
00489     gtk_tree_view_column_set_resizable( column, TRUE );
00490     gtk_tree_view_append_column( view, column );
00491     
00492     renderer = mg_cell_renderer_list_new();
00493     g_object_set( G_OBJECT( renderer ), "editable", TRUE, NULL );
00494     gtk_tree_view_column_pack_start( column, renderer, TRUE );
00495     gtk_tree_view_column_set_attributes( column, renderer,
00496                 "text", COLUMN_NAME,
00497                 "mode", COLUMN_NAME_MODE,
00498                 NULL );
00499 
00500     g_signal_connect( G_OBJECT( renderer ),
00501                 "start-editing",
00502                 G_CALLBACK( on_name_start_editing ),
00503                 NULL );
00504     g_signal_connect( G_OBJECT( renderer ),
00505                 "show_popup",
00506                 G_CALLBACK( on_name_show_popup ),
00507                 model );
00508     g_signal_connect( G_OBJECT( renderer ),
00509                 "edited",
00510                 G_CALLBACK( on_name_edited ),
00511                 model );
00512     
00513     // Add the meta value column
00514     column = gtk_tree_view_column_new();
00515     gtk_tree_view_column_set_title( column, _("Value") );
00516     gtk_tree_view_column_set_resizable( column, FALSE );
00517     gtk_tree_view_append_column( view, column );
00518     
00519     renderer = mg_cell_renderer_list_new();
00520     g_object_set( G_OBJECT( renderer ), "editable", TRUE, NULL );
00521 
00522     gtk_tree_view_column_pack_start( column, renderer, TRUE );
00523     gtk_tree_view_column_set_attributes( column, renderer,
00524                 "text", COLUMN_VALUE,
00525                 "mode", COLUMN_VALUE_MODE,
00526                 NULL );
00527 
00528     g_signal_connect( G_OBJECT( renderer ),
00529                 "start-editing",
00530                 G_CALLBACK( on_value_start_editing ),
00531                 NULL );
00532     g_signal_connect( G_OBJECT( renderer ),
00533                 "show_popup",
00534                 G_CALLBACK( on_value_show_popup ),
00535                 model );
00536     g_signal_connect( G_OBJECT( renderer ),
00537                 "edited",
00538                 G_CALLBACK( on_value_edited ),
00539                 model );
00540 
00541     select = gtk_tree_view_get_selection( view );
00542     gtk_tree_selection_set_mode( select, GTK_SELECTION_SINGLE );
00543     
00544     gdk_threads_leave();
00545     g_object_unref( G_OBJECT( model ) ); // view has the reference
00546 }

Storyboard::~Storyboard  ) 
 

Definition at line 548 of file storyboard.cc.

00549 {}


Member Function Documentation

void Storyboard::clearSkip  )  [inline]
 

Definition at line 62 of file storyboard.h.

References skip.

Referenced by showScenesThread().

00063     {
00064         this->skip = false;
00065     }

GtkTreeStore* Storyboard::getModel  )  [inline]
 

Definition at line 42 of file storyboard.h.

References model.

Referenced by showScenesThread().

00043     {
00044         return this->model;
00045     }

bool Storyboard::getSkip  )  [inline]
 

Definition at line 54 of file storyboard.h.

References skip.

Referenced by tree_model_row_inserted_cb().

00055     {
00056         return this->skip;
00057     }

bool Storyboard::getSkipSelect  )  [inline]
 

Definition at line 46 of file storyboard.h.

References skipSelect.

00047     {
00048         return this->skipSelect;
00049     }

SMIL::MediaClippingTime& Storyboard::getTime  )  [inline]
 

Definition at line 66 of file storyboard.h.

References m_time.

Referenced by showScenesThread().

00067     {
00068         return m_time;
00069     }

GtkTreeView* Storyboard::getView  )  [inline]
 

Definition at line 38 of file storyboard.h.

References view.

Referenced by showScenesThread().

00039     {
00040         return this->view;
00041     }

void Storyboard::moveScene unsigned int  destScene  ) 
 

Definition at line 786 of file storyboard.cc.

References common, KinoCommon::getPageEditor(), KinoCommon::getPlayList(), KinoCommon::moveToFrame(), redraw(), scenes, and selection.

Referenced by tree_model_row_inserted_cb().

00787 {
00788     std::cerr << "moving scene " << selection << " to scene " << destScene << std::endl;
00789     std::vector <int> scenes = common->getPageEditor() ->GetScene();
00790     int start = ( selection == 0 ) ? 0 : scenes[ selection - 1 ];
00791     int end = common->getPlayList() ->FindEndOfScene( start );
00792     int destFrame = 0;
00793 
00794     common->getPageEditor() ->CopyFrames( start, end );
00795     common->getPlayList() ->Delete( start, end );
00796 
00797     if ( destScene >= scenes.size() )
00798     {
00799         destFrame = common->getPlayList() ->GetNumFrames();
00800     }
00801     else if ( ( int ) destScene > selection )
00802     {
00803         common->getPageEditor() ->ResetBar();
00804         scenes = common->getPageEditor() ->GetScene();
00805         destFrame = scenes[ destScene - 2 ];
00806     }
00807     else if ( destScene > 0 )
00808     {
00809         common->getPageEditor() ->ResetBar();
00810         scenes = common->getPageEditor() ->GetScene();
00811         destFrame = scenes[ destScene - 1 ];
00812     }
00813 
00814     common->getPageEditor() ->PasteFrames( destFrame );
00815     common->moveToFrame( destFrame );
00816 
00817     redraw( );
00818 }

void Storyboard::redraw  ) 
 

Definition at line 733 of file storyboard.cc.

References SCENE_IDLE, SCENE_INIT, SCENE_RESTART, SCENE_RUNNING, SCENE_STARTING, selection, showScenesRunning, and showScenesThread().

Referenced by moveScene().

00734 {
00735     static pthread_t scenes_thread;
00736     static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
00737 
00738     pthread_mutex_lock( &mutex );
00739     selection = -1;
00740 
00741     // If running then, set as RESTART otherwise start the thread,
00742     // otherwise we're already waiting on a restart so do nothing
00743     if ( showScenesRunning == SCENE_RUNNING )
00744     {
00745         showScenesRunning = SCENE_RESTART;
00746     }
00747     else if ( showScenesRunning == SCENE_INIT )
00748     {
00749         showScenesRunning = SCENE_STARTING;
00750         pthread_create( &scenes_thread, NULL, showScenesThread, this );
00751     }
00752     else if ( showScenesRunning == SCENE_IDLE )
00753     {
00754         pthread_join( scenes_thread, NULL );
00755         showScenesRunning = SCENE_STARTING;
00756         pthread_create( &scenes_thread, NULL, showScenesThread, this );
00757     }
00758 
00759     pthread_mutex_unlock( &mutex );
00760 }

void Storyboard::reset  )  [inline]
 

Definition at line 50 of file storyboard.h.

References selection.

00051     {
00052         this->selection = -1;
00053     }

void Storyboard::select int  scene  ) 
 

Definition at line 762 of file storyboard.cc.

References model, selection, skipSelect, and view.

Referenced by showScenesThread(), and Storyboard().

00763 {
00764     if ( scene > -1 && scene < gtk_tree_model_iter_n_children( GTK_TREE_MODEL( model ), NULL ) )
00765     {
00766         GtkTreeIter iter;
00767         GtkTreeSelection* selection = gtk_tree_view_get_selection( view );
00768         if ( gtk_tree_model_iter_nth_child( GTK_TREE_MODEL( model ), &iter, NULL, scene ) )
00769         {
00770             GtkTreePath * path = gtk_tree_model_get_path( GTK_TREE_MODEL( model ), &iter );
00771             skipSelect = true;
00772             gtk_tree_selection_select_iter( selection, &iter );
00773             gtk_tree_view_scroll_to_cell( view, path, NULL, TRUE, 0.5, 0.0 );
00774             gtk_tree_path_free( path );
00775             skipSelect = false;
00776         }
00777         this->selection = scene;
00778     }
00779 }

void Storyboard::setSensitive bool  sensitive  ) 
 

Definition at line 781 of file storyboard.cc.

References view.

00782 {
00783     gtk_widget_set_sensitive( GTK_WIDGET( view ), sensitive ? TRUE : FALSE );
00784 }

void Storyboard::setSkip  )  [inline]
 

Definition at line 58 of file storyboard.h.

References skip.

Referenced by showScenesThread(), and tree_model_row_inserted_cb().

00059     {
00060         this->skip = true;
00061     }


Member Data Documentation

KinoCommon* Storyboard::common [private]
 

Definition at line 74 of file storyboard.h.

Referenced by moveScene().

SMIL::MediaClippingTime Storyboard::m_time [private]
 

Definition at line 78 of file storyboard.h.

Referenced by getTime().

GtkTreeStore* Storyboard::model [private]
 

Definition at line 73 of file storyboard.h.

Referenced by getModel(), select(), and Storyboard().

int Storyboard::selection [private]
 

Definition at line 75 of file storyboard.h.

Referenced by moveScene(), redraw(), reset(), select(), and Storyboard().

bool Storyboard::skip [private]
 

Definition at line 77 of file storyboard.h.

Referenced by clearSkip(), getSkip(), and setSkip().

bool Storyboard::skipSelect [private]
 

Definition at line 76 of file storyboard.h.

Referenced by getSkipSelect(), and select().

GtkTreeView* Storyboard::view [private]
 

Definition at line 72 of file storyboard.h.

Referenced by getView(), select(), setSensitive(), and Storyboard().


The documentation for this class was generated from the following files:
Generated on Sun Mar 11 22:13:25 2007 for Kino by  doxygen 1.4.2