X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fmacosx%2Fcontrols.m;h=cad72406ec443f82f6cf808d9196b1cf611a3e99;hb=e62feac00d9f66cd9c5cb39eee86102a2bd16f5a;hp=d07ea81c83ed4d376f8cf1a3d030f43ae466e6c7;hpb=a528e8a9f76f178702411a146bb89ee806e45943;p=vlc diff --git a/modules/gui/macosx/controls.m b/modules/gui/macosx/controls.m index d07ea81c83..cad72406ec 100644 --- a/modules/gui/macosx/controls.m +++ b/modules/gui/macosx/controls.m @@ -84,7 +84,7 @@ { o_repeat_single = [NSImage imageNamed:@"repeat_single_embedded_graphite"]; o_repeat_all = [NSImage imageNamed:@"repeat_embedded_graphite"]; - + [o_btn_shuffle setAlternateImage: [NSImage imageNamed: @"shuffle_embedded_graphite"]]; [o_btn_addNode setAlternateImage: [NSImage imageNamed: @"add_embedded_graphite"]]; } @@ -92,11 +92,11 @@ { o_repeat_single = [NSImage imageNamed:@"repeat_single_embedded_blue"]; o_repeat_all = [NSImage imageNamed:@"repeat_embedded_blue"]; - + [o_btn_shuffle setAlternateImage: [NSImage imageNamed: @"shuffle_embedded_blue"]]; [o_btn_addNode setAlternateImage: [NSImage imageNamed: @"add_embedded_blue"]]; } - + /* update the repeat button, but keep its state */ if( i_repeat == 1 ) [self repeatOne]; @@ -109,27 +109,25 @@ - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver: self]; - + [o_fs_panel release]; [o_repeat_single release]; [o_repeat_all release]; [o_repeat_off release]; - + [super dealloc]; } - (IBAction)play:(id)sender { intf_thread_t * p_intf = VLCIntf; - playlist_t * p_playlist = pl_Hold( p_intf ); + playlist_t * p_playlist = pl_Get( p_intf ); bool empty; PL_LOCK; empty = playlist_IsEmpty( p_playlist ); PL_UNLOCK; - pl_Release( p_intf ); - if( empty ) [o_main intfOpenFileGeneric: (id)sender]; @@ -184,6 +182,12 @@ var_SetInteger( p_intf->p_libvlc, "key-action", ACTIONID_SLOWER ); } +- (IBAction)normalSpeed:(id)sender +{ + intf_thread_t * p_intf = VLCIntf; + var_SetInteger( p_intf->p_libvlc, "key-action", ACTIONID_RATE_NORMAL ); +} + - (IBAction)prev:(id)sender { intf_thread_t * p_intf = VLCIntf; @@ -200,25 +204,24 @@ { vlc_value_t val; intf_thread_t * p_intf = VLCIntf; - playlist_t * p_playlist = pl_Hold( p_intf ); + playlist_t * p_playlist = pl_Get( p_intf ); var_Get( p_playlist, "random", &val ); val.b_bool = !val.b_bool; var_Set( p_playlist, "random", val ); if( val.b_bool ) { - vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Random On" ) ); + //vout_OSDMessage( p_intf, SPU_DEFAULT_CHANNEL, "%s", _( "Random On" ) ); config_PutInt( p_playlist, "random", 1 ); } else { - vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Random Off" ) ); + //vout_OSDMessage( p_intf, SPU_DEFAULT_CHANNEL, "%s", _( "Random Off" ) ); config_PutInt( p_playlist, "random", 0 ); } p_intf->p_sys->b_playmode_update = true; p_intf->p_sys->b_intf_update = true; - pl_Release( p_intf ); } /* three little ugly helpers */ @@ -243,21 +246,20 @@ - (void)shuffle { vlc_value_t val; - playlist_t *p_playlist = pl_Hold( VLCIntf ); + playlist_t *p_playlist = pl_Get( VLCIntf ); var_Get( p_playlist, "random", &val ); [o_btn_shuffle setState: val.b_bool]; if(val.b_bool) [o_btn_shuffle_embed setImage: [NSImage imageNamed:@"sidebarShuffleOn"]]; else - [o_btn_shuffle_embed setImage: [NSImage imageNamed:@"sidebarShuffle"]]; - pl_Release( VLCIntf ); + [o_btn_shuffle_embed setImage: [NSImage imageNamed:@"sidebarShuffle"]]; } - (IBAction)repeatButtonAction:(id)sender { vlc_value_t looping,repeating; intf_thread_t * p_intf = VLCIntf; - playlist_t * p_playlist = pl_Hold( p_intf ); + playlist_t * p_playlist = pl_Get( p_intf ); var_Get( p_playlist, "repeat", &repeating ); var_Get( p_playlist, "loop", &looping ); @@ -265,50 +267,50 @@ if( !repeating.b_bool && !looping.b_bool ) { /* was: no repeating at all, switching to Repeat One */ - + /* set our button's look */ [self repeatOne]; - + /* prepare core communication */ repeating.b_bool = true; looping.b_bool = false; config_PutInt( p_playlist, "repeat", 1 ); config_PutInt( p_playlist, "loop", 0 ); - + /* show the change */ - vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Repeat One" ) ); + //vout_OSDMessage( p_intf, SPU_DEFAULT_CHANNEL, "%s", _( "Repeat One" ) ); } else if( repeating.b_bool && !looping.b_bool ) { /* was: Repeat One, switching to Repeat All */ - + /* set our button's look */ [self repeatAll]; - + /* prepare core communication */ repeating.b_bool = false; looping.b_bool = true; config_PutInt( p_playlist, "repeat", 0 ); config_PutInt( p_playlist, "loop", 1 ); - + /* show the change */ - vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Repeat All" ) ); + //vout_OSDMessage( p_intf, SPU_DEFAULT_CHANNEL, "%s", _( "Repeat All" ) ); } else { /* was: Repeat All or bug in VLC, switching to Repeat Off */ - + /* set our button's look */ [self repeatOff]; - + /* prepare core communication */ repeating.b_bool = false; looping.b_bool = false; config_PutInt( p_playlist, "repeat", 0 ); config_PutInt( p_playlist, "loop", 0 ); - + /* show the change */ - vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Repeat Off" ) ); + //vout_OSDMessage( p_intf, SPU_DEFAULT_CHANNEL, "%s", _( "Repeat Off" ) ); } /* communicate with core and the main intf loop */ @@ -316,8 +318,6 @@ var_Set( p_playlist, "loop", looping ); p_intf->p_sys->b_playmode_update = true; p_intf->p_sys->b_intf_update = true; - - pl_Release( p_intf ); } @@ -325,7 +325,7 @@ { vlc_value_t val; intf_thread_t * p_intf = VLCIntf; - playlist_t * p_playlist = pl_Hold( p_intf ); + playlist_t * p_playlist = pl_Get( p_intf ); var_Get( p_playlist, "repeat", &val ); if (!val.b_bool) @@ -336,25 +336,24 @@ var_Set( p_playlist, "repeat", val ); if( val.b_bool ) { - vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Repeat One" ) ); + //vout_OSDMessage( p_intf, SPU_DEFAULT_CHANNEL, "%s", _( "Repeat One" ) ); config_PutInt( p_playlist, "repeat", 1 ); } else { - vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Repeat Off" ) ); + //vout_OSDMessage( p_intf, SPU_DEFAULT_CHANNEL, "%s", _( "Repeat Off" ) ); config_PutInt( p_playlist, "repeat", 0 ); } - + p_intf->p_sys->b_playmode_update = true; p_intf->p_sys->b_intf_update = true; - pl_Release( p_intf ); } - (IBAction)loop:(id)sender { vlc_value_t val; intf_thread_t * p_intf = VLCIntf; - playlist_t * p_playlist = pl_Hold( p_intf ); + playlist_t * p_playlist = pl_Get( p_intf ); var_Get( p_playlist, "loop", &val ); if (!val.b_bool) @@ -365,18 +364,24 @@ var_Set( p_playlist, "loop", val ); if( val.b_bool ) { - vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Repeat All" ) ); + //vout_OSDMessage( p_intf, SPU_DEFAULT_CHANNEL, "%s", _( "Repeat All" ) ); config_PutInt( p_playlist, "loop", 1 ); } else { - vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Repeat Off" ) ); + //vout_OSDMessage( p_intf, SPU_DEFAULT_CHANNEL, "%s", _( "Repeat Off" ) ); config_PutInt( p_playlist, "loop", 0 ); } p_intf->p_sys->b_playmode_update = true; p_intf->p_sys->b_intf_update = true; - pl_Release( p_intf ); +} + +- (IBAction)quitAfterPlayback:(id)sender +{ + vlc_value_t val; + playlist_t * p_playlist = pl_Get( VLCIntf ); + var_ToggleBool( p_playlist, "play-and-exit" ); } - (IBAction)forward:(id)sender @@ -420,13 +425,12 @@ - (IBAction)volumeSliderUpdated:(id)sender { intf_thread_t * p_intf = VLCIntf; - playlist_t * p_playlist = pl_Hold( p_intf ); + playlist_t * p_playlist = pl_Get( p_intf ); audio_volume_t i_volume = (audio_volume_t)[sender intValue]; int i_volume_step; i_volume_step = config_GetInt( p_intf->p_libvlc, "volume-step" ); aout_VolumeSet( p_playlist, i_volume * i_volume_step ); - pl_Release( p_playlist ); /* Manage volume status */ [o_main manageVolumeSlider]; } @@ -501,17 +505,13 @@ } else { - playlist_t * p_playlist = pl_Hold( VLCIntf ); + playlist_t * p_playlist = pl_Get( VLCIntf ); if( [o_title isEqualToString: _NS("Fullscreen")] || [sender isKindOfClass:[NSButton class]] ) { - vlc_value_t val; - var_Get( p_playlist, "fullscreen", &val ); - var_Set( p_playlist, "fullscreen", (vlc_value_t)!val.b_bool ); + var_ToggleBool( p_playlist, "fullscreen" ); } - - pl_Release( VLCIntf ); } vlc_object_release( p_input ); } @@ -591,7 +591,7 @@ { NSUInteger c = 0; if( !p_input ) return; - + c = [[openPanel filenames] count]; for (int i = 0; i < [[openPanel filenames] count] ; i++) @@ -690,7 +690,7 @@ /* Variable doesn't exist or isn't handled */ return; } - + /* Make sure we want to display the variable */ if( i_type & VLC_VAR_HASCHOICE ) { @@ -699,7 +699,7 @@ if( (i_type & VLC_VAR_TYPE) != VLC_VAR_VARIABLE && val.i_int == 1 ) return; } - + /* Get the descriptive name of the variable */ var_Change( p_object, psz_variable, VLC_VAR_GETTEXT, &text, NULL ); [o_mi setTitle: [[VLCMain sharedInstance] localizedString: text.psz_string ? @@ -711,7 +711,7 @@ [self setupVarMenu: o_menu forMenuItem: o_mi target:p_object var:psz_variable selector:pf_callback]; - + free( text.psz_string ); return; } @@ -857,7 +857,7 @@ o_title = text_list.p_list->p_values[i].psz_string ? [[VLCMain sharedInstance] localizedString: text_list.p_list->p_values[i].psz_string] : - [NSString stringWithFormat: @"%d", + [NSString stringWithFormat: @"%"PRId64, val_list.p_list->p_values[i].i_int]; o_lmi = [o_menu addItemWithTitle: o_title action: pf_callback keyEquivalent: @""]; @@ -1004,11 +1004,12 @@ BOOL bEnabled = TRUE; vlc_value_t val; intf_thread_t * p_intf = VLCIntf; - playlist_t * p_playlist = pl_Hold( p_intf ); + playlist_t * p_playlist = pl_Get( p_intf ); input_thread_t * p_input = playlist_CurrentInput( p_playlist ); if( [[o_mi title] isEqualToString: _NS("Faster")] || - [[o_mi title] isEqualToString: _NS("Slower")] ) + [[o_mi title] isEqualToString: _NS("Slower")] || + [[o_mi title] isEqualToString: _NS("Normal rate")] ) { if( p_input != NULL ) { @@ -1055,6 +1056,13 @@ i_state = val.b_bool ? NSOnState : NSOffState; [o_mi setState: i_state]; } + else if( [[o_mi title] isEqualToString: _NS("Quit after Playback")] ) + { + int i_state; + var_Get( p_playlist, "play-and-exit", &val ); + i_state = val.b_bool ? NSOnState : NSOffState; + [o_mi setState: i_state]; + } else if( [[o_mi title] isEqualToString: _NS("Step Forward")] || [[o_mi title] isEqualToString: _NS("Step Backward")] || [[o_mi title] isEqualToString: _NS("Jump To Time")]) @@ -1083,7 +1091,7 @@ NSArray *o_windows = [NSApp orderedWindows]; NSEnumerator *o_enumerator = [o_windows objectEnumerator]; bEnabled = FALSE; - + if( p_input != NULL ) { vout_thread_t *p_vout = input_GetVout( p_input ); @@ -1094,7 +1102,7 @@ var_Get( p_vout, "video-on-top", &val ); [o_mi setState: val.b_bool ? NSOnState : NSOffState]; } - + while( (o_window = [o_enumerator nextObject])) { if( [[o_window className] isEqualToString: @"VLCVoutWindow"] || @@ -1105,10 +1113,9 @@ break; } } - + vlc_object_release( (vlc_object_t *)p_vout ); } - vlc_object_release( p_input ); } if( [[o_mi title] isEqualToString: _NS("Fullscreen")] ) { @@ -1133,7 +1140,6 @@ } if( p_input ) vlc_object_release( p_input ); - pl_Release( p_intf ); return( bEnabled ); }