From: Benjamin Pracht Date: Fri, 30 Apr 2004 15:44:06 +0000 (+0000) Subject: * Use the playlist info panel instead of the old one everywhere X-Git-Tag: 0.7.2~178 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=90376941d2b260f4319b81345064a271f2f25b02;p=vlc * Use the playlist info panel instead of the old one everywhere - old VLCInfo and InfoPanel have been removed from nib file - VLCPlaylistInfo and PlaylistInfoPanel have been renamed - old info.c and info.h are still in repository, but not compiled, should I remove them ? --- diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib index df00e3c76a..c6b412863f 100644 --- a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib +++ b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib @@ -52,10 +52,34 @@ SUPERCLASS = NSObject; }, { - ACTIONS = {showCategory = id; toggleInfoPanel = id; }; + ACTIONS = { + createOutlineGroup = id; + deleteOutlineGroup = id; + handleGroup = id; + infoCancel = id; + infoOk = id; + toggleInfoPanel = id; + togglePlaylistInfoPanel = id; + }; CLASS = VLCInfo; LANGUAGE = ObjC; - OUTLETS = {"o_selector" = id; "o_view" = id; "o_window" = id; }; + OUTLETS = { + "o_author_lbl" = id; + "o_author_txt" = id; + "o_btn_add_group" = id; + "o_btn_cancel" = id; + "o_btn_delete_group" = id; + "o_btn_ok" = id; + "o_group_cbx" = id; + "o_group_color" = id; + "o_group_lbl" = id; + "o_info_window" = id; + "o_outline_view" = id; + "o_title_lbl" = id; + "o_title_txt" = id; + "o_uri_lbl" = id; + "o_uri_txt" = id; + }; SUPERCLASS = NSObject; }, { @@ -96,15 +120,12 @@ "o_err_msg" = id; "o_error" = id; "o_info" = id; - "o_info_window" = id; "o_messages" = id; "o_mi_about" = id; "o_mi_add_intf" = id; "o_mi_audiotrack" = id; "o_mi_bring_atf" = id; "o_mi_bwd" = id; - "o_mi_bwd1m" = id; - "o_mi_bwd5m" = id; "o_mi_channels" = id; "o_mi_chapter" = id; "o_mi_clear" = id; @@ -121,8 +142,6 @@ "o_mi_floatontop" = id; "o_mi_fullscreen" = id; "o_mi_fwd" = id; - "o_mi_fwd1m" = id; - "o_mi_fwd5m" = id; "o_mi_half_window" = id; "o_mi_hide" = id; "o_mi_hide_others" = id; @@ -371,37 +390,6 @@ }; SUPERCLASS = NSObject; }, - { - ACTIONS = { - createOutlineGroup = id; - deleteOutlineGroup = id; - handleGroup = id; - infoCancel = id; - infoOk = id; - togglePlaylistInfoPanel = id; - }; - CLASS = VLCPlaylistInfo; - LANGUAGE = ObjC; - OUTLETS = { - "o_author_lbl" = id; - "o_author_txt" = id; - "o_btn_add_group" = id; - "o_btn_cancel" = id; - "o_btn_delete_group" = id; - "o_btn_ok" = id; - "o_group_cbx" = id; - "o_group_color" = id; - "o_group_lbl" = id; - "o_info_window" = id; - "o_outline_view" = id; - "o_title_lbl" = id; - "o_title_txt" = id; - "o_uri_lbl" = id; - "o_uri_txt" = id; - "o_vlc_playlist" = id; - }; - SUPERCLASS = NSObject; - }, {CLASS = VLCPlaylistView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; }, { ACTIONS = {advancedToggle = id; closePrefs = id; resetAll = id; savePrefs = id; }; diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib index 4727507eb2..2f0140cd33 100644 --- a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib +++ b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib @@ -3,18 +3,18 @@ IBDocumentLocation - 219 45 505 517 0 0 800 578 + 457 229 505 517 0 0 1024 746 IBEditorPositions 1617 542 480 104 149 0 0 1024 746 29 - 117 522 419 44 0 0 800 578 + 186 686 419 44 0 0 1024 746 915 - 54 452 118 149 0 0 1024 746 + 54 452 185 199 0 0 1024 746 IBFramework Version - 364.0 + 362.0 IBLockedObjects 1789 @@ -22,8 +22,6 @@ IBOpenObjects 21 - 29 - 1789 IBSystem Version 7F44 diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/objects.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/objects.nib index dc25345b9c..0b962c903a 100644 Binary files a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/objects.nib and b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/objects.nib differ diff --git a/modules/gui/macosx/Modules.am b/modules/gui/macosx/Modules.am index af54873621..86d3f3b232 100644 --- a/modules/gui/macosx/Modules.am +++ b/modules/gui/macosx/Modules.am @@ -7,8 +7,6 @@ SOURCES_macosx = \ controls.m \ intf.m \ intf.h \ - info.h \ - info.m \ macosx.m \ misc.m \ misc.h \ diff --git a/modules/gui/macosx/intf.h b/modules/gui/macosx/intf.h index 6eb88e062c..eff1ed3328 100644 --- a/modules/gui/macosx/intf.h +++ b/modules/gui/macosx/intf.h @@ -239,6 +239,7 @@ struct intf_sys_t - (id)getControls; - (id)getPlaylist; +- (id)getInfo; - (void)terminate; - (void)initStrings; diff --git a/modules/gui/macosx/intf.m b/modules/gui/macosx/intf.m index 80f1daf202..2078921c08 100644 --- a/modules/gui/macosx/intf.m +++ b/modules/gui/macosx/intf.m @@ -687,6 +687,15 @@ unsigned int VLCModifiersToCocoa( unsigned int i_key ) return nil; } +- (id)getInfo +{ + if ( o_info ) + { + return o_info; + } + return nil; +} + - (void)manage { NSDate * o_sleep_date; @@ -811,7 +820,7 @@ unsigned int VLCModifiersToCocoa( unsigned int i_key ) vlc_object_release( (vlc_object_t *)p_vout ); } [o_playlist updateRowSelection]; - [o_info updateInfo]; +// [o_info updateInfo]; p_intf->p_sys->b_current_title_update = FALSE; } diff --git a/modules/gui/macosx/playlistinfo.h b/modules/gui/macosx/playlistinfo.h index b845ff3b3f..db71dc4029 100644 --- a/modules/gui/macosx/playlistinfo.h +++ b/modules/gui/macosx/playlistinfo.h @@ -2,7 +2,7 @@ * playlistinfo.h: MacOS X interface module ***************************************************************************** * Copyright (C) 2002-2004 VideoLAN - * $Id: playlist.h 7015 2004-03-08 15:22:58Z bigben $ + * $Id$ * * Authors: Benjamin Pracht * @@ -26,7 +26,7 @@ *****************************************************************************/ -@interface VLCPlaylistInfo : NSObject +@interface VLCInfo : NSObject { IBOutlet id o_info_window; IBOutlet id o_uri_lbl; @@ -40,19 +40,24 @@ IBOutlet id o_btn_delete_group; IBOutlet id o_btn_add_group; IBOutlet id o_outline_view; - IBOutlet id o_vlc_playlist; IBOutlet id o_group_lbl; IBOutlet id o_group_cbx; IBOutlet id o_group_color; + + int i_item; + NSMutableArray * o_selected; } - (IBAction)togglePlaylistInfoPanel:(id)sender; +- (IBAction)toggleInfoPanel:(id)sender; +- (void)initPanel:(id)sender; - (IBAction)infoCancel:(id)sender; - (IBAction)infoOk:(id)sender; - (IBAction)handleGroup:(id)sender; - (IBAction)deleteOutlineGroup:(id)sender; - (IBAction)createOutlineGroup:(id)sender; - (void)createComboBox; +- (int)getItem; @end diff --git a/modules/gui/macosx/playlistinfo.m b/modules/gui/macosx/playlistinfo.m index ea9238de00..95c3fe59ce 100644 --- a/modules/gui/macosx/playlistinfo.m +++ b/modules/gui/macosx/playlistinfo.m @@ -2,15 +2,15 @@ r playlistinfo.m: MacOS X interface module ***************************************************************************** * Copyright (C) 2002-2004 VideoLAN - * $Id: playlistinfo.m 7015 2004-03-08 15:22:58Z bigben $ + * $Id$ * - * Authors: Benjmaib Pracht + * Authors: Benjamin Pracht * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the @@ -33,7 +33,25 @@ * VLCPlaylistInfo Implementation *****************************************************************************/ -@implementation VLCPlaylistInfo +@implementation VLCInfo + +- (id)init +{ + self = [super init]; + + if( self != nil ) + { + i_item = -1; + o_selected = NULL; + } + return( self ); +} + +- (void)dealloc +{ + [o_selected release]; + [super dealloc]; +} - (void)awakeFromNib { @@ -52,69 +70,99 @@ - (IBAction)togglePlaylistInfoPanel:(id)sender { - intf_thread_t * p_intf = [NSApp getIntf]; - playlist_t * p_playlist; + if( [o_info_window isVisible] ) + { + [o_info_window orderOut: sender]; + } + else + { + i_item = [[[NSApp delegate] getPlaylist] selectedPlaylistItem]; + o_selected = [[[NSApp delegate] getPlaylist] selectedPlaylistItemsList]; + [o_selected retain]; + [self initPanel:sender]; + } +} +- (IBAction)toggleInfoPanel:(id)sender +{ if( [o_info_window isVisible] ) { [o_info_window orderOut: sender]; } else { - p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, + intf_thread_t * p_intf = [NSApp getIntf]; + playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); if (p_playlist) { - /*fill uri / title / author info */ - int i_item = [o_vlc_playlist selectedPlaylistItem]; - [o_uri_txt setStringValue: - ([NSString stringWithUTF8String:p_playlist-> - pp_items[i_item]->input.psz_uri] == nil ) ? - [NSString stringWithCString:p_playlist-> - pp_items[i_item]->input.psz_uri] : - [NSString stringWithUTF8String:p_playlist-> - pp_items[i_item]->input.psz_uri]]; - - [o_title_txt setStringValue: - ([NSString stringWithUTF8String:p_playlist-> - pp_items[i_item]->input.psz_name] == nil ) ? - [NSString stringWithCString:p_playlist-> - pp_items[i_item]->input.psz_name] : - [NSString stringWithUTF8String:p_playlist-> - pp_items[i_item]->input.psz_name]]; - - [o_author_txt setStringValue: - [NSString stringWithUTF8String:playlist_GetInfo - (p_playlist, i_item ,_("General"),_("Author") )]]; - - [[VLCInfoTreeItem rootItem] refresh]; - [o_outline_view reloadData]; + i_item = p_playlist->i_index; + o_selected = [NSMutableArray arrayWithObject: + [NSNumber numberWithInt:i_item]]; + [o_selected retain]; + vlc_object_release(p_playlist); + } + [self initPanel:sender]; + } +} - [self createComboBox]; - [self handleGroup:self]; +- (void)initPanel:(id)sender +{ + intf_thread_t * p_intf = [NSApp getIntf]; + playlist_t * p_playlist; - vlc_object_release( p_playlist ); - } - [o_info_window makeKeyAndOrderFront: sender]; + p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, + FIND_ANYWHERE ); + + + if (p_playlist) + { + /*fill uri / title / author info */ + [o_uri_txt setStringValue: + ([NSString stringWithUTF8String:p_playlist-> + pp_items[i_item]->input.psz_uri] == nil ) ? + [NSString stringWithCString:p_playlist-> + pp_items[i_item]->input.psz_uri] : + [NSString stringWithUTF8String:p_playlist-> + pp_items[i_item]->input.psz_uri]]; + + [o_title_txt setStringValue: + ([NSString stringWithUTF8String:p_playlist-> + pp_items[i_item]->input.psz_name] == nil ) ? + [NSString stringWithCString:p_playlist-> + pp_items[i_item]->input.psz_name] : + [NSString stringWithUTF8String:p_playlist-> + pp_items[i_item]->input.psz_name]]; + + [o_author_txt setStringValue: + [NSString stringWithUTF8String:playlist_GetInfo + (p_playlist, i_item ,_("General"),_("Author") )]]; + + [[VLCInfoTreeItem rootItem] refresh]; + [o_outline_view reloadData]; + + [self createComboBox]; + [self handleGroup:self]; + + vlc_object_release( p_playlist ); } + [o_info_window makeKeyAndOrderFront: sender]; } - (IBAction)infoCancel:(id)sender { - [self togglePlaylistInfoPanel:self]; + [o_info_window orderOut: self]; } - (IBAction)infoOk:(id)sender { int i,i_row,c; - int i_item = [o_vlc_playlist selectedPlaylistItem]; intf_thread_t * p_intf = [NSApp getIntf]; playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); vlc_value_t val; - NSMutableArray * o_selected = [o_vlc_playlist selectedPlaylistItemsList]; NSNumber * o_number; @@ -164,7 +212,7 @@ var_Set( p_playlist,"intf-change",val ); vlc_object_release ( p_playlist ); } - [self togglePlaylistInfoPanel:self]; + [o_info_window orderOut: self]; } - (IBAction)handleGroup:(id)sender @@ -175,16 +223,16 @@ if (p_playlist) { - if ([[o_group_cbx stringValue] isEqual: + if ([[o_group_cbx stringValue] isEqual: [o_group_cbx objectValueOfSelectedItem]]) { - [o_group_color setBackgroundColor:[o_vlc_playlist + [o_group_color setBackgroundColor:[[[NSApp delegate] getPlaylist] getColor: p_playlist->pp_groups[ [o_group_cbx indexOfSelectedItem]]->i_id]]; } else { - [o_group_color setBackgroundColor:[o_vlc_playlist + [o_group_color setBackgroundColor:[[[NSApp delegate] getPlaylist] getColor:p_playlist->pp_groups[ [o_group_cbx numberOfItems] - 1]->i_id + 1]]; } @@ -203,7 +251,7 @@ if ([[o_group_cbx stringValue] isEqual: [o_group_cbx objectValueOfSelectedItem]]) { - [o_vlc_playlist deleteGroup:p_playlist->pp_groups[ + [[[NSApp delegate] getPlaylist] deleteGroup:p_playlist->pp_groups[ [o_group_cbx indexOfSelectedItem]]->i_id]; [self createComboBox]; [self handleGroup:self]; @@ -212,12 +260,12 @@ else { msg_Warn(p_playlist,"Group doesn't exist, cannot delete"); - } + } vlc_object_release(p_playlist); } } -- (IBAction)createOutlineGroup:(id)sender; +- (IBAction)createOutlineGroup:(id)sender; { intf_thread_t * p_intf = [NSApp getIntf]; playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, @@ -228,7 +276,7 @@ strdup([[o_group_cbx stringValue] cString])); [self createComboBox]; [o_group_cbx reloadData]; - [o_vlc_playlist playlistUpdated]; + [[[NSApp delegate] getPlaylist] playlistUpdated]; vlc_object_release(p_playlist); } } @@ -239,7 +287,6 @@ playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); int i; - int i_item = [o_vlc_playlist selectedPlaylistItem]; [o_group_cbx removeAllItems]; @@ -258,14 +305,42 @@ } vlc_object_release(p_playlist); } -} +} + +- (int)getItem +{ + return i_item; +} @end +@implementation VLCInfo (NSMenuValidation) + +- (BOOL)validateMenuItem:(NSMenuItem *)o_mi +{ + BOOL bEnabled = TRUE; + + intf_thread_t * p_intf = [NSApp getIntf]; + input_thread_t * p_input = vlc_object_find( p_intf, VLC_OBJECT_INPUT, + FIND_ANYWHERE ); + + if( [[o_mi title] isEqualToString: _NS("Info")] ) + { + if( p_input == NULL ) + { + bEnabled = FALSE; + } + } + if( p_input ) vlc_object_release( p_input ); + + return( bEnabled ); +} + +@end -@implementation VLCPlaylistInfo (NSTableDataSource) +@implementation VLCInfo (NSTableDataSource) -- (int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item +- (int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item { return (item == nil) ? [[VLCInfoTreeItem rootItem] numberOfChildren] : [item numberOfChildren]; } @@ -274,7 +349,7 @@ return ([item numberOfChildren] > 0); } -- (id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item +- (id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item { return (item == nil) ? [[VLCInfoTreeItem rootItem] childAtIndex:index] : [item childAtIndex:index]; } @@ -291,6 +366,7 @@ } } + @end @implementation VLCInfoTreeItem @@ -302,15 +378,14 @@ static VLCInfoTreeItem *o_root_item = nil; - (id)initWithName: (NSString *)o_item_name value: (NSString *)o_item_value ID: (int)i_id parent:(VLCInfoTreeItem *)o_parent_item { self = [super init]; - + if( self != nil ) { - - i_item = [[[NSApp delegate] getPlaylist] selectedPlaylistItem]; o_name = [o_item_name copy]; o_value = [o_item_value copy]; i_object_id = i_id; o_parent = o_parent_item; + i_item = [[[NSApp delegate] getInfo] getItem]; } return( self ); } @@ -347,12 +422,12 @@ static VLCInfoTreeItem *o_root_item = nil; o_children = [[NSMutableArray alloc] initWithCapacity:p_playlist->pp_items[i_item]->input.i_categories]; for (i = 0 ; ipp_items[i_item]->input.i_categories ; i++) { - [o_children addObject:[[VLCInfoTreeItem alloc] + [o_children addObject:[[VLCInfoTreeItem alloc] initWithName: [NSString stringWithUTF8String: p_playlist->pp_items[i_item]->input. pp_categories[i]->psz_name] value: @"" - ID: i + ID: i parent: self]]; } } @@ -407,19 +482,19 @@ static VLCInfoTreeItem *o_root_item = nil; return (i_tmp == IsALeafNode) ? (-1) : (int)[i_tmp count]; } -- (int)selectedPlaylistItem +/*- (int)selectedPlaylistItem { - return i_item; + return i_item; } - +*/ - (void)refresh { + i_item = [[[NSApp delegate] getInfo] getItem]; if (o_children != NULL) { [o_children release]; o_children = NULL; } - i_item = [[[NSApp delegate] getPlaylist] selectedPlaylistItem]; } @end