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

preferences_dialog.cc File Reference

#include "kino_common.h"
#include "page.h"
#include "preferences.h"
#include "jogshuttle.h"
#include "mediactrl.h"
#include "callbacks.h"
#include "support.h"
#include "commands.h"
#include "message.h"
#include <libavc1394/avc1394.h>
#include <libavc1394/rom1394.h>

Include dependency graph for preferences_dialog.cc:

Go to the source code of this file.

Defines

#define MAX_1394_PORTS   8

Functions

static void on_checkbutton_jogshuttle_toggled (GtkToggleButton *togglebutton, gpointer user_data)
static void on_optionmenu_jogshuttle_firstsecond_button_clicked (GtkButton *button, gpointer user_data)
static void on_optionmenu_jogshuttle_action_clicked (GtkButton *button, gpointer user_data)
void jogshuttle_input_callback (void *button, unsigned short first, unsigned short second)
void on_preferences_activate (GtkMenuItem *menuitem, gpointer user_data)
void on_avc_phyid_activate (GtkMenuItem *menu_item, gpointer user_data)
void on_radiobutton_avi1_clicked (GtkButton *button, gpointer user_data)
void on_radiobutton_avi2_clicked (GtkButton *button, gpointer user_data)
void on_radiobutton_rawdv_clicked (GtkButton *button, gpointer user_data)
void on_radiobutton_XX_clicked (GtkButton *button, gpointer user_data)
void on_radiobutton_XV_clicked (GtkButton *button, gpointer user_data)
void on_radiobutton_GDK_clicked (GtkButton *button, gpointer user_data)
void on_checkbutton_v4l_toggled (GtkToggleButton *togglebutton, gpointer user_data)
gboolean on_preferences_dialog_destroy_event (GtkWidget *widget, GdkEvent *event, gpointer user_data)
void on_preferences_dialog_ok_button_clicked (GtkButton *button, gpointer user_data)
void on_preferences_dialog_cancel_button_clicked (GtkButton *button, gpointer user_data)
void on_button_capture_open_clicked (GtkButton *button, gpointer user_data)

Variables

GtkWidget * main_window
KinoCommoncommon
gint gPrefsSelectedFileFormat
gint gPrefsDisplayMode


Define Documentation

#define MAX_1394_PORTS   8
 

Definition at line 24 of file preferences_dialog.cc.

Referenced by on_preferences_activate().


Function Documentation

void jogshuttle_input_callback void *  button,
unsigned short  first,
unsigned short  second
 

Definition at line 633 of file preferences_dialog.cc.

References lookup_widget(), and on_optionmenu_jogshuttle_firstsecond_button_clicked().

00635     {
00636         // g_print( "Setting to %i, %i\n", first, second );
00637         gtk_option_menu_set_history( GTK_OPTION_MENU (
00638                                          lookup_widget(
00639                                              GTK_WIDGET ( button ),
00640                                              "optionmenu_jogshuttle_first_button" ) ),
00641                                      first );
00642         gtk_option_menu_set_history( GTK_OPTION_MENU (
00643                                          lookup_widget(
00644                                              GTK_WIDGET ( button ),
00645                                              "optionmenu_jogshuttle_second_button" ) ),
00646                                      second );
00647         // g_print( "Calling firstsecond\n" );
00648         on_optionmenu_jogshuttle_firstsecond_button_clicked(
00649             GTK_BUTTON( ( button ) ),
00650             NULL );
00651         // g_print( "Done calling firstsecond\n" );
00652     }

void on_avc_phyid_activate GtkMenuItem *  menu_item,
gpointer  user_data
 

Definition at line 411 of file preferences_dialog.cc.

References Preferences::getInstance().

Referenced by on_preferences_activate().

00412     {
00413         strncpy( Preferences::getInstance().avcGUID, (char *) user_data, 64 );
00414     }

void on_button_capture_open_clicked GtkButton *  button,
gpointer  user_data
 

Definition at line 806 of file preferences_dialog.cc.

References KinoCommon::getFileToSaveFormat(), and lookup_widget().

00808     {
00809         int dummy = 0;
00810         char *filename = common->getFileToSaveFormat( _("Choose a DV file"), GTK_WIDGET(button), dummy );
00811         if ( filename && strcmp( filename, "" ) )
00812         {
00813             gtk_entry_set_text( GTK_ENTRY( lookup_widget( GTK_WIDGET( button ), "entry_file" ) ),
00814                 filename );
00815         }
00816     }

static void on_checkbutton_jogshuttle_toggled GtkToggleButton *  togglebutton,
gpointer  user_data
[static]
 

Definition at line 473 of file preferences_dialog.cc.

References Preferences::enableJogShuttle, JogShuttle::getInstance(), Preferences::getInstance(), and lookup_widget().

00475     {
00476         GtkWidget *widget = lookup_widget( GTK_WIDGET( togglebutton ), "vbox93" );
00477         Preferences& prefs = Preferences::getInstance();
00478         
00479         prefs.enableJogShuttle = gtk_toggle_button_get_active( togglebutton );
00480         gtk_widget_set_sensitive( widget, prefs.enableJogShuttle );
00481         if ( prefs.enableJogShuttle )
00482             JogShuttle::getInstance().start();
00483         else
00484             JogShuttle::getInstance().stop();
00485     }

void on_checkbutton_v4l_toggled GtkToggleButton *  togglebutton,
gpointer  user_data
 

Definition at line 460 of file preferences_dialog.cc.

References lookup_widget(), and modal_message_with_parent().

00462     {
00463         GtkWidget *widget = lookup_widget( GTK_WIDGET( togglebutton ), "vbox94" );
00464         static bool warn = false;
00465         
00466         gtk_widget_set_sensitive( widget, gtk_toggle_button_get_active( togglebutton ) );
00467         if ( warn )
00468             modal_message_with_parent( widget, _("You must restart Kino for V4L option to take effect.") );
00469         warn = true;
00470     }

static void on_optionmenu_jogshuttle_action_clicked GtkButton *  button,
gpointer  user_data
[static]
 

Definition at line 561 of file preferences_dialog.cc.

References Preferences::_JogShuttleActions, Preferences::_JogShuttleMappings, media_ctrl_key::code, Preferences::getInstance(), JogShuttle::getInstance(), KinoCommon::getWidget(), and lookup_widget().

00563     {
00564         media_ctrl_key *mkeys;
00565         mkeys = JogShuttle::getInstance().getKeyset();
00566         
00567         //g_print( "In callback for action\n" );
00568         /* Get the indexes for the button menus */
00569         GtkOptionMenu * menu
00570         = GTK_OPTION_MENU ( lookup_widget( common->getWidget(),
00571                                            "optionmenu_jogshuttle_first_button" ) );
00572         // TODO: This is hardcoded to add 0x100 to match the
00573         // Contour JogShuttle.
00574         gint active_index_first
00575         = ( mkeys == NULL ) ? 0 : mkeys[gtk_option_menu_get_history ( menu )].code;
00576 //      gint active_index_first
00577 //      = gtk_option_menu_get_history ( menu )
00578 //        + 0x100;
00579 
00580 
00581         menu = GTK_OPTION_MENU ( lookup_widget( common->getWidget(),
00582                                                 "optionmenu_jogshuttle_second_button" ) );
00583         gint active_index_second
00584         = gtk_option_menu_get_history ( menu );
00585         if ( active_index_second != 0 )
00586         {
00587             active_index_second = ( mkeys == NULL ) ? 0 : mkeys[active_index_second-1].code;; /* -1 == <none> */
00588         }
00589 
00590 /*      gint active_index_second
00591         = gtk_option_menu_get_history ( menu );
00592         if ( active_index_second != 0 )
00593         {
00594             active_index_second += 0x100 - 1;
00595         }
00596 */
00597         menu = GTK_OPTION_MENU ( lookup_widget( common->getWidget(),
00598                                                 "optionmenu_jogshuttle_action" ) );
00599         gint active_index_action
00600         = gtk_option_menu_get_history ( menu );
00601 
00602         g_print ( "Active indexs: %i & %i, %i\n",
00603               active_index_first, active_index_second,
00604               active_index_action );
00605 
00606         /* Look up the action from the index */
00607         Preferences &prefs = Preferences::getInstance();
00608 
00609         /* Figure the new action to set */
00610         string action
00611         = prefs._JogShuttleActions[ active_index_action ]._action;
00612         string desc
00613         = prefs._JogShuttleActions[ active_index_action ]._desc;
00614         //g_print ( "Action for this combo : %s\n", action.c_str() );
00615 #if 0
00616         /* Update label */
00617         gtk_label_set_text(
00618             GTK_LABEL (
00619                 lookup_widget(
00620                     GTK_WIDGET ( button ),
00621                     "label_jogshuttle_action_description"
00622                 ) ),
00623             desc.c_str() );
00624 #endif
00625         /* Set it */
00626         prefs._JogShuttleMappings[
00627             make_pair( active_index_first,
00628                        active_index_second ) ] = action;
00629     }

static void on_optionmenu_jogshuttle_firstsecond_button_clicked GtkButton *  button,
gpointer  user_data
[static]
 

Definition at line 489 of file preferences_dialog.cc.

References Preferences::_JogShuttleActions, Preferences::_JogShuttleMappings, media_ctrl_key::code, Preferences::getInstance(), JogShuttle::getInstance(), KinoCommon::getWidget(), and lookup_widget().

Referenced by jogshuttle_input_callback(), and on_preferences_activate().

00491     {
00492         media_ctrl_key *mkeys;
00493         mkeys = JogShuttle::getInstance().getKeyset();
00494         
00495         /* Get the indexes for the button menus */
00496         GtkOptionMenu * menu = GTK_OPTION_MENU ( lookup_widget( common->getWidget(),
00497                                            "optionmenu_jogshuttle_first_button" ) );
00498         
00499         // TODO: This is hardcoded to add 0x100 to match the
00500         // Contour JogShuttle.
00501         gint active_index_first
00502         = ( mkeys == NULL ) ? 0 : mkeys[gtk_option_menu_get_history ( menu )].code;
00503 
00504         menu = GTK_OPTION_MENU ( lookup_widget( common->getWidget(),
00505                                            "optionmenu_jogshuttle_second_button" ) );
00506         gint active_index_second
00507         = gtk_option_menu_get_history ( menu );
00508         if ( active_index_second != 0 )
00509         {
00510             active_index_second = ( mkeys == NULL ) ? 0 : mkeys[active_index_second-1].code;; /* -1 == <none> */
00511         }
00512 
00513         menu = GTK_OPTION_MENU ( lookup_widget( common->getWidget(),
00514                                                 "optionmenu_jogshuttle_action" ) );
00515 
00516         /* Look up the action */
00517         Preferences &prefs = Preferences::getInstance();
00518         string action =
00519             prefs._JogShuttleMappings[
00520                 make_pair( active_index_first,
00521                            active_index_second ) ]._action;
00522 
00523         // g_print ( "Action for this combo : %s\n", action.c_str() );
00524         /* Figure the new index to set */
00525         gint new_index = 0;
00526         string desc;
00527         if ( "" != action )
00528         {
00529             for ( unsigned int i = 0;
00530                     i < prefs._JogShuttleActions.size(); i++ )
00531             {
00532                 if ( prefs._JogShuttleActions[ i ]._action
00533                         == action )
00534                 {
00535                     new_index =
00536                         prefs._JogShuttleActions[ i ]._option_index;
00537                     desc =
00538                         prefs._JogShuttleActions[ i ]._desc;
00539                     break;
00540                 }
00541 
00542             }
00543         }
00544 
00545         // g_print ( "Index for this action : %i\n", new_index );
00546         /* Set the index and description */
00547         gtk_option_menu_set_history( menu, new_index );
00548 #if 0
00549         gtk_label_set_text(
00550             GTK_LABEL (
00551                 lookup_widget(
00552                     GTK_WIDGET ( button ),
00553                     "label_jogshuttle_action_description"
00554                 ) ),
00555             desc.c_str() );
00556 #endif
00557     }

void on_preferences_activate GtkMenuItem *  menuitem,
gpointer  user_data
 

Definition at line 62 of file preferences_dialog.cc.

References Preferences::_JogShuttleActions, Preferences::audioDevice, Preferences::audioScrub, Preferences::autoSplit, Preferences::avcGUID, AVI_DV1_FORMAT, AVI_DV2_FORMAT, Preferences::defaultAspect, Preferences::defaultAudio, Preferences::defaultDirectory, Preferences::defaultNormalisation, Preferences::disableKeyRepeat, DISPLAY_GDKRGB, DISPLAY_XV, DISPLAY_XX, Preferences::displayExtract, Preferences::displayMode, Preferences::displayQuality, Preferences::dropFrame, Preferences::dv1394Preview, Preferences::dvCaptureDevice, Preferences::dvDecoderClampChroma, Preferences::dvDecoderClampLuma, Preferences::dvTwoPassEncoder, Preferences::enableAudio, Preferences::enableJogShuttle, Preferences::enableV4L, Preferences::every, Preferences::expandStoryboard, Preferences::file, Preferences::fileFormat, Preferences::frames, Preferences::getInstance(), JogShuttle::getInstance(), Preferences::isOpenDML, media_ctrl_key::key, lookup_widget(), MAX_1394_PORTS, Preferences::maxFileSize, on_avc_phyid_activate(), on_optionmenu_jogshuttle_firstsecond_button_clicked(), Preferences::phyID, Preferences::preview_capture, QT_FORMAT, RAW_FORMAT, Preferences::relativeSave, Preferences::timeStamp, Preferences::trimModeInsert, Preferences::v4lAudio, Preferences::v4lAudioDevice, Preferences::v4lInput, and Preferences::v4lVideoDevice.

00064     {
00065         Preferences & prefs = Preferences::getInstance();
00066         gchar s[ 512 ];
00067         GtkWidget* glade_menu;
00068         GtkWidget* glade_menuitem;
00069         GtkWidget* widget;
00070         int currentNode, itemCount = 0, currentItem = 0;
00071         rom1394_directory rom1394_dir;
00072         glade_menu = gtk_menu_new ();
00073         static raw1394handle_t handle;
00074 
00075         media_ctrl_key *mkeys;
00076         
00077         
00078         /* initialize temp variables, only use temp if Okay clicked and not cancel */
00079         gPrefsSelectedFileFormat = prefs.fileFormat;
00080         gPrefsDisplayMode = prefs.displayMode;
00081 
00082         GtkWidget *dialog = lookup_widget( main_window, "preferences_dialog" );
00083         gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(main_window));
00084         widget = lookup_widget( dialog, "radiobutton_quicktime" );
00085 #ifdef HAVE_LIBQUICKTIME
00086         gtk_widget_show( widget );
00087         gtk_widget_set_sensitive( widget, 1 );
00088 #endif
00089 
00090         switch ( prefs.fileFormat )
00091         {
00092         case AVI_DV1_FORMAT:
00093             widget = lookup_widget( dialog, "radiobutton_avi1" );
00094             gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), 1 );
00095             break;
00096 
00097         case AVI_DV2_FORMAT:
00098             widget = lookup_widget( dialog, "radiobutton_avi2" );
00099             gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), 1 );
00100             break;
00101 
00102         case RAW_FORMAT:
00103             widget = lookup_widget( dialog, "radiobutton_rawdv" );
00104             gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), 1 );
00105             break;
00106 
00107         case QT_FORMAT:
00108             widget = lookup_widget( dialog, "radiobutton_quicktime" );
00109             gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), 1 );
00110             break;
00111 
00112         }
00113 
00114         widget = lookup_widget( dialog, "optionmenu_default_normalisation" );
00115         gtk_option_menu_set_history( GTK_OPTION_MENU( widget ), prefs.defaultNormalisation );
00116         widget = lookup_widget( dialog, "optionmenu_default_audio" );
00117         gtk_option_menu_set_history( GTK_OPTION_MENU( widget ), prefs.defaultAudio );
00118         widget = lookup_widget( dialog, "optionmenu_default_ratio" );
00119         gtk_option_menu_set_history( GTK_OPTION_MENU( widget ), prefs.defaultAspect );
00120 
00121         widget = lookup_widget( dialog, "checkbutton_autosplit" );
00122         gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), prefs.autoSplit );
00123         widget = lookup_widget( dialog, "checkbutton_timestamp" );
00124         gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), prefs.timeStamp );
00125 
00126 #ifndef HAVE_X11_EXTENSIONS_XVLIB_H
00127         gtk_widget_set_sensitive( lookup_widget( dialog, "radiobutton_XV" ), FALSE );
00128         gtk_widget_set_sensitive( lookup_widget( dialog, "radiobutton_XX" ), FALSE );
00129 #endif
00130 
00131         switch ( prefs.displayMode )
00132         {
00133         case DISPLAY_XX:
00134             widget = lookup_widget( dialog, "radiobutton_XX" );
00135             break;
00136         case DISPLAY_XV:
00137             widget = lookup_widget( dialog, "radiobutton_XV" );
00138             break;
00139         case DISPLAY_GDKRGB:
00140             widget = lookup_widget( dialog, "radiobutton_GDK" );
00141             break;
00142         default:
00143             widget = lookup_widget( dialog, "radiobutton_GDK" );
00144             break;
00145         }
00146         gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), TRUE );
00147 
00148         widget = lookup_widget( dialog, "hscale_display_quality" );
00149         GtkAdjustment *displayQualityValue = gtk_range_get_adjustment( GTK_RANGE( widget ) );
00150         displayQualityValue->value = prefs.displayQuality;
00151         gtk_range_set_adjustment( GTK_RANGE( widget ), displayQualityValue );
00152 
00153 
00154         widget = lookup_widget( dialog, "entry_file" );
00155         gtk_entry_set_text( GTK_ENTRY( widget ), prefs.file );
00156         widget = lookup_widget( dialog, "entry_frames" );
00157         sprintf( s, "%d", prefs.frames );
00158         gtk_entry_set_text( GTK_ENTRY( widget ), s );
00159         widget = lookup_widget( dialog, "entry_every" );
00160         sprintf( s, "%d", prefs.every );
00161         gtk_entry_set_text( GTK_ENTRY( widget ), s );
00162         widget = lookup_widget( dialog, "entry_size" );
00163         sprintf( s, "%d", prefs.maxFileSize );
00164         gtk_entry_set_text( GTK_ENTRY( widget ), s );
00165 
00166 #ifdef HAVE_IEC61883
00167         gtk_widget_hide( lookup_widget( dialog, "label114" ) );
00168         gtk_widget_hide( lookup_widget( dialog, "entry_dvcapture_device" ) );
00169 #else
00170         widget = lookup_widget( dialog, "entry_dvcapture_device" );
00171         gtk_entry_set_text( GTK_ENTRY( widget ), prefs.dvCaptureDevice );
00172 #endif
00173         widget = lookup_widget( dialog, "checkbutton_enable_audio" );
00174         gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), prefs.enableAudio );
00175         widget = lookup_widget( dialog, "entry_audio_device" );
00176         gtk_entry_set_text( GTK_ENTRY( widget ), prefs.audioDevice );
00177         widget = lookup_widget( dialog, "checkbutton_preview_capture" );
00178         gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), prefs.preview_capture );
00179         widget = lookup_widget( dialog, "checkbutton_drop_frame" );
00180         gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), prefs.dropFrame );
00181         widget = lookup_widget( dialog, "checkbutton_enable_jogshuttle" );
00182         gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), prefs.enableJogShuttle );
00183 
00184         /* JogShuttle mappings */
00185         mkeys = JogShuttle::getInstance().getKeyset();
00186         
00187         /* JogShuttle toggle signal handler */
00188         widget = lookup_widget( dialog, "checkbutton_enable_jogshuttle" );
00189         if ( widget )
00190         {
00191             g_signal_connect( G_OBJECT( widget ), "toggled", 
00192                 G_CALLBACK( on_checkbutton_jogshuttle_toggled ), NULL );
00193         }
00194         
00195         /* Set callbacks for the optionmenus */
00196         widget = lookup_widget( dialog, "optionmenu_jogshuttle_first_button" );
00197         if ( mkeys != NULL ) {
00198 
00199             GtkMenu *menu_new_k1 = GTK_MENU( gtk_menu_new( ) );
00200             GtkOptionMenu *omenu = GTK_OPTION_MENU( widget );
00201             GtkWidget *kitem;
00202             
00203             if ( mkeys != NULL ) {
00204             
00205                 int mk = 0;
00206                 while(mkeys[mk].key != 0) {
00207                     kitem = gtk_menu_item_new_with_label ( mkeys[mk].name );
00208                     gtk_widget_show( kitem );
00209                     gtk_menu_append ( menu_new_k1, kitem );
00210                     mk++;
00211                 }
00212                 gtk_menu_set_active( menu_new_k1, 0 );
00213                 gtk_option_menu_set_menu( omenu, GTK_WIDGET( menu_new_k1 ) );
00214             }
00215             
00216             g_signal_connect ( G_OBJECT ( GTK_OPTION_MENU ( widget ) ->menu ),
00217                                  "deactivate",
00218                                  G_CALLBACK ( on_optionmenu_jogshuttle_firstsecond_button_clicked ),
00219                                  NULL );
00220         }   
00221         
00222         widget = lookup_widget( dialog, "optionmenu_jogshuttle_second_button" );
00223         if ( mkeys != NULL ) {
00224     
00225             GtkMenu *menu_new_k2 = GTK_MENU( gtk_menu_new( ) );
00226             GtkOptionMenu *omenu = GTK_OPTION_MENU( widget );
00227             GtkWidget *kitem;
00228             
00229             kitem = gtk_menu_item_new_with_label ( _( "<none>" ) );
00230             gtk_widget_show( kitem );
00231             gtk_menu_append ( menu_new_k2, kitem );
00232             
00233             // mkeys = JogShuttle::getInstance().getKeyset();
00234             int mk = 0;
00235             if ( mkeys != NULL ) {
00236                 while(mkeys[mk].key != 0) {
00237                     kitem = gtk_menu_item_new_with_label ( mkeys[mk].name );
00238                     gtk_widget_show( kitem );
00239                     gtk_menu_append ( menu_new_k2, kitem );
00240                     mk++;
00241                 }
00242             }
00243             gtk_menu_set_active( menu_new_k2, 0 );
00244             gtk_option_menu_set_menu( omenu, GTK_WIDGET( menu_new_k2 ) );
00245     
00246             g_signal_connect ( G_OBJECT ( GTK_OPTION_MENU ( widget ) ->menu ),
00247                                  "deactivate",
00248                                  G_CALLBACK ( on_optionmenu_jogshuttle_firstsecond_button_clicked ),
00249                                  NULL  );
00250         }
00251         
00252         
00253         /* Setup the callback from the JogShuttle, used to grab jogshuttle keyboard
00254            presses */
00255         JogShuttle::getInstance().registerCallback( static_cast<void *>( widget ),
00256                 jogshuttle_input_callback );
00257 
00258         widget = lookup_widget( dialog, "optionmenu_jogshuttle_action" );
00259         if ( mkeys == NULL ) gtk_widget_set_sensitive( GTK_WIDGET( widget ), false );
00260             
00261         
00262         /* Fill the action menu. Get the content from the preferences */
00263         Preferences &pref = Preferences::getInstance();
00264         GtkOptionMenu *menu = GTK_OPTION_MENU( widget );
00265         GtkMenu *menu_new = GTK_MENU( gtk_menu_new( ) );
00266         string caption;
00267         GtkWidget *item;
00268         for ( unsigned int i = 0; i < pref._JogShuttleActions.size() ; i++ )
00269         {
00270             caption = pref._JogShuttleActions[ i ]._short_desc;
00271             if ( _( "<none>" ) != caption )
00272             {
00273                 caption +=
00274                     " (" + pref._JogShuttleActions[ i ]._action + ")";
00275             }
00276             item = gtk_menu_item_new_with_label ( caption.c_str() );
00277             gtk_widget_show( item );
00278             gtk_menu_append ( menu_new, item );
00279         }
00280         gtk_menu_set_active( menu_new, 0 );
00281         gtk_option_menu_set_menu( menu, GTK_WIDGET( menu_new ) );
00282         
00283         g_signal_connect ( G_OBJECT ( GTK_OPTION_MENU ( widget ) ->menu ),
00284                              "deactivate",
00285                              G_CALLBACK ( on_optionmenu_jogshuttle_action_clicked ),
00286                              NULL );
00287 
00288         // Make sure the menus match
00289         widget = lookup_widget( dialog, "optionmenu_jogshuttle_first_button" );
00290         on_optionmenu_jogshuttle_firstsecond_button_clicked( GTK_BUTTON ( widget ),
00291                 widget );
00292 
00293 
00294         widget = lookup_widget( dialog, "checkbutton_disable_key_repeat" );
00295         gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), prefs.disableKeyRepeat );
00296         widget = lookup_widget( dialog, "checkbutton_dv_clamp_luma" );
00297         gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), prefs.dvDecoderClampLuma );
00298         widget = lookup_widget( dialog, "checkbutton_dv_clamp_chroma" );
00299         gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), prefs.dvDecoderClampChroma );
00300         widget = lookup_widget( dialog, "checkbutton_audio_scrub" );
00301         gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), prefs.audioScrub );
00302         widget = lookup_widget( dialog, "checkbutton_avi_opendml" );
00303         gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), prefs.isOpenDML );
00304         widget = lookup_widget( dialog, "entry_default_dir" );
00305         gtk_entry_set_text( GTK_ENTRY( widget ), prefs.defaultDirectory );
00306         widget = lookup_widget( dialog, "optionmenu_extract" );
00307         gtk_option_menu_set_history( GTK_OPTION_MENU( widget ), prefs.displayExtract );
00308         widget = lookup_widget( dialog, "checkbutton_relative" );
00309         gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), prefs.relativeSave );
00310 
00311         widget = lookup_widget( dialog, "optionmenu_avc_phyid" );
00312 
00313 #ifdef HAVE_DV1394
00314         gtk_widget_hide_all( lookup_widget( dialog, "hbox_ieee1394_warning" ) );
00315 #endif
00316         if ( ( handle = raw1394_new_handle() ) )
00317         {
00318             raw1394_portinfo ports[MAX_1394_PORTS];
00319             int totalPorts = raw1394_get_port_info( handle, ports, MAX_1394_PORTS );
00320             
00321             gtk_widget_hide_all( lookup_widget( dialog, "hbox_ieee1394_warning" ) );
00322             raw1394_destroy_handle( handle );
00323             handle = NULL;
00324 
00325             for (int port = 0; port < totalPorts; port++ )
00326             {
00327                 if ( ( handle = raw1394_new_handle_on_port( port ) ) )
00328                 {
00329                     for ( currentNode = 0; currentNode < raw1394_get_nodecount( handle ); currentNode++ )
00330                     {
00331                         if ( rom1394_get_directory( handle, currentNode, &rom1394_dir ) >= 0 )
00332                         {
00333                             if ( ( rom1394_get_node_type( &rom1394_dir ) == ROM1394_NODE_TYPE_AVC ) &&
00334                                 avc1394_check_subunit_type( handle, currentNode, AVC1394_SUBUNIT_TYPE_VCR ) )
00335                             {
00336                                 octlet_t currentGUID = rom1394_get_guid( handle, currentNode );
00337                                 char currentGUIDStr[ 65 ];
00338 
00339                                 snprintf( currentGUIDStr, 64, "%08x%08x", ( quadlet_t ) ( currentGUID >> 32 ),
00340                                     ( quadlet_t ) ( currentGUID & 0xffffffff ) );
00341                                 currentGUIDStr[64] = 0;
00342     
00343                                 if ( rom1394_dir.label == NULL )
00344                                     glade_menuitem = gtk_menu_item_new_with_label ( currentGUIDStr );
00345                                 else
00346                                     glade_menuitem = gtk_menu_item_new_with_label ( rom1394_dir.label );
00347     
00348                                 gtk_widget_show ( glade_menuitem );
00349                                 gtk_menu_append ( GTK_MENU ( glade_menu ), glade_menuitem );
00350                                 g_signal_connect ( G_OBJECT ( glade_menuitem ), "activate",
00351                                                 G_CALLBACK ( on_avc_phyid_activate ),
00352                                                 ( gpointer ) strdup(currentGUIDStr) );
00353                                 // TODO: free the duplicated string on re-entrance and destruction
00354     
00355                                 // default the phyID to the first AVC node found
00356                                 if ( strcmp( prefs.avcGUID, "" ) == 0 )
00357                                 {
00358                                     prefs.phyID = currentNode;
00359                                     strncpy( prefs.avcGUID, currentGUIDStr, 64 );
00360                                     currentItem = itemCount;
00361                                 }
00362                                 else if ( strncmp( currentGUIDStr, prefs.avcGUID, 64 ) == 0 )
00363                                 {
00364                                     prefs.phyID = currentNode;
00365                                     currentItem = itemCount;
00366                                 }
00367                                 itemCount++;
00368                             }
00369                             rom1394_free_directory( &rom1394_dir );
00370                         }
00371                     }
00372                     raw1394_destroy_handle( handle );
00373                     handle = NULL;
00374                 }
00375             }
00376         }
00377 
00378         gtk_option_menu_set_menu ( GTK_OPTION_MENU ( widget ), glade_menu );
00379         gtk_option_menu_set_history( GTK_OPTION_MENU( widget ), currentItem );
00380         widget = lookup_widget( dialog, "checkbutton_v4l" );
00381         gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), prefs.enableV4L );
00382         widget = lookup_widget( dialog, "entry_v4l_device" );
00383         gtk_entry_set_text( GTK_ENTRY( widget ), prefs.v4lVideoDevice );
00384         widget = lookup_widget( dialog, "combo_entry_tv_input" );
00385         gtk_entry_set_text( GTK_ENTRY( widget ), prefs.v4lInput );
00386         widget = lookup_widget( dialog, "entry_v4l_audio_device" );
00387         gtk_entry_set_text( GTK_ENTRY( widget ), prefs.v4lAudioDevice );
00388         widget = lookup_widget( dialog, "combo_entry_sample_rate" );
00389         gtk_entry_set_text( GTK_ENTRY( widget ), prefs.v4lAudio );
00390 
00391         widget = lookup_widget( dialog, "checkbutton_dv1394_preview" );
00392         gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), prefs.dv1394Preview );
00393         widget = lookup_widget( dialog, "checkbutton_two_pass" );
00394         gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), prefs.dvTwoPassEncoder );
00395         widget = lookup_widget( dialog, "checkbutton_expand_storyboard" );
00396         gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), prefs.expandStoryboard );
00397         widget = lookup_widget( dialog, "checkbutton_trim_mode_insert" );
00398         gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), prefs.trimModeInsert );
00399 
00400 #ifdef HAVE_LIBAVCODEC
00401         gtk_widget_hide( lookup_widget( dialog, "vbox_display_decoder" ) );
00402         gtk_widget_hide( lookup_widget( dialog, "checkbutton_two_pass" ) );
00403 #endif
00404 
00405         gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), GTK_RESPONSE_HELP, GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, -1);
00406         gtk_widget_show( dialog );
00407     }

void on_preferences_dialog_cancel_button_clicked GtkButton *  button,
gpointer  user_data
 

Definition at line 796 of file preferences_dialog.cc.

References JogShuttle::getInstance().

00797     {
00798         /* Remove the input callback */
00799         JogShuttle::getInstance().deregisterCallback();
00800         GtkWidget *dialog = gtk_widget_get_toplevel( GTK_WIDGET( button ) );
00801         gtk_widget_hide( dialog );
00802     }

gboolean on_preferences_dialog_destroy_event GtkWidget *  widget,
GdkEvent *  event,
gpointer  user_data
 

Definition at line 656 of file preferences_dialog.cc.

References JogShuttle::getInstance().

00659     {
00660         /* Remove the input callback */
00661         // g_print( "In on preferences_dialog_destroy_event\n" );
00662         JogShuttle::getInstance().deregisterCallback();
00663         gtk_widget_hide_on_delete( widget );
00664         return TRUE;
00665     }

void on_preferences_dialog_ok_button_clicked GtkButton *  button,
gpointer  user_data
 

Definition at line 670 of file preferences_dialog.cc.

References KinoCommon::activateWidgets(), Preferences::audioDevice, Preferences::audioScrub, Preferences::autoSplit, Preferences::defaultAspect, Preferences::defaultAudio, Preferences::defaultDirectory, Preferences::defaultNormalisation, Preferences::disableKeyRepeat, Preferences::displayExtract, Preferences::displayMode, Preferences::displayQuality, Preferences::dropFrame, Preferences::dv1394Preview, Preferences::dvCaptureDevice, Preferences::dvDecoderClampChroma, Preferences::dvDecoderClampLuma, Preferences::dvExportDevice, Preferences::dvTwoPassEncoder, Preferences::enableAudio, Preferences::enableJogShuttle, Preferences::enableV4L, Preferences::every, Preferences::expandStoryboard, Preferences::file, Preferences::fileFormat, Preferences::frames, KinoCommon::getCurrentPage(), Preferences::getInstance(), JogShuttle::getInstance(), Preferences::isOpenDML, lookup_widget(), Preferences::maxFileSize, KinoCommon::moveToFrame(), Preferences::preview_capture, QT_FORMAT, Preferences::relativeSave, Preferences::Save(), Preferences::timeStamp, Preferences::trimModeInsert, Preferences::v4lAudio, Preferences::v4lAudioDevice, Preferences::v4lInput, and Preferences::v4lVideoDevice.

00671     {
00672         Preferences & prefs = Preferences::getInstance();
00673         GtkWidget *dialog = gtk_widget_get_toplevel( GTK_WIDGET( button ) );
00674         GtkWidget *widget = lookup_widget( dialog, "checkbutton_autosplit" );
00675 
00676         prefs.autoSplit = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) );
00677 
00678 #ifdef HAVE_LIBQUICKTIME
00679         widget = lookup_widget( dialog, "radiobutton_quicktime" );
00680         if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) ) )
00681             gPrefsSelectedFileFormat = QT_FORMAT;
00682 #endif
00683 
00684         widget = gtk_option_menu_get_menu( GTK_OPTION_MENU( lookup_widget( dialog, "optionmenu_default_normalisation" ) ) );
00685         GtkWidget *active_item = gtk_menu_get_active( GTK_MENU( widget ) );
00686         prefs.defaultNormalisation = g_list_index ( GTK_MENU_SHELL ( widget ) ->children, active_item );
00687 
00688         widget = gtk_option_menu_get_menu( GTK_OPTION_MENU( lookup_widget( dialog, "optionmenu_default_audio" ) ) );
00689         active_item = gtk_menu_get_active( GTK_MENU( widget ) );
00690         prefs.defaultAudio = g_list_index ( GTK_MENU_SHELL ( widget ) ->children, active_item );
00691 
00692         widget = gtk_option_menu_get_menu( GTK_OPTION_MENU( lookup_widget( dialog, "optionmenu_default_ratio" ) ) );
00693         active_item = gtk_menu_get_active( GTK_MENU( widget ) );
00694         prefs.defaultAspect = g_list_index ( GTK_MENU_SHELL ( widget ) ->children, active_item );
00695 
00696         widget = lookup_widget( dialog, "checkbutton_timestamp" );
00697         prefs.timeStamp = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) );
00698         widget = lookup_widget( dialog, "entry_file" );
00699         strcpy( prefs.file, gtk_entry_get_text( GTK_ENTRY( widget ) ) );
00700         widget = lookup_widget( dialog, "entry_frames" );
00701         prefs.frames = atoi( gtk_entry_get_text( GTK_ENTRY( widget ) ) );
00702         if ( prefs.frames < 0 )
00703             prefs.frames = 7000;
00704         widget = lookup_widget( dialog, "entry_every" );
00705         prefs.every = atoi( gtk_entry_get_text( GTK_ENTRY( widget ) ) );
00706         if ( prefs.every <= 0 )
00707             prefs.every = 1;
00708         widget = lookup_widget( dialog, "entry_size" );
00709         prefs.maxFileSize = atoi( gtk_entry_get_text( GTK_ENTRY( widget ) ) );
00710         if ( prefs.maxFileSize < 0 )
00711             prefs.maxFileSize = 2000;
00712 #ifndef HAVE_LIBAVCODEC
00713         GtkAdjustment *displayQualityValue;
00714         widget = lookup_widget( dialog, "hscale_display_quality" );
00715         displayQualityValue = gtk_range_get_adjustment( GTK_RANGE( widget ) );
00716         if ( int( gtk_adjustment_get_value( displayQualityValue ) ) != prefs.displayQuality )
00717         {
00718             prefs.displayQuality = int( gtk_adjustment_get_value( displayQualityValue ) );
00719             common->moveToFrame();
00720         }
00721 #endif
00722 #ifdef HAVE_DV1394
00723         widget = lookup_widget( dialog, "entry_dvcapture_device" );
00724         strcpy( prefs.dvCaptureDevice, gtk_entry_get_text( GTK_ENTRY( widget ) ) );
00725         strcpy( prefs.dvExportDevice, gtk_entry_get_text( GTK_ENTRY( widget ) ) );
00726 #endif
00727         widget = lookup_widget( dialog, "checkbutton_enable_audio" );
00728         prefs.enableAudio = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) );
00729         widget = lookup_widget( dialog, "entry_audio_device" );
00730         strcpy( prefs.audioDevice, gtk_entry_get_text( GTK_ENTRY( widget ) ) );
00731         widget = lookup_widget( dialog, "checkbutton_preview_capture" );
00732         prefs.preview_capture = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) );
00733         widget = lookup_widget( dialog, "checkbutton_drop_frame" );
00734         prefs.dropFrame = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) );
00735         widget = lookup_widget( dialog, "checkbutton_enable_jogshuttle" );
00736         prefs.enableJogShuttle = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) );
00737 
00738         /* Deregister callback */
00739         JogShuttle::getInstance().deregisterCallback();
00740 
00741         widget = lookup_widget( dialog, "checkbutton_disable_key_repeat" );
00742         prefs.disableKeyRepeat = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) );
00743         widget = lookup_widget( dialog, "checkbutton_dv_clamp_luma" );
00744         prefs.dvDecoderClampLuma = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) );
00745         widget = lookup_widget( dialog, "checkbutton_dv_clamp_chroma" );
00746         prefs.dvDecoderClampChroma = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) );
00747         widget = lookup_widget( dialog, "checkbutton_audio_scrub" );
00748         prefs.audioScrub = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) );
00749         widget = lookup_widget( dialog, "checkbutton_v4l" );
00750         prefs.enableV4L = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) );
00751         widget = lookup_widget( dialog, "entry_v4l_device" );
00752         strcpy( prefs.v4lVideoDevice, gtk_entry_get_text( GTK_ENTRY( widget ) ) );
00753         widget = lookup_widget( dialog, "combo_entry_tv_input" );
00754         strcpy( prefs.v4lInput, gtk_entry_get_text( GTK_ENTRY( widget ) ) );
00755         widget = lookup_widget( dialog, "entry_v4l_audio_device" );
00756         strcpy( prefs.v4lAudioDevice, gtk_entry_get_text( GTK_ENTRY( widget ) ) );
00757         widget = lookup_widget( dialog, "combo_entry_sample_rate" );
00758         strcpy( prefs.v4lAudio, gtk_entry_get_text( GTK_ENTRY( widget ) ) );
00759         widget = lookup_widget( dialog, "checkbutton_avi_opendml" );
00760         prefs.isOpenDML = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) );
00761         widget = gtk_option_menu_get_menu( GTK_OPTION_MENU( lookup_widget( dialog, "optionmenu_extract" ) ) );
00762         active_item = gtk_menu_get_active( GTK_MENU( widget ) );
00763         prefs.displayExtract = g_list_index( GTK_MENU_SHELL( widget )->children, active_item );
00764         widget = lookup_widget( dialog, "checkbutton_relative" );
00765         prefs.relativeSave = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) );
00766 
00767         widget = lookup_widget( dialog, "entry_default_dir" );
00768         strcpy( prefs.defaultDirectory, gtk_entry_get_text( GTK_ENTRY( widget ) ) );
00769         if ( prefs.defaultDirectory[ strlen( prefs.defaultDirectory ) - 1 ] != '/' )
00770             strcat( prefs.defaultDirectory, "/" );
00771 
00772         widget = lookup_widget( dialog, "checkbutton_dv1394_preview" );
00773         prefs.dv1394Preview = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) );
00774 #ifndef HAVE_LIBAVCODEC
00775         widget = lookup_widget( dialog, "checkbutton_two_pass" );
00776         prefs.dvTwoPassEncoder = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) );
00777 #endif
00778         widget = lookup_widget( dialog, "checkbutton_expand_storyboard" );
00779         prefs.expandStoryboard = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) );
00780         widget = lookup_widget( dialog, "checkbutton_trim_mode_insert" );
00781         prefs.trimModeInsert = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) );
00782 
00783         prefs.fileFormat = gPrefsSelectedFileFormat;
00784         prefs.displayMode = gPrefsDisplayMode;
00785 
00786         prefs.Save();
00787         gtk_widget_hide( dialog );
00788 
00789         common->getCurrentPage() ->clean();
00790         common->activateWidgets();
00791         common->getCurrentPage() ->start();
00792     }

void on_radiobutton_avi1_clicked GtkButton *  button,
gpointer  user_data
 

Definition at line 417 of file preferences_dialog.cc.

References AVI_DV1_FORMAT.

00419     {
00420         gPrefsSelectedFileFormat = AVI_DV1_FORMAT;
00421     }

void on_radiobutton_avi2_clicked GtkButton *  button,
gpointer  user_data
 

Definition at line 425 of file preferences_dialog.cc.

References AVI_DV2_FORMAT.

00427     {
00428         gPrefsSelectedFileFormat = AVI_DV2_FORMAT;
00429     }

void on_radiobutton_GDK_clicked GtkButton *  button,
gpointer  user_data
 

Definition at line 453 of file preferences_dialog.cc.

References DISPLAY_GDKRGB.

00455     {
00456         gPrefsDisplayMode = DISPLAY_GDKRGB;
00457     }

void on_radiobutton_rawdv_clicked GtkButton *  button,
gpointer  user_data
 

Definition at line 432 of file preferences_dialog.cc.

References RAW_FORMAT.

00434     {
00435         gPrefsSelectedFileFormat = RAW_FORMAT;
00436     }

void on_radiobutton_XV_clicked GtkButton *  button,
gpointer  user_data
 

Definition at line 446 of file preferences_dialog.cc.

References DISPLAY_XV.

00448     {
00449         gPrefsDisplayMode = DISPLAY_XV;
00450     }

void on_radiobutton_XX_clicked GtkButton *  button,
gpointer  user_data
 

Definition at line 439 of file preferences_dialog.cc.

References DISPLAY_XX.

00441     {
00442         gPrefsDisplayMode = DISPLAY_XX;
00443     }


Variable Documentation

KinoCommon* common
 

Definition at line 58 of file commands.cc.

gint gPrefsDisplayMode
 

Definition at line 59 of file preferences_dialog.cc.

gint gPrefsSelectedFileFormat
 

Definition at line 58 of file preferences_dialog.cc.

GtkWidget* main_window
 

Definition at line 45 of file main.c.


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