X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fmacosx%2Fintf.m;h=2065392f39d4bf887e615d87f432aec41aadc678;hb=854c04215f390c0392f576be275468fa7aeb617b;hp=8ed5d471082465725d9442b48938bf7814d3e8b2;hpb=2cb472dba008f7d877ffe6bae9c5575253365282;p=vlc diff --git a/modules/gui/macosx/intf.m b/modules/gui/macosx/intf.m index 8ed5d47108..2065392f39 100644 --- a/modules/gui/macosx/intf.m +++ b/modules/gui/macosx/intf.m @@ -1,7 +1,7 @@ /***************************************************************************** * intf.m: MacOS X interface module ***************************************************************************** - * Copyright (C) 2002-2005 the VideoLAN team + * Copyright (C) 2002-2006 the VideoLAN team * $Id$ * * Authors: Jon Lech Johansen @@ -44,7 +44,7 @@ #include "sfilters.h" #include "interaction.h" #include "embeddedwindow.h" -/*#include "update.h"*/ +#include "update.h" /***************************************************************************** * Local prototypes. @@ -184,9 +184,22 @@ static int PlaylistChanged( vlc_object_t *p_this, const char *psz_variable, vlc_value_t old_val, vlc_value_t new_val, void *param ) { intf_thread_t * p_intf = VLCIntf; - p_intf->p_sys->b_playlist_update = TRUE; - p_intf->p_sys->b_intf_update = TRUE; - p_intf->p_sys->b_playmode_update = TRUE; + p_intf->p_sys->b_playlist_update = VLC_TRUE; + p_intf->p_sys->b_intf_update = VLC_TRUE; + p_intf->p_sys->b_playmode_update = VLC_TRUE; + return VLC_SUCCESS; +} + +/***************************************************************************** + * ShowController: Callback triggered by the show-intf playlist variable + * through the ShowIntf-control-intf, to let us show the controller-win; + * usually when in fullscreen-mode + *****************************************************************************/ +static int ShowController( vlc_object_t *p_this, const char *psz_variable, + vlc_value_t old_val, vlc_value_t new_val, void *param ) +{ + intf_thread_t * p_intf = VLCIntf; + p_intf->p_sys->b_intf_show = VLC_TRUE; return VLC_SUCCESS; } @@ -198,7 +211,7 @@ static int FullscreenChanged( vlc_object_t *p_this, const char *psz_variable, vlc_value_t old_val, vlc_value_t new_val, void *param ) { intf_thread_t * p_intf = VLCIntf; - p_intf->p_sys->b_fullscreen_update = TRUE; + p_intf->p_sys->b_fullscreen_update = VLC_TRUE; return VLC_SUCCESS; } @@ -317,7 +330,7 @@ static VLCMain *_o_sharedMainInstance = nil; } else { _o_sharedMainInstance = [super init]; } - + o_about = [[VLAboutBox alloc] init]; o_prefs = nil; o_open = [[VLCOpen alloc] init]; @@ -327,7 +340,7 @@ static VLCMain *_o_sharedMainInstance = nil; o_embedded_list = [[VLCEmbeddedList alloc] init]; o_interaction_list = [[VLCInteractionList alloc] init]; o_sfilters = nil; - /*o_update = [[VLCUpdate alloc] init];*/ + o_update = [[VLCUpdate alloc] init]; i_lastShownVolume = -1; return _o_sharedMainInstance; @@ -449,6 +462,7 @@ static VLCMain *_o_sharedMainInstance = nil; val.b_bool = VLC_FALSE; var_AddCallback( p_playlist, "fullscreen", FullscreenChanged, self); + var_AddCallback( p_playlist, "intf-show", ShowController, self); [o_embedded_window setFullscreen: var_GetBool( p_playlist, "fullscreen" )]; @@ -458,7 +472,7 @@ static VLCMain *_o_sharedMainInstance = nil; var_Create( p_intf, "interaction", VLC_VAR_ADDRESS ); var_AddCallback( p_intf, "interaction", InteractCallback, self ); p_intf->b_interaction = VLC_TRUE; - + nib_main_loaded = TRUE; } @@ -486,7 +500,7 @@ static VLCMain *_o_sharedMainInstance = nil; /* main menu */ [o_mi_about setTitle: [_NS("About VLC media player") \ stringByAppendingString: @"..."]]; -/* [o_mi_checkForUpdate setTitle: _NS("Check for Update...")];*/ + [o_mi_checkForUpdate setTitle: _NS("Check for Update...")]; [o_mi_prefs setTitle: _NS("Preferences...")]; [o_mi_add_intf setTitle: _NS("Add Interface")]; [o_mu_add_intf setTitle: _NS("Add Interface")]; @@ -555,6 +569,10 @@ static VLCMain *_o_sharedMainInstance = nil; [o_mi_snapshot setTitle: _NS("Snapshot")]; [o_mi_videotrack setTitle: _NS("Video Track")]; [o_mu_videotrack setTitle: _NS("Video Track")]; + [o_mi_aspect_ratio setTitle: _NS("Aspect-ratio")]; + [o_mu_aspect_ratio setTitle: _NS("Aspect-ratio")]; + [o_mi_crop setTitle: _NS("Crop")]; + [o_mu_crop setTitle: _NS("Crop")]; [o_mi_screen setTitle: _NS("Video Device")]; [o_mu_screen setTitle: _NS("Video Device")]; [o_mi_subtitle setTitle: _NS("Subtitles Track")]; @@ -572,7 +590,7 @@ static VLCMain *_o_sharedMainInstance = nil; [o_mi_extended setTitle: _NS("Extended Controls")]; [o_mi_bookmarks setTitle: _NS("Bookmarks")]; [o_mi_playlist setTitle: _NS("Playlist")]; - [o_mi_info setTitle: _NS("Info")]; + [o_mi_info setTitle: _NS("Information")]; [o_mi_messages setTitle: _NS("Messages")]; [o_mi_bring_atf setTitle: _NS("Bring All to Front")]; @@ -596,14 +614,14 @@ static VLCMain *_o_sharedMainInstance = nil; /* error panel */ [o_error setTitle: _NS("Error")]; [o_err_lbl setStringValue: _NS("An error has occurred which probably " \ - "prevented the execution of your request:")]; + "prevented the proper execution of the program:")]; [o_err_bug_lbl setStringValue: _NS("If you believe that it is a bug, " \ "please follow the instructions at:")]; [o_err_btn_msgs setTitle: _NS("Open Messages Window")]; [o_err_btn_dismiss setTitle: _NS("Dismiss")]; - [o_err_ckbk_surpress setTitle: _NS("Suppress further errors")]; + [o_err_ckbk_surpress setTitle: _NS("Do not display further errors")]; - [o_info_window setTitle: _NS("Info")]; + [o_info_window setTitle: _NS("Information")]; } - (void)applicationWillFinishLaunching:(NSNotification *)o_notification @@ -650,10 +668,17 @@ static VLCMain *_o_sharedMainInstance = nil; if( psz != NULL ) { o_str = [[[NSString alloc] initWithUTF8String: psz] autorelease]; + + if ( o_str == NULL ) + { + msg_Err( VLCIntf, "could not translate: %s", psz ); + return( @"" ); + } } - if ( o_str == NULL ) + else { - msg_Err( VLCIntf, "could not translate: %s", psz ); + msg_Warn( VLCIntf, "can't translate empty strings" ); + return( @"" ); } return( o_str ); @@ -672,7 +697,7 @@ static VLCMain *_o_sharedMainInstance = nil; psz_string = malloc( [o_data length] + 1 ); [o_data getBytes: psz_string]; psz_string[ [o_data length] ] = '\0'; - msg_Err( VLCIntf, "cannot convert to wanted encoding: %s", + msg_Err( VLCIntf, "cannot convert to the requested encoding: %s", psz_string ); } else @@ -877,30 +902,27 @@ static VLCMain *_o_sharedMainInstance = nil; { vlc_mutex_lock( &p_intf->change_lock ); -#define p_input p_intf->p_sys->p_input - if( p_input == NULL ) + if( p_intf->p_sys->p_input == NULL ) { - p_input = (input_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_INPUT, - FIND_ANYWHERE ); + p_intf->p_sys->p_input = p_playlist->p_input; - /* Refresh the interface */ - if( p_input ) + /* Refresh the interface */ + if( p_intf->p_sys->p_input ) { msg_Dbg( p_intf, "input has changed, refreshing interface" ); p_intf->p_sys->b_input_update = VLC_TRUE; } } - else if( p_input->b_die || p_input->b_dead ) + else if( p_intf->p_sys->p_input->b_die || p_intf->p_sys->p_input->b_dead ) { /* input stopped */ p_intf->p_sys->b_intf_update = VLC_TRUE; p_intf->p_sys->i_play_status = END_S; [self setScrollField: _NS("VLC media player") stopAfter:-1]; - vlc_object_release( p_input ); - p_input = NULL; + msg_Dbg( p_intf, "input has stopped, refreshing interface" ); + p_intf->p_sys->p_input = NULL; } -#undef p_input /* Manage volume status */ [self manageVolumeSlider]; @@ -945,15 +967,16 @@ static VLCMain *_o_sharedMainInstance = nil; if( ( b_input = ( p_input != NULL ) ) ) { + vlc_object_yield( p_input ); /* seekable streams */ - var_Get( p_input, "seekable", &val); - b_seekable = val.b_bool; + b_seekable = var_GetBool( p_input, "seekable" ); /* check wether slow/fast motion is possible*/ b_control = p_input->input.b_can_pace_control; /* chapters & titles */ //b_chapters = p_input->stream.i_area_nb > 1; + vlc_object_release( p_input ); } [o_btn_stop setEnabled: b_input]; @@ -993,6 +1016,13 @@ static VLCMain *_o_sharedMainInstance = nil; p_intf->p_sys->b_fullscreen_update = VLC_FALSE; } + if( p_intf->p_sys->b_intf_show ) + { + [o_window makeKeyAndOrderFront: self]; + + p_intf->p_sys->b_intf_show = VLC_FALSE; + } + if( p_input && !p_input->b_die ) { vlc_value_t val; @@ -1015,8 +1045,8 @@ static VLCMain *_o_sharedMainInstance = nil; p_playlist->status.p_item->input.psz_name]; [self setScrollField: o_temp stopAfter:-1]; - p_vout = vlc_object_find( p_intf, VLC_OBJECT_VOUT, - FIND_ANYWHERE ); + p_vout = vlc_object_find( p_input, VLC_OBJECT_VOUT, + FIND_PARENT ); if( p_vout != NULL ) { id o_vout_wnd; @@ -1026,8 +1056,9 @@ static VLCMain *_o_sharedMainInstance = nil; { if( [[o_vout_wnd className] isEqualToString: @"VLCWindow"] || [[[VLCMain sharedInstance] getEmbeddedList] - windowContainsEmbedded: o_vout_wnd]) + windowContainsEmbedded: o_vout_wnd] ) { + msg_Dbg( p_intf, "updateTitle call getVoutView" ); [[o_vout_wnd getVoutView] updateTitle]; } } @@ -1152,6 +1183,12 @@ static VLCMain *_o_sharedMainInstance = nil; { vlc_object_t * p_dec_obj; + [o_controls setupVarMenuItem: o_mi_aspect_ratio target: (vlc_object_t *)p_vout + var: "aspect-ratio" selector: @selector(toggleVar:)]; + + [o_controls setupVarMenuItem: o_mi_crop target: (vlc_object_t *) p_vout + var: "crop" selector: @selector(toggleVar:)]; + [o_controls setupVarMenuItem: o_mi_screen target: (vlc_object_t *)p_vout var: "video-device" selector: @selector(toggleVar:)]; @@ -1327,6 +1364,8 @@ static VLCMain *_o_sharedMainInstance = nil; [o_mi_ffmpeg_pp setEnabled: b_enabled]; [o_mi_device setEnabled: b_enabled]; [o_mi_screen setEnabled: b_enabled]; + [o_mi_aspect_ratio setEnabled: b_enabled]; + [o_mi_crop setEnabled: b_enabled]; } - (void)manageVolumeSlider @@ -1636,7 +1675,7 @@ static VLCMain *_o_sharedMainInstance = nil; [o_prefs showPrefs]; } -/*- (IBAction)checkForUpdate:(id)sender +- (IBAction)checkForUpdate:(id)sender { if (!nib_update_loaded) { @@ -1645,7 +1684,7 @@ static VLCMain *_o_sharedMainInstance = nil; } else { [o_update showUpdateWindow]; } -}*/ +} - (IBAction)closeError:(id)sender { @@ -1728,7 +1767,7 @@ static VLCMain *_o_sharedMainInstance = nil; } else { - NSBeginInformationalAlertSheet(_NS("No CrashLog found"), @"Continue", nil, nil, o_msgs_panel, self, NULL, NULL, nil, _NS("You haven't experienced any heavy crashes yet.") ); + NSBeginInformationalAlertSheet(_NS("No CrashLog found"), @"Continue", nil, nil, o_msgs_panel, self, NULL, NULL, nil, _NS("Couldn't find any trace of a previous crash.") ); } }