From 90376941d2b260f4319b81345064a271f2f25b02 Mon Sep 17 00:00:00 2001 From: Benjamin Pracht Date: Fri, 30 Apr 2004 15:44:06 +0000 Subject: [PATCH] * 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 ? --- .../English.lproj/MainMenu.nib/classes.nib | 64 +++--- .../English.lproj/MainMenu.nib/info.nib | 10 +- .../English.lproj/MainMenu.nib/objects.nib | Bin 54331 -> 52717 bytes modules/gui/macosx/Modules.am | 2 - modules/gui/macosx/intf.h | 1 + modules/gui/macosx/intf.m | 11 +- modules/gui/macosx/playlistinfo.h | 11 +- modules/gui/macosx/playlistinfo.m | 197 ++++++++++++------ 8 files changed, 185 insertions(+), 111 deletions(-) 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 dc25345b9c97132e3eb30ce7fa6781a4a6abc5ae..0b962c903a358d742c887dd495535124f8a2b984 100644 GIT binary patch literal 52717 zcmeI534C2uweZhy&$(%u4rxmnEcBKZupp(QLuKehOX*0{mO&t-$xR!Z=BCL_OF@Pm zlBiF4VkvnPd4M2;@IXZrp@=AgA}WecWKd=ikU^ZDpFH9Fuf5NB?@b!s_x;}Q_rBkU z_MV)**IIk+wbx#I?X`!K8D8Aco^R?bcH|qjDEH+adtOgZ&&ZW^OBbx#@bP?OaZy9D zL0QlC^i-{^GbvW@P6M*AtFu_xViKqB>T%`?DqwZRj+VBK_O2fLh!HF6=C`-Ewlp>r zTMBJ`y?s4)i?Zwc4d8;VVzJO>_4Eu|S+}szR_rLWPVMROSJtg>$#3Vc;VbLbkk)Xd|*=HNfW z_KL1z!-m%U{Em)>9h9AgMg8Zl-J^E)Tzxgv_FcbxK}T2TrhL6V6#c}-KZ z6ulnsg`HRJ?yj~h>zdx)UWnJMtP6on5UB#e7q4b)mCZ*Vxh0 zUd(NqF>Pi=w0&0AEpBPew>50ZcdpjOt_@2)AYf|g!nI|nedkV5)-zKqOMZ7=wX;|L z*OO^!Y@BD=R8U$-i(_HFHE25dYd+1=($a0&?^sq(Mp^*S(X_Ev7@D-u)zO%rx~rc` zBYsVxPyTLd>1=Op*wNP~@^o8TS||mTX|$2g6(a0mfv|g({gGjl##z>+aUokb8jffK zqgKMmak@?BH;VGfd+pb5?w$fy-Br-Jg%Y8z6>c%wx6iKKQ+m9Q&H7;D89vzu@b8^> zt>spi)o8U?O;&@o#OmO;jlc6$%xTW< zYpKlL0c#o4TEW{ed8?0EG))#U_<>3d27_^f+`T6(?MGp0i$rwyN;?^0WH34Hk!Xg= z+rTBRdJiT3e4rACx8=_+mbS?-oj71s*Bm-=qGe5-SlSj-hK0HpSM~9M3Le|Jxuw0n zxzMp4D^bcoZ7MUti0+eXVR>;&zO`w8ZK4vr=8!qlMp)Lg5h>2JYDPHHQI5Uq=I)-_ zcjk3h%`+V(JALkS`F~&3M9=iNjq~P-5ugh%EVLFd(YN_MuJrcHFZb(qVBoe$uO3^3 zn*|Mxn>Th8y4spFXkX87Z*zN`=4RWbF@JlT-IEa;jV|+!iLvMQ(&e==u3E9WuC;{` zfUYWoi~ie6nciMy^&YCMhewH_dU#Yx-LMD-Nh+qS=c(Eh?_I0ga-?cnx9-_Jfu29} z!=~qBR;1^jKre5#w((n}|2J9<6?(<1J=rGy!&0fkMuR5y3dUa(TNNoj+zmek-cCt# z_C^^We+bq8t?%V5Oq3y3YWT(vpw)?v9yQXR1LZO%DAAAhk-pm6(phZkXxN_bC{?eq zCD{oDyCGS(o||s?A3CyqVuU~3vi#vGW%=sOX3)ANur}4(3awpR^7XBS?RreQl@{*1 zO-7^tN2H*v=W0e^5Jsd8La7{v2XffdvT;+1AhdQysy=K0-K=EeM-627Mzwe3x3v_y zI!m>3M3j-x$7j=ifz|y%Wqpw<$#1H0pASr$HP4u|jM$~vo{hiDdhr!(&%KPUxF7Z~ zWj8K^48O+j+1cBd=+ss3!Nl(lYbs-Bax@#Kt$0+cl7W9rIyb8GRsB8v+I7O|UD41Y zZuMp2QCH(%;9ALRE`KFeJoLB=4@ZDDT1@FH5uGJfK4{>OqzHn2%ar2gjj?D-z z$idl@oE0r+=bP$^xT$1mH$u!hg+3^Jj9lH3Z_an*+Zywo)22<6vBLg9U$=!J4a%9? zdqf(o`#yT$-FFWPBcw;nZ)(adZ7b$Gnj0GPeWeIJBRjh`Y=J@J8XCu~XUYTCOvHlE zgAJb)^I27w@7UG?lVx;%pz9=vlo^9*BBYF}mkEHu6>;>**dVnZYBj1(VBnK>(6ZSy zxNL-n;TmC8aZ|pdGs4+#V0jw8Hx;($=C`(%Rqwwh`>K<=TD0^!AHZH!lQ`Q_gHuBMhkUtQ=@ zoEF%i6OKL!|6OLQW5bz}o`2QpIhl*qK$DU2_LgF!*m_afo*w4$s|)Sx+RfAoa}slN z`oZUnx2$uZ_9)HprTO9(i#ygE@q5-clzqvvP@3Yo zkk?P|(Y@{7%d54L%d8wl7hyHSt2QfsLt~*S-OBXVik0Vh3g}_x{Zrj_RB`HU;{HcfDv~*0VjU38Ju?Zq_{ig|A@QdT~^!H zkZ#jekzi_ jF&@Dfb$~-*j8Bq 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

k%aEm~y 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 = 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 -- 2.39.2