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

callbacks.c

Go to the documentation of this file.
00001 /*
00002 * Copyright (C) 2000 Arne Schirmacher <arne@schirmacher.de>
00003 * Copyright (C) 2001-2007 Dan Dennedy <dan@dennedy.org>
00004 *
00005 * This program is free software; you can redistribute it and/or modify
00006 * it under the terms of the GNU General Public License as published by
00007 * the Free Software Foundation; either version 2 of the License, or
00008 * (at your option) any later version.
00009 *
00010 * This program is distributed in the hope that it will be useful,
00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013 * GNU General Public License for more details.
00014 *
00015 * You should have received a copy of the GNU General Public License
00016 * along with this program; if not, write to the Free Software Foundation,
00017 * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00018 */
00019 
00020 #ifdef HAVE_CONFIG_H
00021 #include <config.h>
00022 #endif
00023 
00024 #include "callbacks.h"
00025 #include "support.h"
00026 #include "commands.h"
00027 #include "message.h"
00028 
00029 #include <stdio.h>
00030 
00031 extern GtkWidget *main_window;
00032 
00033 struct navigate_control g_nav_ctl;
00034 static gboolean doShuttle = FALSE;
00035 
00036 gboolean
00037 on_main_window_delete_event ( GtkWidget *widget,
00038                               GdkEvent *event,
00039                               gpointer user_data )
00040 {
00041     return kinoDeactivate();
00042 }
00043 
00044 gboolean
00045 on_main_window_key_press_event ( GtkWidget *widget,
00046                                  GdkEventKey *event,
00047                                  gpointer user_data )
00048 {
00049     // Process the keypress event with regard to the current
00050     // notebook selection
00051     return processKeyboard( event );
00052 }
00053 
00054 gboolean
00055 on_main_window_key_release_event ( GtkWidget *widget,
00056                                    GdkEventKey *event,
00057                                    gpointer user_data )
00058 {
00059     /* DRD> I had to comment out the following to prevent keybaord input
00060        from interrupting AVC control. I changed page_editor.cc and page_capture.cc
00061        to explicitly issue videoStop() with Esc. Seems to work fine.
00062      */ 
00063     //    if ( event->keyval != 0x00000020) /* spacebar = play/pause */
00064     //        videoStop();
00065     return FALSE;
00066 }
00067 
00068 void
00069 on_new_activate ( GtkWidget *menuitem,
00070                   gpointer user_data )
00071 {
00072     newFile( );
00073     gtk_widget_grab_focus( lookup_widget( menuitem, "eventbox_edit_drawingarea" ) );
00074 }
00075 
00076 
00077 void
00078 on_open_activate ( GtkWidget *menuitem,
00079                    gpointer user_data )
00080 {
00081     openFile( );
00082     gtk_widget_grab_focus( lookup_widget( menuitem, "eventbox_edit_drawingarea" ) );
00083 }
00084 
00085 
00086 void
00087 on_save_activate ( GtkWidget *menuitem,
00088                    gpointer user_data )
00089 {
00090     savePlayList( );
00091     gtk_widget_grab_focus( lookup_widget( menuitem, "eventbox_edit_drawingarea" ) );
00092 }
00093 
00094 
00095 void
00096 on_save_as_activate ( GtkMenuItem *menuitem,
00097                       gpointer user_data )
00098 {
00099     savePlayListAs( );
00100 }
00101 
00102 
00103 void
00104 on_exit_activate ( GtkWidget *menuitem,
00105                    gpointer user_data )
00106 {
00107     kinoDeactivate();
00108 }
00109 
00110 
00111 void
00112 on_cut_current_scene_activate ( GtkWidget *menuitem,
00113                                 gpointer user_data )
00114 {
00115     processCommand( "dd" );
00116     gtk_widget_grab_focus( lookup_widget( menuitem, "eventbox_edit_drawingarea" ) );
00117 }
00118 
00119 
00120 void
00121 on_copy_current_scene_activate ( GtkWidget *menuitem,
00122                                  gpointer user_data )
00123 {
00124     processCommand( "yy" );
00125     gtk_widget_grab_focus( lookup_widget( menuitem, "eventbox_edit_drawingarea" ) );
00126 }
00127 
00128 
00129 void
00130 on_paste_before_current_frame_activate ( GtkWidget *menuitem,
00131         gpointer user_data )
00132 {
00133     processCommand( "P" );
00134     gtk_widget_grab_focus( lookup_widget( menuitem, "eventbox_edit_drawingarea" ) );
00135 }
00136 
00137 
00138 void
00139 on_insert_movie_activate ( GtkWidget *menuitem,
00140                            gpointer user_data )
00141 {
00142     insertFile();
00143     gtk_widget_grab_focus( lookup_widget( menuitem, "eventbox_edit_drawingarea" ) );
00144 }
00145 
00146 gboolean
00147 on_expose_event ( GtkWidget *widget,
00148                                      GdkEventExpose *event,
00149                                      gpointer user_data )
00150 {
00151 #if 0
00152     if ( gdk_events_pending() )
00153     {
00154         GdkEvent * e;
00155         while ( ( e = gdk_event_get() ) != NULL )
00156         {
00157             if ( e->type != GDK_EXPOSE )
00158             {
00159                 gdk_event_put( ( GdkEvent * ) e );
00160                 break;
00161             }
00162         }
00163     }
00164 #endif
00165     windowMoved();
00166     return FALSE;
00167 }
00168 
00169 void
00170 on_about_activate ( GtkWidget *menuitem,
00171                     gpointer user_data )
00172 {
00173     GtkWidget * win = lookup_widget( menuitem, "about_window" );
00174     if ( win )
00175     {
00176         gtk_window_set_transient_for(GTK_WINDOW(win), GTK_WINDOW(main_window));
00177         gtk_widget_show( win );
00178     }
00179 }
00180 
00181 
00182 void
00183 on_main_notebook_switch_page ( GtkNotebook *notebook,
00184                                GtkNotebookPage *page,
00185                                gint page_num,
00186                                gpointer user_data )
00187 {
00188     pageStart( page_num );
00189 }
00190 
00191 
00192 void
00193 on_video_start_movie_button_clicked ( GtkButton *button,
00194                                       gpointer user_data )
00195 {
00196     videoStart( );
00197     gtk_widget_grab_focus( lookup_widget( GTK_WIDGET( button ), "eventbox_edit_drawingarea" ) );
00198 }
00199 
00200 
00201 void
00202 on_video_start_scene_button_clicked ( GtkButton *button,
00203                                       gpointer user_data )
00204 {
00205     videoPreviousScene( );
00206     gtk_widget_grab_focus( lookup_widget( GTK_WIDGET( button ), "eventbox_edit_drawingarea" ) );
00207 }
00208 
00209 
00210 void
00211 on_video_rewind_button_clicked ( GtkButton *button,
00212                                  gpointer user_data )
00213 {
00214     videoRewind( );
00215     gtk_widget_grab_focus( lookup_widget( GTK_WIDGET( button ), "eventbox_edit_drawingarea" ) );
00216 }
00217 
00218 
00219 void
00220 on_video_back_button_clicked ( GtkButton *button,
00221                                gpointer user_data )
00222 {
00223     videoBack( );
00224     gtk_widget_grab_focus( lookup_widget( GTK_WIDGET( button ), "eventbox_edit_drawingarea" ) );
00225 }
00226 
00227 
00228 void
00229 on_video_play_button_clicked ( GtkButton *button,
00230                                gpointer user_data )
00231 {
00232     videoPlay( );
00233     gtk_widget_grab_focus( lookup_widget( GTK_WIDGET( button ) , "eventbox_edit_drawingarea" ) );
00234 }
00235 
00236 
00237 void
00238 on_video_forward_button_clicked ( GtkButton *button,
00239                                   gpointer user_data )
00240 {
00241     videoForward( );
00242     gtk_widget_grab_focus( lookup_widget( GTK_WIDGET( button ) , "eventbox_edit_drawingarea" ) );
00243 }
00244 
00245 
00246 void
00247 on_video_fast_forward_button_clicked ( GtkButton *button,
00248                                        gpointer user_data )
00249 {
00250     videoFastForward( );
00251     gtk_widget_grab_focus( lookup_widget( GTK_WIDGET( button ), "eventbox_edit_drawingarea" ) );
00252 }
00253 
00254 
00255 void
00256 on_video_end_scene_button_clicked ( GtkButton *button,
00257                                     gpointer user_data )
00258 {
00259     videoNextScene( );
00260     gtk_widget_grab_focus( lookup_widget( GTK_WIDGET( button ), "eventbox_edit_drawingarea" ) );
00261 }
00262 
00263 
00264 void
00265 on_video_end_movie_button_clicked ( GtkButton *button,
00266                                     gpointer user_data )
00267 {
00268     videoEndOfMovie( );
00269     gtk_widget_grab_focus( lookup_widget( GTK_WIDGET( button ), "eventbox_edit_drawingarea" ) );
00270 }
00271 
00272 
00273 void
00274 on_video_pause_button_clicked ( GtkButton *button,
00275                                 gpointer user_data )
00276 {
00277     videoPause( );
00278     gtk_widget_grab_focus( lookup_widget( GTK_WIDGET( button ), "eventbox_edit_drawingarea" ) );
00279 }
00280 
00281 
00282 void
00283 on_video_stop_button_clicked ( GtkButton *button,
00284                                gpointer user_data )
00285 {
00286     videoStop( );
00287     gtk_widget_grab_focus( lookup_widget( GTK_WIDGET( button ), "eventbox_edit_drawingarea" ) );
00288 }
00289 
00290 
00291 void
00292 on_editor_activate ( GtkMenuItem *menuitem,
00293                      gpointer user_data )
00294 {
00295     notebookChangePage( 0 );
00296 }
00297 
00298 
00299 void
00300 on_capture_activate ( GtkMenuItem *menuitem,
00301                       gpointer user_data )
00302 {
00303     notebookChangePage( 1 );
00304 }
00305 
00306 
00307 void
00308 on_timeline_activate ( GtkMenuItem *menuitem,
00309                        gpointer user_data )
00310 {
00311     notebookChangePage( 2 );
00312 }
00313 
00314 
00315 gboolean
00316 on_eventbox_edit_drawingarea_button_press_event ( GtkWidget *widget,
00317                                   GdkEventButton *event,
00318                                   gpointer user_data )
00319 {
00320     g_nav_ctl.escaped = FALSE;
00321     gtk_widget_grab_focus( widget );
00322     return FALSE;
00323 }
00324 
00325 
00326 void
00327 on_main_window_size_allocate ( GtkWidget *widget,
00328                                GtkAllocation *allocation,
00329                                gpointer user_data )
00330 {
00331 }
00332 
00333 gboolean
00334 on_main_window_configure_event ( GtkWidget *widget,
00335                                  GdkEventConfigure *event,
00336                                  gpointer user_data )
00337 {
00338     windowMoved();
00339     return FALSE;
00340 }
00341 
00342 
00343 gboolean
00344 on_main_window_visibility_notify_event ( GtkWidget *widget,
00345         GdkEvent *event,
00346         gpointer user_data )
00347 {
00348     return FALSE;
00349 }
00350 
00351 
00352 gboolean
00353 on_main_window_event ( GtkWidget *widget,
00354                        GdkEvent *event,
00355                        gpointer user_data )
00356 {
00357     //visibilityChanged();
00358     return FALSE;
00359 }
00360 
00361 
00362 gboolean
00363 on_main_window_map_event ( GtkWidget *widget,
00364                            GdkEvent *event,
00365                            gpointer user_data )
00366 {
00367     visibilityChanged( TRUE );
00368     return FALSE;
00369 }
00370 
00371 
00372 gboolean
00373 on_main_window_unmap_event ( GtkWidget *widget,
00374                              GdkEvent *event,
00375                              gpointer user_data )
00376 {
00377     visibilityChanged( FALSE );
00378     return FALSE;
00379 }
00380 
00381 
00382 void
00383 on_export_activate ( GtkMenuItem *menuitem,
00384                      gpointer user_data )
00385 {
00386     notebookChangePage( 5 );
00387 
00388 }
00389 
00390 
00391 void
00392 on_50percent_activate ( GtkMenuItem *menuitem,
00393                         gpointer user_data )
00394 {
00395     setPreviewSize( 0.5 );
00396 }
00397 
00398 
00399 void
00400 on_100percent_activate ( GtkWidget *menuitem,
00401                          gpointer user_data )
00402 {
00403     setPreviewSize( 1.0 );
00404 }
00405 
00406 void
00407 on_hscale_shuttle_value_changed        (GtkRange        *range,
00408                                         gpointer         user_data)
00409 {
00410     if ( doShuttle == TRUE )
00411         videoShuttle( gtk_range_get_value( range ) );
00412 }
00413 
00414 gboolean
00415 on_hscale_shuttle_button_press_event ( GtkWidget *widget,
00416                                        GdkEventButton *event,
00417                                        gpointer user_data )
00418 {
00419     doShuttle = TRUE;
00420     return FALSE;
00421 }
00422 
00423 gboolean
00424 on_hscale_shuttle_button_release_event ( GtkWidget *widget,
00425         GdkEventButton *event,
00426         gpointer user_data )
00427 {
00428     doShuttle = FALSE;
00429     return FALSE;
00430 }
00431 
00432 gboolean
00433 on_eventbox_capture_drawingarea_button_press_event
00434 ( GtkWidget *widget,
00435   GdkEventButton *event,
00436   gpointer user_data )
00437 {
00438 
00439     g_nav_ctl.escaped = FALSE;
00440     gtk_entry_set_editable( GTK_ENTRY( lookup_widget( widget, "entry_capture_file" ) ), FALSE );
00441     gtk_widget_grab_focus( widget );
00442     return FALSE;
00443 }
00444 
00445 
00446 
00447 void
00448 on_append_movie_activate ( GtkWidget *menuitem,
00449                            gpointer user_data )
00450 {
00451     appendFile();
00452     gtk_widget_grab_focus( lookup_widget( menuitem, "eventbox_edit_drawingarea" ) );
00453 }
00454 
00455 
00456 void
00457 on_split_scene_activate ( GtkWidget *menuitem,
00458                           gpointer user_data )
00459 {
00460     processCommand( "Ctrl+J" );
00461     gtk_widget_grab_focus( lookup_widget( menuitem, "eventbox_edit_drawingarea" ) );
00462 }
00463 
00464 
00465 void
00466 on_button_viewsize_clicked ( GtkButton *button,
00467                              gpointer user_data )
00468 {
00469     setPreviewSize( -1.0 );
00470     gtk_widget_grab_focus( lookup_widget( GTK_WIDGET( button ), "eventbox_edit_drawingarea" ) );
00471 }
00472 
00473 void
00474 on_help_topics_activate ( GtkWidget *menuitem,
00475                           gpointer user_data )
00476 {
00477     showHelp( NULL );
00478     gtk_widget_grab_focus( lookup_widget( menuitem, "eventbox_edit_drawingarea" ) );
00479 }
00480 
00481 
00482 void
00483 on_undo_activate ( GtkWidget *menuitem,
00484                    gpointer user_data )
00485 {
00486     processCommand( "u" );
00487     gtk_widget_grab_focus( lookup_widget( menuitem, "eventbox_edit_drawingarea" ) );
00488 }
00489 
00490 
00491 void
00492 on_redo_activate ( GtkWidget *menuitem,
00493                    gpointer user_data )
00494 {
00495     processCommand( "Ctrl+R" );
00496     gtk_widget_grab_focus( lookup_widget( menuitem, "eventbox_edit_drawingarea" ) );
00497 }
00498 
00499 
00500 void
00501 on_join_scenes_activate ( GtkWidget *menuitem,
00502                           gpointer user_data )
00503 {
00504     processCommand( "J" );
00505     gtk_widget_grab_focus( lookup_widget( menuitem, "eventbox_edit_drawingarea" ) );
00506 }
00507 
00508 
00509 gboolean
00510 on_eventbox_trim_button_press_event ( GtkWidget *widget,
00511                                       GdkEventButton *event,
00512                                       gpointer user_data )
00513 {
00514     g_nav_ctl.escaped = FALSE;
00515     gtk_widget_grab_focus( widget );
00516     return FALSE;
00517 }
00518 
00519 
00520 void
00521 on_menuitem_trim_activate ( GtkMenuItem *menuitem,
00522                             gpointer user_data )
00523 {
00524     notebookChangePage( 3 );
00525 }
00526 
00527 
00528 
00529 void
00530 on_fx1_activate ( GtkMenuItem *menuitem,
00531                   gpointer user_data )
00532 {
00533     notebookChangePage( 4 );
00534 }
00535 
00536 
00537 void
00538 on_command_reference_activate ( GtkMenuItem *menuitem,
00539                                 gpointer user_data )
00540 {
00541     GtkWidget * dialog = lookup_widget( GTK_WIDGET( menuitem ), "keyhelp_window" );
00542 #include "cmd_ref.c"
00543 
00544     if ( dialog )
00545     {
00546         gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(main_window));
00547         gtk_widget_show( dialog );
00548     }
00549 
00550 }
00551 
00552 
00553 void
00554 on_time_format_smpte_activate ( GtkMenuItem *menuitem,
00555                                 gpointer user_data )
00556 {
00557     setTimeFormat( 2 );
00558 
00559 }
00560 
00561 
00562 void
00563 on_time_format_frames_activate ( GtkMenuItem *menuitem,
00564                                  gpointer user_data )
00565 {
00566     setTimeFormat( 1 );
00567 }
00568 
00569 
00570 void
00571 on_time_format_none_activate ( GtkMenuItem *menuitem,
00572                                gpointer user_data )
00573 {
00574     GtkLabel * l = GTK_LABEL( lookup_widget( GTK_WIDGET( menuitem ), "position_label_current" ) );
00575     gtk_label_set_text( l, "" );
00576     l = GTK_LABEL( lookup_widget( GTK_WIDGET( menuitem ), "position_label_total" ) );
00577     gtk_label_set_text( l, "" );
00578     setTimeFormat( 0 );
00579 }
00580 
00581 
00582 void
00583 on_autosize_activate ( GtkMenuItem *menuitem,
00584                        gpointer user_data )
00585 {
00586     setPreviewSize( 0 );
00587 }
00588 
00589 
00590 
00591 void
00592 on_hscale_shuttle_event_after          (GtkWidget       *widget,
00593                                         GdkEvent        *event,
00594                                         gpointer         user_data)
00595 {
00596     if ( event->type == GDK_BUTTON_RELEASE )
00597     {
00598         gtk_range_set_value( GTK_RANGE( widget ), 0 );
00599         doShuttle = FALSE;
00600     }
00601 }
00602 
00603 
00604 void
00605 on_save_still_frame_activate           (GtkMenuItem     *menuitem,
00606                                         gpointer         user_data)
00607 {
00608     saveFrame( );
00609 }
00610 
00611 
00612 void
00613 on_publish_project_activate            (GtkMenuItem     *menuitem,
00614                                         gpointer         user_data)
00615 {
00616     publishPlayList( );
00617 }
00618 
00619 
00620 void
00621 on_publish_still_activate              (GtkMenuItem     *menuitem,
00622                                         gpointer         user_data)
00623 {
00624     publishFrame( );
00625 }
00626 
00627 
00628 void
00629 on_menuitem_v4l_activate               (GtkMenuItem     *menuitem,
00630                                         gpointer         user_data)
00631 {
00632     notebookChangePage( 6 );
00633 }
00634 
00635 
00636 gboolean
00637 on_main_window_scroll_event            (GtkWidget       *widget,
00638                                         GdkEvent        *event,
00639                                         gpointer         user_data)
00640 {
00641     handleMouseScroll( event ); 
00642     return FALSE;
00643 }
00644 
00645 
00646 gboolean
00647 on_entry_focus_in_event                (GtkWidget       *widget,
00648                                         GdkEventFocus   *event,
00649                                         gpointer         user_data)
00650 {
00651 
00652     g_nav_ctl.escaped = TRUE;
00653     return FALSE;
00654 }
00655 
00656 
00657 gboolean
00658 on_entry_focus_out_event               (GtkWidget       *widget,
00659                                         GdkEventFocus   *event,
00660                                         gpointer         user_data)
00661 {
00662     g_nav_ctl.escaped = FALSE;
00663     return FALSE;
00664 }
00665 
00666 void
00667 on_time_format_clock_activate          (GtkMenuItem     *menuitem,
00668                                         gpointer         user_data)
00669 {
00670     setTimeFormat( 3 );
00671 }
00672 
00673 
00674 void
00675 on_time_format_ms_activate             (GtkMenuItem     *menuitem,
00676                                         gpointer         user_data)
00677 {
00678     setTimeFormat( 4 );
00679 }
00680 
00681 
00682 void
00683 on_time_format_s_activate              (GtkMenuItem     *menuitem,
00684                                         gpointer         user_data)
00685 {
00686     setTimeFormat( 5 );
00687 }
00688 
00689 
00690 void
00691 on_time_format_min_activate            (GtkMenuItem     *menuitem,
00692                                         gpointer         user_data)
00693 {
00694     setTimeFormat( 6 );
00695 }
00696 
00697 
00698 void
00699 on_time_format_h_activate              (GtkMenuItem     *menuitem,
00700                                         gpointer         user_data)
00701 {
00702     setTimeFormat( 7 );
00703 }
00704 
00705 void
00706 on_preferences_dialog_help_button_clicked
00707                                         (GtkButton       *button,
00708                                         gpointer         user_data)
00709 {
00710     int page = gtk_notebook_get_current_page( GTK_NOTEBOOK( lookup_widget( GTK_WIDGET( button ), "notebook" ) ) );
00711     char s[ 14 ];
00712     s[ 13 ] = '\0';
00713     snprintf( s, 13, "prefs%d", page );
00714     showHelp( s );
00715 }
00716 
00717 void
00718 on_expander_properties_activate        (GtkExpander     *expander,
00719                                         gpointer         user_data)
00720 {
00721     setMoreInfo( gtk_expander_get_expanded( expander ) ? 0 : 1 );
00722     windowMoved();
00723     gtk_widget_grab_focus( lookup_widget( GTK_WIDGET( expander ), "eventbox_edit_drawingarea" ) );
00724 }

Generated on Sun Mar 11 22:11:45 2007 for Kino by  doxygen 1.4.2