Commit cf37037f authored by Felix Paul Kühne's avatar Felix Paul Kühne

macosx: prepared fullscreen support and clean-up

parent 4cfebf25
......@@ -2,9 +2,9 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1040</int>
<string key="IBDocument.SystemVersion">11A511a</string>
<string key="IBDocument.SystemVersion">11C26</string>
<string key="IBDocument.InterfaceBuilderVersion">851</string>
<string key="IBDocument.AppKitVersion">1138</string>
<string key="IBDocument.AppKitVersion">1138.11</string>
<string key="IBDocument.HIToolboxVersion">566.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<bool key="EncodedWithXMLCoder">YES</bool>
......@@ -21,14 +21,14 @@
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="283"/>
<integer value="2730"/>
<integer value="1617"/>
<integer value="4596"/>
<integer value="1617"/>
<integer value="4722"/>
<integer value="915"/>
<integer value="283"/>
<integer value="24"/>
<integer value="334"/>
<integer value="4682"/>
<integer value="4722"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
......@@ -4698,54 +4698,6 @@ LCAuLi4</string>
</object>
<int key="connectionID">1187</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">windowAction:</string>
<reference key="source" ref="113811151"/>
<reference key="destination" ref="306486441"/>
</object>
<int key="connectionID">1502</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">windowAction:</string>
<reference key="source" ref="113811151"/>
<reference key="destination" ref="848898341"/>
</object>
<int key="connectionID">1503</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">windowAction:</string>
<reference key="source" ref="113811151"/>
<reference key="destination" ref="633479871"/>
</object>
<int key="connectionID">1504</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">windowAction:</string>
<reference key="source" ref="113811151"/>
<reference key="destination" ref="606474125"/>
</object>
<int key="connectionID">1505</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">windowAction:</string>
<reference key="source" ref="113811151"/>
<reference key="destination" ref="898223493"/>
</object>
<int key="connectionID">1506</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">windowAction:</string>
<reference key="source" ref="113811151"/>
<reference key="destination" ref="115305473"/>
</object>
<int key="connectionID">1520</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">random:</string>
......@@ -4930,14 +4882,6 @@ LCAuLi4</string>
</object>
<int key="connectionID">2246</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">windowAction:</string>
<reference key="source" ref="113811151"/>
<reference key="destination" ref="288132578"/>
</object>
<int key="connectionID">2252</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">o_mi_services</string>
......@@ -5154,14 +5098,6 @@ LCAuLi4</string>
</object>
<int key="connectionID">2727</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">windowAction:</string>
<reference key="source" ref="113811151"/>
<reference key="destination" ref="788765547"/>
</object>
<int key="connectionID">2735</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">play:</string>
......@@ -5218,14 +5154,6 @@ LCAuLi4</string>
</object>
<int key="connectionID">2753</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">windowAction:</string>
<reference key="source" ref="113811151"/>
<reference key="destination" ref="1070274380"/>
</object>
<int key="connectionID">2754</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">showMessagesPanel:</string>
......@@ -7186,6 +7114,78 @@ LCAuLi4</string>
</object>
<int key="connectionID">4738</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">resizeVideoWindow:</string>
<reference key="source" ref="651263286"/>
<reference key="destination" ref="306486441"/>
</object>
<int key="connectionID">4741</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">resizeVideoWindow:</string>
<reference key="source" ref="651263286"/>
<reference key="destination" ref="848898341"/>
</object>
<int key="connectionID">4742</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">resizeVideoWindow:</string>
<reference key="source" ref="651263286"/>
<reference key="destination" ref="633479871"/>
</object>
<int key="connectionID">4743</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">resizeVideoWindow:</string>
<reference key="source" ref="651263286"/>
<reference key="destination" ref="115305473"/>
</object>
<int key="connectionID">4744</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">toggleFullscreen:</string>
<reference key="source" ref="651263286"/>
<reference key="destination" ref="606474125"/>
</object>
<int key="connectionID">4745</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">floatOnTop:</string>
<reference key="source" ref="651263286"/>
<reference key="destination" ref="898223493"/>
</object>
<int key="connectionID">4746</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">createVideoSnapshot:</string>
<reference key="source" ref="651263286"/>
<reference key="destination" ref="288132578"/>
</object>
<int key="connectionID">4747</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">toggleFullscreen:</string>
<reference key="source" ref="651263286"/>
<reference key="destination" ref="788765547"/>
</object>
<int key="connectionID">4748</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">createVideoSnapshot:</string>
<reference key="source" ref="651263286"/>
<reference key="destination" ref="1070274380"/>
</object>
<int key="connectionID">4749</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
......@@ -11028,14 +11028,14 @@ LCAuLi4</string>
<boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/>
<string>{{373, 736}, {468, 20}}</string>
<string>{{85, 668}, {468, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/>
<string>{{608, 373}, {208, 363}}</string>
<string>{{364, 305}, {208, 363}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
......@@ -11448,7 +11448,7 @@ LCAuLi4</string>
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">4740</int>
<int key="maxID">4749</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
......@@ -14169,38 +14169,1203 @@ LCAuLi4</string>
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.1+">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="647024034">
<string key="majorKey">IBDocumentRelativeSource</string>
<string key="minorKey">../../../../contrib/hosts/x86_64-apple-darwin10/Sparkle/Sparkle.framework/Headers/SUUpdater.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">SUUpdater</string>
<string key="className">VLCMainMenu</string>
<string key="superclassName">NSObject</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">checkForUpdates:</string>
<string key="NS.object.0">id</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>clearRecentItems:</string>
<string>createVideoSnapshot:</string>
<string>floatOnTop:</string>
<string>intfOpenCapture:</string>
<string>intfOpenDisc:</string>
<string>intfOpenFile:</string>
<string>intfOpenFileGeneric:</string>
<string>intfOpenNet:</string>
<string>openDocumentation:</string>
<string>openDonate:</string>
<string>openForum:</string>
<string>openReadMe:</string>
<string>openWebsite:</string>
<string>resizeVideoWindow:</string>
<string>setPlaybackRate:</string>
<string>showAudioEffects:</string>
<string>showBookmarks:</string>
<string>showInformationPanel:</string>
<string>showLicense:</string>
<string>showTrackSynchronization:</string>
<string>showVideoEffects:</string>
<string>showWizard:</string>
<string>toggleFullscreen:</string>
<string>toggleVar:</string>
<string>viewAbout:</string>
<string>viewErrorsAndWarnings:</string>
<string>viewHelp:</string>
<string>viewPreferences:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">checkForUpdates:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">checkForUpdates:</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>clearRecentItems:</string>
<string>createVideoSnapshot:</string>
<string>floatOnTop:</string>
<string>intfOpenCapture:</string>
<string>intfOpenDisc:</string>
<string>intfOpenFile:</string>
<string>intfOpenFileGeneric:</string>
<string>intfOpenNet:</string>
<string>openDocumentation:</string>
<string>openDonate:</string>
<string>openForum:</string>
<string>openReadMe:</string>
<string>openWebsite:</string>
<string>resizeVideoWindow:</string>
<string>setPlaybackRate:</string>
<string>showAudioEffects:</string>
<string>showBookmarks:</string>
<string>showInformationPanel:</string>
<string>showLicense:</string>
<string>showTrackSynchronization:</string>
<string>showVideoEffects:</string>
<string>showWizard:</string>
<string>toggleFullscreen:</string>
<string>toggleVar:</string>
<string>viewAbout:</string>
<string>viewErrorsAndWarnings:</string>
<string>viewHelp:</string>
<string>viewPreferences:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBActionInfo">
<string key="name">clearRecentItems:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">createVideoSnapshot:</string>
<string key="candidateClassName">id</string>
</object>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">delegate</string>
<string key="NS.object.0">id</string>
<object class="IBActionInfo">
<string key="name">floatOnTop:</string>
<string key="candidateClassName">id</string>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">delegate</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">delegate</string>
<object class="IBActionInfo">
<string key="name">intfOpenCapture:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">intfOpenDisc:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">intfOpenFile:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">intfOpenFileGeneric:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">intfOpenNet:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">openDocumentation:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">openDonate:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">openForum:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">openReadMe:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">openWebsite:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">resizeVideoWindow:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">setPlaybackRate:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">showAudioEffects:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">showBookmarks:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">showInformationPanel:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">showLicense:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">showTrackSynchronization:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">showVideoEffects:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">showWizard:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">toggleFullscreen:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">toggleVar:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">viewAbout:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">viewErrorsAndWarnings:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">viewHelp:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">viewPreferences:</string>
<string key="candidateClassName">id</string>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>o_about</string>
<string>o_audioeffects</string>
<string>o_bookmarks</string>
<string>o_dmi_mute</string>
<string>o_dmi_next</string>
<string>o_dmi_play</string>
<string>o_dmi_previous</string>
<string>o_dmi_stop</string>
<string>o_mi_about</string>
<string>o_mi_addSub</string>
<string>o_mi_add_intf</string>
<string>o_mi_aspect_ratio</string>
<string>o_mi_audioeffects</string>
<string>o_mi_audiotrack</string>
<string>o_mi_bookmarks</string>
<string>o_mi_bring_atf</string>
<string>o_mi_bwd</string>
<string>o_mi_channels</string>
<string>o_mi_chapter</string>
<string>o_mi_checkForUpdate</string>
<string>o_mi_clear</string>
<string>o_mi_close_window</string>
<string>o_mi_controller</string>
<string>o_mi_copy</string>
<string>o_mi_crop</string>
<string>o_mi_cut</string>
<string>o_mi_deinterlace</string>
<string>o_mi_deinterlace_mode</string>
<string>o_mi_device</string>
<string>o_mi_documentation</string>
<string>o_mi_donation</string>
<string>o_mi_double_window</string>
<string>o_mi_errorsAndWarnings</string>
<string>o_mi_ffmpeg_pp</string>
<string>o_mi_fittoscreen</string>
<string>o_mi_floatontop</string>
<string>o_mi_forum</string>
<string>o_mi_fullscreen</string>
<string>o_mi_fwd</string>
<string>o_mi_half_window</string>
<string>o_mi_help</string>
<string>o_mi_hide</string>
<string>o_mi_hide_others</string>
<string>o_mi_info</string>
<string>o_mi_license</string>
<string>o_mi_loop</string>
<string>o_mi_messages</string>
<string>o_mi_minimize</string>
<string>o_mi_mute</string>
<string>o_mi_next</string>
<string>o_mi_normal_window</string>
<string>o_mi_open_capture</string>
<string>o_mi_open_disc</string>
<string>o_mi_open_file</string>
<string>o_mi_open_generic</string>
<string>o_mi_open_net</string>
<string>o_mi_open_recent</string>
<string>o_mi_open_recent_cm</string>
<string>o_mi_open_wizard</string>
<string>o_mi_paste</string>
<string>o_mi_play</string>
<string>o_mi_player</string>
<string>o_mi_playlist</string>
<string>o_mi_prefs</string>
<string>o_mi_previous</string>
<string>o_mi_program</string>
<string>o_mi_quit</string>
<string>o_mi_quitAfterPB</string>
<string>o_mi_random</string>
<string>o_mi_rate</string>
<string>o_mi_rate_faster_lbl</string>
<string>o_mi_rate_fld</string>
<string>o_mi_rate_lbl</string>
<string>o_mi_rate_lbl_gray</string>
<string>o_mi_rate_normal_lbl</string>
<string>o_mi_rate_sld</string>
<string>o_mi_rate_slower_lbl</string>
<string>o_mi_rate_view</string>
<string>o_mi_readme</string>
<string>o_mi_repeat</string>
<string>o_mi_screen</string>
<string>o_mi_select_all</string>
<string>o_mi_services</string>
<string>o_mi_show_all</string>
<string>o_mi_snapshot</string>
<string>o_mi_stop</string>
<string>o_mi_subtitle</string>
<string>o_mi_teletext</string>
<string>o_mi_teletext_blue</string>
<string>o_mi_teletext_green</string>
<string>o_mi_teletext_index</string>
<string>o_mi_teletext_red</string>
<string>o_mi_teletext_transparent</string>
<string>o_mi_teletext_yellow</string>
<string>o_mi_title</string>
<string>o_mi_trackSynchronization</string>
<string>o_mi_videoeffects</string>
<string>o_mi_videotrack</string>
<string>o_mi_visual</string>
<string>o_mi_vol_down</string>
<string>o_mi_vol_up</string>
<string>o_mi_website</string>
<string>o_mu_add_intf</string>
<string>o_mu_aspect_ratio</string>
<string>o_mu_audio</string>
<string>o_mu_audiotrack</string>
<string>o_mu_channels</string>
<string>o_mu_chapter</string>
<string>o_mu_controls</string>
<string>o_mu_crop</string>
<string>o_mu_deinterlace</string>
<string>o_mu_deinterlace_mode</string>
<string>o_mu_device</string>
<string>o_mu_edit</string>
<string>o_mu_ffmpeg_pp</string>
<string>o_mu_file</string>
<string>o_mu_help</string>
<string>o_mu_program</string>
<string>o_mu_screen</string>
<string>o_mu_subtitle</string>
<string>o_mu_title</string>
<string>o_mu_video</string>
<string>o_mu_videotrack</string>
<string>o_mu_visual</string>
<string>o_mu_window</string>
<string>o_trackSynchronization</string>
<string>o_videoeffects</string>
<string>o_vmi_fullscreen</string>
<string>o_vmi_mute</string>
<string>o_vmi_next</string>
<string>o_vmi_play</string>
<string>o_vmi_prev</string>
<string>o_vmi_snapshot</string>
<string>o_vmi_stop</string>
<string>o_vmi_voldown</string>
<string>o_vmi_volup</string>
<string>o_vout_menu</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>id</string>
<string>id</string>
<string>id</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>NSView</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenu</string>
<string>NSMenu</string>
<string>NSMenu</string>
<string>NSMenu</string>
<string>NSMenu</string>
<string>NSMenu</string>
<string>NSMenu</string>
<string>NSMenu</string>
<string>NSMenu</string>
<string>NSMenu</string>
<string>NSMenu</string>
<string>NSMenu</string>
<string>NSMenu</string>
<string>NSMenu</string>
<string>NSMenu</string>
<string>NSMenu</string>
<string>NSMenu</string>
<string>NSMenu</string>
<string>NSMenu</string>
<string>NSMenu</string>
<string>NSMenu</string>
<string>NSMenu</string>
<string>NSMenu</string>
<string>id</string>
<string>id</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenu</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>o_about</string>
<string>o_audioeffects</string>
<string>o_bookmarks</string>
<string>o_dmi_mute</string>
<string>o_dmi_next</string>
<string>o_dmi_play</string>
<string>o_dmi_previous</string>
<string>o_dmi_stop</string>
<string>o_mi_about</string>
<string>o_mi_addSub</string>
<string>o_mi_add_intf</string>
<string>o_mi_aspect_ratio</string>
<string>o_mi_audioeffects</string>
<string>o_mi_audiotrack</string>
<string>o_mi_bookmarks</string>
<string>o_mi_bring_atf</string>
<string>o_mi_bwd</string>
<string>o_mi_channels</string>
<string>o_mi_chapter</string>
<string>o_mi_checkForUpdate</string>
<string>o_mi_clear</string>
<string>o_mi_close_window</string>
<string>o_mi_controller</string>
<string>o_mi_copy</string>
<string>o_mi_crop</string>
<string>o_mi_cut</string>
<string>o_mi_deinterlace</string>
<string>o_mi_deinterlace_mode</string>
<string>o_mi_device</string>
<string>o_mi_documentation</string>
<string>o_mi_donation</string>
<string>o_mi_double_window</string>
<string>o_mi_errorsAndWarnings</string>
<string>o_mi_ffmpeg_pp</string>
<string>o_mi_fittoscreen</string>
<string>o_mi_floatontop</string>
<string>o_mi_forum</string>
<string>o_mi_fullscreen</string>
<string>o_mi_fwd</string>
<string>o_mi_half_window</string>
<string>o_mi_help</string>
<string>o_mi_hide</string>
<string>o_mi_hide_others</string>
<string>o_mi_info</string>
<string>o_mi_license</string>
<string>o_mi_loop</string>
<string>o_mi_messages</string>
<string>o_mi_minimize</string>
<string>o_mi_mute</string>
<string>o_mi_next</string>
<string>o_mi_normal_window</string>
<string>o_mi_open_capture</string>
<string>o_mi_open_disc</string>
<string>o_mi_open_file</string>
<string>o_mi_open_generic</string>
<string>o_mi_open_net</string>
<string>o_mi_open_recent</string>
<string>o_mi_open_recent_cm</string>
<string>o_mi_open_wizard</string>
<string>o_mi_paste</string>
<string>o_mi_play</string>
<string>o_mi_player</string>
<string>o_mi_playlist</string>
<string>o_mi_prefs</string>
<string>o_mi_previous</string>
<string>o_mi_program</string>
<string>o_mi_quit</string>
<string>o_mi_quitAfterPB</string>
<string>o_mi_random</string>
<string>o_mi_rate</string>
<string>o_mi_rate_faster_lbl</string>
<string>o_mi_rate_fld</string>
<string>o_mi_rate_lbl</string>
<string>o_mi_rate_lbl_gray</string>
<string>o_mi_rate_normal_lbl</string>
<string>o_mi_rate_sld</string>
<string>o_mi_rate_slower_lbl</string>
<string>o_mi_rate_view</string>
<string>o_mi_readme</string>
<string>o_mi_repeat</string>
<string>o_mi_screen</string>
<string>o_mi_select_all</string>
<string>o_mi_services</string>
<string>o_mi_show_all</string>
<string>o_mi_snapshot</string>
<string>o_mi_stop</string>
<string>o_mi_subtitle</string>
<string>o_mi_teletext</string>
<string>o_mi_teletext_blue</string>
<string>o_mi_teletext_green</string>
<string>o_mi_teletext_index</string>
<string>o_mi_teletext_red</string>
<string>o_mi_teletext_transparent</string>
<string>o_mi_teletext_yellow</string>
<string>o_mi_title</string>
<string>o_mi_trackSynchronization</string>
<string>o_mi_videoeffects</string>
<string>o_mi_videotrack</string>
<string>o_mi_visual</string>
<string>o_mi_vol_down</string>
<string>o_mi_vol_up</string>
<string>o_mi_website</string>
<string>o_mu_add_intf</string>
<string>o_mu_aspect_ratio</string>
<string>o_mu_audio</string>
<string>o_mu_audiotrack</string>
<string>o_mu_channels</string>
<string>o_mu_chapter</string>
<string>o_mu_controls</string>
<string>o_mu_crop</string>
<string>o_mu_deinterlace</string>
<string>o_mu_deinterlace_mode</string>
<string>o_mu_device</string>
<string>o_mu_edit</string>
<string>o_mu_ffmpeg_pp</string>
<string>o_mu_file</string>
<string>o_mu_help</string>
<string>o_mu_program</string>
<string>o_mu_screen</string>
<string>o_mu_subtitle</string>
<string>o_mu_title</string>
<string>o_mu_video</string>
<string>o_mu_videotrack</string>
<string>o_mu_visual</string>
<string>o_mu_window</string>
<string>o_trackSynchronization</string>
<string>o_videoeffects</string>
<string>o_vmi_fullscreen</string>
<string>o_vmi_mute</string>
<string>o_vmi_next</string>
<string>o_vmi_play</string>
<string>o_vmi_prev</string>
<string>o_vmi_snapshot</string>
<string>o_vmi_stop</string>
<string>o_vmi_voldown</string>
<string>o_vmi_volup</string>
<string>o_vout_menu</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">o_about</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_audioeffects</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_bookmarks</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_dmi_mute</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_dmi_next</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_dmi_play</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_dmi_previous</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_dmi_stop</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_about</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_addSub</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_add_intf</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_aspect_ratio</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_audioeffects</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_audiotrack</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_bookmarks</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_bring_atf</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_bwd</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_channels</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_chapter</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_checkForUpdate</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_clear</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_close_window</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_controller</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_copy</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_crop</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_cut</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_deinterlace</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_deinterlace_mode</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_device</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_documentation</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_donation</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_double_window</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_errorsAndWarnings</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_ffmpeg_pp</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_fittoscreen</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_floatontop</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_forum</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_fullscreen</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_fwd</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_half_window</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_help</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_hide</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_hide_others</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_info</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_license</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_loop</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_messages</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_minimize</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_mute</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_next</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_normal_window</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_open_capture</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_open_disc</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_open_file</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_open_generic</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_open_net</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_open_recent</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_open_recent_cm</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_open_wizard</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_paste</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_play</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_player</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_playlist</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_prefs</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_previous</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_program</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_quit</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_quitAfterPB</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_random</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_rate</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_rate_faster_lbl</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_rate_fld</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_rate_lbl</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_rate_lbl_gray</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_rate_normal_lbl</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_rate_sld</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_rate_slower_lbl</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_rate_view</string>
<string key="candidateClassName">NSView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_readme</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_repeat</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_screen</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_select_all</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_services</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_show_all</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_snapshot</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_stop</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_subtitle</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_teletext</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_teletext_blue</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_teletext_green</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_teletext_index</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_teletext_red</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_teletext_transparent</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_teletext_yellow</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_title</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_trackSynchronization</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_videoeffects</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_videotrack</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_visual</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_vol_down</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_vol_up</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mi_website</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_add_intf</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_aspect_ratio</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_audio</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_audiotrack</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_channels</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_chapter</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_controls</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_crop</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_deinterlace</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_deinterlace_mode</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_device</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_edit</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_ffmpeg_pp</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_file</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_help</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_program</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_screen</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_subtitle</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_title</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_video</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_videotrack</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_visual</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_mu_window</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_trackSynchronization</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_videoeffects</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_vmi_fullscreen</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_vmi_mute</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_vmi_next</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_vmi_play</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_vmi_prev</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_vmi_snapshot</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_vmi_stop</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_vmi_voldown</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_vmi_volup</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">o_vout_menu</string>
<string key="candidateClassName">NSMenu</string>
</object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBDocumentRelativeSource</string>
<string key="minorKey">../../../../../modules/gui/macosx/MainMenu.h</string>
</object>
<reference key="sourceIdentifier" ref="647024034"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">VLCMainWindow</string>
......
......@@ -263,20 +263,10 @@ static VLCCoreInteraction *_o_sharedInstance = nil;
input_thread_t * p_input = pl_CurrentInput( VLCIntf );
if( p_input != NULL )
{
vout_thread_t *p_vout = input_GetVout( p_input );
if( p_vout != NULL )
{
id o_vout_view = [self voutView];
if( o_vout_view )
[o_vout_view toggleFullscreen];
vlc_object_release( p_vout );
}
else
{
playlist_t * p_playlist = pl_Get( VLCIntf );
var_ToggleBool( p_playlist, "fullscreen" );
}
vlc_object_release( p_input );
}
}
......
......@@ -209,6 +209,11 @@
- (IBAction)setPlaybackRate:(id)sender;
- (void)updatePlaybackRate;
- (IBAction)toggleFullscreen:(id)sender;
- (IBAction)resizeVideoWindow:(id)sender;
- (IBAction)floatOnTop:(id)sender;
- (IBAction)createVideoSnapshot:(id)sender;
- (IBAction)showWizard:(id)sender;
- (IBAction)showVideoEffects:(id)sender;
- (IBAction)showAudioEffects:(id)sender;
......
......@@ -39,6 +39,7 @@
#import "playlistinfo.h"
#import "vout.h"
#import "CoreInteraction.h"
#import "MainWindow.h"
@implementation VLCMainMenu
static VLCMainMenu *_o_sharedInstance = nil;
......@@ -560,6 +561,68 @@ static VLCMainMenu *_o_sharedInstance = nil;
[o_mi_rate_sld setIntValue: i];
}
#pragma mark -
#pragma video menu
- (IBAction)toggleFullscreen:(id)sender
{
[[VLCCoreInteraction sharedInstance] toggleFullscreen];
}
- (IBAction)resizeVideoWindow:(id)sender
{
input_thread_t *p_input = pl_CurrentInput( VLCIntf );
if (p_input)
{
vout_thread_t *p_vout = getVout();
if (p_vout)
{
if (sender == o_mi_half_window)
var_SetFloat( p_vout, "zoom", 0.5 );
else if (sender == o_mi_normal_window)
var_SetFloat( p_vout, "zoom", 1.0 );
else if (sender == o_mi_double_window)
var_SetFloat( p_vout, "zoom", 2.0 );
else
{
if (![[VLCMainWindow sharedInstance] isZoomed])
[[VLCMainWindow sharedInstance] performZoom: sender];
}
vlc_object_release( p_vout );
}
vlc_object_release( p_input );
}
}
- (IBAction)floatOnTop:(id)sender
{
input_thread_t *p_input = pl_CurrentInput( VLCIntf );
if (p_input)
{
vout_thread_t *p_vout = getVout();
if (p_vout)
{
var_ToggleBool( p_vout, "video-on-top" );
vlc_object_release( p_vout );
}
vlc_object_release( p_input );
}
}
- (IBAction)createVideoSnapshot:(id)sender
{
input_thread_t *p_input = pl_CurrentInput( VLCIntf );
if (p_input)
{
vout_thread_t *p_vout = getVout();
if (p_vout)
{
var_TriggerCallback( p_vout, "video-snapshot" );
vlc_object_release( p_vout );
}
vlc_object_release( p_input );
}
}
#pragma mark -
#pragma mark Panels
......@@ -1132,9 +1195,6 @@ static VLCMainMenu *_o_sharedInstance = nil;
[o_title isEqualToString: _NS("Fullscreen")] ||
[o_title isEqualToString: _NS("Float on Top")] )
{
id o_window;
NSArray *o_windows = [NSApp orderedWindows];
NSEnumerator *o_enumerator = [o_windows objectEnumerator];
bEnabled = FALSE;
if( p_input != NULL )
......@@ -1148,16 +1208,7 @@ static VLCMainMenu *_o_sharedInstance = nil;
[o_mi setState: val.b_bool ? NSOnState : NSOffState];
}
while( (o_window = [o_enumerator nextObject]))
{
if( [[o_window className] isEqualToString: @"VLCVoutWindow"] ||
[[[VLCMain sharedInstance] embeddedList]
windowContainsEmbedded: o_window])
{
bEnabled = TRUE;
break;
}
}
vlc_object_release( (vlc_object_t *)p_vout );
}
......
......@@ -29,7 +29,11 @@
#import <vlc_input.h>
#import "misc.h"
@interface VLCMainWindow : NSWindow <PXSourceListDataSource, PXSourceListDelegate, NSWindowDelegate> {
#ifndef MAC_OS_X_VERSION_10_6
@protocol NSAnimationDelegate <NSObject> @end
#endif
@interface VLCMainWindow : NSWindow <PXSourceListDataSource, PXSourceListDelegate, NSWindowDelegate, NSAnimationDelegate> {
IBOutlet id o_play_btn;
IBOutlet id o_bwd_btn;
IBOutlet id o_fwd_btn;
......@@ -90,6 +94,19 @@
BOOL just_triggered_next;
BOOL just_triggered_previous;
NSMutableArray *o_sidebaritems;
VLCWindow * o_fullscreen_window;
NSViewAnimation * o_fullscreen_anim1;
NSViewAnimation * o_fullscreen_anim2;
NSViewAnimation * o_makekey_anim;
NSView * o_temp_view;
/* set to yes if we are fullscreen and all animations are over */
BOOL b_fullscreen;
BOOL b_window_is_invisible;
NSRecursiveLock * o_animation_lock;
NSSize nativeVideoSize;
NSInteger i_originalLevel;
}
+ (VLCMainWindow *)sharedInstance;
......@@ -106,8 +123,6 @@
- (IBAction)fullscreen:(id)sender;
- (IBAction)dropzoneButtonAction:(id)sender;
- (id)videoView;
- (void)setVideoplayEnabled;
- (void)showDropZone;
- (void)hideDropZone;
- (void)updateTimeSlider;
......@@ -123,6 +138,22 @@
- (void)drawFancyGradientEffectForTimeSlider;
- (id)videoView;
- (void)setVideoplayEnabled;
- (void)resizeWindow;
- (void)setNativeVideoSize:(NSSize)size;
/* fullscreen handling */
- (BOOL)isFullscreen;
- (void)lockFullscreenAnimation;
- (void)unlockFullscreenAnimation;
- (void)enterFullscreen;
- (void)leaveFullscreen;
- (void)leaveFullscreenAndFadeOut: (BOOL)fadeout;
- (void)hasEndedFullscreen;
- (void)hasBecomeFullscreen;
- (void)setFrameOnMainThread:(NSData*)packedargs;
@end
@interface VLCProgressBarGradientEffect : NSView {
......
......@@ -208,10 +208,12 @@ static VLCMainWindow *_o_sharedInstance = nil;
[self setDelegate: self];
[self setExcludedFromWindowsMenu: YES];
// Set that here as IB seems to be buggy
[self setContentMinSize:NSMakeSize(400., 288.)];
[self setContentMinSize:NSMakeSize(500., 288.)];
[self setTitle: _NS("VLC media player")];
[o_playlist_btn setEnabled:NO];
[o_video_view setFrame: [o_split_view frame]];
o_temp_view = [[NSView alloc] init];
[o_temp_view setAutoresizingMask:NSViewHeightSizable | NSViewWidthSizable];
/* reset the interface */
[self updateVolumeSlider];
......@@ -555,8 +557,8 @@ static VLCMainWindow *_o_sharedInstance = nil;
- (IBAction)fullscreen:(id)sender
{
NSLog( @"fullscreen mode not yet implemented" );
[[VLCCoreInteraction sharedInstance] toggleFullscreen];
//?! [[VLCCoreInteraction sharedInstance] toggleFullscreen];
[self enterFullscreen];
}
- (IBAction)dropzoneButtonAction:(id)sender
......@@ -815,6 +817,477 @@ static VLCMainWindow *_o_sharedInstance = nil;
[o_playlist_btn setEnabled: [[VLCMain sharedInstance] activeVideoPlayback]];
}
- (void)resizeWindow
{
if ( !b_fullscreen )
{
NSPoint topleftbase;
NSPoint topleftscreen;
NSRect new_frame;
topleftbase.x = 0;
topleftbase.y = [self frame].size.height;
topleftscreen = [self convertBaseToScreen: topleftbase];
/* Calculate the window's new size */
new_frame.size.width = [self frame].size.width - [o_video_view frame].size.width + nativeVideoSize.width;
new_frame.size.height = [self frame].size.height - [o_video_view frame].size.height + nativeVideoSize.height;
new_frame.origin.x = topleftscreen.x;
new_frame.origin.y = topleftscreen.y - new_frame.size.height;
[[self animator] setFrame:new_frame display:YES];
}
}
- (void)setNativeVideoSize:(NSSize)size
{
if (size.width != nativeVideoSize.width || size.height != nativeVideoSize.height )
{
nativeVideoSize = size;
[self resizeWindow];
}
}
#pragma mark -
#pragma mark Fullscreen support
- (BOOL)isFullscreen
{
return b_fullscreen;
}
- (void)lockFullscreenAnimation
{
[o_animation_lock lock];
}
- (void)unlockFullscreenAnimation
{
[o_animation_lock unlock];
}
- (void)enterFullscreen
{
NSMutableDictionary *dict1, *dict2;
NSScreen *screen;
NSRect screen_rect;
NSRect rect;
vout_thread_t *p_vout = getVout();
BOOL blackout_other_displays = config_GetInt( VLCIntf, "macosx-black" );
if( p_vout )
screen = [NSScreen screenWithDisplayID:(CGDirectDisplayID)var_GetInteger( p_vout, "video-device" )];
[self lockFullscreenAnimation];
if (!screen)
{
msg_Dbg( VLCIntf, "chosen screen isn't present, using current screen for fullscreen mode" );
screen = [self screen];
}
if (!screen)
{
msg_Dbg( VLCIntf, "Using deepest screen" );
screen = [NSScreen deepestScreen];
}
if( p_vout )
vlc_object_release( p_vout );
screen_rect = [screen frame];
[o_fullscreen_btn setState: YES];
[NSCursor setHiddenUntilMouseMoves: YES];
if( blackout_other_displays )
[screen blackoutOtherScreens];
/* Make sure we don't see the window flashes in float-on-top mode */
i_originalLevel = [self level];
[self setLevel:NSNormalWindowLevel];
/* Only create the o_fullscreen_window if we are not in the middle of the zooming animation */
if (!o_fullscreen_window)
{
/* We can't change the styleMask of an already created NSWindow, so we create another window, and do eye catching stuff */
rect = [[o_video_view superview] convertRect: [o_video_view frame] toView: nil]; /* Convert to Window base coord */
rect.origin.x += [self frame].origin.x;
rect.origin.y += [self frame].origin.y;
o_fullscreen_window = [[VLCWindow alloc] initWithContentRect:rect styleMask: NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES];
[o_fullscreen_window setBackgroundColor: [NSColor blackColor]];
[o_fullscreen_window setCanBecomeKeyWindow: YES];
if (![self isVisible] || [self alphaValue] == 0.0)
{
/* We don't animate if we are not visible, instead we
* simply fade the display */
CGDisplayFadeReservationToken token;
if( blackout_other_displays )
{
CGAcquireDisplayFadeReservation( kCGMaxDisplayReservationInterval, &token );
CGDisplayFade( token, 0.5, kCGDisplayBlendNormal, kCGDisplayBlendSolidColor, 0, 0, 0, YES );
}
if ([screen isMainScreen])
SetSystemUIMode( kUIModeAllHidden, kUIOptionAutoShowMenuBar);
[[o_video_view superview] replaceSubview:o_dropzone_view with:o_temp_view];
[o_temp_view setFrame:[o_video_view frame]];
[o_fullscreen_window setContentView:o_video_view];
[o_fullscreen_window makeKeyAndOrderFront:self];
[o_fullscreen_window orderFront:self animate:YES];
[o_fullscreen_window setFrame:screen_rect display:YES];
if( blackout_other_displays )
{
CGDisplayFade( token, 0.3, kCGDisplayBlendSolidColor, kCGDisplayBlendNormal, 0, 0, 0, NO );
CGReleaseDisplayFadeReservation( token );
}
/* Will release the lock */
[self hasBecomeFullscreen];
return;
}
/* Make sure we don't see the o_video_view disappearing of the screen during this operation */
NSDisableScreenUpdates();
[[o_video_view superview] replaceSubview:o_video_view with:o_temp_view];
[o_temp_view setFrame:[o_video_view frame]];
[o_fullscreen_window setContentView:o_video_view];
[o_fullscreen_window makeKeyAndOrderFront:self];
NSEnableScreenUpdates();
}
/* We are in fullscreen (and no animation is running) */
if (b_fullscreen)
{
/* Make sure we are hidden */
[super orderOut: self];
[self unlockFullscreenAnimation];
return;
}
if (o_fullscreen_anim1)
{
[o_fullscreen_anim1 stopAnimation];
[o_fullscreen_anim1 release];
}
if (o_fullscreen_anim2)
{
[o_fullscreen_anim2 stopAnimation];
[o_fullscreen_anim2 release];
}
if ([screen isMainScreen])
SetSystemUIMode( kUIModeAllHidden, kUIOptionAutoShowMenuBar);
dict1 = [[NSMutableDictionary alloc] initWithCapacity:2];
dict2 = [[NSMutableDictionary alloc] initWithCapacity:3];
[dict1 setObject:self forKey:NSViewAnimationTargetKey];
[dict1 setObject:NSViewAnimationFadeOutEffect forKey:NSViewAnimationEffectKey];
[dict2 setObject:o_fullscreen_window forKey:NSViewAnimationTargetKey];
[dict2 setObject:[NSValue valueWithRect:[o_fullscreen_window frame]] forKey:NSViewAnimationStartFrameKey];
[dict2 setObject:[NSValue valueWithRect:screen_rect] forKey:NSViewAnimationEndFrameKey];
/* Strategy with NSAnimation allocation:
- Keep at most 2 animation at a time
- leaveFullscreen/enterFullscreen are the only responsible for releasing and alloc-ing
*/
o_fullscreen_anim1 = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObject:dict1]];
o_fullscreen_anim2 = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObject:dict2]];
[dict1 release];
[dict2 release];
[o_fullscreen_anim1 setAnimationBlockingMode: NSAnimationNonblocking];
[o_fullscreen_anim1 setDuration: 0.3];
[o_fullscreen_anim1 setFrameRate: 30];
[o_fullscreen_anim2 setAnimationBlockingMode: NSAnimationNonblocking];
[o_fullscreen_anim2 setDuration: 0.2];
[o_fullscreen_anim2 setFrameRate: 30];
[o_fullscreen_anim2 setDelegate: self];
[o_fullscreen_anim2 startWhenAnimation: o_fullscreen_anim1 reachesProgress: 1.0];
[o_fullscreen_anim1 startAnimation];
/* fullscreenAnimation will be unlocked when animation ends */
}
- (void)hasBecomeFullscreen
{
[o_fullscreen_window makeFirstResponder: o_video_view];
[o_fullscreen_window makeKeyWindow];
[o_fullscreen_window setAcceptsMouseMovedEvents: TRUE];
/* tell the fspanel to move itself to front next time it's triggered */
[[[[VLCMain sharedInstance] controls] fspanel] setVoutWasUpdated: (int)[[o_fullscreen_window screen] displayID]];
if([self isVisible])
[super orderOut: self];
[[[[VLCMain sharedInstance] controls] fspanel] setActive: nil];
b_fullscreen = YES;
[self unlockFullscreenAnimation];
}
- (void)leaveFullscreen
{
[self leaveFullscreenAndFadeOut: NO];
}
- (void)leaveFullscreenAndFadeOut: (BOOL)fadeout
{
NSMutableDictionary *dict1, *dict2;
NSRect frame;
BOOL blackout_other_displays = config_GetInt( VLCIntf, "macosx-black" );
[self lockFullscreenAnimation];
b_fullscreen = NO;
[o_fullscreen_btn setState: NO];
/* We always try to do so */
[NSScreen unblackoutScreens];
/* Don't do anything if o_fullscreen_window is already closed */
if (!o_fullscreen_window)
{
[self unlockFullscreenAnimation];
return;
}
if (fadeout)
{
/* We don't animate if we are not visible, instead we
* simply fade the display */
CGDisplayFadeReservationToken token;
if( blackout_other_displays )
{
CGAcquireDisplayFadeReservation( kCGMaxDisplayReservationInterval, &token );
CGDisplayFade( token, 0.3, kCGDisplayBlendNormal, kCGDisplayBlendSolidColor, 0, 0, 0, YES );
}
[[[[VLCMain sharedInstance] controls] fspanel] setNonActive: nil];
SetSystemUIMode( kUIModeNormal, kUIOptionAutoShowMenuBar);
/* Will release the lock */
[self hasEndedFullscreen];
/* Our window is hidden, and might be faded. We need to workaround that, so note it
* here */
b_window_is_invisible = YES;
if( blackout_other_displays )
{
CGDisplayFade( token, 0.5, kCGDisplayBlendSolidColor, kCGDisplayBlendNormal, 0, 0, 0, NO );
CGReleaseDisplayFadeReservation( token );
}
return;
}
[self setAlphaValue: 0.0];
[self orderFront: self];
[[[[VLCMain sharedInstance] controls] fspanel] setNonActive: nil];
SetSystemUIMode( kUIModeNormal, kUIOptionAutoShowMenuBar);
if (o_fullscreen_anim1)
{
[o_fullscreen_anim1 stopAnimation];
[o_fullscreen_anim1 release];
}
if (o_fullscreen_anim2)
{
[o_fullscreen_anim2 stopAnimation];
[o_fullscreen_anim2 release];
}
frame = [[o_temp_view superview] convertRect: [o_temp_view frame] toView: nil]; /* Convert to Window base coord */
frame.origin.x += [self frame].origin.x;
frame.origin.y += [self frame].origin.y;
dict2 = [[NSMutableDictionary alloc] initWithCapacity:2];
[dict2 setObject:self forKey:NSViewAnimationTargetKey];
[dict2 setObject:NSViewAnimationFadeInEffect forKey:NSViewAnimationEffectKey];
o_fullscreen_anim2 = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObjects:dict2, nil]];
[dict2 release];
[o_fullscreen_anim2 setAnimationBlockingMode: NSAnimationNonblocking];
[o_fullscreen_anim2 setDuration: 0.3];
[o_fullscreen_anim2 setFrameRate: 30];
[o_fullscreen_anim2 setDelegate: self];
dict1 = [[NSMutableDictionary alloc] initWithCapacity:3];
[dict1 setObject:o_fullscreen_window forKey:NSViewAnimationTargetKey];
[dict1 setObject:[NSValue valueWithRect:[o_fullscreen_window frame]] forKey:NSViewAnimationStartFrameKey];
[dict1 setObject:[NSValue valueWithRect:frame] forKey:NSViewAnimationEndFrameKey];
o_fullscreen_anim1 = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObjects:dict1, nil]];
[dict1 release];
[o_fullscreen_anim1 setAnimationBlockingMode: NSAnimationNonblocking];
[o_fullscreen_anim1 setDuration: 0.2];
[o_fullscreen_anim1 setFrameRate: 30];
[o_fullscreen_anim2 startWhenAnimation: o_fullscreen_anim1 reachesProgress: 1.0];
/* Make sure o_fullscreen_window is the frontmost window */
[o_fullscreen_window orderFront: self];
[o_fullscreen_anim1 startAnimation];
/* fullscreenAnimation will be unlocked when animation ends */
}
- (void)hasEndedFullscreen
{
/* This function is private and should be only triggered at the end of the fullscreen change animation */
/* Make sure we don't see the o_video_view disappearing of the screen during this operation */
NSDisableScreenUpdates();
[o_video_view retain];
[o_video_view removeFromSuperviewWithoutNeedingDisplay];
[[o_temp_view superview] replaceSubview:o_temp_view with:o_video_view];
[o_video_view release];
[o_video_view setFrame:[o_temp_view frame]];
[self makeFirstResponder: o_video_view];
if ([self isVisible])
[super makeKeyAndOrderFront:self]; /* our version contains a workaround */
[o_fullscreen_window orderOut: self];
NSEnableScreenUpdates();
[o_fullscreen_window release];
o_fullscreen_window = nil;
[self setLevel:i_originalLevel];
[self unlockFullscreenAnimation];
}
- (void)animationDidEnd:(NSAnimation*)animation
{
NSArray *viewAnimations;
if( o_makekey_anim == animation )
{
[o_makekey_anim release];
return;
}
if ([animation currentValue] < 1.0)
return;
/* Fullscreen ended or started (we are a delegate only for leaveFullscreen's/enterFullscren's anim2) */
viewAnimations = [o_fullscreen_anim2 viewAnimations];
if ([viewAnimations count] >=1 &&
[[[viewAnimations objectAtIndex: 0] objectForKey: NSViewAnimationEffectKey] isEqualToString:NSViewAnimationFadeInEffect])
{
/* Fullscreen ended */
[self hasEndedFullscreen];
}
else
{
/* Fullscreen started */
[self hasBecomeFullscreen];
}
}
- (void)orderOut: (id)sender
{
[super orderOut: sender];
/* Make sure we leave fullscreen */
[self leaveFullscreenAndFadeOut: YES];
}
- (void)makeKeyAndOrderFront: (id)sender
{
/* Hack
* when we exit fullscreen and fade out, we may endup in
* having a window that is faded. We can't have it fade in unless we
* animate again. */
if(!b_window_is_invisible)
{
/* Make sure we don't do it too much */
[super makeKeyAndOrderFront: sender];
return;
}
[super setAlphaValue:0.0f];
[super makeKeyAndOrderFront: sender];
NSMutableDictionary * dict = [[NSMutableDictionary alloc] initWithCapacity:2];
[dict setObject:self forKey:NSViewAnimationTargetKey];
[dict setObject:NSViewAnimationFadeInEffect forKey:NSViewAnimationEffectKey];
o_makekey_anim = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObject:dict]];
[dict release];
[o_makekey_anim setAnimationBlockingMode: NSAnimationNonblocking];
[o_makekey_anim setDuration: 0.1];
[o_makekey_anim setFrameRate: 30];
[o_makekey_anim setDelegate: self];
[o_makekey_anim startAnimation];
b_window_is_invisible = NO;
/* fullscreenAnimation will be unlocked when animation ends */
}
/* Make sure setFrame gets executed on main thread especially if we are animating.
* (Thus we won't block the video output thread) */
- (void)setFrame:(NSRect)frame display:(BOOL)display animate:(BOOL)animate
{
struct { NSRect frame; BOOL display; BOOL animate;} args;
NSData *packedargs;
args.frame = frame;
args.display = display;
args.animate = animate;
packedargs = [NSData dataWithBytes:&args length:sizeof(args)];
[self performSelectorOnMainThread:@selector(setFrameOnMainThread:)
withObject: packedargs waitUntilDone: YES];
}
- (void)setFrameOnMainThread:(NSData*)packedargs
{
struct args { NSRect frame; BOOL display; BOOL animate; } * args = (struct args*)[packedargs bytes];
if( args->animate )
{
/* Make sure we don't block too long and set up a non blocking animation */
NSDictionary * dict = [NSDictionary dictionaryWithObjectsAndKeys:
self, NSViewAnimationTargetKey,
[NSValue valueWithRect:[self frame]], NSViewAnimationStartFrameKey,
[NSValue valueWithRect:args->frame], NSViewAnimationEndFrameKey, nil];
NSViewAnimation * anim = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObject:dict]];
[dict release];
[anim setAnimationBlockingMode: NSAnimationNonblocking];
[anim setDuration: 0.4];
[anim setFrameRate: 30];
[anim startAnimation];
}
else {
[super setFrame:args->frame display:args->display animate:args->animate];
}
}
#pragma mark -
#pragma mark Side Bar Data handling
/* taken under BSD-new from the PXSourceList sample project, adapted for VLC */
......
......@@ -63,9 +63,6 @@
- (IBAction)volumeSliderUpdated:(id)sender;
- (IBAction)showPosition: (id)sender;
- (IBAction)toogleFullscreen:(id)sender;
- (BOOL)isFullscreen;
- (IBAction)windowAction:(id)sender;
- (IBAction)telxTransparent:(id)sender;
- (IBAction)telxNavLink:(id)sender;
......
......@@ -186,52 +186,6 @@
return NO;
}
- (IBAction)windowAction:(id)sender
{
NSString *o_title = [sender title];
input_thread_t * p_input = pl_CurrentInput( VLCIntf );
if( p_input != NULL )
{
vout_thread_t *p_vout = input_GetVout( p_input );
if( p_vout != NULL )
{
id o_vout_view = [[VLCCoreInteraction sharedInstance] voutView];
if( o_vout_view )
{
if( [o_title isEqualToString: _NS("Half Size") ] )
[o_vout_view scaleWindowWithFactor: 0.5 animate: YES];
else if( [o_title isEqualToString: _NS("Normal Size") ] )
[o_vout_view scaleWindowWithFactor: 1.0 animate: YES];
else if( [o_title isEqualToString: _NS("Double Size") ] )
[o_vout_view scaleWindowWithFactor: 2.0 animate: YES];
else if( [o_title isEqualToString: _NS("Float on Top") ] )
[o_vout_view toggleFloatOnTop];
else if( [o_title isEqualToString: _NS("Fit to Screen") ] )
{
id o_window = [o_vout_view voutWindow];
if( ![o_window isZoomed] )
[o_window performZoom:self];
}
else if( [o_title isEqualToString: _NS("Snapshot") ] )
{
[o_vout_view snapshot];
}
else
{
[[VLCCoreInteraction sharedInstance] toggleFullscreen];
}
}
vlc_object_release( (vlc_object_t *)p_vout );
}
else
{
[[VLCCoreInteraction sharedInstance] toggleFullscreen];
}
vlc_object_release( p_input );
}
}
- (IBAction)telxTransparent:(id)sender
{
vlc_object_t *p_vbi;
......
......@@ -108,7 +108,7 @@ struct intf_sys_t
BOOL nib_bookmarks_loaded; /* Bookmarks nibfile */
BOOL b_active_videoplayback;
IBOutlet id o_mainwindow; /* VLCMainWindow */
id o_mainwindow; /* VLCMainWindow */
IBOutlet VLCControls * o_controls; /* VLCControls */
IBOutlet VLCPlaylist * o_playlist; /* VLCPlaylist */
......@@ -159,6 +159,7 @@ struct intf_sys_t
- (id)wizard;
- (id)embeddedList;
- (id)getVideoViewAtPositionX: (int *)pi_x Y: (int *)pi_y withWidth: (unsigned int*)pi_width andHeight: (unsigned int*)pi_height;
- (void)setNativeVideoSize:(NSSize)size;
- (id)coreDialogProvider;
- (id)eyeTVController;
- (id)appleRemoteController;
......@@ -172,6 +173,7 @@ struct intf_sys_t
- (NSString *)VLCKeyToString:(NSString *)theString;
- (unsigned int)VLCModifiersToCocoa:(NSString *)theString;
- (void)updateCurrentlyUsedHotkeys;
- (void)fullscreenChanged;
- (void)PlaylistItemChanged;
- (void)playbackStatusUpdated;
- (void)playbackModeUpdated;
......
......@@ -132,7 +132,6 @@ int WindowOpen( vout_window_t *p_wnd, const vout_window_cfg_t *cfg )
return VLC_EGENERIC;
}
msg_Dbg( p_wnd, "looking for video view" );
int i_x = cfg->x;
int i_y = cfg->y;
unsigned i_width = cfg->width;
......@@ -145,6 +144,7 @@ int WindowOpen( vout_window_t *p_wnd, const vout_window_cfg_t *cfg )
return VLC_EGENERIC;
}
[[VLCMain sharedInstance] setNativeVideoSize:NSMakeSize( cfg->width, cfg->height )];
[[VLCMain sharedInstance] setActiveVideoPlayback: YES];
p_wnd->control = WindowControl;
p_wnd->sys = (vout_window_sys_t *)VLCIntf;
......@@ -158,7 +158,12 @@ static int WindowControl( vout_window_t *p_wnd, int i_query, va_list args )
if( i_query == VOUT_WINDOW_SET_STATE )
NSLog( @"WindowControl:VOUT_WINDOW_SET_STATE" );
else if( i_query == VOUT_WINDOW_SET_SIZE )
{
NSLog( @"WindowControl:VOUT_WINDOW_SET_SIZE" );
unsigned int i_width = va_arg( args, unsigned int );
unsigned int i_height = va_arg( args, unsigned int );
[[VLCMain sharedInstance] setNativeVideoSize:NSMakeSize( i_width, i_height )];
}
else if( i_query == VOUT_WINDOW_SET_FULLSCREEN )
NSLog( @"WindowControl:VOUT_WINDOW_SET_FULLSCREEN" );
else
......@@ -340,7 +345,7 @@ static int VolumeUpdated( vlc_object_t *p_this, const char *psz_var,
vlc_value_t oldval, vlc_value_t new_val, void *param )
{
NSAutoreleasePool * o_pool = [[NSAutoreleasePool alloc] init];
[[VLCMain sharedInstance] updateVolume];
[[VLCMain sharedInstance] performSelectorOnMainThread:@selector(updateVolume) withObject:nil waitUntilDone:NO];
[o_pool release];
return VLC_SUCCESS;
......@@ -357,12 +362,7 @@ static int ShowController( vlc_object_t *p_this, const char *psz_variable,
intf_thread_t * p_intf = VLCIntf;
if( p_intf && p_intf->p_sys )
{
NSAutoreleasePool *o_pool = [[NSAutoreleasePool alloc] init];
if( [[[VLCCoreInteraction sharedInstance] voutView] isFullscreen] && config_GetInt( VLCIntf, "macosx-fspanel" ) )
[[[[VLCMain sharedInstance] controls] fspanel] fadeIn];
else
[[VLCMainWindow sharedInstance] makeKeyAndOrderFront: nil];
[o_pool release];
NSLog( @"fixme! we should implement ShowController here" );
}
return VLC_SUCCESS;
}
......@@ -375,8 +375,12 @@ static int FullscreenChanged( vlc_object_t *p_this, const char *psz_variable,
vlc_value_t old_val, vlc_value_t new_val, void *param )
{
intf_thread_t * p_intf = VLCIntf;
if( p_intf && p_intf->p_sys )
NSLog( @"we should update fullscreen state" ); //FIXME
if (p_intf)
{
NSAutoreleasePool *o_pool = [[NSAutoreleasePool alloc] init];
[[VLCMain sharedInstance] fullscreenChanged];
[o_pool release];
}
return VLC_SUCCESS;
}
......@@ -1229,6 +1233,14 @@ unsigned int CocoaKeyToVLC( unichar i_key )
#pragma mark -
#pragma mark Interface updaters
- (void)fullscreenChanged
{
if(! [o_mainwindow isFullscreen] )
[o_mainwindow performSelectorOnMainThread:@selector(enterFullscreen) withObject:nil waitUntilDone:NO];
else
[o_mainwindow performSelectorOnMainThread:@selector(leaveFullscreen) withObject:nil waitUntilDone:NO];
}
- (void)PlaylistItemChanged
{
input_thread_t * p_input;
......@@ -1240,7 +1252,8 @@ unsigned int CocoaKeyToVLC( unichar i_key )
[o_mainmenu setRateControlsEnabled: YES];
vlc_object_release( p_input );
}
else[o_mainmenu setRateControlsEnabled: NO];
else
[o_mainmenu setRateControlsEnabled: NO];
[o_playlist updateRowSelection];
[o_mainwindow updateWindow];
......@@ -1441,6 +1454,11 @@ unsigned int CocoaKeyToVLC( unichar i_key )
return videoView;
}
- (void)setNativeVideoSize:(NSSize)size
{
[o_mainwindow setNativeVideoSize:size];
}
- (id)embeddedList
{
if( o_embedded_list )
......@@ -1748,10 +1766,8 @@ unsigned int CocoaKeyToVLC( unichar i_key )
- (IBAction)saveDebugLog:(id)sender
{
NSOpenPanel * saveFolderPanel = [[NSSavePanel alloc] init];
NSSavePanel * saveFolderPanel = [[NSSavePanel alloc] init];
[saveFolderPanel setCanChooseDirectories: NO];
[saveFolderPanel setCanChooseFiles: YES];
[saveFolderPanel setCanSelectHiddenExtension: NO];
[saveFolderPanel setCanCreateDirectories: YES];
[saveFolderPanel setAllowedFileTypes: [NSArray arrayWithObject:@"rtfd"]];
......
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