From f5321d75ddb292892771f513677f8e7c12fb90c4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9rome=20Decoodt?= Date: Sun, 8 Aug 2004 16:52:26 +0000 Subject: [PATCH] project.pbxproj: correct to relatives paths *.nib: presets disabled on startup equalizer.*: add property Id we prefer to change playlist variables instead of config coding style --- .../English.lproj/MainMenu.nib/info.nib | 7 +- .../English.lproj/MainMenu.nib/objects.nib | Bin 60666 -> 60511 bytes extras/MacOSX/vlc.pbproj/project.pbxproj | 12 +- modules/gui/macosx/equalizer.m | 374 ++++++++++-------- 4 files changed, 213 insertions(+), 180 deletions(-) diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib index aa1edc1096..d116dba6d7 100644 --- a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib +++ b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib @@ -3,13 +3,13 @@ IBDocumentLocation - 614 71 505 517 0 0 1024 746 + 799 152 505 517 0 0 1280 1002 IBEditorPositions 1617 542 480 104 149 0 0 1024 746 29 - 366 655 419 44 0 0 1024 746 + 521 894 419 44 0 0 1280 1002 915 54 452 185 199 0 0 1024 746 @@ -21,8 +21,9 @@ IBOpenObjects - 29 21 + 2029 + 29 IBSystem Version 7H63 diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/objects.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/objects.nib index 74ce9b8deabd55cea013bdab9006c006c4ce8777..042a56ec5fc10a5fd724c7cf531853b50216cde4 100644 GIT binary patch literal 60511 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 literal 60666 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 diff --git a/extras/MacOSX/vlc.pbproj/project.pbxproj b/extras/MacOSX/vlc.pbproj/project.pbxproj index e4d707d2d1..99fa51c8e8 100644 --- a/extras/MacOSX/vlc.pbproj/project.pbxproj +++ b/extras/MacOSX/vlc.pbproj/project.pbxproj @@ -874,18 +874,18 @@ isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = equalizer.h; - path = "../../modules/gui/macosx/equalizer.h"; - refType = 0; - sourceTree = ""; + path = ../../modules/gui/macosx/equalizer.h; + refType = 2; + sourceTree = SOURCE_ROOT; }; 2A16E04006C4F08700C87B09 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = equalizer.m; - path = "../../modules/gui/macosx/equalizer.m"; - refType = 0; - sourceTree = ""; + path = ../../modules/gui/macosx/equalizer.m; + refType = 2; + sourceTree = SOURCE_ROOT; }; 2A16E04106C4F08700C87B09 = { fileRef = 2A16E03F06C4F08700C87B09; diff --git a/modules/gui/macosx/equalizer.m b/modules/gui/macosx/equalizer.m index bc5bfd51a9..55fe1ad0f0 100644 --- a/modules/gui/macosx/equalizer.m +++ b/modules/gui/macosx/equalizer.m @@ -2,7 +2,7 @@ * equalizer.m: MacOS X interface module ***************************************************************************** * Copyright (C) 2004 VideoLAN - * $Id: equalizer.m 1 2004-08-07 23:50:00Z djc $ + * $Id$ * * Authors: JŽr™me Decoodt * @@ -39,22 +39,24 @@ *****************************************************************************/ @implementation VLCEqualizer -static void ChangeFiltersString( intf_thread_t *p_intf, - aout_instance_t * p_aout, +static void ChangeFiltersString( playlist_t *p_playlist, + aout_instance_t *p_aout, char *psz_name, vlc_bool_t b_add ) { char *psz_parser, *psz_string; + vlc_object_t *p_object = NULL; + int i; - if( p_aout ) - { - psz_string = var_GetString( p_aout, "audio-filter" ); - } - else - { - psz_string = config_GetPsz( p_intf, "audio-filter" ); - } + if( p_playlist != NULL ) + p_object = ( vlc_object_t* )p_playlist; + if( p_aout != NULL ) + p_object = ( vlc_object_t* )p_aout; + if( p_object == NULL ) + return; - if( !psz_string ) psz_string = strdup(""); + psz_string = var_GetString( p_object, "audio-filter" ); + + if( !psz_string ) psz_string = strdup( "" ); psz_parser = strstr( psz_string, psz_name ); @@ -63,7 +65,7 @@ static void ChangeFiltersString( intf_thread_t *p_intf, if( !psz_parser ) { psz_parser = psz_string; - asprintf( &psz_string, (*psz_string) ? "%s,%s" : "%s%s", + asprintf( &psz_string, ( *psz_string ) ? "%s,%s" : "%s%s", psz_string, psz_name ); free( psz_parser ); } @@ -76,13 +78,13 @@ static void ChangeFiltersString( intf_thread_t *p_intf, { if( psz_parser ) { - memmove( psz_parser, psz_parser + strlen(psz_name) + - (*(psz_parser + strlen(psz_name)) == ',' ? 1 : 0 ), - strlen(psz_parser + strlen(psz_name)) + 1 ); + memmove( psz_parser, psz_parser + strlen( psz_name ) + + ( *( psz_parser + strlen( psz_name ) ) == ',' ? 1 : 0 ), + strlen( psz_parser + strlen( psz_name ) ) + 1 ); - if( *(psz_string+strlen(psz_string ) -1 ) == ',' ) + if( *( psz_string+strlen( psz_string ) - 1 ) == ',' ) { - *(psz_string+strlen(psz_string ) -1 ) = '\0'; + *( psz_string+strlen( psz_string ) - 1 ) = '\0'; } } else @@ -92,14 +94,9 @@ static void ChangeFiltersString( intf_thread_t *p_intf, } } - if( p_aout == NULL ) - { - config_PutPsz( p_intf, "audio-filter", psz_string ); - } - else + var_SetString( p_object, "audio-filter", psz_string ); + if( p_aout ) { - int i; - var_SetString( p_aout, "audio-filter", psz_string ); for( i = 0; i < p_aout->i_nb_inputs; i++ ) { p_aout->pp_inputs[i]->b_restart = VLC_TRUE; @@ -108,20 +105,21 @@ static void ChangeFiltersString( intf_thread_t *p_intf, free( psz_string ); } -static vlc_bool_t GetFiltersStatus( intf_thread_t *p_intf, - aout_instance_t * p_aout, +static vlc_bool_t GetFiltersStatus( playlist_t *p_playlist, + aout_instance_t *p_aout, char *psz_name ) { char *psz_parser, *psz_string; + vlc_object_t *p_object = NULL; - if( p_aout ) - { - psz_string = var_GetString( p_aout, "audio-filter" ); - } - else - { - psz_string = config_GetPsz( p_intf, "audio-filter" ); - } + if( p_playlist != NULL ) + p_object = ( vlc_object_t* )p_playlist; + if( p_aout != NULL ) + p_object = ( vlc_object_t* )p_aout; + if( p_object == NULL ) + return VLC_FALSE; + + psz_string = var_GetString( p_object, "audio-filter" ); if( !psz_string ) psz_string = strdup(""); @@ -129,7 +127,7 @@ static vlc_bool_t GetFiltersStatus( intf_thread_t *p_intf, free( psz_string ); - if (psz_parser) + if ( psz_parser ) return VLC_TRUE; else return VLC_FALSE; @@ -137,12 +135,23 @@ static vlc_bool_t GetFiltersStatus( intf_thread_t *p_intf, - (IBAction)bandSliderUpdated:(id)sender { - intf_thread_t * p_intf = VLCIntf; - aout_instance_t *p_aout= (aout_instance_t *)vlc_object_find(p_intf, - VLC_OBJECT_AOUT, FIND_ANYWHERE); + intf_thread_t *p_intf = VLCIntf; + aout_instance_t *p_aout = ( aout_instance_t * )vlc_object_find( p_intf, + VLC_OBJECT_AOUT, FIND_ANYWHERE ); + playlist_t *p_playlist = ( playlist_t * )vlc_object_find( p_intf, + VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); + vlc_object_t *p_object = NULL; + char psz_values[102]; memset( psz_values, 0, 102 ); + if( p_playlist != NULL ) + p_object = ( vlc_object_t* )p_playlist; + if( p_aout != NULL ) + p_object = ( vlc_object_t* )p_aout; + if( p_object == NULL ) + return; + /* Write the new bands values */ /* TODO: write a generic code instead of ten times the same thing */ @@ -157,126 +166,130 @@ static vlc_bool_t GetFiltersStatus( intf_thread_t *p_intf, sprintf( psz_values, "%s %.1f", psz_values, [o_slider_band9 floatValue] ); sprintf( psz_values, "%s %.1f", psz_values, [o_slider_band10 floatValue] ); - if( p_aout == NULL ) - { - config_PutPsz( p_intf, "equalizer-bands", psz_values ); - msg_Dbg( p_intf, "equalizer settings set to %s", psz_values); - } - else - { - var_SetString( p_aout, "equalizer-bands", psz_values ); - msg_Dbg( p_intf, "equalizer settings changed to %s", psz_values); + var_SetString( p_object, "equalizer-bands", psz_values ); + if( p_aout ) vlc_object_release( p_aout ); - } + if( p_playlist ) + vlc_object_release( p_playlist ); } - (IBAction)changePreset:(id)sender { - intf_thread_t * p_intf = VLCIntf; - float preamp, band[10]; - char *p, *p_next; - int b_2p; + intf_thread_t *p_intf = VLCIntf; + float f_preamp, f_band[10]; + char *psz_bands, *p_next; + vlc_bool_t b_2p; int i; - aout_instance_t *p_aout= (aout_instance_t *)vlc_object_find(p_intf, - VLC_OBJECT_AOUT, FIND_ANYWHERE); - - vlc_bool_t enabled = GetFiltersStatus( p_intf, p_aout, "equalizer" ); - -static char *preset_list[] = { - "flat", "classical", "club", "dance", "fullbass", "fullbasstreeble", - "fulltreeble", "headphones","largehall", "live", "party", "pop", "reggae", - "rock", "ska", "soft", "softrock", "techno" -}; - - if( p_aout == NULL ) - { - config_PutPsz( p_intf, "equalizer-preset",preset_list[[sender indexOfSelectedItem]] ); - } - else + aout_instance_t *p_aout= ( aout_instance_t * )vlc_object_find( p_intf, + VLC_OBJECT_AOUT, FIND_ANYWHERE ); + playlist_t *p_playlist = ( playlist_t * )vlc_object_find( p_intf, + VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); + vlc_object_t *p_object = NULL; + vlc_bool_t b_enabled = GetFiltersStatus( p_playlist, p_aout, "equalizer" ); + + static char *preset_list[] = { + "flat", "classical", "club", "dance", "fullbass", "fullbasstreble", + "fulltreble", "headphones","largehall", "live", "party", "pop", "reggae", + "rock", "ska", "soft", "softrock", "techno" + }; + + if( p_playlist != NULL ) + p_object = ( vlc_object_t* )p_playlist; + if( p_aout != NULL ) + p_object = ( vlc_object_t* )p_aout; + if( p_object == NULL ) { - var_SetString( p_aout , "equalizer-preset" ,preset_list[[sender indexOfSelectedItem]] ); - vlc_object_release( p_aout ); + msg_Dbg( p_intf, "equalizer settings not set: no playlist nor aout found"); + return; } + + var_SetString( p_object , "equalizer-preset" , preset_list[[sender indexOfSelectedItem]] ); - - if( ( p_aout == NULL ) || ( enabled == VLC_FALSE ) ) - { - preamp = config_GetFloat( p_intf, "equalizer-preamp" ); - p = config_GetPsz( p_intf, "equalizer-bands"); - b_2p = config_GetInt( p_intf, "equalizer-2pass" ); - } - else - { - preamp = var_GetFloat( p_aout, "equalizer-preamp" ); - p = var_GetString( p_aout, "equalizer-bands" ); - b_2p = var_GetBool( p_aout, "equalizer-2pass" ); - vlc_object_release( p_aout ); - } + f_preamp = var_GetFloat( p_object, "equalizer-preamp" ); + psz_bands = var_GetString( p_object, "equalizer-bands" ); + b_2p = var_GetBool( p_object, "equalizer-2pass" ); + vlc_object_release( p_object ); /* Set the preamp slider */ - [o_slider_preamp setFloatValue: preamp]; + [o_slider_preamp setFloatValue: f_preamp]; /* Set the bands slider */ for( i = 0; i < 10; i++ ) { /* Read dB -20/20 */ #ifdef HAVE_STRTOF - band[i] = strtof( p, &p_next ); + f_band[i] = strtof( psz_bands, &p_next ); #else - band[i] = (float) strtod( p, &p_next ); + f_band[i] = (float)strtod( psz_bands, &p_next ); #endif - if( !p_next || p_next == p ) break; /* strtof() failed */ + if( !p_next || p_next == psz_bands ) break; /* strtof() failed */ - if( !*p ) break; /* end of line */ - p=p_next+1; + if( !*psz_bands ) break; /* end of line */ + psz_bands = p_next+1; } - [o_slider_band1 setFloatValue: band[0]]; - [o_slider_band2 setFloatValue: band[1]]; - [o_slider_band3 setFloatValue: band[2]]; - [o_slider_band4 setFloatValue: band[3]]; - [o_slider_band5 setFloatValue: band[4]]; - [o_slider_band6 setFloatValue: band[5]]; - [o_slider_band7 setFloatValue: band[6]]; - [o_slider_band8 setFloatValue: band[7]]; - [o_slider_band9 setFloatValue: band[8]]; - [o_slider_band10 setFloatValue: band[9]]; + [o_slider_band1 setFloatValue: f_band[0]]; + [o_slider_band2 setFloatValue: f_band[1]]; + [o_slider_band3 setFloatValue: f_band[2]]; + [o_slider_band4 setFloatValue: f_band[3]]; + [o_slider_band5 setFloatValue: f_band[4]]; + [o_slider_band6 setFloatValue: f_band[5]]; + [o_slider_band7 setFloatValue: f_band[6]]; + [o_slider_band8 setFloatValue: f_band[7]]; + [o_slider_band9 setFloatValue: f_band[8]]; + [o_slider_band10 setFloatValue: f_band[9]]; - if( enabled == VLC_TRUE ) + if( b_enabled == VLC_TRUE ) [o_btn_enable setState:NSOnState]; else [o_btn_enable setState:NSOffState]; - [o_btn_2pass setState:( ( b_2p == VLC_TRUE )?NSOnState:NSOffState )]; + [o_btn_2pass setState:( ( b_2p == VLC_TRUE ) ? NSOnState : NSOffState )]; } - (IBAction)enable:(id)sender { - intf_thread_t * p_intf = VLCIntf; - aout_instance_t *p_aout= (aout_instance_t *)vlc_object_find(p_intf, - VLC_OBJECT_AOUT, FIND_ANYWHERE); - ChangeFiltersString( p_intf,p_aout, "equalizer", [sender state]); - + intf_thread_t *p_intf = VLCIntf; + aout_instance_t *p_aout= (aout_instance_t *)vlc_object_find( p_intf, + VLC_OBJECT_AOUT, FIND_ANYWHERE ); + playlist_t *p_playlist = ( playlist_t * )vlc_object_find( p_intf, + VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); + ChangeFiltersString( p_playlist, p_aout, "equalizer", [sender state] ); + + [o_popup_presets setEnabled: [sender state]]; if( p_aout != NULL ) vlc_object_release( p_aout ); + if( p_playlist != NULL ) + vlc_object_release( p_playlist ); } - (IBAction)preampSliderUpdated:(id)sender { - intf_thread_t * p_intf = VLCIntf; - float f= [sender floatValue] ; + intf_thread_t *p_intf = VLCIntf; + float f_preamp= [sender floatValue] ; + + aout_instance_t *p_aout= ( aout_instance_t * )vlc_object_find( p_intf, + VLC_OBJECT_AOUT, FIND_ANYWHERE ); + playlist_t *p_playlist = ( playlist_t * )vlc_object_find( p_intf, + VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); - aout_instance_t *p_aout= (aout_instance_t *)vlc_object_find(p_intf, - VLC_OBJECT_AOUT, FIND_ANYWHERE); + vlc_object_t *p_object = NULL; - if( p_aout == NULL ) + if( p_playlist != NULL ) + p_object = ( vlc_object_t* )p_playlist; + if( p_aout != NULL ) + p_object = ( vlc_object_t* )p_aout; + if( p_object == NULL ) { - config_PutFloat( p_intf, "equalizer-preamp", f ); + msg_Dbg( p_intf, "equalizer settings not set: no playlist nor aout found"); + return; } - else - { - var_SetFloat( p_aout, "equalizer-preamp", f ); + + var_SetFloat( p_object, "equalizer-preamp", f_preamp ); + + if( p_aout != NULL ) vlc_object_release( p_aout ); - } + if( p_playlist != NULL ) + vlc_object_release( p_playlist ); } - (IBAction)toggleWindow:(id)sender @@ -288,66 +301,76 @@ static char *preset_list[] = { } else { - intf_thread_t * p_intf = VLCIntf; - float preamp, band[10]; - char *p, *p_next; - int b_2p; + intf_thread_t *p_intf = VLCIntf; + float f_preamp, f_band[10]; + char *psz_bands, *p_next; + vlc_bool_t b_2p; int i; - aout_instance_t *p_aout= (aout_instance_t *)vlc_object_find(p_intf, - VLC_OBJECT_AOUT, FIND_ANYWHERE); + aout_instance_t *p_aout= ( aout_instance_t * )vlc_object_find( p_intf, + VLC_OBJECT_AOUT, FIND_ANYWHERE ); + playlist_t *p_playlist = ( playlist_t * )vlc_object_find( p_intf, + VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); - vlc_bool_t enabled = GetFiltersStatus( p_intf, p_aout, "equalizer" ); - - if( ( p_aout == NULL ) || ( enabled == VLC_FALSE ) ) + vlc_object_t *p_object = NULL; + + vlc_bool_t b_enabled = GetFiltersStatus( p_playlist, p_aout, "equalizer" ); + + if( p_playlist != NULL ) + p_object = ( vlc_object_t* )p_playlist; + if( p_aout != NULL ) + p_object = ( vlc_object_t* )p_aout; + if( p_object == NULL ) { - preamp = config_GetFloat( p_intf, "equalizer-preamp" ); - p = config_GetPsz( p_intf, "equalizer-bands"); - b_2p = config_GetInt( p_intf, "equalizer-2pass" ); + msg_Dbg( p_intf, "equalizer settings not set: no playlist nor aout found"); + return; } - else - { - preamp = var_GetFloat( p_aout, "equalizer-preamp" ); - p = var_GetString( p_aout, "equalizer-bands" ); - b_2p = var_GetBool( p_aout, "equalizer-2pass" ); + + f_preamp = var_GetFloat( p_object, "equalizer-preamp" ); + psz_bands = var_GetString( p_object, "equalizer-bands" ); + b_2p = var_GetBool( p_object, "equalizer-2pass" ); + + if( p_aout != NULL ) vlc_object_release( p_aout ); - } - if( !p ) - p = "0 0 0 0 0 0 0 0 0 0"; + if( p_playlist != NULL ) + vlc_object_release( p_playlist ); + + if( !psz_bands ) + psz_bands = "0 0 0 0 0 0 0 0 0 0"; /* Set the preamp slider */ - [o_slider_preamp setFloatValue: preamp]; + [o_slider_preamp setFloatValue: f_preamp]; /* Set the bands slider */ for( i = 0; i < 10; i++ ) { /* Read dB -20/20 */ #ifdef HAVE_STRTOF - band[i] = strtof( p, &p_next ); + f_band[i] = strtof( psz_bands, &p_next ); #else - band[i] = (float) strtod( p, &p_next ); + f_band[i] = (float)strtod( psz_bands, &p_next ); #endif - if( !p_next || p_next == p ) break; /* strtof() failed */ + if( !p_next || p_next == psz_bands ) break; /* strtof() failed */ - if( !*p ) break; /* end of line */ - p=p_next+1; + if( !*psz_bands ) break; /* end of line */ + psz_bands = p_next+1; } - [o_slider_band1 setFloatValue: band[0]]; - [o_slider_band2 setFloatValue: band[1]]; - [o_slider_band3 setFloatValue: band[2]]; - [o_slider_band4 setFloatValue: band[3]]; - [o_slider_band5 setFloatValue: band[4]]; - [o_slider_band6 setFloatValue: band[5]]; - [o_slider_band7 setFloatValue: band[6]]; - [o_slider_band8 setFloatValue: band[7]]; - [o_slider_band9 setFloatValue: band[8]]; - [o_slider_band10 setFloatValue: band[9]]; - - if( enabled == VLC_TRUE ) + [o_slider_band1 setFloatValue: f_band[0]]; + [o_slider_band2 setFloatValue: f_band[1]]; + [o_slider_band3 setFloatValue: f_band[2]]; + [o_slider_band4 setFloatValue: f_band[3]]; + [o_slider_band5 setFloatValue: f_band[4]]; + [o_slider_band6 setFloatValue: f_band[5]]; + [o_slider_band7 setFloatValue: f_band[6]]; + [o_slider_band8 setFloatValue: f_band[7]]; + [o_slider_band9 setFloatValue: f_band[8]]; + [o_slider_band10 setFloatValue: f_band[9]]; + + if( b_enabled == VLC_TRUE ) [o_btn_enable setState:NSOnState]; else [o_btn_enable setState:NSOffState]; - [o_btn_2pass setState:( ( b_2p == VLC_TRUE )?NSOnState:NSOffState )]; + [o_btn_2pass setState:( ( b_2p == VLC_TRUE ) ? NSOnState : NSOffState )]; [o_window makeKeyAndOrderFront:sender]; [o_btn_equalizer setState:NSOnState]; @@ -356,30 +379,39 @@ static char *preset_list[] = { - (IBAction)twopass:(id)sender { - intf_thread_t * p_intf = VLCIntf; - aout_instance_t *p_aout= (aout_instance_t *)vlc_object_find(p_intf, - VLC_OBJECT_AOUT, FIND_ANYWHERE); + intf_thread_t *p_intf = VLCIntf; + aout_instance_t *p_aout= ( aout_instance_t * )vlc_object_find( p_intf, + VLC_OBJECT_AOUT, FIND_ANYWHERE ); + playlist_t *p_playlist = ( playlist_t * )vlc_object_find( p_intf, + VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); + vlc_object_t *p_object = NULL; vlc_bool_t b_2p = [sender state] ? VLC_TRUE : VLC_FALSE; - if( p_aout == NULL ) + if( p_playlist != NULL ) + p_object = ( vlc_object_t* )p_playlist; + if( p_aout != NULL ) + p_object = ( vlc_object_t* )p_aout; + if( p_object == NULL ) { - config_PutInt( p_intf, "equalizer-2pass", b_2p ); + msg_Dbg( p_intf, "equalizer settings not set: no playlist nor aout found"); + return; } - else + + var_SetBool( p_object, "equalizer-2pass", b_2p ); + if( ( [o_btn_enable state] ) && ( p_aout != NULL ) ) { - var_SetBool( p_aout, "equalizer-2pass", b_2p ); - if( [o_btn_enable state] ) + int i; + for( i = 0; i < p_aout->i_nb_inputs; i++ ) { - int i; - for( i = 0; i < p_aout->i_nb_inputs; i++ ) - { - p_aout->pp_inputs[i]->b_restart = VLC_TRUE; - } + p_aout->pp_inputs[i]->b_restart = VLC_TRUE; } - vlc_object_release( p_aout ); } + if( p_aout != NULL ) + vlc_object_release( p_aout ); + if( p_playlist != NULL ) + vlc_object_release( p_playlist ); } @end -- 2.39.5