Commit 68827bcd authored by Felix Paul Kühne's avatar Felix Paul Kühne

macosx: split playlist object from MainWindow.xib

parent 2f854ae3
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1060</int>
<string key="IBDocument.SystemVersion">14B25</string>
<string key="IBDocument.InterfaceBuilderVersion">6254</string>
<string key="IBDocument.AppKitVersion">1343.16</string>
<string key="IBDocument.HIToolboxVersion">755.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">6254</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>NSCustomObject</string>
<string>NSCustomView</string>
<string>NSMenu</string>
<string>NSMenuItem</string>
<string>NSPopUpButton</string>
<string>NSPopUpButtonCell</string>
<string>NSTextField</string>
<string>NSTextFieldCell</string>
</array>
<array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</array>
<dictionary class="NSMutableDictionary" key="IBDocument.Metadata"/>
<array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<object class="NSCustomObject" id="1001">
<string key="NSClassName">VLCPlaylist</string>
</object>
<object class="NSCustomObject" id="1003">
<string key="NSClassName">FirstResponder</string>
</object>
<object class="NSCustomObject" id="1004">
<string key="NSClassName">NSApplication</string>
</object>
<object class="NSCustomView" id="17079784">
<reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSPopUpButton" id="540281127">
<reference key="NSNextResponder" ref="17079784"/>
<int key="NSvFlags">258</int>
<string key="NSFrame">{{233, 7}, {244, 26}}</string>
<reference key="NSSuperview" ref="17079784"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="833308240">
<int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">2048</int>
<object class="NSFont" key="NSSupport" id="545575564">
<bool key="IBIsSystemFont">YES</bool>
<double key="NSSize">13</double>
<int key="NSfFlags">1044</int>
</object>
<reference key="NSControlView" ref="540281127"/>
<int key="NSButtonFlags">109199360</int>
<int key="NSButtonFlags2">1</int>
<reference key="NSAlternateImage" ref="545575564"/>
<string key="NSAlternateContents"/>
<object class="NSMutableString" key="NSKeyEquivalent">
<characters key="NS.bytes"/>
</object>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
<object class="NSMenuItem" key="NSMenuItem" id="418039630">
<reference key="NSMenu" ref="1072556898"/>
<string key="NSTitle">Extended M3U</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<int key="NSState">1</int>
<object class="NSCustomResource" key="NSOnImage" id="674003660">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuCheckmark</string>
</object>
<object class="NSCustomResource" key="NSMixedImage" id="150431102">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuMixedState</string>
</object>
<string key="NSAction">_popUpItemAction:</string>
<reference key="NSTarget" ref="833308240"/>
</object>
<bool key="NSMenuItemRespectAlignment">YES</bool>
<object class="NSMenu" key="NSMenu" id="1072556898">
<object class="NSMutableString" key="NSTitle">
<characters key="NS.bytes">OtherViews</characters>
</object>
<array class="NSMutableArray" key="NSMenuItems">
<reference ref="418039630"/>
<object class="NSMenuItem" id="937238634">
<reference key="NSMenu" ref="1072556898"/>
<string key="NSTitle">XML Shareable Playlist Format (XSPF)</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="674003660"/>
<reference key="NSMixedImage" ref="150431102"/>
<string key="NSAction">_popUpItemAction:</string>
<reference key="NSTarget" ref="833308240"/>
</object>
<object class="NSMenuItem" id="611178100">
<reference key="NSMenu" ref="1072556898"/>
<string key="NSTitle">HTML Playlist</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="674003660"/>
<reference key="NSMixedImage" ref="150431102"/>
<string key="NSAction">_popUpItemAction:</string>
<reference key="NSTarget" ref="833308240"/>
</object>
</array>
</object>
<int key="NSPreferredEdge">3</int>
<bool key="NSUsesItemFromMenu">YES</bool>
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">1</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="220495678">
<reference key="NSNextResponder" ref="17079784"/>
<int key="NSvFlags">258</int>
<string key="NSFrame">{{13, 13}, {213, 17}}</string>
<reference key="NSSuperview" ref="17079784"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="232386871">
<int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">272629760</int>
<string key="NSContents">File Format:</string>
<reference key="NSSupport" ref="545575564"/>
<reference key="NSControlView" ref="220495678"/>
<object class="NSColor" key="NSBackgroundColor">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlTextColor</string>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MAA</bytes>
</object>
</object>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<int key="NSTextFieldAlignmentRectInsetsVersion">1</int>
</object>
</array>
<string key="NSFrameSize">{488, 40}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<object class="NSMutableString" key="NSClassName">
<characters key="NS.bytes">NSView</characters>
</object>
<string key="NSExtension">NSResponder</string>
</object>
</array>
<object class="IBObjectContainer" key="IBDocument.Objects">
<array key="connectionRecords">
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">o_save_accessory_popup</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="540281127"/>
</object>
<int key="connectionID">11</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">o_save_accessory_text</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="220495678"/>
</object>
<int key="connectionID">12</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">o_save_accessory_view</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="17079784"/>
</object>
<int key="connectionID">13</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
<object class="IBObjectRecord">
<int key="objectID">0</int>
<array key="object" id="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="1001"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="1003"/>
<reference key="parent" ref="0"/>
<string key="objectName">First Responder</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-3</int>
<reference key="object" ref="1004"/>
<reference key="parent" ref="0"/>
<string key="objectName">Application</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">1</int>
<reference key="object" ref="17079784"/>
<array class="NSMutableArray" key="children">
<reference ref="220495678"/>
<reference ref="540281127"/>
</array>
<reference key="parent" ref="0"/>
<string key="objectName">SaveAccessoryView</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">2</int>
<reference key="object" ref="220495678"/>
<array class="NSMutableArray" key="children">
<reference ref="232386871"/>
</array>
<reference key="parent" ref="17079784"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">3</int>
<reference key="object" ref="540281127"/>
<array class="NSMutableArray" key="children">
<reference ref="833308240"/>
</array>
<reference key="parent" ref="17079784"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">4</int>
<reference key="object" ref="833308240"/>
<array class="NSMutableArray" key="children">
<reference ref="1072556898"/>
</array>
<reference key="parent" ref="540281127"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">5</int>
<reference key="object" ref="1072556898"/>
<array class="NSMutableArray" key="children">
<reference ref="937238634"/>
<reference ref="418039630"/>
<reference ref="611178100"/>
</array>
<reference key="parent" ref="833308240"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">6</int>
<reference key="object" ref="937238634"/>
<reference key="parent" ref="1072556898"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">7</int>
<reference key="object" ref="418039630"/>
<reference key="parent" ref="1072556898"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">8</int>
<reference key="object" ref="611178100"/>
<reference key="parent" ref="1072556898"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">9</int>
<reference key="object" ref="232386871"/>
<reference key="parent" ref="220495678"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="4.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="6.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="7.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="8.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="9.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">13</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">VLCPlaylist</string>
<string key="superclassName">NSObject</string>
<dictionary class="NSMutableDictionary" key="actions">
<string key="deleteItem:">id</string>
<string key="downloadCoverArt:">id</string>
<string key="playItem:">id</string>
<string key="preparseItem:">id</string>
<string key="recursiveExpandNode:">id</string>
<string key="revealItemInFinder:">id</string>
<string key="savePlaylist:">id</string>
<string key="searchItem:">id</string>
<string key="selectAll:">id</string>
<string key="showInfoPanel:">id</string>
<string key="sortNodeByAuthor:">id</string>
<string key="sortNodeByName:">id</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="actionInfosByName">
<object class="IBActionInfo" key="deleteItem:">
<string key="name">deleteItem:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="downloadCoverArt:">
<string key="name">downloadCoverArt:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="playItem:">
<string key="name">playItem:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="preparseItem:">
<string key="name">preparseItem:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="recursiveExpandNode:">
<string key="name">recursiveExpandNode:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="revealItemInFinder:">
<string key="name">revealItemInFinder:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="savePlaylist:">
<string key="name">savePlaylist:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="searchItem:">
<string key="name">searchItem:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="selectAll:">
<string key="name">selectAll:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="showInfoPanel:">
<string key="name">showInfoPanel:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="sortNodeByAuthor:">
<string key="name">sortNodeByAuthor:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="sortNodeByName:">
<string key="name">sortNodeByName:</string>
<string key="candidateClassName">id</string>
</object>
</dictionary>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="o_btn_playlist">id</string>
<string key="o_controller">id</string>
<string key="o_ctx_menu">id</string>
<string key="o_mi_delete">id</string>
<string key="o_mi_dl_cover_art">id</string>
<string key="o_mi_info">id</string>
<string key="o_mi_play">id</string>
<string key="o_mi_preparse">id</string>
<string key="o_mi_recursive_expand">id</string>
<string key="o_mi_revealInFinder">id</string>
<string key="o_mi_save_playlist">id</string>
<string key="o_mi_selectall">id</string>
<string key="o_mi_sort_author">id</string>
<string key="o_mi_sort_name">id</string>
<string key="o_outline_view">VLCPlaylistView</string>
<string key="o_playlist_header">id</string>
<string key="o_playlist_view">id</string>
<string key="o_playlist_wizard">id</string>
<string key="o_save_accessory_popup">id</string>
<string key="o_save_accessory_text">id</string>
<string key="o_save_accessory_view">id</string>
<string key="o_search_field">id</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="o_btn_playlist">
<string key="name">o_btn_playlist</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_controller">
<string key="name">o_controller</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_ctx_menu">
<string key="name">o_ctx_menu</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_mi_delete">
<string key="name">o_mi_delete</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_mi_dl_cover_art">
<string key="name">o_mi_dl_cover_art</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_mi_info">
<string key="name">o_mi_info</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_mi_play">
<string key="name">o_mi_play</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_mi_preparse">
<string key="name">o_mi_preparse</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_mi_recursive_expand">
<string key="name">o_mi_recursive_expand</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_mi_revealInFinder">
<string key="name">o_mi_revealInFinder</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_mi_save_playlist">
<string key="name">o_mi_save_playlist</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_mi_selectall">
<string key="name">o_mi_selectall</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_mi_sort_author">
<string key="name">o_mi_sort_author</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_mi_sort_name">
<string key="name">o_mi_sort_name</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_outline_view">
<string key="name">o_outline_view</string>
<string key="candidateClassName">VLCPlaylistView</string>
</object>
<object class="IBToOneOutletInfo" key="o_playlist_header">
<string key="name">o_playlist_header</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_playlist_view">
<string key="name">o_playlist_view</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_playlist_wizard">
<string key="name">o_playlist_wizard</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_save_accessory_popup">
<string key="name">o_save_accessory_popup</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_save_accessory_text">
<string key="name">o_save_accessory_text</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_save_accessory_view">
<string key="name">o_save_accessory_view</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_search_field">
<string key="name">o_search_field</string>
<string key="candidateClassName">id</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="770708439">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">../../../../modules/gui/macosx/playlist.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">VLCPlaylist</string>
<dictionary class="NSMutableDictionary" key="actions">
<string key="deleteItem:">id</string>
<string key="downloadCoverArt:">id</string>
<string key="playItem:">id</string>
<string key="preparseItem:">id</string>
<string key="recursiveExpandNode:">id</string>
<string key="revealItemInFinder:">id</string>
<string key="savePlaylist:">id</string>
<string key="searchItem:">id</string>
<string key="selectAll:">id</string>
<string key="showInfoPanel:">id</string>
<string key="sortNodeByAuthor:">id</string>
<string key="sortNodeByName:">id</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="actionInfosByName">
<object class="IBActionInfo" key="deleteItem:">
<string key="name">deleteItem:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="downloadCoverArt:">
<string key="name">downloadCoverArt:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="playItem:">
<string key="name">playItem:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="preparseItem:">
<string key="name">preparseItem:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="recursiveExpandNode:">
<string key="name">recursiveExpandNode:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="revealItemInFinder:">
<string key="name">revealItemInFinder:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="savePlaylist:">
<string key="name">savePlaylist:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="searchItem:">
<string key="name">searchItem:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="selectAll:">
<string key="name">selectAll:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="showInfoPanel:">
<string key="name">showInfoPanel:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="sortNodeByAuthor:">
<string key="name">sortNodeByAuthor:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="sortNodeByName:">
<string key="name">sortNodeByName:</string>
<string key="candidateClassName">id</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="629843681">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">../../../../modules/gui/macosx/playlist.m</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">VLCPlaylistView</string>
<string key="superclassName">NSOutlineView</string>
<reference key="sourceIdentifier" ref="770708439"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">VLCPlaylistView</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">delete:</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">delete:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">delete:</string>
<string key="candidateClassName">id</string>
</object>
</object>
<reference key="sourceIdentifier" ref="629843681"/>
</object>
</array>
<array class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<object class="IBPartialClassDescription">
<string key="className">NSActionCell</string>
<string key="superclassName">NSCell</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSActionCell.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSApplication</string>
<string key="superclassName">NSResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSButton</string>
<string key="superclassName">NSControl</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSButton.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSButtonCell</string>
<string key="superclassName">NSActionCell</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSButtonCell.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSCell</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSCell.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSControl</string>
<string key="superclassName">NSView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSFormatter</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSMenu</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSMenu.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSMenuItem</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSMenuItemCell</string>
<string key="superclassName">NSButtonCell</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSMenuItemCell.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSOutlineView</string>
<string key="superclassName">NSTableView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSPopUpButton</string>
<string key="superclassName">NSButton</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSPopUpButton.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSPopUpButtonCell</string>
<string key="superclassName">NSMenuItemCell</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSPopUpButtonCell.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSResponder</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSResponder.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSTableView</string>
<string key="superclassName">NSControl</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSTableView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSTextField</string>
<string key="superclassName">NSControl</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSTextField.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSTextFieldCell</string>
<string key="superclassName">NSActionCell</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSTextFieldCell.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSView</string>
<string key="superclassName">NSResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSView.h</string>
</object>
</object>
</array>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<bool key="IBDocument.previouslyAttemptedUpgradeToXcode5">NO</bool>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
<integer value="1060" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
<integer value="4600" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<string key="NSMenuCheckmark">{12, 12}</string>
<string key="NSMenuMixedState">{10, 2}</string>
</dictionary>
</data>
</archive>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="8152.3" systemVersion="14F6a" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<dependencies>
<deployment version="1070" identifier="macosx"/>
<development version="5100" identifier="xcode"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="8152.3"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="VLCMainMenu">
<connections>
<outlet property="playlistSaveAccessoryPopup" destination="3" id="Yp7-Fa-6HX"/>
<outlet property="playlistSaveAccessoryText" destination="2" id="D67-6A-IXs"/>
<outlet property="playlistSaveAccessoryView" destination="1" id="hQm-ev-onG"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application"/>
<customView id="1" userLabel="SaveAccessoryView">
<rect key="frame" x="0.0" y="0.0" width="488" height="40"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<textField verticalHuggingPriority="750" id="2">
<rect key="frame" x="13" y="13" width="213" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="File Format:" id="9">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<popUpButton verticalHuggingPriority="750" id="3">
<rect key="frame" x="233" y="7" width="244" height="26"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES"/>
<popUpButtonCell key="cell" type="push" title="Extended M3U" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="7" id="4">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<menu key="menu" title="OtherViews" id="5">
<items>
<menuItem title="Extended M3U" state="on" id="7"/>
<menuItem title="XML Shareable Playlist Format (XSPF)" id="6"/>
<menuItem title="HTML Playlist" id="8"/>
</items>
</menu>
</popUpButtonCell>
</popUpButton>
</subviews>
</customView>
</objects>
</document>
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1060</int>
<string key="IBDocument.SystemVersion">14B25</string>
<string key="IBDocument.InterfaceBuilderVersion">6254</string>
<string key="IBDocument.AppKitVersion">1343.16</string>
<string key="IBDocument.HIToolboxVersion">755.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">6254</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>NSCustomObject</string>
<string>NSMenu</string>
<string>NSMenuItem</string>
</array>
<array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</array>
<dictionary class="NSMutableDictionary" key="IBDocument.Metadata"/>
<array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<object class="NSCustomObject" id="1001">
<string key="NSClassName">VLCPlaylist</string>
</object>
<object class="NSCustomObject" id="1003">
<string key="NSClassName">FirstResponder</string>
</object>
<object class="NSCustomObject" id="1004">
<string key="NSClassName">NSApplication</string>
</object>
<object class="NSMenu" id="537614450">
<string key="NSTitle">Menu</string>
<array class="NSMutableArray" key="NSMenuItems">
<object class="NSMenuItem" id="95651051">
<reference key="NSMenu" ref="537614450"/>
<string key="NSTitle">Play</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<object class="NSCustomResource" key="NSOnImage" id="549133455">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuCheckmark</string>
</object>
<object class="NSCustomResource" key="NSMixedImage" id="257917014">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuMixedState</string>
</object>
</object>
<object class="NSMenuItem" id="342844318">
<reference key="NSMenu" ref="537614450"/>
<string key="NSTitle">Delete</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="549133455"/>
<reference key="NSMixedImage" ref="257917014"/>
</object>
<object class="NSMenuItem" id="356560501">
<reference key="NSMenu" ref="537614450"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="549133455"/>
<reference key="NSMixedImage" ref="257917014"/>
</object>
<object class="NSMenuItem" id="977074465">
<reference key="NSMenu" ref="537614450"/>
<string key="NSTitle">Select All</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="549133455"/>
<reference key="NSMixedImage" ref="257917014"/>
</object>
<object class="NSMenuItem" id="830112311">
<reference key="NSMenu" ref="537614450"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="549133455"/>
<reference key="NSMixedImage" ref="257917014"/>
</object>
<object class="NSMenuItem" id="1039698537">
<reference key="NSMenu" ref="537614450"/>
<string key="NSTitle">Expand Node</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="549133455"/>
<reference key="NSMixedImage" ref="257917014"/>
</object>
<object class="NSMenuItem" id="922790560">
<reference key="NSMenu" ref="537614450"/>
<string key="NSTitle">Sort Node by Name</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="549133455"/>
<reference key="NSMixedImage" ref="257917014"/>
</object>
<object class="NSMenuItem" id="912150775">
<reference key="NSMenu" ref="537614450"/>
<string key="NSTitle">Sort Node by Author</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="549133455"/>
<reference key="NSMixedImage" ref="257917014"/>
</object>
<object class="NSMenuItem" id="78349211">
<reference key="NSMenu" ref="537614450"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="549133455"/>
<reference key="NSMixedImage" ref="257917014"/>
</object>
<object class="NSMenuItem" id="622765054">
<reference key="NSMenu" ref="537614450"/>
<string key="NSTitle">Media Information...</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="549133455"/>
<reference key="NSMixedImage" ref="257917014"/>
</object>
<object class="NSMenuItem" id="335927004">
<reference key="NSMenu" ref="537614450"/>
<string key="NSTitle">Preparse</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="549133455"/>
<reference key="NSMixedImage" ref="257917014"/>
</object>
<object class="NSMenuItem" id="72995398">
<reference key="NSMenu" ref="537614450"/>
<string key="NSTitle">Download Cover Art</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="549133455"/>
<reference key="NSMixedImage" ref="257917014"/>
</object>
<object class="NSMenuItem" id="906944543">
<reference key="NSMenu" ref="537614450"/>
<string key="NSTitle">Reveal in Finder</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="549133455"/>
<reference key="NSMixedImage" ref="257917014"/>
</object>
</array>
<string key="NSName"/>
<bool key="NSNoAutoenable">YES</bool>
</object>
</array>
<object class="IBObjectContainer" key="IBDocument.Objects">
<array key="connectionRecords">
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">o_mi_play</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="95651051"/>
</object>
<int key="connectionID">16</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">o_mi_delete</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="342844318"/>
</object>
<int key="connectionID">17</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">o_mi_dl_cover_art</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="72995398"/>
</object>
<int key="connectionID">18</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">o_mi_info</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="622765054"/>
</object>
<int key="connectionID">19</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">o_mi_preparse</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="335927004"/>
</object>
<int key="connectionID">20</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">o_mi_recursive_expand</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="1039698537"/>
</object>
<int key="connectionID">21</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">o_mi_revealInFinder</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="906944543"/>
</object>
<int key="connectionID">22</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">o_mi_sort_name</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="922790560"/>
</object>
<int key="connectionID">23</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">o_mi_sort_author</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="912150775"/>
</object>
<int key="connectionID">24</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">o_mi_selectall</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="977074465"/>
</object>
<int key="connectionID">25</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">playItem:</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="95651051"/>
</object>
<int key="connectionID">26</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">deleteItem:</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="342844318"/>
</object>
<int key="connectionID">27</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">selectAll:</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="977074465"/>
</object>
<int key="connectionID">28</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">recursiveExpandNode:</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="1039698537"/>
</object>
<int key="connectionID">29</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">sortNodeByName:</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="922790560"/>
</object>
<int key="connectionID">31</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">sortNodeByAuthor:</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="912150775"/>
</object>
<int key="connectionID">32</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">preparseItem:</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="335927004"/>
</object>
<int key="connectionID">33</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">downloadCoverArt:</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="72995398"/>
</object>
<int key="connectionID">34</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">revealItemInFinder:</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="906944543"/>
</object>
<int key="connectionID">35</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">showInfoPanel:</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="622765054"/>
</object>
<int key="connectionID">36</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">o_ctx_menu</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="537614450"/>
</object>
<int key="connectionID">37</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
<object class="IBObjectRecord">
<int key="objectID">0</int>
<array key="object" id="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="1001"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="1003"/>
<reference key="parent" ref="0"/>
<string key="objectName">First Responder</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-3</int>
<reference key="object" ref="1004"/>
<reference key="parent" ref="0"/>
<string key="objectName">Application</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">1</int>
<reference key="object" ref="537614450"/>
<array class="NSMutableArray" key="children">
<reference ref="72995398"/>
<reference ref="906944543"/>
<reference ref="335927004"/>
<reference ref="1039698537"/>
<reference ref="912150775"/>
<reference ref="922790560"/>
<reference ref="830112311"/>
<reference ref="622765054"/>
<reference ref="78349211"/>
<reference ref="356560501"/>
<reference ref="95651051"/>
<reference ref="342844318"/>
<reference ref="977074465"/>
</array>
<reference key="parent" ref="0"/>
<string key="objectName">PlaylistMenu</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">2</int>
<reference key="object" ref="72995398"/>
<reference key="parent" ref="537614450"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">3</int>
<reference key="object" ref="906944543"/>
<reference key="parent" ref="537614450"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">4</int>
<reference key="object" ref="335927004"/>
<reference key="parent" ref="537614450"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">5</int>
<reference key="object" ref="1039698537"/>
<reference key="parent" ref="537614450"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">6</int>
<reference key="object" ref="912150775"/>
<reference key="parent" ref="537614450"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">7</int>
<reference key="object" ref="922790560"/>
<reference key="parent" ref="537614450"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">8</int>
<reference key="object" ref="830112311"/>
<reference key="parent" ref="537614450"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">9</int>
<reference key="object" ref="622765054"/>
<reference key="parent" ref="537614450"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">10</int>
<reference key="object" ref="78349211"/>
<reference key="parent" ref="537614450"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">11</int>
<reference key="object" ref="356560501"/>
<reference key="parent" ref="537614450"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">12</int>
<reference key="object" ref="95651051"/>
<reference key="parent" ref="537614450"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">13</int>
<reference key="object" ref="342844318"/>
<reference key="parent" ref="537614450"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">14</int>
<reference key="object" ref="977074465"/>
<reference key="parent" ref="537614450"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="10.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="11.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="12.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="13.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="14.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="4.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="6.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="7.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="8.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="9.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">37</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">VLCPlaylist</string>
<string key="superclassName">NSObject</string>
<dictionary class="NSMutableDictionary" key="actions">
<string key="deleteItem:">id</string>
<string key="downloadCoverArt:">id</string>
<string key="playItem:">id</string>
<string key="preparseItem:">id</string>
<string key="recursiveExpandNode:">id</string>
<string key="revealItemInFinder:">id</string>
<string key="savePlaylist:">id</string>
<string key="searchItem:">id</string>
<string key="selectAll:">id</string>
<string key="showInfoPanel:">id</string>
<string key="sortNodeByAuthor:">id</string>
<string key="sortNodeByName:">id</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="actionInfosByName">
<object class="IBActionInfo" key="deleteItem:">
<string key="name">deleteItem:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="downloadCoverArt:">
<string key="name">downloadCoverArt:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="playItem:">
<string key="name">playItem:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="preparseItem:">
<string key="name">preparseItem:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="recursiveExpandNode:">
<string key="name">recursiveExpandNode:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="revealItemInFinder:">
<string key="name">revealItemInFinder:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="savePlaylist:">
<string key="name">savePlaylist:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="searchItem:">
<string key="name">searchItem:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="selectAll:">
<string key="name">selectAll:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="showInfoPanel:">
<string key="name">showInfoPanel:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="sortNodeByAuthor:">
<string key="name">sortNodeByAuthor:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="sortNodeByName:">
<string key="name">sortNodeByName:</string>
<string key="candidateClassName">id</string>
</object>
</dictionary>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="o_btn_playlist">id</string>
<string key="o_controller">id</string>
<string key="o_ctx_menu">id</string>
<string key="o_mi_delete">id</string>
<string key="o_mi_dl_cover_art">id</string>
<string key="o_mi_info">id</string>
<string key="o_mi_play">id</string>
<string key="o_mi_preparse">id</string>
<string key="o_mi_recursive_expand">id</string>
<string key="o_mi_revealInFinder">id</string>
<string key="o_mi_save_playlist">id</string>
<string key="o_mi_selectall">id</string>
<string key="o_mi_sort_author">id</string>
<string key="o_mi_sort_name">id</string>
<string key="o_outline_view">VLCPlaylistView</string>
<string key="o_playlist_header">id</string>
<string key="o_playlist_view">id</string>
<string key="o_playlist_wizard">id</string>
<string key="o_save_accessory_popup">id</string>
<string key="o_save_accessory_text">id</string>
<string key="o_save_accessory_view">id</string>
<string key="o_search_field">id</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="o_btn_playlist">
<string key="name">o_btn_playlist</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_controller">
<string key="name">o_controller</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_ctx_menu">
<string key="name">o_ctx_menu</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_mi_delete">
<string key="name">o_mi_delete</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_mi_dl_cover_art">
<string key="name">o_mi_dl_cover_art</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_mi_info">
<string key="name">o_mi_info</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_mi_play">
<string key="name">o_mi_play</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_mi_preparse">
<string key="name">o_mi_preparse</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_mi_recursive_expand">
<string key="name">o_mi_recursive_expand</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_mi_revealInFinder">
<string key="name">o_mi_revealInFinder</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_mi_save_playlist">
<string key="name">o_mi_save_playlist</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_mi_selectall">
<string key="name">o_mi_selectall</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_mi_sort_author">
<string key="name">o_mi_sort_author</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_mi_sort_name">
<string key="name">o_mi_sort_name</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_outline_view">
<string key="name">o_outline_view</string>
<string key="candidateClassName">VLCPlaylistView</string>
</object>
<object class="IBToOneOutletInfo" key="o_playlist_header">
<string key="name">o_playlist_header</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_playlist_view">
<string key="name">o_playlist_view</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_playlist_wizard">
<string key="name">o_playlist_wizard</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_save_accessory_popup">
<string key="name">o_save_accessory_popup</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_save_accessory_text">
<string key="name">o_save_accessory_text</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_save_accessory_view">
<string key="name">o_save_accessory_view</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="o_search_field">
<string key="name">o_search_field</string>
<string key="candidateClassName">id</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="758137455">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">../../../../modules/gui/macosx/playlist.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">VLCPlaylist</string>
<dictionary class="NSMutableDictionary" key="actions">
<string key="deleteItem:">id</string>
<string key="downloadCoverArt:">id</string>
<string key="playItem:">id</string>
<string key="preparseItem:">id</string>
<string key="recursiveExpandNode:">id</string>
<string key="revealItemInFinder:">id</string>
<string key="savePlaylist:">id</string>
<string key="searchItem:">id</string>
<string key="selectAll:">id</string>
<string key="showInfoPanel:">id</string>
<string key="sortNodeByAuthor:">id</string>
<string key="sortNodeByName:">id</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="actionInfosByName">
<object class="IBActionInfo" key="deleteItem:">
<string key="name">deleteItem:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="downloadCoverArt:">
<string key="name">downloadCoverArt:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="playItem:">
<string key="name">playItem:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="preparseItem:">
<string key="name">preparseItem:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="recursiveExpandNode:">
<string key="name">recursiveExpandNode:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="revealItemInFinder:">
<string key="name">revealItemInFinder:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="savePlaylist:">
<string key="name">savePlaylist:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="searchItem:">
<string key="name">searchItem:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="selectAll:">
<string key="name">selectAll:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="showInfoPanel:">
<string key="name">showInfoPanel:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="sortNodeByAuthor:">
<string key="name">sortNodeByAuthor:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="sortNodeByName:">
<string key="name">sortNodeByName:</string>
<string key="candidateClassName">id</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="760709577">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">../../../../modules/gui/macosx/playlist.m</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">VLCPlaylistView</string>
<string key="superclassName">NSOutlineView</string>
<reference key="sourceIdentifier" ref="758137455"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">VLCPlaylistView</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">delete:</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">delete:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">delete:</string>
<string key="candidateClassName">id</string>
</object>
</object>
<reference key="sourceIdentifier" ref="760709577"/>
</object>
</array>
<array class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<object class="IBPartialClassDescription">
<string key="className">NSApplication</string>
<string key="superclassName">NSResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSControl</string>
<string key="superclassName">NSView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSFormatter</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSMenu</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSMenu.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSMenuItem</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSOutlineView</string>
<string key="superclassName">NSTableView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSResponder</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSResponder.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSTableView</string>
<string key="superclassName">NSControl</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSTableView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSView</string>
<string key="superclassName">NSResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSView.h</string>
</object>
</object>
</array>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<bool key="IBDocument.previouslyAttemptedUpgradeToXcode5">NO</bool>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
<integer value="1060" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
<integer value="4600" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<string key="NSMenuCheckmark">{12, 12}</string>
<string key="NSMenuMixedState">{10, 2}</string>
</dictionary>
</data>
</archive>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="8152.3" systemVersion="14F6a" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<dependencies>
<deployment version="1070" identifier="macosx"/>
<development version="5100" identifier="xcode"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="8152.3"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="VLCPlaylist">
<connections>
<outlet property="deletePlaylistMenuItem" destination="13" id="Qwn-a7-On0"/>
<outlet property="downloadCoverArtPlaylistMenuItem" destination="2" id="z0y-0U-uRz"/>
<outlet property="infoPlaylistMenuItem" destination="9" id="uIr-Np-fpB"/>
<outlet property="playPlaylistMenuItem" destination="12" id="Dv9-jX-Q4W"/>
<outlet property="playlistMenu" destination="1" id="i0k-dj-ZpJ"/>
<outlet property="preparsePlaylistMenuItem" destination="4" id="KRL-o9-2sq"/>
<outlet property="recursiveExpandPlaylistMenuItem" destination="5" id="vFK-br-qmx"/>
<outlet property="revealInFinderPlaylistMenuItem" destination="3" id="IrJ-gR-Zqp"/>
<outlet property="selectAllPlaylistMenuItem" destination="14" id="drx-ij-QhT"/>
<outlet property="sortAuthorPlaylistMenuItem" destination="6" id="eGn-tO-OZO"/>
<outlet property="sortNamePlaylistMenuItem" destination="7" id="JwP-cR-9ZW"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application"/>
<menu title="Menu" autoenablesItems="NO" id="1" userLabel="PlaylistMenu">
<items>
<menuItem title="Play" id="12">
<connections>
<action selector="playItem:" target="-2" id="26"/>
</connections>
</menuItem>
<menuItem title="Delete" id="13">
<connections>
<action selector="deleteItem:" target="-2" id="27"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="11">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Select All" id="14">
<connections>
<action selector="selectAll:" target="-2" id="28"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="8">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Expand Node" id="5">
<connections>
<action selector="recursiveExpandNode:" target="-2" id="29"/>
</connections>
</menuItem>
<menuItem title="Sort Node by Name" id="7">
<connections>
<action selector="sortNodeByName:" target="-2" id="31"/>
</connections>
</menuItem>
<menuItem title="Sort Node by Author" id="6">
<connections>
<action selector="sortNodeByAuthor:" target="-2" id="32"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="10">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Media Information..." id="9">
<connections>
<action selector="showInfoPanel:" target="-2" id="36"/>
</connections>
</menuItem>
<menuItem title="Preparse" id="4">
<connections>
<action selector="preparseItem:" target="-2" id="33"/>
</connections>
</menuItem>
<menuItem title="Download Cover Art" id="2">
<connections>
<action selector="downloadCoverArt:" target="-2" id="34"/>
</connections>
</menuItem>
<menuItem title="Reveal in Finder" id="3">
<connections>
<action selector="revealItemInFinder:" target="-2" id="35"/>
</connections>
</menuItem>
</items>
</menu>
</objects>
</document>
......@@ -211,6 +211,10 @@
@property (readwrite, weak) IBOutlet NSStepper *specificTime_stepper;
@property (nonatomic) int jumpTimeValue;
@property (readwrite, weak) IBOutlet NSView *playlistSaveAccessoryView;
@property (readwrite, weak) IBOutlet NSPopUpButton *playlistSaveAccessoryPopup;
@property (readwrite, weak) IBOutlet NSTextField *playlistSaveAccessoryText;
- (void)releaseRepresentedObjects:(NSMenu *)the_menu;
- (void)setupMenus;
......
......@@ -1212,7 +1212,70 @@
- (IBAction)savePlaylist:(id)sender
{
[[[VLCMain sharedInstance] playlist] savePlaylist:sender];
playlist_t *p_playlist = pl_Get(VLCIntf);
NSSavePanel *savePanel = [NSSavePanel savePanel];
NSString * name = [NSString stringWithFormat: @"%@", _NS("Untitled")];
[NSBundle loadNibNamed:@"PlaylistAccessoryView" owner:self];
[_playlistSaveAccessoryText setStringValue: _NS("File Format:")];
[[_playlistSaveAccessoryPopup itemAtIndex:0] setTitle: _NS("Extended M3U")];
[[_playlistSaveAccessoryPopup itemAtIndex:1] setTitle: _NS("XML Shareable Playlist Format (XSPF)")];
[[_playlistSaveAccessoryPopup itemAtIndex:2] setTitle: _NS("HTML playlist")];
[savePanel setTitle: _NS("Save Playlist")];
[savePanel setPrompt: _NS("Save")];
[savePanel setAccessoryView: _playlistSaveAccessoryView];
[savePanel setNameFieldStringValue: name];
if ([savePanel runModal] == NSFileHandlingPanelOKButton) {
NSString *filename = [[savePanel URL] path];
if ([_playlistSaveAccessoryPopup indexOfSelectedItem] == 0) {
NSString *actualFilename;
NSRange range;
range.location = [filename length] - [@".m3u" length];
range.length = [@".m3u" length];
if ([filename compare:@".m3u" options: NSCaseInsensitiveSearch range: range] != NSOrderedSame)
actualFilename = [NSString stringWithFormat: @"%@.m3u", filename];
else
actualFilename = filename;
playlist_Export(p_playlist,
[actualFilename fileSystemRepresentation],
p_playlist->p_local_category, "export-m3u");
} else if ([_playlistSaveAccessoryPopup indexOfSelectedItem] == 1) {
NSString *actualFilename;
NSRange range;
range.location = [filename length] - [@".xspf" length];
range.length = [@".xspf" length];
if ([filename compare:@".xspf" options: NSCaseInsensitiveSearch range: range] != NSOrderedSame)
actualFilename = [NSString stringWithFormat: @"%@.xspf", filename];
else
actualFilename = filename;
playlist_Export(p_playlist,
[actualFilename fileSystemRepresentation],
p_playlist->p_local_category, "export-xspf");
} else {
NSString *actualFilename;
NSRange range;
range.location = [filename length] - [@".html" length];
range.length = [@".html" length];
if ([filename compare:@".html" options: NSCaseInsensitiveSearch range: range] != NSOrderedSame)
actualFilename = [NSString stringWithFormat: @"%@.html", filename];
else
actualFilename = filename;
playlist_Export(p_playlist,
[actualFilename fileSystemRepresentation],
p_playlist->p_local_category, "export-html");
}
}
}
- (IBAction)revealItemInFinder:(id)sender
......
......@@ -53,6 +53,7 @@ typedef enum {
IBOutlet id o_search_fld;
IBOutlet id o_playlist_table;
IBOutlet id o_outline_view;
IBOutlet id o_split_view;
IBOutlet id o_left_split_view;
IBOutlet id o_right_split_view;
......@@ -97,6 +98,8 @@ typedef enum {
- (IBAction)removePodcast:(id)sender;
- (IBAction)removePodcastWindowAction:(id)sender;
- (IBAction)searchItem:(id)sender;
- (void)windowResizedOrMoved:(NSNotification *)notification;
- (void)reloadSidebar;
......
......@@ -99,8 +99,6 @@ static VLCMainWindow *sharedInstance = nil;
defer:flag];
});
[[[VLCMain sharedInstance] playlist] updateTogglePlaylistState];
return sharedInstance;
}
......@@ -171,6 +169,13 @@ static VLCMainWindow *sharedInstance = nil;
[[o_search_fld cell] setPlaceholderString: _NS("Search")];
[[o_search_fld cell] accessibilitySetOverrideValue:_NS("Enter a term to search the playlist. Results will be selected in the table.") forAttribute:NSAccessibilityDescriptionAttribute];
[o_search_fld setToolTip: _NS("Search in Playlist")];
VLCPlaylist *playlist = [[VLCMain sharedInstance] playlist];
playlist.outlineView = o_outline_view;
playlist.playlistHeaderView = [o_outline_view headerView];
[o_outline_view setDelegate:playlist];
[o_outline_view setDataSource:playlist];
[o_dropzone_btn setTitle: _NS("Open media...")];
[[o_dropzone_btn cell] accessibilitySetOverrideValue:_NS("Click to open an advanced dialog to select the media to play. You can also drop files here to play.") forAttribute:NSAccessibilityDescriptionAttribute];
......@@ -973,6 +978,11 @@ static VLCMainWindow *sharedInstance = nil;
return [NSString stringWithFormat:@" — %@",[formatter stringFromDate:date]];
}
- (IBAction)searchItem:(id)sender
{
[[[[VLCMain sharedInstance] playlist] model] searchUpdate:[o_search_fld stringValue]];
}
#pragma mark -
#pragma mark Side Bar Data handling
/* taken under BSD-new from the PXSourceList sample project, adapted for VLC */
......
......@@ -68,7 +68,6 @@ static NSString * VLCInputChangedNotification = @"VLCInputChangedNotification";
@interface VLCMain : NSObject <NSWindowDelegate, NSApplicationDelegate>
{
IBOutlet VLCMainWindow *o_mainwindow; /* VLCMainWindow */
IBOutlet VLCPlaylist * o_playlist; /* VLCPlaylist */
}
@property (readonly) VLCVoutWindowController* voutController;
......
......@@ -80,9 +80,10 @@ int OpenIntf (vlc_object_t *p_this)
msg_Dbg(p_intf, "Starting macosx interface");
[VLCApplication sharedApplication];
[[VLCMain sharedInstance] setIntf: p_intf];
[NSBundle loadNibNamed:@"MainMenu" owner:[[VLCMain sharedInstance] mainMenu]];
[VLCVoutWindowController sharedInstance];
return VLC_SUCCESS;
......@@ -155,6 +156,7 @@ static int ShowController(vlc_object_t *p_this, const char *psz_variable,
VLCCoreInteraction *_coreinteraction;
ResumeDialogController *_resume_dialog;
VLCInputManager *_input_manager;
VLCPlaylist *_playlist;
bool b_intf_terminating; /* Makes sure applicationWillTerminate will be called only once */
}
......@@ -218,14 +220,11 @@ static int ShowController(vlc_object_t *p_this, const char *psz_variable,
- (void)applicationWillFinishLaunching:(NSNotification *)aNotification
{
_playlist = [[VLCPlaylist alloc] init];
[NSBundle loadNibNamed:@"MainWindow" owner:self];
[[self mainWindow] makeKeyAndOrderFront:nil];
_open = [[VLCOpen alloc] init];
_mainmenu = [[VLCMainMenu alloc] init];
[NSBundle loadNibNamed:@"MainMenu" owner:_mainmenu];
[NSBundle loadNibNamed:@"MainWindow" owner:[VLCMain sharedInstance]];
[[[VLCMain sharedInstance] mainWindow] makeKeyAndOrderFront:nil];
_coreinteraction = [VLCCoreInteraction sharedInstance];
playlist_t * p_playlist = pl_Get(VLCIntf);
......@@ -314,7 +313,7 @@ static int ShowController(vlc_object_t *p_this, const char *psz_variable,
* the callbacks are registered.
*/
[_input_manager inputThreadChanged];
[o_playlist playbackModeUpdated];
[_playlist playbackModeUpdated];
// respect playlist-autostart
// note that PLAYLIST_PLAY will not stop any playback if already started
......@@ -567,7 +566,7 @@ static int ShowController(vlc_object_t *p_this, const char *psz_variable,
- (VLCPlaylist *)playlist
{
return o_playlist;
return _playlist;
}
- (VLCCoreDialogProvider *)coreDialogProvider
......
/*****************************************************************************
* playlist.h: MacOS X interface module
*****************************************************************************
* Copyright (C) 2002-2012 VLC authors and VideoLAN
* Copyright (C) 2002-2015 VLC authors and VideoLAN
* $Id$
*
* Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
......@@ -37,34 +37,21 @@
* VLCPlaylist interface
*****************************************************************************/
@interface VLCPlaylist : NSObject<NSOutlineViewDataSource, NSOutlineViewDelegate>
{
IBOutlet VLCPlaylistView* o_outline_view;
IBOutlet id o_controller;
IBOutlet id o_btn_playlist;
IBOutlet id o_playlist_view;
IBOutlet id o_search_field;
IBOutlet id o_mi_save_playlist;
IBOutlet id o_ctx_menu;
IBOutlet id o_mi_play;
IBOutlet id o_mi_delete;
IBOutlet id o_mi_info;
IBOutlet id o_mi_preparse;
IBOutlet id o_mi_revealInFinder;
IBOutlet id o_mi_dl_cover_art;
IBOutlet id o_mi_selectall;
IBOutlet id o_mi_sort_name;
IBOutlet id o_mi_sort_author;
IBOutlet id o_mi_recursive_expand;
IBOutlet id o_save_accessory_view;
IBOutlet id o_save_accessory_popup;
IBOutlet id o_save_accessory_text;
IBOutlet id o_playlist_header;
}
@property (readwrite, weak) IBOutlet NSMenu *playlistMenu;
@property (readwrite, weak) IBOutlet NSMenuItem *playPlaylistMenuItem;
@property (readwrite, weak) IBOutlet NSMenuItem *deletePlaylistMenuItem;
@property (readwrite, weak) IBOutlet NSMenuItem *infoPlaylistMenuItem;
@property (readwrite, weak) IBOutlet NSMenuItem *preparsePlaylistMenuItem;
@property (readwrite, weak) IBOutlet NSMenuItem *revealInFinderPlaylistMenuItem;
@property (readwrite, weak) IBOutlet NSMenuItem *downloadCoverArtPlaylistMenuItem;
@property (readwrite, weak) IBOutlet NSMenuItem *selectAllPlaylistMenuItem;
@property (readwrite, weak) IBOutlet NSMenuItem *sortNamePlaylistMenuItem;
@property (readwrite, weak) IBOutlet NSMenuItem *sortAuthorPlaylistMenuItem;
@property (readwrite, weak) IBOutlet NSMenuItem *recursiveExpandPlaylistMenuItem;
@property (nonatomic, readwrite, weak) VLCPlaylistView *outlineView;
@property (nonatomic, readwrite, weak) NSTableHeaderView *playlistHeaderView;
- (PLModel *)model;
......@@ -72,8 +59,6 @@
- (NSMenu *)menuForEvent:(NSEvent *)o_event;
- (IBAction)searchItem:(id)sender;
- (void)playlistUpdated;
- (void)playbackModeUpdated;
- (void)updateTogglePlaylistState;
......@@ -91,7 +76,6 @@
- (IBAction)revealItemInFinder:(id)sender;
- (IBAction)preparseItem:(id)sender;
- (IBAction)downloadCoverArt:(id)sender;
- (IBAction)savePlaylist:(id)sender;
- (IBAction)deleteItem:(id)sender;
- (IBAction)selectAll:(id)sender;
- (IBAction)sortNodeByName:(id)sender;
......
/*****************************************************************************
* playlist.m: MacOS X interface module
*****************************************************************************
* Copyright (C) 2002-2014 VLC authors and VideoLAN
* Copyright (C) 2002-2015 VLC authors and VideoLAN
* $Id$
*
* Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
......@@ -221,13 +221,13 @@ static int VolumeUpdated(vlc_object_t *p_this, const char *psz_var,
+ (void)initialize
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *o_columnArray = [[NSMutableArray alloc] init];
[o_columnArray addObject: [NSArray arrayWithObjects:TITLE_COLUMN, [NSNumber numberWithFloat:190.], nil]];
[o_columnArray addObject: [NSArray arrayWithObjects:ARTIST_COLUMN, [NSNumber numberWithFloat:95.], nil]];
[o_columnArray addObject: [NSArray arrayWithObjects:DURATION_COLUMN, [NSNumber numberWithFloat:95.], nil]];
NSMutableArray *columnArray = [[NSMutableArray alloc] init];
[columnArray addObject: [NSArray arrayWithObjects:TITLE_COLUMN, [NSNumber numberWithFloat:190.], nil]];
[columnArray addObject: [NSArray arrayWithObjects:ARTIST_COLUMN, [NSNumber numberWithFloat:95.], nil]];
[columnArray addObject: [NSArray arrayWithObjects:DURATION_COLUMN, [NSNumber numberWithFloat:95.], nil]];
NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:
[NSArray arrayWithArray:o_columnArray], @"PlaylistColumnSelection",
[NSArray arrayWithArray:columnArray], @"PlaylistColumnSelection",
[NSArray array], @"recentlyPlayedMediaList",
[NSDictionary dictionary], @"recentlyPlayedMedia", nil];
......@@ -281,11 +281,11 @@ static int VolumeUpdated(vlc_object_t *p_this, const char *psz_var,
rowHeight = 16.;
}
NSArray *columns = [o_outline_view tableColumns];
NSArray *columns = [_outlineView tableColumns];
NSUInteger count = columns.count;
for (NSUInteger x = 0; x < count; x++)
[[[columns objectAtIndex:x] dataCell] setFont:fontToUse];
[o_outline_view setRowHeight:rowHeight];
[_outlineView setRowHeight:rowHeight];
}
- (void)awakeFromNib
......@@ -298,16 +298,16 @@ static int VolumeUpdated(vlc_object_t *p_this, const char *psz_var,
[self reloadStyles];
[self initStrings];
o_model = [[PLModel alloc] initWithOutlineView:o_outline_view playlist:p_playlist rootItem:p_playlist->p_playing playlistObject:self];
[o_outline_view setDataSource:o_model];
[o_outline_view reloadData];
o_model = [[PLModel alloc] initWithOutlineView:_outlineView playlist:p_playlist rootItem:p_playlist->p_playing playlistObject:self];
[_outlineView setDataSource:o_model];
[_outlineView reloadData];
[o_outline_view setTarget: self];
[o_outline_view setDoubleAction: @selector(playItem:)];
[_outlineView setTarget: self];
[_outlineView setDoubleAction: @selector(playItem:)];
[o_outline_view setAllowsEmptySelection: NO];
[o_outline_view registerForDraggedTypes: [NSArray arrayWithObjects:NSFilenamesPboardType, @"VLCPlaylistItemPboardType", nil]];
[o_outline_view setIntercellSpacing: NSMakeSize (0.0, 1.0)];
[_outlineView setAllowsEmptySelection: NO];
[_outlineView registerForDraggedTypes: [NSArray arrayWithObjects:NSFilenamesPboardType, @"VLCPlaylistItemPboardType", nil]];
[_outlineView setIntercellSpacing: NSMakeSize (0.0, 1.0)];
/* This uses a private API, but works fine on all current OSX releases.
* Radar ID 11739459 request a public API for this. However, it is probably
......@@ -317,29 +317,32 @@ static int VolumeUpdated(vlc_object_t *p_this, const char *psz_var,
o_tc_sortColumn = nil;
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(applicationWillTerminate:) name: NSApplicationWillTerminateNotification object: nil];
b_view_setup = YES;
}
- (void)setPlaylistHeaderView:(NSTableHeaderView * __nullable)playlistHeaderView
{
VLCMainMenu *mainMenu = [[VLCMain sharedInstance] mainMenu];
_playlistHeaderView = playlistHeaderView;
NSMenu *contextMenu = [mainMenu setupPlaylistTableColumnsMenu];
[_playlistHeaderView setMenu: contextMenu];
NSArray * o_columnArray = [[NSUserDefaults standardUserDefaults] arrayForKey:@"PlaylistColumnSelection"];
NSUInteger count = [o_columnArray count];
id o_menu = [[VLCMain sharedInstance] mainMenu];
NSString * o_column;
NSMenu *o_context_menu = [o_menu setupPlaylistTableColumnsMenu];
[o_playlist_header setMenu: o_context_menu];
for (NSUInteger i = 0; i < count; i++) {
o_column = [[o_columnArray objectAtIndex:i] firstObject];
if ([o_column isEqualToString:@"status"])
continue;
if(![o_menu setPlaylistColumnTableState: NSOnState forColumn: o_column])
if(![mainMenu setPlaylistColumnTableState: NSOnState forColumn: o_column])
continue;
[[o_outline_view tableColumnWithIdentifier: o_column] setWidth: [[[o_columnArray objectAtIndex:i] objectAtIndex:1] floatValue]];
[[_outlineView tableColumnWithIdentifier: o_column] setWidth: [[[o_columnArray objectAtIndex:i] objectAtIndex:1] floatValue]];
}
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(applicationWillTerminate:) name: NSApplicationWillTerminateNotification object: nil];
b_view_setup = YES;
}
- (void)applicationWillTerminate:(NSNotification *)notification
......@@ -350,23 +353,21 @@ static int VolumeUpdated(vlc_object_t *p_this, const char *psz_var,
- (void)initStrings
{
[o_mi_play setTitle: _NS("Play")];
[o_mi_delete setTitle: _NS("Delete")];
[o_mi_recursive_expand setTitle: _NS("Expand Node")];
[o_mi_selectall setTitle: _NS("Select All")];
[o_mi_info setTitle: _NS("Media Information...")];
[o_mi_dl_cover_art setTitle: _NS("Download Cover Art")];
[o_mi_preparse setTitle: _NS("Fetch Meta Data")];
[o_mi_revealInFinder setTitle: _NS("Reveal in Finder")];
[o_mi_sort_name setTitle: _NS("Sort Node by Name")];
[o_mi_sort_author setTitle: _NS("Sort Node by Author")];
[o_search_field setToolTip: _NS("Search in Playlist")];
[_playPlaylistMenuItem setTitle: _NS("Play")];
[_deletePlaylistMenuItem setTitle: _NS("Delete")];
[_recursiveExpandPlaylistMenuItem setTitle: _NS("Expand Node")];
[_selectAllPlaylistMenuItem setTitle: _NS("Select All")];
[_infoPlaylistMenuItem setTitle: _NS("Media Information...")];
[_downloadCoverArtPlaylistMenuItem setTitle: _NS("Download Cover Art")];
[_preparsePlaylistMenuItem setTitle: _NS("Fetch Meta Data")];
[_revealInFinderPlaylistMenuItem setTitle: _NS("Reveal in Finder")];
[_sortNamePlaylistMenuItem setTitle: _NS("Sort Node by Name")];
[_sortAuthorPlaylistMenuItem setTitle: _NS("Sort Node by Author")];
}
- (void)playlistUpdated
{
[o_outline_view reloadData];
[_outlineView reloadData];
}
- (void)plItemAppended:(NSArray *)o_val
......@@ -439,7 +440,7 @@ static int VolumeUpdated(vlc_object_t *p_this, const char *psz_var,
- (void)outlineViewSelectionDidChange:(NSNotification *)notification
{
// // FIXME: unsafe
// playlist_item_t * p_item = [[o_outline_view itemAtRow:[o_outline_view selectedRow]] pointerValue];
// playlist_item_t * p_item = [[_outlineView itemAtRow:[_outlineView selectedRow]] pointerValue];
//
// if (p_item) {
// /* update the state of our Reveal-in-Finder menu items */
......@@ -470,7 +471,7 @@ static int VolumeUpdated(vlc_object_t *p_this, const char *psz_var,
- (BOOL)isSelectionEmpty
{
return [o_outline_view selectedRow] == -1;
return [_outlineView selectedRow] == -1;
}
- (void)currentlyPlayingItemChanged
......@@ -480,95 +481,27 @@ static int VolumeUpdated(vlc_object_t *p_this, const char *psz_var,
return;
// select item
NSInteger itemIndex = [o_outline_view rowForItem:item];
NSInteger itemIndex = [_outlineView rowForItem:item];
if (itemIndex < 0) {
// expand if needed
while (item != nil) {
PLItem *parent = [item parent];
if (![o_outline_view isExpandable: parent])
if (![_outlineView isExpandable: parent])
break;
if (![o_outline_view isItemExpanded: parent])
[o_outline_view expandItem: parent];
if (![_outlineView isItemExpanded: parent])
[_outlineView expandItem: parent];
item = parent;
}
// search for row again
itemIndex = [o_outline_view rowForItem:item];
itemIndex = [_outlineView rowForItem:item];
if (itemIndex < 0) {
return;
}
}
[o_outline_view selectRowIndexes: [NSIndexSet indexSetWithIndex: itemIndex] byExtendingSelection: NO];
}
- (IBAction)savePlaylist:(id)sender
{
playlist_t * p_playlist = pl_Get(VLCIntf);
NSSavePanel *o_save_panel = [NSSavePanel savePanel];
NSString * o_name = [NSString stringWithFormat: @"%@", _NS("Untitled")];
[NSBundle loadNibNamed:@"PlaylistAccessoryView" owner:self];
[o_save_accessory_text setStringValue: _NS("File Format:")];
[[o_save_accessory_popup itemAtIndex:0] setTitle: _NS("Extended M3U")];
[[o_save_accessory_popup itemAtIndex:1] setTitle: _NS("XML Shareable Playlist Format (XSPF)")];
[[o_save_accessory_popup itemAtIndex:2] setTitle: _NS("HTML playlist")];
[o_save_panel setTitle: _NS("Save Playlist")];
[o_save_panel setPrompt: _NS("Save")];
[o_save_panel setAccessoryView: o_save_accessory_view];
[o_save_panel setNameFieldStringValue: o_name];
if ([o_save_panel runModal] == NSFileHandlingPanelOKButton) {
NSString *o_filename = [[o_save_panel URL] path];
if ([o_save_accessory_popup indexOfSelectedItem] == 0) {
NSString * o_real_filename;
NSRange range;
range.location = [o_filename length] - [@".m3u" length];
range.length = [@".m3u" length];
if ([o_filename compare:@".m3u" options: NSCaseInsensitiveSearch range: range] != NSOrderedSame)
o_real_filename = [NSString stringWithFormat: @"%@.m3u", o_filename];
else
o_real_filename = o_filename;
playlist_Export(p_playlist,
[o_real_filename fileSystemRepresentation],
p_playlist->p_local_category, "export-m3u");
} else if ([o_save_accessory_popup indexOfSelectedItem] == 1) {
NSString * o_real_filename;
NSRange range;
range.location = [o_filename length] - [@".xspf" length];
range.length = [@".xspf" length];
if ([o_filename compare:@".xspf" options: NSCaseInsensitiveSearch range: range] != NSOrderedSame)
o_real_filename = [NSString stringWithFormat: @"%@.xspf", o_filename];
else
o_real_filename = o_filename;
playlist_Export(p_playlist,
[o_real_filename fileSystemRepresentation],
p_playlist->p_local_category, "export-xspf");
} else {
NSString * o_real_filename;
NSRange range;
range.location = [o_filename length] - [@".html" length];
range.length = [@".html" length];
if ([o_filename compare:@".html" options: NSCaseInsensitiveSearch range: range] != NSOrderedSame)
o_real_filename = [NSString stringWithFormat: @"%@.html", o_filename];
else
o_real_filename = o_filename;
playlist_Export(p_playlist,
[o_real_filename fileSystemRepresentation],
p_playlist->p_local_category, "export-html");
}
}
[_outlineView selectRowIndexes: [NSIndexSet indexSetWithIndex: itemIndex] byExtendingSelection: NO];
}
/* When called retrieves the selected outlineview row and plays that node or item */
......@@ -577,10 +510,10 @@ static int VolumeUpdated(vlc_object_t *p_this, const char *psz_var,
playlist_t *p_playlist = pl_Get(VLCIntf);
// ignore clicks on column header when handling double action
if (sender == o_outline_view && [o_outline_view clickedRow] == -1)
if (sender == _outlineView && [_outlineView clickedRow] == -1)
return;
PLItem *o_item = [o_outline_view itemAtRow:[o_outline_view selectedRow]];
PLItem *o_item = [_outlineView itemAtRow:[_outlineView selectedRow]];
if (!o_item)
return;
......@@ -596,10 +529,10 @@ static int VolumeUpdated(vlc_object_t *p_this, const char *psz_var,
- (IBAction)revealItemInFinder:(id)sender
{
NSIndexSet *selectedRows = [o_outline_view selectedRowIndexes];
NSIndexSet *selectedRows = [_outlineView selectedRowIndexes];
[selectedRows enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
PLItem *o_item = [o_outline_view itemAtRow:idx];
PLItem *o_item = [_outlineView itemAtRow:idx];
/* perform some checks whether it is a file and if it is local at all... */
char *psz_url = input_item_GetURI([o_item input]);
......@@ -625,14 +558,14 @@ static int VolumeUpdated(vlc_object_t *p_this, const char *psz_var,
playlist_t * p_playlist = pl_Get(p_intf);
playlist_item_t *p_item = NULL;
o_selected_indexes = [o_outline_view selectedRowIndexes];
o_selected_indexes = [_outlineView selectedRowIndexes];
i_count = [o_selected_indexes count];
NSUInteger indexes[i_count];
[o_selected_indexes getIndexes:indexes maxCount:i_count inIndexRange:nil];
for (int i = 0; i < i_count; i++) {
PLItem *o_item = [o_outline_view itemAtRow:indexes[i]];
[o_outline_view deselectRow: indexes[i]];
PLItem *o_item = [_outlineView itemAtRow:indexes[i]];
[_outlineView deselectRow: indexes[i]];
if (![o_item isLeaf]) {
msg_Dbg(p_intf, "preparsing nodes not implemented");
......@@ -653,13 +586,13 @@ static int VolumeUpdated(vlc_object_t *p_this, const char *psz_var,
playlist_t * p_playlist = pl_Get(p_intf);
playlist_item_t *p_item = NULL;
o_selected_indexes = [o_outline_view selectedRowIndexes];
o_selected_indexes = [_outlineView selectedRowIndexes];
i_count = [o_selected_indexes count];
NSUInteger indexes[i_count];
[o_selected_indexes getIndexes:indexes maxCount:i_count inIndexRange:nil];
for (int i = 0; i < i_count; i++) {
PLItem *o_item = [o_outline_view itemAtRow: indexes[i]];
PLItem *o_item = [_outlineView itemAtRow: indexes[i]];
if (![o_item isLeaf])
continue;
......@@ -671,7 +604,7 @@ static int VolumeUpdated(vlc_object_t *p_this, const char *psz_var,
- (IBAction)selectAll:(id)sender
{
[o_outline_view selectAll: nil];
[_outlineView selectAll: nil];
}
- (IBAction)showInfoPanel:(id)sender
......@@ -682,7 +615,7 @@ static int VolumeUpdated(vlc_object_t *p_this, const char *psz_var,
- (void)deletionCompleted
{
// retain selection before deletion
[o_outline_view selectRowIndexes:[NSIndexSet indexSetWithIndex:retainedRowSelection] byExtendingSelection:NO];
[_outlineView selectRowIndexes:[NSIndexSet indexSetWithIndex:retainedRowSelection] byExtendingSelection:NO];
}
- (IBAction)deleteItem:(id)sender
......@@ -693,13 +626,13 @@ static int VolumeUpdated(vlc_object_t *p_this, const char *psz_var,
if (![[self model] editAllowed])
return;
NSIndexSet *o_selected_indexes = [o_outline_view selectedRowIndexes];
NSIndexSet *o_selected_indexes = [_outlineView selectedRowIndexes];
retainedRowSelection = [o_selected_indexes firstIndex];
if (retainedRowSelection == NSNotFound)
retainedRowSelection = 0;
[o_selected_indexes enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
PLItem *o_item = [o_outline_view itemAtRow: idx];
PLItem *o_item = [_outlineView itemAtRow: idx];
if (!o_item)
return;
......@@ -725,8 +658,8 @@ static int VolumeUpdated(vlc_object_t *p_this, const char *psz_var,
// TODO why do we need this kind of sort? It looks crap and confusing...
// if ([o_outline_view selectedRow] > -1) {
// p_item = [[o_outline_view itemAtRow: [o_outline_view selectedRow]] pointerValue];
// if ([_outlineView selectedRow] > -1) {
// p_item = [[_outlineView itemAtRow: [_outlineView selectedRow]] pointerValue];
// if (!p_item)
// return;
// } else
......@@ -857,15 +790,9 @@ static int VolumeUpdated(vlc_object_t *p_this, const char *psz_var,
PL_UNLOCK;
}
- (IBAction)searchItem:(id)sender
{
[[self model] searchUpdate:[o_search_field stringValue]];
}
- (IBAction)recursiveExpandNode:(id)sender
{
NSIndexSet * selectedRows = [o_outline_view selectedRowIndexes];
NSIndexSet * selectedRows = [_outlineView selectedRowIndexes];
NSUInteger count = [selectedRows count];
NSUInteger indexes[count];
[selectedRows getIndexes:indexes maxCount:count inIndexRange:nil];
......@@ -873,16 +800,16 @@ static int VolumeUpdated(vlc_object_t *p_this, const char *psz_var,
id o_item;
playlist_item_t *p_item;
for (NSUInteger i = 0; i < count; i++) {
o_item = [o_outline_view itemAtRow: indexes[i]];
o_item = [_outlineView itemAtRow: indexes[i]];
/* We need to collapse the node first, since OSX refuses to recursively
expand an already expanded node, even if children nodes are collapsed. */
if ([o_outline_view isExpandable:o_item]) {
[o_outline_view collapseItem: o_item collapseChildren: YES];
[o_outline_view expandItem: o_item expandChildren: YES];
if ([_outlineView isExpandable:o_item]) {
[_outlineView collapseItem: o_item collapseChildren: YES];
[_outlineView expandItem: o_item expandChildren: YES];
}
selectedRows = [o_outline_view selectedRowIndexes];
selectedRows = [_outlineView selectedRowIndexes];
[selectedRows getIndexes:indexes maxCount:count inIndexRange:nil];
}
}
......@@ -896,28 +823,28 @@ static int VolumeUpdated(vlc_object_t *p_this, const char *psz_var,
bool b_rows;
bool b_item_sel;
pt = [o_outline_view convertPoint: [o_event locationInWindow] fromView: nil];
int row = [o_outline_view rowAtPoint:pt];
if (row != -1 && ![[o_outline_view selectedRowIndexes] containsIndex: row])
[o_outline_view selectRowIndexes:[NSIndexSet indexSetWithIndex:row] byExtendingSelection:NO];
pt = [_outlineView convertPoint: [o_event locationInWindow] fromView: nil];
int row = [_outlineView rowAtPoint:pt];
if (row != -1 && ![[_outlineView selectedRowIndexes] containsIndex: row])
[_outlineView selectRowIndexes:[NSIndexSet indexSetWithIndex:row] byExtendingSelection:NO];
b_item_sel = (row != -1 && [o_outline_view selectedRow] != -1);
b_rows = [o_outline_view numberOfRows] != 0;
b_item_sel = (row != -1 && [_outlineView selectedRow] != -1);
b_rows = [_outlineView numberOfRows] != 0;
playlist_t *p_playlist = pl_Get(VLCIntf);
bool b_del_allowed = [[self model] editAllowed];
[o_mi_play setEnabled: b_item_sel];
[o_mi_delete setEnabled: b_item_sel && b_del_allowed];
[o_mi_selectall setEnabled: b_rows];
[o_mi_info setEnabled: b_item_sel];
[o_mi_preparse setEnabled: b_item_sel];
[o_mi_recursive_expand setEnabled: b_item_sel];
[o_mi_sort_name setEnabled: b_item_sel];
[o_mi_sort_author setEnabled: b_item_sel];
[o_mi_dl_cover_art setEnabled: b_item_sel];
return o_ctx_menu;
[_playPlaylistMenuItem setEnabled: b_item_sel];
[_deletePlaylistMenuItem setEnabled: b_item_sel && b_del_allowed];
[_selectAllPlaylistMenuItem setEnabled: b_rows];
[_infoPlaylistMenuItem setEnabled: b_item_sel];
[_preparsePlaylistMenuItem setEnabled: b_item_sel];
[_recursiveExpandPlaylistMenuItem setEnabled: b_item_sel];
[_sortNamePlaylistMenuItem setEnabled: b_item_sel];
[_sortAuthorPlaylistMenuItem setEnabled: b_item_sel];
[_downloadCoverArtPlaylistMenuItem setEnabled: b_item_sel];
return _playlistMenu;
}
- (void)outlineView: (NSOutlineView *)o_tv didClickTableColumn:(NSTableColumn *)o_tc
......@@ -944,21 +871,20 @@ static int VolumeUpdated(vlc_object_t *p_this, const char *psz_var,
// [self playlistUpdated];
/* Clear indications of any existing column sorting */
NSUInteger count = [[o_outline_view tableColumns] count];
NSUInteger count = [[_outlineView tableColumns] count];
for (NSUInteger i = 0 ; i < count ; i++)
[o_outline_view setIndicatorImage:nil inTableColumn: [[o_outline_view tableColumns] objectAtIndex:i]];
[_outlineView setIndicatorImage:nil inTableColumn: [[_outlineView tableColumns] objectAtIndex:i]];
[o_outline_view setHighlightedTableColumn:nil];
[_outlineView setHighlightedTableColumn:nil];
o_tc_sortColumn = nil;
o_tc_sortColumn = o_tc;
[o_outline_view setHighlightedTableColumn:o_tc];
[_outlineView setHighlightedTableColumn:o_tc];
if (b_isSortDescending)
[o_outline_view setIndicatorImage:o_descendingSortingImage inTableColumn:o_tc];
[_outlineView setIndicatorImage:o_descendingSortingImage inTableColumn:o_tc];
else
[o_outline_view setIndicatorImage:o_ascendingSortingImage inTableColumn:o_tc];
[_outlineView setIndicatorImage:o_ascendingSortingImage inTableColumn:o_tc];
}
......@@ -1026,20 +952,20 @@ static int VolumeUpdated(vlc_object_t *p_this, const char *psz_var,
[[o_work_tc headerCell] setStringValue: @"#"];
}
[o_outline_view addTableColumn: o_work_tc];
[o_outline_view reloadData];
[o_outline_view setNeedsDisplay: YES];
[_outlineView addTableColumn: o_work_tc];
[_outlineView reloadData];
[_outlineView setNeedsDisplay: YES];
}
else
[o_outline_view removeTableColumn: [o_outline_view tableColumnWithIdentifier: o_column]];
[_outlineView removeTableColumn: [_outlineView tableColumnWithIdentifier: o_column]];
[o_outline_view setOutlineTableColumn: [o_outline_view tableColumnWithIdentifier:TITLE_COLUMN]];
[_outlineView setOutlineTableColumn: [_outlineView tableColumnWithIdentifier:TITLE_COLUMN]];
}
- (void)saveTableColumns
{
NSMutableArray * o_arrayToSave = [[NSMutableArray alloc] init];
NSArray * o_columns = [[NSArray alloc] initWithArray:[o_outline_view tableColumns]];
NSArray * o_columns = [[NSArray alloc] initWithArray:[_outlineView tableColumns]];
NSUInteger count = [o_columns count];
NSTableColumn * o_currentColumn;
for (NSUInteger i = 0; i < count; i++) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment