- (void)dealloc
{
[o_currentlyShownCategoryView release];
- [o_sprefs_toolbar release];
[o_hotkeySettings release];
[o_hotkeyDescriptions release];
[self initStrings];
/* setup the toolbar */
- o_sprefs_toolbar = [[[NSToolbar alloc] initWithIdentifier: VLCSPrefsToolbarIdentifier] autorelease];
+ NSToolbar * o_sprefs_toolbar = [[[NSToolbar alloc] initWithIdentifier: VLCSPrefsToolbarIdentifier] autorelease];
[o_sprefs_toolbar setAllowsUserCustomization: NO];
[o_sprefs_toolbar setAutosavesConfiguration: NO];
[o_sprefs_toolbar setDisplayMode: NSToolbarDisplayModeIconAndLabel];
nil] retain];
}
+#define CreateToolbarItem( o_name, o_desc, o_img, sel ) \
+ o_toolbarItem = create_toolbar_item(o_itemIdent, o_name, o_desc, o_img, self, @selector(sel));
+static inline NSToolbarItem *
+create_toolbar_item( NSString * o_itemIdent, NSString * o_name, NSString * o_desc, NSString * o_img, id target, SEL selector )
+{
+ NSToolbarItem *o_toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier: o_itemIdent] autorelease]; \
+
+ [o_toolbarItem setLabel: o_name];
+ [o_toolbarItem setPaletteLabel: o_desc];
+
+ [o_toolbarItem setToolTip: o_desc];
+ [o_toolbarItem setImage: [NSImage imageNamed: o_img]];
+
+ [o_toolbarItem setTarget: target];
+ [o_toolbarItem setAction: selector];
+
+ [o_toolbarItem setEnabled: YES];
+ [o_toolbarItem setAutovalidates: YES];
+
+ return o_toolbarItem;
+}
+
- (NSToolbarItem *) toolbar: (NSToolbar *)o_sprefs_toolbar
itemForItemIdentifier: (NSString *)o_itemIdent
willBeInsertedIntoToolbar: (BOOL)b_willBeInserted
{
NSToolbarItem *o_toolbarItem = nil;
-
- #define CreateToolbarItem( o_name, o_desc, o_img, sel ) \
- o_toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier: o_itemIdent] autorelease]; \
- \
- [o_toolbarItem setLabel: o_name]; \
- [o_toolbarItem setPaletteLabel: o_desc]; \
- \
- [o_toolbarItem setToolTip: o_desc]; \
- [o_toolbarItem setImage: [NSImage imageNamed: o_img]]; \
- \
- [o_toolbarItem setTarget: self]; \
- [o_toolbarItem setAction: @selector( sel )]; \
- \
- [o_toolbarItem setEnabled: YES]; \
- [o_toolbarItem setAutovalidates: YES]
-
+
if( [o_itemIdent isEqual: VLCIntfSettingToolbarIdentifier] )
{
CreateToolbarItem( _NS("Interface"), _NS("Interface Settings"), @"spref_cone_Interface_64", showInterfaceSettings );
/* Subtitles and OSD */
[o_osd_encoding_txt setStringValue: _NS("Default Encoding")];
[o_osd_font_box setTitle: _NS("Display Settings")];
- [o_osd_font_btn setTitle: _NS("Browse...")];
+ [o_osd_font_btn setTitle: _NS("Choose...")];
[o_osd_font_color_txt setStringValue: _NS("Font Color")];
[o_osd_font_size_txt setStringValue: _NS("Font Size")];
[o_osd_font_txt setStringValue: _NS("Font")];
- (void)setupButton: (NSPopUpButton *)object forModuleList: (const char *)name
{
module_config_t *p_item;
- vlc_list_t *p_list;
- module_t *p_parser;
+ module_t *p_parser, **p_list;
int y = 0;
[object removeAllItems];
p_item = config_FindConfig( VLC_OBJECT(p_intf), name );
- p_list = vlc_list_find( p_intf, VLC_OBJECT_MODULE, FIND_ANYWHERE );
+ p_list = module_list_get( NULL );
if( !p_item ||!p_list )
{
if( p_list ) vlc_list_release(p_list);
}
[object addItemWithTitle: _NS("Default")];
- for( int i_index = 0; i_index < p_list->i_count; i_index++ )
+ for( size_t i_index = 0; p_list[i_index]; i_index++ )
{
- p_parser = (module_t *)p_list->p_values[i_index].p_object;
- if( p_parser && module_IsCapable( p_parser, p_item->psz_type ) )
+ p_parser = p_list[i_index];
+ if( module_provides( p_parser, p_item->psz_type ) )
{
[object addItemWithTitle: [NSString stringWithUTF8String: module_GetLongName( p_parser ) ?: ""]];
- if( p_item->value.psz && !strcmp( p_item->value.psz, module_GetObjName( p_parser ) ) )
+ if( p_item->value.psz && !strcmp( p_item->value.psz, module_get_object( p_parser ) ) )
[object selectItem: [object lastItem]];
}
}
- vlc_list_release( p_list );
+ module_list_free( p_list );
[object setToolTip: _NS(p_item->psz_longtext)];
}
psz_tmp = config_GetPsz( p_intf, "audio-filter" );
if( psz_tmp )
- [o_audio_norm_ckb setState: (int)strstr( psz_tmp, "normvol" )];
+ {
+ [o_audio_norm_ckb setState: (int)strstr( psz_tmp, "volnorm" )];
+ [o_audio_norm_fld setEnabled: [o_audio_norm_ckb state]];
+ [o_audio_norm_stepper setEnabled: [o_audio_norm_ckb state]];
+ }
[o_audio_norm_fld setFloatValue: config_GetFloat( p_intf, "norm-max-level" )];
[self setupButton: o_audio_visual_pop forModuleList: "audio-visual"];
/* Last.FM is optional */
- if( module_Exists( p_intf, "audioscrobbler" ) )
+ if( module_exists( "audioscrobbler" ) )
{
[o_audio_lastuser_fld setStringValue: [NSString stringWithUTF8String: config_GetPsz( p_intf, "lastfm-username" ) ?: ""]];
[o_audio_lastpwd_sfld setStringValue: [NSString stringWithUTF8String: config_GetPsz( p_intf, "lastfm-password" ) ?: ""]];
int i_cache = config_GetInt( p_intf, "file-caching");
TestCaC( "udp-caching" );
- if( module_Exists (p_intf, "dvdread") )
+ if( module_exists ("dvdread") )
TestCaC( "dvdread-caching" );
- if( module_Exists (p_intf, "dvdnav") )
+ if( module_exists ("dvdnav") )
TestCaC( "dvdnav-caching" );
TestCaC( "tcp-caching" );
TestCaC( "fake-caching" );
TestCaCi( "rtsp-caching", 4 );
TestCaCi( "ftp-caching", 2 );
TestCaCi( "http-caching", 4 );
- if(module_Exists (p_intf, "access_realrtsp"))
+ if(module_exists ("access_realrtsp"))
TestCaCi( "realrtsp-caching", 10 );
TestCaCi( "mms-caching", 19 );
if( b_cache_equal )
- (void)showSimplePrefs
{
/* we want to show the interface settings, if no category was chosen */
- if( [o_sprefs_toolbar selectedItemIdentifier] == nil )
+ if( [[o_sprefs_win toolbar] selectedItemIdentifier] == nil )
{
- [o_sprefs_toolbar setSelectedItemIdentifier: VLCIntfSettingToolbarIdentifier];
+ [[o_sprefs_win toolbar] setSelectedItemIdentifier: VLCIntfSettingToolbarIdentifier];
[self showInterfaceSettings];
}
if( i_return == NSAlertAlternateReturn )
{
config_ResetAll( p_intf );
- b_intfSettingChanged = b_videoSettingChanged = b_audioSettingChanged = YES;
[self resetControls];
+ config_SaveConfigFile( p_intf, NULL );
}
}
-- (void)saveChangedSettings
+static inline void save_int_list( intf_thread_t * p_intf, id object, const char * name )
+{
+ NSNumber *p_valueobject;
+ module_config_t *p_item;
+ p_item = config_FindConfig( VLC_OBJECT(p_intf), name );
+ p_valueobject = (NSNumber *)[[object selectedItem] representedObject];
+ assert([p_valueobject isKindOfClass:[NSNumber class]]);
+ if( p_valueobject) config_PutInt( p_intf, name, [p_valueobject intValue] );
+}
+
+static inline void save_string_list( intf_thread_t * p_intf, id object, const char * name )
+{
+ NSString *p_stringobject;
+ module_config_t *p_item;
+ p_item = config_FindConfig( VLC_OBJECT(p_intf), name );
+ p_stringobject = (NSString *)[[object selectedItem] representedObject];
+ assert([p_stringobject isKindOfClass:[NSString class]]);
+ if( p_stringobject ) config_PutPsz( p_intf, name, [p_stringobject UTF8String] );
+}
+
+static inline void save_module_list( intf_thread_t * p_intf, id object, const char * name )
{
module_config_t *p_item;
- vlc_list_t *p_list;
- module_t *p_parser;
+ module_t *p_parser, **p_list;
+
+ p_item = config_FindConfig( VLC_OBJECT(p_intf), name );
+
+ p_list = module_list_get( NULL );
+ for( size_t i_module_index = 0; p_list[i_module_index]; i_module_index++ )
+ {
+ p_parser = p_list[i_module_index];
+
+ if( p_item->i_type == CONFIG_ITEM_MODULE && module_provides( p_parser, p_item->psz_type ) )
+ {
+ if( [[[object selectedItem] title] isEqualToString: _NS( module_GetLongName( p_parser ) )] )
+ {
+ config_PutPsz( p_intf, name, strdup( module_get_object( p_parser )));
+ break;
+ }
+ }
+ }
+ module_list_free( p_list );
+ if( [[[object selectedItem] title] isEqualToString: _NS( "Default" )] )
+ config_PutPsz( p_intf, name, "" );
+}
+
+- (void)saveChangedSettings
+{
char *psz_tmp;
int i;
- NSNumber *p_valueobject;
NSString *p_stringobject;
-#define SaveIntList( object, name ) \
- p_item = config_FindConfig( VLC_OBJECT(p_intf), name ); \
- p_valueobject = (NSNumber *)[[object selectedItem] representedObject]; \
- if( p_valueobject) config_PutInt( p_intf, name, [p_valueobject intValue] );
+#define SaveIntList( object, name ) save_int_list( p_intf, object, name )
-#define SaveStringList( object, name ) \
- p_item = config_FindConfig( VLC_OBJECT(p_intf), name ); \
- p_stringobject = (NSString *)[[object selectedItem] representedObject]; \
- if( p_stringobject ) config_PutPsz( p_intf, name, [p_stringobject UTF8String] );
+#define SaveStringList( object, name ) save_string_list( p_intf, object, name )
-#define SaveModuleList( object, name ) \
- p_item = config_FindConfig( VLC_OBJECT(p_intf), name ); \
- \
- p_list = vlc_list_find( VLCIntf, VLC_OBJECT_MODULE, FIND_ANYWHERE ); \
- for( int i_module_index = 0; i_module_index < p_list->i_count; i_module_index++ ) \
- { \
- p_parser = (module_t *)p_list->p_values[i_module_index].p_object; \
- \
- if( p_item->i_type == CONFIG_ITEM_MODULE && module_IsCapable( p_parser, p_item->psz_type ) ) \
- { \
- if( [[[object selectedItem] title] isEqualToString: _NS( module_GetLongName( p_parser ) )] ) \
- { \
- config_PutPsz( p_intf, name, strdup( module_GetObjName( p_parser ))); \
- break; \
- } \
- } \
- } \
- vlc_list_release( p_list ); \
- if( [[[object selectedItem] title] isEqualToString: _NS( "Default" )] ) \
- config_PutPsz( p_intf, name, "" )
+#define SaveModuleList( object, name ) save_module_list( p_intf, object, name )
/**********************
* interface settings *
config_PutPsz( p_intf, "audio-language", [[o_audio_lang_fld stringValue] UTF8String] );
config_PutInt( p_intf, "headphone-dolby", [o_audio_headphone_ckb state] );
- psz_tmp = config_GetPsz( p_intf, "audio-filter" );
- if(! psz_tmp)
- config_PutPsz( p_intf, "audio-filter", "volnorm" );
- else if( (int)strstr( psz_tmp, "normvol" ) == NO )
+ if( [o_audio_norm_ckb state] == NSOnState )
{
- /* work-around a GCC 4.0.1 bug */
- psz_tmp = (char *)[[NSString stringWithFormat: @"%s:volnorm", psz_tmp] UTF8String];
- config_PutPsz( p_intf, "audio-filter", psz_tmp );
+ psz_tmp = config_GetPsz( p_intf, "audio-filter" );
+ if(! psz_tmp)
+ config_PutPsz( p_intf, "audio-filter", "volnorm" );
+ else if( (int)strstr( psz_tmp, "normvol" ) == NO )
+ {
+ /* work-around a GCC 4.0.1 bug */
+ psz_tmp = (char *)[[NSString stringWithFormat: @"%s:volnorm", psz_tmp] UTF8String];
+ config_PutPsz( p_intf, "audio-filter", psz_tmp );
+ }
}
else
{
- psz_tmp = (char *)[[[NSString stringWithUTF8String: psz_tmp] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@":volnorm"]] UTF8String];
- psz_tmp = (char *)[[[NSString stringWithUTF8String: psz_tmp] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"volnorm:"]] UTF8String];
- psz_tmp = (char *)[[[NSString stringWithUTF8String: psz_tmp] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"volnorm"]] UTF8String];
- config_PutPsz( p_intf, "audio-filter", psz_tmp );
+ psz_tmp = config_GetPsz( p_intf, "audio-filter" );
+ if( psz_tmp )
+ {
+ psz_tmp = (char *)[[[NSString stringWithUTF8String: psz_tmp] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@":volnorm"]] UTF8String];
+ psz_tmp = (char *)[[[NSString stringWithUTF8String: psz_tmp] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"volnorm:"]] UTF8String];
+ psz_tmp = (char *)[[[NSString stringWithUTF8String: psz_tmp] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"volnorm"]] UTF8String];
+ config_PutPsz( p_intf, "audio-filter", psz_tmp );
+ }
}
config_PutFloat( p_intf, "norm-max-level", [o_audio_norm_fld floatValue] );
SaveModuleList( o_audio_visual_pop, "audio-visual" );
/* Last.FM is optional */
- if( module_Exists( p_intf, "audioscrobbler" ) )
+ if( module_exists( "audioscrobbler" ) )
{
[o_audio_last_ckb setEnabled: YES];
if( [o_audio_last_ckb state] == NSOnState )
#define CaC( name ) CaCi( name, 1 )
msg_Dbg( p_intf, "Adjusting all cache values to: %i", [[o_input_cachelevel_pop selectedItem] tag] );
CaC( "udp-caching" );
- if( module_Exists (p_intf, "dvdread" ) )
+ if( module_exists ( "dvdread" ) )
{
CaC( "dvdread-caching" );
i = i + config_SaveConfigFile( p_intf, "dvdread" );
}
- if( module_Exists (p_intf, "dvdnav" ) )
+ if( module_exists ( "dvdnav" ) )
{
CaC( "dvdnav-caching" );
i = i + config_SaveConfigFile( p_intf, "dvdnav" );
CaC( "screen-caching" );
CaCi( "rtsp-caching", 4 ); CaCi( "ftp-caching", 2 );
CaCi( "http-caching", 4 );
- if( module_Exists (p_intf, "access_realrtsp" ) )
+ if( module_exists ( "access_realrtsp" ) )
{
CaCi( "realrtsp-caching", 10 );
i = i + config_SaveConfigFile( p_intf, "access_realrtsp" );
i = i + config_SaveConfigFile( p_intf, "access_ftp" );
i = i + config_SaveConfigFile( p_intf, "access_mms" );
i = i + config_SaveConfigFile( p_intf, "live555" );
+ i = i + config_SaveConfigFile( p_intf, "avi" );
if( i != 0 )
{
if( sender == o_audio_vol_fld )
[o_audio_vol_sld setIntValue: [o_audio_vol_fld intValue]];
+ if( sender == o_audio_norm_ckb )
+ {
+ [o_audio_norm_stepper setEnabled: [o_audio_norm_ckb state]];
+ [o_audio_norm_fld setEnabled: [o_audio_norm_ckb state]];
+ }
+
if( sender == o_audio_last_ckb )
{
if( [o_audio_last_ckb state] == NSOnState )
- (IBAction)osdSettingChanged:(id)sender
{
- if( sender == o_osd_font_btn )
- {
- o_selectFolderPanel = [[NSOpenPanel alloc] init];
- [o_selectFolderPanel setCanChooseDirectories: NO];
- [o_selectFolderPanel setCanChooseFiles: YES];
- [o_selectFolderPanel setResolvesAliases: YES];
- [o_selectFolderPanel setAllowsMultipleSelection: NO];
- [o_selectFolderPanel setMessage: _NS("Choose the font to display your Subtitles with.")];
- [o_selectFolderPanel setCanCreateDirectories: NO];
- [o_selectFolderPanel setPrompt: _NS("Choose")];
- [o_selectFolderPanel setAllowedFileTypes: [NSArray arrayWithObjects: @"dfont", @"ttf", @"otf", @"FFIL", nil]];
- [o_selectFolderPanel beginSheetForDirectory: @"/System/Library/Fonts/" file: nil modalForWindow: o_sprefs_win
- modalDelegate: self
- didEndSelector: @selector(savePanelDidEnd:returnCode:contextInfo:)
- contextInfo: o_osd_font_btn];
- }
- else
- b_osdSettingChanged = YES;
+ b_osdSettingChanged = YES;
}
- (void)showOSDSettings
[self showSettingsForCategory: o_osd_view];
}
+- (IBAction)showFontPicker:(id)sender
+{
+ char * font = config_GetPsz( p_intf, "quartztext-font" );
+ NSString * fontFamilyName = font ? [NSString stringWithUTF8String: font] : nil;
+ free(font);
+ if( fontFamilyName )
+ {
+ NSFontDescriptor * fd = [NSFontDescriptor fontDescriptorWithFontAttributes:nil];
+ NSFont * font = [NSFont fontWithDescriptor:[fd fontDescriptorWithFamily:fontFamilyName] textTransform:nil];
+ [[NSFontManager sharedFontManager] setSelectedFont:font isMultiple:NO];
+ }
+ [[NSFontManager sharedFontManager] setDelegate: self];
+ [o_sprefs_win makeFirstResponder: o_sprefs_win];
+ [[NSFontPanel sharedFontPanel] orderFront:self];
+}
+
+- (void)changeFont:(id)sender
+{
+ NSFont * font = [sender convertFont:[[NSFontManager sharedFontManager] selectedFont]];
+ [o_osd_font_fld setStringValue:[font familyName]];
+ [self osdSettingChanged:self];
+}
+
- (IBAction)inputSettingChanged:(id)sender
{
if( sender == o_input_cachelevel_pop )
[self showSettingsForCategory: o_hotkeys_view];
}
-- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView
+- (int)numberOfRowsInTableView:(NSTableView *)aTableView
{
return [o_hotkeySettings count];
}
-- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
+- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex
{
if( [[aTableColumn identifier] isEqualToString: @"action"] )
return [o_hotkeyDescriptions objectAtIndex: rowIndex];
}
@end
+
+@implementation VLCSimplePrefsWindow
+
+- (BOOL)acceptsFirstResponder
+{
+ return YES;
+}
+
+- (void)changeFont:(id)sender
+{
+ [[[VLCMain sharedInstance] getSimplePreferences] changeFont: sender];
+}
+@end