[vlc-devel] [PATCH] macosx: Rework VLC Status bar icon for OS X
David Fuhrmann
david.fuhrmann at gmail.com
Sat May 14 01:01:27 CEST 2016
Hi Marvin,
> Am 13.05.2016 um 15:42 schrieb Marvin Scholz <epirat07 at gmail.com>:
>
> This overhauls the VLC Status Bar Icon for OS X
> It completely changed the appearance, using a mini-player instead of
> simple menu items.
> Additionally the current playing track with metadata is shown, including
> it's coverart, if any.
>
> TODO:
> - Use more of the InputManager hooks to prevent unnecessary updates
> - Refactor the metadata update code, it's a bit cluttered
> - Increase accessibility
Cool, thanks a lot for your work.
Could you also update EXTRA_DIST in the global Makefile.am, to reflect added and removed files?
Otherwise, looks good from a first glance.
Best regards,
David
> ---
> .../English.lproj/VLCStatusBarIconMainMenu.xib | 196 +++++--
> .../Resources/vlcmenubaricon/VLCNextTemplate.pdf | Bin 0 -> 3086 bytes
> .../Resources/vlcmenubaricon/VLCPauseTemplate.pdf | Bin 0 -> 3036 bytes
> .../Resources/vlcmenubaricon/VLCPlayTemplate.pdf | Bin 0 -> 3034 bytes
> .../vlcmenubaricon/VLCPreviousTemplate.pdf | Bin 0 -> 3094 bytes
> .../vlcmenubaricon/VLCShuffleTemplate.pdf | Bin 0 -> 3516 bytes
> .../Resources/vlcmenubaricon/VLCStatusBarIcon.pdf | Bin 0 -> 6398 bytes
> .../macosx/Resources/vlcmenubaricon/pauseIcon.png | Bin 455 -> 0 bytes
> .../Resources/vlcmenubaricon/pauseIcon at 2x.png | Bin 1055 -> 0 bytes
> .../macosx/Resources/vlcmenubaricon/playIcon.png | Bin 559 -> 0 bytes
> .../Resources/vlcmenubaricon/playIcon at 2x.png | Bin 1528 -> 0 bytes
> .../Resources/vlcmenubaricon/statusBarIcon.pdf | Bin 6398 -> 0 bytes
> .../macosx/Resources/vlcmenubaricon/stopIcon.png | Bin 354 -> 0 bytes
> .../Resources/vlcmenubaricon/stopIcon at 2x.png | Bin 688 -> 0 bytes
> .../package/macosx/vlc.xcodeproj/project.pbxproj | 52 +-
> modules/gui/macosx/InputManager.m | 1 +
> modules/gui/macosx/VLCStatusBarIcon.h | 7 +-
> modules/gui/macosx/VLCStatusBarIcon.m | 574 +++++++++++----------
> 18 files changed, 488 insertions(+), 342 deletions(-)
> create mode 100644 extras/package/macosx/Resources/vlcmenubaricon/VLCNextTemplate.pdf
> create mode 100644 extras/package/macosx/Resources/vlcmenubaricon/VLCPauseTemplate.pdf
> create mode 100644 extras/package/macosx/Resources/vlcmenubaricon/VLCPlayTemplate.pdf
> create mode 100644 extras/package/macosx/Resources/vlcmenubaricon/VLCPreviousTemplate.pdf
> create mode 100644 extras/package/macosx/Resources/vlcmenubaricon/VLCShuffleTemplate.pdf
> create mode 100644 extras/package/macosx/Resources/vlcmenubaricon/VLCStatusBarIcon.pdf
> delete mode 100644 extras/package/macosx/Resources/vlcmenubaricon/pauseIcon.png
> delete mode 100644 extras/package/macosx/Resources/vlcmenubaricon/pauseIcon at 2x.png
> delete mode 100644 extras/package/macosx/Resources/vlcmenubaricon/playIcon.png
> delete mode 100644 extras/package/macosx/Resources/vlcmenubaricon/playIcon at 2x.png
> delete mode 100644 extras/package/macosx/Resources/vlcmenubaricon/statusBarIcon.pdf
> delete mode 100644 extras/package/macosx/Resources/vlcmenubaricon/stopIcon.png
> delete mode 100644 extras/package/macosx/Resources/vlcmenubaricon/stopIcon at 2x.png
>
> diff --git a/extras/package/macosx/Resources/English.lproj/VLCStatusBarIconMainMenu.xib b/extras/package/macosx/Resources/English.lproj/VLCStatusBarIconMainMenu.xib
> index e146530..77ff9fe 100755
> --- a/extras/package/macosx/Resources/English.lproj/VLCStatusBarIconMainMenu.xib
> +++ b/extras/package/macosx/Resources/English.lproj/VLCStatusBarIconMainMenu.xib
> @@ -1,71 +1,205 @@
> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
> -<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9532" systemVersion="14F27" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
> +<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10117" systemVersion="15E65" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
> <dependencies>
> <deployment identifier="macosx"/>
> <development version="7000" identifier="xcode"/>
> - <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9532"/>
> + <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
> </dependencies>
> <objects>
> <customObject id="-2" userLabel="File's Owner" customClass="VLCStatusBarIcon">
> <connections>
> - <outlet property="nextItem" destination="GhQ-VQ-jtu" id="45X-b4-mHv"/>
> - <outlet property="playPauseItem" destination="9kC-yJ-Gy5" id="laU-MV-Il1"/>
> - <outlet property="prevItem" destination="iHu-rd-8KL" id="IzO-1Q-rtv"/>
> + <outlet property="albumField" destination="SKt-XT-Vki" id="33Z-OU-f74"/>
> + <outlet property="artistField" destination="FnZ-Gr-BKf" id="wl6-Tg-uhc"/>
> + <outlet property="backwardsButton" destination="p8X-zU-PwN" id="y6F-9l-mm8"/>
> + <outlet property="coverImageView" destination="0kw-t4-DcN" id="QmE-0F-ud4"/>
> + <outlet property="forwardButton" destination="NHj-Vf-SPF" id="XOV-fo-CZn"/>
> + <outlet property="pathActionItem" destination="1QM-IB-vK4" id="gbD-sJ-WLP"/>
> + <outlet property="playPauseButton" destination="lvI-lN-t4O" id="kA7-4Q-q36"/>
> + <outlet property="progressField" destination="z3X-aG-Veg" id="wV9-n7-N7O"/>
> <outlet property="quitItem" destination="539" id="xuy-Vl-Ami"/>
> - <outlet property="randItem" destination="lPi-EL-hoN" id="dOE-ib-n98"/>
> + <outlet property="randButton" destination="PaW-Fe-vxo" id="L3x-xm-50A"/>
> + <outlet property="separatorField" destination="za4-8d-tZy" id="Qcx-VE-sZY"/>
> <outlet property="showMainWindowItem" destination="08C-TA-yqu" id="qQR-Ah-T0b"/>
> - <outlet property="stopItem" destination="4Sh-MJ-bSf" id="qBc-qg-d9R"/>
> + <outlet property="titleField" destination="Byt-pH-60l" id="JKP-xq-fIb"/>
> + <outlet property="totalField" destination="wXO-2p-mxK" id="XoY-cx-jzm"/>
> <outlet property="vlcStatusBarIconMenu" destination="534" id="O0F-8Q-FgA"/>
> </connections>
> </customObject>
> <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
> <customObject id="-3" userLabel="Application" customClass="NSObject"/>
> <customObject id="420" customClass="NSFontManager"/>
> - <menu id="534" userLabel="vlcStatusBarIconMenu">
> + <menu autoenablesItems="NO" id="534" userLabel="vlcStatusBarIconMenu">
> <items>
> - <menuItem title="Show Main Window" toolTip="Restore main window" id="08C-TA-yqu">
> + <menuItem title="Loading Now playing view..." id="KRm-PC-DPQ">
> <modifierMask key="keyEquivalentModifierMask"/>
> <connections>
> - <action selector="restoreMainWindow:" target="-2" id="2Uq-Pa-toi"/>
> + <outlet property="view" destination="fDN-Tb-DeD" id="T0n-Z2-HeL"/>
> </connections>
> </menuItem>
> - <menuItem isSeparatorItem="YES" id="t2X-zn-Z4x"/>
> - <menuItem title="Play" tag="74747" toolTip="Start/Pause playback" id="9kC-yJ-Gy5">
> + <menuItem isSeparatorItem="YES" id="hOT-4N-jtU"/>
> + <menuItem title="Loading Player view..." id="w9T-bW-Qom">
> <modifierMask key="keyEquivalentModifierMask"/>
> <connections>
> - <action selector="statusBarIconTogglePlayPause:" target="-2" id="py3-sd-ST2"/>
> + <outlet property="view" destination="v97-Ct-Yqs" id="mXc-iD-4sJ"/>
> </connections>
> </menuItem>
> - <menuItem title="Stop" tag="83838" toolTip="Stop playback" id="4Sh-MJ-bSf">
> + <menuItem isSeparatorItem="YES" id="dNe-Wu-c6x"/>
> + <menuItem title="URL/Path action" enabled="NO" id="1QM-IB-vK4">
> + <modifierMask key="keyEquivalentModifierMask"/>
> <connections>
> - <action selector="statusBarIconStop:" target="-2" id="unT-d5-vlC"/>
> + <action selector="copyOrOpenCurrentPlaybackItem:" target="-2" id="I4p-PQ-kPp"/>
> </connections>
> </menuItem>
> - <menuItem isSeparatorItem="YES" id="b5S-aL-b79"/>
> - <menuItem title="Next" toolTip="Next track in playlist" id="GhQ-VQ-jtu">
> + <menuItem title="Show Main Window" id="08C-TA-yqu">
> + <modifierMask key="keyEquivalentModifierMask"/>
> <connections>
> - <action selector="statusBarIconNext:" target="-2" id="VZh-xB-5IC"/>
> + <action selector="restoreMainWindow:" target="-2" id="2Uq-Pa-toi"/>
> </connections>
> </menuItem>
> - <menuItem title="Previous" toolTip="Previous track in playlist" id="iHu-rd-8KL">
> + <menuItem title="Quit" id="539">
> + <modifierMask key="keyEquivalentModifierMask"/>
> <connections>
> - <action selector="statusBarIconPrevious:" target="-2" id="rNU-Dq-Sot"/>
> + <action selector="quitAction:" target="-2" id="OJL-0Y-e8i"/>
> </connections>
> </menuItem>
> - <menuItem isSeparatorItem="YES" id="Dn5-wA-WfF"/>
> - <menuItem title="Random" tag="63636" toolTip="Randomize play order" id="lPi-EL-hoN">
> + </items>
> + <point key="canvasLocation" x="354" y="328.5"/>
> + </menu>
> + <customView id="fDN-Tb-DeD">
> + <rect key="frame" x="0.0" y="0.0" width="247" height="70"/>
> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
> + <subviews>
> + <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" id="0kw-t4-DcN">
> + <rect key="frame" x="6" y="4" width="48" height="62"/>
> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
> + <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="vlc" id="7Ns-2s-EgU"/>
> + </imageView>
> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="Byt-pH-60l">
> + <rect key="frame" x="60" y="42" width="183" height="17"/>
> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
> + <textFieldCell key="cell" lineBreakMode="truncatingTail" allowsUndo="NO" sendsActionOnEndEditing="YES" title="The Fox (What Does the Fox Say?) to this very very" usesSingleLineMode="YES" id="Fo7-qA-sCC">
> + <font key="font" metaFont="system"/>
> + <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
> + </textFieldCell>
> + </textField>
> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="FnZ-Gr-BKf">
> + <rect key="frame" x="60" y="27" width="183" height="17"/>
> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
> + <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="by Ylvis" usesSingleLineMode="YES" id="TWt-2V-iGT">
> + <font key="font" metaFont="system"/>
> + <color key="textColor" red="0.34105039267015702" green="0.34105039267015702" blue="0.34105039267015702" alpha="1" colorSpace="calibratedRGB"/>
> + <color key="backgroundColor" red="0.021842277486911033" green="0.021842277486911033" blue="0.021842277486911033" alpha="1" colorSpace="calibratedRGB"/>
> + </textFieldCell>
> + </textField>
> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="SKt-XT-Vki">
> + <rect key="frame" x="60" y="12" width="183" height="17"/>
> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
> + <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="on “The Fox”" usesSingleLineMode="YES" id="IKI-Pl-Iji">
> + <font key="font" metaFont="system"/>
> + <color key="textColor" red="0.34105039269999998" green="0.34105039269999998" blue="0.34105039269999998" alpha="1" colorSpace="calibratedRGB"/>
> + <color key="backgroundColor" red="0.021842277489999999" green="0.021842277489999999" blue="0.021842277489999999" alpha="1" colorSpace="calibratedRGB"/>
> + </textFieldCell>
> + </textField>
> + </subviews>
> + <point key="canvasLocation" x="370.5" y="-52"/>
> + </customView>
> + <customView id="v97-Ct-Yqs">
> + <rect key="frame" x="0.0" y="0.0" width="247" height="45"/>
> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
> + <subviews>
> + <button verticalHuggingPriority="750" id="rih-mA-gAq">
> + <rect key="frame" x="32" y="1" width="184" height="14"/>
> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
> + <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" alignment="center" transparent="YES" imageScaling="proportionallyDown" inset="2" id="RbD-Js-cLU">
> + <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
> + <font key="font" metaFont="system"/>
> + </buttonCell>
> <connections>
> - <action selector="statusBarIconToggleRandom:" target="-2" id="DyP-Hd-KHG"/>
> + <action selector="toggelProgressTime:" target="-2" id="S3e-vr-guH"/>
> </connections>
> - </menuItem>
> - <menuItem isSeparatorItem="YES" id="p96-c8-lBM"/>
> - <menuItem title="Quit" toolTip="Quit VLC" id="539">
> + </button>
> + <button id="p8X-zU-PwN">
> + <rect key="frame" x="76" y="20" width="28" height="24"/>
> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
> + <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="VLCPreviousTemplate" imagePosition="overlaps" alignment="center" imageScaling="proportionallyUpOrDown" inset="2" id="PSI-Wi-u0R">
> + <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
> + <font key="font" metaFont="system"/>
> + </buttonCell>
> <connections>
> - <action selector="quitAction:" target="-2" id="OJL-0Y-e8i"/>
> + <action selector="statusBarIconPrevious:" target="-2" id="kAL-hK-8qL"/>
> </connections>
> - </menuItem>
> - </items>
> - <point key="canvasLocation" x="328.5" y="267.5"/>
> - </menu>
> + </button>
> + <button id="lvI-lN-t4O">
> + <rect key="frame" x="109" y="20" width="28" height="24"/>
> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
> + <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="VLCPlayTemplate" imagePosition="only" alignment="center" alternateImage="VLCPauseTemplate" imageScaling="proportionallyUpOrDown" inset="2" id="nqu-wV-vI1">
> + <behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
> + <font key="font" metaFont="system"/>
> + </buttonCell>
> + <connections>
> + <action selector="statusBarIconTogglePlayPause:" target="-2" id="K38-Dr-lNS"/>
> + </connections>
> + </button>
> + <button id="NHj-Vf-SPF">
> + <rect key="frame" x="141" y="20" width="28" height="24"/>
> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
> + <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="VLCNextTemplate" imagePosition="overlaps" alignment="center" imageScaling="proportionallyUpOrDown" inset="2" id="BIa-Vy-yD2">
> + <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
> + <font key="font" metaFont="system"/>
> + </buttonCell>
> + <connections>
> + <action selector="statusBarIconNext:" target="-2" id="4I4-wu-R5u"/>
> + </connections>
> + </button>
> + <button id="PaW-Fe-vxo">
> + <rect key="frame" x="179" y="12" width="18" height="21"/>
> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
> + <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="VLCShuffleTemplate" imagePosition="only" alignment="center" imageScaling="proportionallyUpOrDown" inset="2" id="VEm-qG-2cc">
> + <behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
> + <font key="font" metaFont="system"/>
> + </buttonCell>
> + <connections>
> + <action selector="statusBarIconToggleRandom:" target="-2" id="IHE-JL-EfK"/>
> + </connections>
> + </button>
> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="z3X-aG-Veg">
> + <rect key="frame" x="18" y="0.0" width="100" height="17"/>
> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
> + <textFieldCell key="cell" lineBreakMode="truncatingTail" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="right" title="00:00" usesSingleLineMode="YES" id="CLT-p2-bxf">
> + <font key="font" metaFont="system"/>
> + <color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
> + <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
> + </textFieldCell>
> + </textField>
> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="za4-8d-tZy">
> + <rect key="frame" x="115" y="1" width="17" height="17"/>
> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="center" title="/" usesSingleLineMode="YES" id="y3P-oA-eTa">
> + <font key="font" metaFont="system"/>
> + <color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
> + <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
> + </textFieldCell>
> + </textField>
> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="wXO-2p-mxK">
> + <rect key="frame" x="127" y="0.0" width="102" height="17"/>
> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
> + <textFieldCell key="cell" lineBreakMode="truncatingTail" allowsUndo="NO" sendsActionOnEndEditing="YES" title="00:00" usesSingleLineMode="YES" id="vF8-Z8-vhW">
> + <font key="font" metaFont="system"/>
> + <color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
> + <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
> + </textFieldCell>
> + </textField>
> + </subviews>
> + <point key="canvasLocation" x="370.5" y="100.5"/>
> + </customView>
> </objects>
> + <resources>
> + <image name="VLCNextTemplate" width="128" height="128"/>
> + <image name="VLCPauseTemplate" width="128" height="128"/>
> + <image name="VLCPlayTemplate" width="128" height="128"/>
> + <image name="VLCPreviousTemplate" width="128" height="128"/>
> + <image name="VLCShuffleTemplate" width="128" height="128"/>
> + <image name="vlc" width="512" height="512"/>
> + </resources>
> </document>
> diff --git a/extras/package/macosx/Resources/vlcmenubaricon/VLCNextTemplate.pdf b/extras/package/macosx/Resources/vlcmenubaricon/VLCNextTemplate.pdf
> new file mode 100644
> index 0000000000000000000000000000000000000000..f619e27862e50dc318ee889f1d396b63f8a8991a
> GIT binary patch
> literal 3086
> zcmb_edu$s;8gJs`QP+^t!s*IUG;A7 at D6D69{oIx9Ch^9QQ<4V9Z30Qao857;bnW%6
> z*NPJb`iMxM(DLYA(Vco#)pBqWh|(%m3DD5el3r<PPrRibMJ>l69tGW1fH<zqZtU23
> z^ymrvhdrM8=9}O5`<`XZe2Ap&9&6dTvv2&(>Hri_yY934e6Rr}y7eBw;GHlG$%>9N
> z7*Yfs at kmr91e*X2!$P7PwNrowoq>QgrE5rtTQl#A(P+b1{RuKgN26oMt17h;ZR5tZ
> z8^h5RqoaQvJvMp}90reV?dUl3tGQ<mt(-qFa%A-C9q`lDuXllKp4++em*tjE$ZF-0
> zj^;@5&JSkozPGQwX!G$Ni?l&n^9$DUUQzXMb)rdTB5-Wkwl`lq83m-}$QQOc+tao!
> zw!^lgwskhPdboIS&S0fwY{k157OcAPEq%_i^j6E!;_Y7$Lk&avkZow*l?%7`RGxHh
> zX65LfmQ_zKTWu?PaQ+Jy=giwM at 56w|xUZbG_)BK16(yvsVR&V5V=!X=Qf}kWSh}at
> z=DGxJg*0^@8 at Z;q##VP~;4c|^)mObrYjx3^vqp**ojmYr^<Ls7?(2d5%<$J+L#O{p
> z{rNeoZ_QKJEjgrzn_fBFz2l~r*7ra2{HE_@@9upIPkhAJm3&M*dht(pY~C`ukqO at E
> zyvuSba>GOKe7+%2ssYP%BMf{7a+>nyjG(E!6}l!QlSl#;F+oY8N-GRv*XpVUDq4^x
> z$3RUiCMRUQ51&M2T|uA%E=?gV1yQrC2|DCaYPqf^;j)Hc6Uyij6i*tV(}a5MNhy}o
> zC#wk_?}7 at RV<_59xo8LFb~+hH6~&ZOR5_MwRHYviY1ULJEh3B!$Fd at KRW<YVfVES0
> z7b$~|ibg>MOIko1NmF(fxSbu9l~(M9tmo*QH}ers)28nteMtlxkuFGrF2I&_mu_sd
> zH8$j3=v$mg3gU94gD%u9C;Y_ukpl#fB|p*XYNQ&ILDVDP(XXMF{-%i7zg%P`VsXF<
> z at W+?oGVx>_YX_OQl1OnGKOx{yLL6Qj+mIL+#G;xM<HCF>D~SL3i5^`~auD|R_S$<L
> zc2(<!G|RG(Vj#niSb|LTC3GP}CQ_vnda|0ZXGBd->X>_AXcoHEwC*Q}9FBOhv2o&o
> zM9OZWvWsdQW`rc9?G%j1^Wes9G462niIgrRL{!fQ(rH=ZoQ$W2rR!+Y6=Eoo_c&_F
> zpvM&?YaQ;I5bx!AH}CR6%);cmCOw8)gCz5iSH*N3CG?zPp7z$#4v&XqS(k^TsJb8-
> zWF2mjrJc33H|XIh)|*pYaCbtn4;pqC at Q`ErvKji{{1h-gZUbi~4>IC7V8l5|xk%a(
> zq1>F)$(g~<QIv_eP;vrqRte4oIo5YMN(v;WD#@mCL{*i*<V-GjU)9X>sdsa^a9I$t
> zd1J~>DEf)a<H|8J^Y{QqrejK2;$1FR8v-+whG~_d(g!Eq`5AHJ^v>q&q?E$XWoAa6
> z;j$$-U{+ugS$^;5LMDk5xRPm2F)N8ALZl!g;ZhhHJ%v<B<aDFp=X1u)R3oEm6n*k;
> zHlGyPs4bj=X9YizAte+O(uz(5{-2I99yy9U`GN7>DewB=bc~k_yzv8EUB?yUB*@j}
> zfHhy;aj)<bno+y)YVt5(HVd<nx)^$*sT7P+W*Z6O7NV%#uvzFvDLgG1BULV)fZ2k=
> z`If}y+i-RUqn+lB8HO-Z`;xBvTJ$&`$eegi(^5KM=zNdLyub9}SFD4SZRq^{>tC#C
> zFW+<3SKEKh42kcael_^Sdz;s78D9PJ_jfNCE1o^@pB4Y*XO+%gbltjDd)6k;5QO}j
> zIsTr~@(X-P`M}eC$z69Y55l at fsx~aVX=Tmn*aAO%_VK3uQL=1s(bZ4DH#VgYo~}l_
> zK3ntmf3F?sZ#_ at h9=<lycHy<#KR$Z!w})<gX4~=k<l2X-KI`A|=`P{szD2eBF800M
> z{rWAN?)mP7d+x;tzAv8hRNa>|aBP at wa_sR;P at EfJaNoWZFKuBIgRSi}o?)3z*dq5M
> zK)YdBRdqlc9ty+yL`((d+=JJAyU!g8;ikg4y=*W<^InQ!LvELw4N<%|RKwI#fghLX
> z#IuhvA2$nHJcYppRV5uyq<{-HYe<qsV~C=eKp;0?dl|FW;jcoU-EeI8?3LAX`BMi5
> zD}LYp;Qn}z1mBJ>y=qt}IdbzqU-*M>sHAkXb4OeGzICnNT*2J9Ui;VV-`(~=*Y2|b
> v-hTZy|H6OleQWOr;r5o$H$~3F^Uh5t6*p^5&uA!SWjs!&wXCdeNyz#G?)T+c
>
> literal 0
> HcmV?d00001
>
> diff --git a/extras/package/macosx/Resources/vlcmenubaricon/VLCPauseTemplate.pdf b/extras/package/macosx/Resources/vlcmenubaricon/VLCPauseTemplate.pdf
> new file mode 100644
> index 0000000000000000000000000000000000000000..fe973eef0eef39cf43f0adcaee91235b59907a67
> GIT binary patch
> literal 3036
> zcmb_eZEzDs7%r`Y5P~3#4yfoEsBNcScJD5i^fF0knlxIbEio<7u?2g*+q4IlyLh=w
> z(~9!Zp- at 4@5k~mqbR2N>hmKms4;ZZ|SU?1<gMgyo=Quc`j?CyN;@%}``i0_Xek7aS
> zci(;X+4p^)w=f(Gk(AwKDg5foqaRur0upM=a*M|Us*%#Fw-Gd+iGYwK>qrA3nb%Pe
> z395)dEkS_ at ue72@NKnL5pU;xeHN?j(snbGpbM-*g2V|6LZXP&NTB1$UHf`FlDbl>E
> zzyDDG;r at NZe&X@%O-*NKO+Wk2>X|F|9O$3)6ga>3{T5>C3p;n-SXA&GSuQ`;6t2(T
> z`FY-p_jOcF*m9(;K-?&<zlJL~HKBZWxl$|9^<ZG}lOOFp)=ZEE2Y#?tTA#IUv+lPZ
> zwDwrJ^4<AeQ at TnD23DQCID5^-->9z&7Tr;BFu(T)TX%K0-fiukF>y|BTgfrU7EWsJ
> zt6TH*;<eTZ>t?=jdCH89GtT)0+Bq?A{*Ux_3sS_)#qh}B#$d$!g-&D97&^z$#$JK8
> z;WQ1lPjiOv2H()GL56+#g)ltP2Nyx-Aj7=sh(HH at j9FZ~;Ohm0U(k- at eGu*=r{yt|
> zuKQ&yBI7Uv2J6ZKqF at e@uJQ3W5{cp{FDFom1qARj>8eH)*C9=c68>mZQY5_tuhdJr
> zjEG{eD1o#DKw(Mabr3{}6}lP+i>m`+KAAxEC>A&3pcb{;<6<=HP*Rm3o+XNdZW>Zf
> z$Wjb+GA<gHLb?dTB5YTqivMI1)>JVmAPf!%rYyCThJ#fEXNPu{l!&I{8eSk4))5UP
> z1??Q+bTpNeSTLoTXP~lAlM7#pG9RM8BaT1~(s_~Bc~F;Z(T$0Qn(Ewpc;=_#ys!f4
> zL<?$_6tC^Vp0{j-BzkR2*cw<951=;b?oJKWb=KAkoht-Rw9WTf2>kJ++^JYRhP at N1
> zn5-n+DX)#kae>@;Y)k`N+7O#+V$>Z8hBAiupV!u=>v1;#?d|RMcE+x1t$^Y<4nP{v
> zG>I+9M2DjDDN;$y9rBa$gr7#xq_~c`Ck)Sgi<;EEHd_`)EM8MHbbykuo2cx98Ural
> z4k$YWu~-gV`Yy&Eca at URc||}~L0>W{iEak^D>)X at q$@yIkQ~c$Bu6<Yva*bI(F{ei
> zY#H<b%)-dMCOw8*gCuh?s0zs#QuM52iVbppe}E$WoC}hb4o3wUpj;g3qRLo?fet at M
> zb6Lm3_6|Ar0OQ`nc*rt+)eQYTKf at SL-@$EW4>ID|XT&)PS(0Mvq0`N{aNy%$cf&Ll
> z!!3vKW}M(mkfI$|<7AlSXeXIGu2)srH!_t?#?t4jnz=rDZ#EaM3PL7tOxqzx|B-oI
> zImTxmFW|^zMujDwb!TgXZ=BLFrZSXxz=%EnBW|4DnVcPwQuw&k_{dZ4Obzy#CD=rk
> zoBO|ziNX-Bcv6$iN+JpX$;e2!1cpY9B2^UJx>50SIb&w3kx_nGA32-JCs{ITi(AIR
> z at 3o~!5k>i=tlND5N;1-+BTFMsNY9Qs*aOCbykg{~7jSt^JH}a%EzCYkuDoNh at Y*z^
> zc;nGXX*bovP*RGe=^<4a))bjK62KZFtF0i+x1t2 at eT)Vvn@@zPL6Mv$aXBH*bX1hX
> z+%Zl|WqM!Ovb;`@;r7abyDlxE6Eu|*snqF3o8Pu{L2LJg2Or++Z!GG&_NU&P>2BfV
> znRf#_PHpMgwtMZHm+qZCkUx3lAFKWh=FOcv at A{rKeH-FuZ8mAa6mQ$yqKm<4MJu1}
> zi0`^*MF3PjR=RP{Evx-!qO-l=`K`6DH<N{3^Cs;8M;}e at J5!E!eZT&*UpDONTyg<g
> zH(!@(xcJ^(-yYm||2sE5_vDe8<c3E|zwg|3eiwgh$GnPHFL#`1egF1Hm;L^MbNc0n
> zF6B>ort-&eI5w_ta_q{rE7=YP3-^_HX^5aGSkg%0j+9;s>ZDFYP)-n0Rh^)W7m9!?
> zC8`o;=Yz+=Mo)ltRJ#0SPJaNa2;+y25Y0hHMTnvT6(JaM`u^EsDeiuZZa2(pu>=Me
> zP~~JyNf0auYe<v?qm80ypD)`jm(ix!;jiIucEjNpC$BD_9z6b5SML*z>!vnz?`Y_G
> z{lPi2PIj+*ruV$^^DN({y!M`!M?Rgn>|D`6D!lbj(aD#7U9*34*WNqtdF{l at HxE9r
> m at DuKpl3nX>EB$!JOJhmJYOU!h4Mi=qlXF-K3o93fEPnwfp3Kt#
>
> literal 0
> HcmV?d00001
>
> diff --git a/extras/package/macosx/Resources/vlcmenubaricon/VLCPlayTemplate.pdf b/extras/package/macosx/Resources/vlcmenubaricon/VLCPlayTemplate.pdf
> new file mode 100644
> index 0000000000000000000000000000000000000000..7503d688f30d38abf94d9f23c1dc1f13fe863c45
> GIT binary patch
> literal 3034
> zcmb_edu&rx7>CX9=*mNg1VqTSFt<5x&po%VwYFtlZznU`=pH=6hW75>)9u3Tz4i7s
> zYZnB@!W>UALWF;S5FqjgM8IGWA`@Smh at ujML=*)jMgwRh(J11%ckS9e5RCMX_Vhd7
> z`OfeBzGr at rDJP-XVaUI7`IFBK7J?$=rlkhA8&o2xS#2R`EU5+Mf~X<|l#8s27{tju
> z0 at VZrwXD>P8Ylu1OT1n~OjQsYF(fW<p-^Q{#m8hAhC)4Oii?y9%7zVH8)`!<ySqQ^
> zKHYtac#n8_TVvy;sS_`~vug74<L`Hm*$sYL{ZSJ!?zKI8rWEA<NS2B(H3sW*_Ixwq
> z(6h;kk(<x7<nrtJ7anltemS!AXsJ{!(Dk5a!H#n$&V~pw_x)?efN{TZtMNT!uW_x>
> zS$Z_5Bd?<<w`b+~o738F{sFJ#&VMYoH)q#1Q)gwT+G*^ZG-}4KmZG!P%}yb7q^^D6
> zg4M>6YbL*WJ8#nZN#A-o+CFN;oE!8u1CsdE!|+PuMq@<(rR>_KwzLnS&2|UcvT6Ff
> zb%H%O7yLk5Uq5HD)Kiw4p6?HzwH&olHPjbJC<k5B)Bel2jg`L{H$Jf{XIi7MxN!th
> z at _L6t(r(jm*h<ofAeDinDr_{0c%m at OiZN7V0DkNzRaS_?I;03;!WRw;lAtE>PQ9Rt
> zh$sZ}V at Qbs6ciLz1q_NUQ{^aFQ0WhfY_c9jqFNkOqgHd252x)3vczC1QOLMx3fd_f
> zv`}{1NyB1_E}*CatXC!TcT))}G9Tv<#)bn^6q<^IOa<XIQ)U|}5RHXZEJw_%BNma6
> zGCK*owXvwkfGJJ60j6D(310|xN7N^y2vi}J<yn;lb at 3)u6D+E#%=p7SClO`2Wk at BO
> zP_rO;OxKT}G!X*tF)g%JQB_etY7yqPDX6Zkx}IxW#yNS at 9It`EA9uo)h(sgUI+2Ko
> zQp}a`m{=Sa$c5LM7?}DLv8uv{UA0VkN)i9_m|9dd>H?s(wbk5eG0RFbfKI0qP&A-v
> z5^IpLq@=P5Qi{#$x0AAjJ;NzNRK?sAnq{_0j;kJ%DUBl%t*Yw3K#G}lRAx?&fCL)_
> z&`g0yBm=JRE!r7Zg%nd+i9;2PHy#&w7Ysm(vH2Mi+Wa(W3D7>$=W|e`-O6AeQx;3W
> zNxK1NVc=Pv9?h&qlD^5vTs(p#HEq~g?g&^N<qT=3?U3|2Yz~t0`ylCumU8HD1Z-tx
> zj<n&dv;BtMKznx<4{4_FnW2B at CyVjEH@NiVL0TMpwKyj!8wqjp+Fi8Mr3br<qIAUB
> zn*DfFMsOww;pDv-$<iEbB$dYXvMhQBW^&g3vZC(~KAX;kdxDV48(p{G(Enr}SB~MC
> z#~U~@ErY at mOI_*O;2owk45<u7ZZP1?eZ-B^JC(BoQVL&}7#?}Tl`6qry#njVGP3)H
> zjOY4sMdOO7R}!8BNJLt~#V|BDh*X|)sanC$<cyxFT1NRqb)YnrPokjJ7MF+{zsHmy
> zc@$>jqH6N~myXdFIifJ|f<Eb>d);6t#ybXH-v+L(eTH!or0cTRkg4vtS9nZ{R=e?P
> zU}x8xh1N%*jfVYAC2J<q+lU{x5K(RhLADvi at aUt>N9lAT^cGZ`X-UpZ8%_;W(5jyp
> zW}?!q&udy*r$+E}WyM365>p8pW_ncO!u(Bd8#*Xs=k at 2;o$xgj92xz~uIY3qcmCqL
> z{_S6GUc2?^>bGt!p4O8ycKKf`|7J$a8aw;Jwe3f`qL)l2;pse2%dCQ%%!GpF`;*bV
> zHOu at U@KW*m8IP>;T?|k2fP-7AkA=wmj at e_jgHK+JpSoCz_Wu0B*S~cgZ(DesGHx25
> zSakD)r>^#%dhVTv59~NIne5tF{BzsZpZ2mdle5d-xSjl>`J+c)eCE%O?GtaWxRsOl
> zYT(8&9Ba?lId(YuDNfHXxNqNymqoQG3>G#(Jdn~$K%LNr2xtejvaAwN^H43Qkis&d
> z&pmj}G`JZjW3f=a0BtK{N*pB&RpMYutahh`_Lo`gwleSCHJ0GnM;ms7tP+V~aDG{g
> zN2C~G13?Ax0;dg8koJ1h!*U7KdmaAD_Sr+H4~<<_I+6MGWXG;o8rB?(PhERp>V@;|
> zq3Kh0uReIZm;0T{`6_>%O_`opvy-^&t9g89==67^r#w0S*Tc-Wi$9ktuX`d_&+XeX
> eb478_q(ehF#l2cl6AB6&X#6}wetuwHx#1t1^UI3>
>
> literal 0
> HcmV?d00001
>
> diff --git a/extras/package/macosx/Resources/vlcmenubaricon/VLCPreviousTemplate.pdf b/extras/package/macosx/Resources/vlcmenubaricon/VLCPreviousTemplate.pdf
> new file mode 100644
> index 0000000000000000000000000000000000000000..8d554c18dab6cc0f2aacb9f83fa156d45bcf72a4
> GIT binary patch
> literal 3094
> zcmb_ed2Ab18gFB+I_^RfSkbb;tlN-;Fn%**du)$vH?GGnS>+;e549<q$;`7eWIQv>
> zjENIv=@Ai9nuT&yg<Wk`RSmoS1D2|*prwdSTS`-CDZ4_5LxCbLp;iqDia59XW at 5+A
> zQ7BschyDEC_rCXizwi20G_!G>bouNRAAWG^KXx}pU`oeb_FxdyLpf!1ViekG0dY|>
> zpa$X+XFwM6iU2_)MuHYjPQmpAMq(SnVY_Z<kW1UMZ}aW#^<#Cf;z_c-ee7gSwRW{O
> zG&DHW(!OzY^ySf4Mh|00u}2?oYdd}YHK&hkD(^e^(&$xtz?m&4I<SS$?A`n8O53M+
> zt at LnPbE0JLd-L}HzNc>f_LH49VViLOWdYk;^J_<H<wlW8fU(uPUVr|zb_}<@bj}fT
> z>~rjJ9CaLbY;^=`M at srj`>SnZ8{a&?c=P#h$PaC+Zm}IN*?rDAP(NS{I0nkDxN&!9
> z^=qE(0kQo+>*gm{Z*k1Oul%_SrDfa7-VgH>eZ{=xpHYw7p)BMaLn{*-6A|l|pv^;b
> zNza1KdlA@*VcIZsaA65~?PdC!{p6t|U%jAQer at f-zLMK_Z(Q(RMdhM%oyk)>yN-SE
> zPTO#o|A9Ts)^7Kw(FK2H7yW&F at K)6}GJ0UVDP8~ax|JjUSR$`{_J+WP=Q6Z2a^1SJ
> zYVt47Jd$YYlmGmM?Wvn at zH_z@rg^5}B;m{ZKoSKf42 at G&C}34dPSRnu9Yj%N4MoGM
> zTA?N;u}Cs0%A(POP7<OaL97a_(xIjU*eq(C0a&Pa8Hx&4*GHQ*c#o)L^aM<+X7)6~
> zZkH+~^EyREX3;KI#WEB@(u9|E6SRkPQ#AxtNf4Dtu0augN~Bp+gbWXneJGtJv7 at G$
> zt-}H?!sW$9tgWhn<FTezY%NX_t^h`R+N!JVC=j{ek@<iYlAa{3 at FjXw2pXWl37o-!
> z)=Y<CZmeynFGMl8Jgahi7c{UAm=fiXbK>B?oR}ztoNK%dM1vZIo#O4i8f@)tOz^#3
> zd_Zt658E;H31*pWT1_MEST-%mI+G1KIh0M1L2GjxI41>>s3s(t7B-#}ME^q0PQy?c
> z0J^)oUEOY%qNM;C2m}B at 0gA$r1g`hU2A9QUed&~*oF)_<UK3RVVUL-bxeg^`gq+U2
> z9ci_pVd?={cUe}scqI+8oC-)60n+J$ag)B7cbGa^H#nJxb!<435d|jhcl+XzxE~Mr
> zSI{_1u at oNh5pFyliA20!Uo7qm_=5nUF#WCtkEzxK$vR{eK9h#BkylLkh^U{S{5Z+d
> zEbb<W6*%pW_;A)oQqfq%L&a%NUUAXgDaAox`dx%W9_dR)=*RIXLVVH(#ws9a=5g4}
> zbDZ$vq&q>-jE7{bWM>G%vbb1s%HEt3R0(3T=TejuNzPP~E9HcuNa5+#T=c%8S?4qF
> z=4;`SOvu%ZB|D|)|3n^jj=7OX2PiY$Gtv_6GWp&Ro})F)>I~IEFzwDSXg4bFT+L1^
> zDfC=+Zp*Vwt__E+E^Jv=*!!g{6Zk2+)Ql!sokZXPl%QE~Ix>x%0jj_=hS~HBHDgt(
> zSy2(mn7*5<CrLDW3nL-A5OQX50VcVOWH`e=cWO*#k0efiWO8 at L+d(kf&Wk4B<N at li
> zlZsIx<a=}2Ug+>>UWA;Q*}u_hIw!COhBZ*Vly_>d6tO95ltj at Ok(3l@=2B2cq{(Df
> z`I5q{G1O8ROM${T&QUSaW8Ij8i&@&6I__#U(ukLN5M9%B1Ea{ooXWnv>cK<ye!?*@
> z at rMVVkF2jeaOLN_Z=eSFH^*O$KJnJ}tvg1xyzs-i#bYH4`o7=zUv}Qo1<Mv~-F#qB
> zJ?(Ugzbg%OF0DMzUR~L at uSXreqbmwx57%tF at i&_y<H^M#@bqJi|7^!A`j=hx1UU6j
> z=J0qe96o#hyI&3->|HZKI3D~}cJ29ND?d4Y`0gW1p4xS?93T8+&Dq`^XNI|(dX}wt
> z_Cn7asT03_=+5t6rLVbg?++!Ve~W!K2gauR7RJ5;X~`2AG`lZ`%i0#01Z&olh{{qM
> zK&#jbF_H!?ieg}-8KD+XCnpum;y-B3t`GVmY&5pQM<Xucj|4nKED~V-F**>7cv&{)
> zkA;6)VguqpCQWYUw6u<liz-qkE$f&UAVMUFyh)}=Djd$!Y`@!@cj&7)X4k#4f8i#=
> z!Tx)qykt0Kzh}(xx^(E)v(aNqPSiFn>p1)I at o$+ at b!QblmVUqd-u|J1JwfBppN at jt
> x&SkgnTxy@#)#y#97<u1EHzmKG?;R{VGaFSju{9&B!K9t?c}aUkMXV`q{~tv)<@*2t
>
> literal 0
> HcmV?d00001
>
> diff --git a/extras/package/macosx/Resources/vlcmenubaricon/VLCShuffleTemplate.pdf b/extras/package/macosx/Resources/vlcmenubaricon/VLCShuffleTemplate.pdf
> new file mode 100644
> index 0000000000000000000000000000000000000000..7f7246f72cd9daad662ab6db01adf71dd4e243fb
> GIT binary patch
> literal 3516
> zcmb_fdt4J&7FMVzAwH^$ix1o}LV?A}%;W{hl0cq{8pVK0i`azB1O_J$Cld+i78Ic<
> zzG#;!t>uR(y0z{4{OMABAXdd9KI-b?v)KArs}<4Ot<{#j6A~Uiw(f76Ka!h!&pr3M
> z-<<E9GvP at Z9gOi~IN{g6Ir$|=2%(TYBbyT!hfE=CnM at WW05b+eM^X$yBRa~&5E{a4
> z#|dOAgdql#Et5z?Aq+}aC^$}rCQMe2`-0hMoYI(h0=8gAV`Fo46g`+;zPx0)!I)oP
> z|3!UMeFJnDdUx&Y*{vZ%S`QTrTUd9ben2&Hd-3rMXyCSu8;3{u-+~jUve`)~ejC5)
> zv;EE7#J;PWv;6T={Owny{^$E9>`t&vB?T!+<IKu`>^)_KVE-d`xmxZ=+;Z+=?lJCC
> zt~6n{Utv&Tlz(G>%fk_i9zMdZ`OkRG|CnFZU0(5&Vy2i|JTxG*Dl6)gXtk6y?o3{^
> zY35>X-=blkbp#D99ePz^7Dxj6#NQLF<q$U9doeI#xnUXc{Gt+eksV5&p-ub(+IrHY
> zPnND6rQ{yJ865hjst;lw`Nh{yORc|>u#6jWuPuG_cN3Qdd~$XA_?h_~?ar-V<qx`1
> z{ptQKQPS+otN8b+*Z1~K{Ny53u_Zy0_!FeuesN66vFr`a2Uoct{InpYtY5rf?ddm{
> zUR>ZZ+<oIbE-#uiCglFSu=~~DPr-N1-!#8D*l&1s(~`ZXPZeoOr?1yu56Nz+PhV5L
> z#)iv^&cCy9cvIlMok>v0*zY2$TWSM;9Pz$uYkvQNgrbbV`G+cbDWhd28M_z1Yy5gi
> z%?h!2?0X*uzLvX#((g(z(Qsjsbly<=laAO+V+#sh?|gfrym5Scu=4emJt6b at 4F2}Q
> zie(Loiwl2o2)AA_mTfkyHv}DZESR`1tzYnv+Lr5 at kj?A-Z6}52tUF2lv=47(Nk4vT
> z%z^!(B!1ESXkGt%KmYw-t)oYsDRZAbn0=@%!>k+m;~Z+p<O%z>kJ#vVT-yBk>GmT5
> z7w&AqT8PP)QaR`9_ECXh>(4a37t1U=`vKg)eaB`v;_eqQX?_*THPJV}hM(-JQT3Of
> z3?6jfIWaCE{@)#=KYqX7g!%P*<wAIqbxuR%tx3 at I2akVvI7+3?I~jZX^xQqXzBs3N
> z-yhc04!beHhNs^M*s#0(+M3$Q6X#VmT^e95-CMC>b;;)1S3mnkt7w)F-ZuWq at quA~
> zth`a_&@8B^yIDFRuc9t=!?rVoEw!q35f+1&A9--3O!a8T+57{omrpz!b8I-VfhHD8
> zeKCij-9g9DCWnK-p-78~auQJ-L=BY4*l8#-nV?Avq_kK_8_DE?l at yYp2q+Sn;Us7$
> zLL`y2i9s}kb1q|dAjw%Si-jUm2&;ot`cxu^@4ziSf27@}0kcq~MkYWp2`a{f7%CQv
> z&}dW;fua$>PH)G5%_NDo<1RA+uz}P=kr~lRnnXy-NBLrygl0$TO=f6XGL#BqC|?Rm
> zM6;u!I6yRBp<zDpbtfnc^GGcv*Fhk9f-&JH#)KrhG8lFuRX?R$adGi(hsivbV4w^l
> zleEcsZFL8D5Q)oqv&4E-?@$w2<itFhNY0y at V$Pdumg2m41qTA3IJeAgby$IS$Ze%;
> zPMKTIGXdojGB9SR5niVuFr{&e%%IVE4Z%M-FN<LuG6c!V$>HY+`F1)J!K6|tf(j6U
> z00tJYGuOtL+_23#uFH?t6L>OanshLLdx-UH%CNf_IgjVVVRh*BT?g2ld=DzV*=|ML
> zCI^D?QN(KP2G at BPc8@I4=44DZGm)rKxLhPIQ)8kSrA{D%HEJ{#R!cPkSSu35z!ITK
> zB*m1dRx1|9A%KP6dp-29ZdsB%iyFJxWhHEk&#?$Zh)y7t!aAW=32P-f3>KkUF^ox7
> z7%Eh2F;Oh)bKGNZm*Y5uy>|~Dd`!PIL;szh9*lS1LFN$;!N#$IjdK_UV1+3dDie!k
> zo?w at uorrr{cH#9p0ZJe(xi90Shvm~wyfRL)+bKnFC3_g_Jl{@x)}P+%)51$Z at ao26
> z+vVv0WFBOW=Q9r$Kx7J^3QI66^W_G`b5g at InIS3;>9yxK#0})_)od?Gf#clINA8w+
> zQ?SC5fj!8&=YA_>xVa0L!$nh`OoE#cf+ASKIRP~6DN=E>jA0Xgw`M#_Wfi5QnBKEq
> zJy9f^TVxby?c_W+j1v}<i(+_+|D|GdMh->xKA>~<sdM9yXEDAo at H!VjcI|WwMBvNI
> z3Ql)+2em at ZquJaIM!kDCPqAPNDJB+RT}7ow*Xt=GYEVKbdnS@($|Rhixn(<GpPV31
> z2{Lq-Bx!dU_O{HJ$g|@)J+sIAw2bUz#tQmp5ooJvCj$wv?i%I3Fk|IGP9e%IZu|4H
> zy~?zRo&DRZMhS||Etfx6SDatHw0!sC{Xf4kqR}sK;gkGdG=0VehP}FU(asV_E00G`
> z3X*4yi+HFR9I^1DTu06HxoSjP7F`-Tx<Gl^GD430?JrYnjc|Bj*nkS;<SJLg<piSU
> z&f8bMFR9C$)rN9c4sxeHJUZd#v4(kvMt)k^JPa;b5q&4G{C16LOm3KJPe<;#%;RHM
> z&3Sx6GNj|JpZ$XVs=fCdj at j#bIF5<wqS)8KfV%x6UQ!K&1(}tGfmaSeI+9H05fCOp
> z40byMVeAt!Ac;1M9rE-&V5~`tQ;TDDQk6y`7KmasLX`$nDFv}2Au7_S)M}MZqWE=-
> zbkO^-uQN#|+Uf-0)ON~cwK*X%l0*|YX=a-!OrTKsUWZ~aPpt!AJ)c=<laiCr=XXo4
> zb_@(ZFDu$tl$=^ydd3laedHkC;d|8nO$T%Z at bn2$6OO_Q3l;|*JKQj?Qe2v&x~8-h
> uZ*`m?&u;$b4{cE^u$rRZ8^0V@{w$}UR at 01|CM+Bw79-|_hij+lIR63s6T+SV
>
> literal 0
> HcmV?d00001
>
> diff --git a/extras/package/macosx/Resources/vlcmenubaricon/VLCStatusBarIcon.pdf b/extras/package/macosx/Resources/vlcmenubaricon/VLCStatusBarIcon.pdf
> new file mode 100644
> index 0000000000000000000000000000000000000000..0a905ba294a625be2a4b4254b983c006d4687860
> GIT binary patch
> literal 6398
> zcmb_h2|UzY_eWW>W-TR6vdgTt8HUC%DEq!d#>`+CGa4gINF+-|LM3HMPl%AE$X1e&
> zggn+t){=c!ws&ZMp6C6)@8|P>=kuAFJNKUZz2|rCIp1^c9Vt^Cj3NZ6$|*H8_^OQ)
> z1^@#nE*_j38X!Xg*^TB7fHHc_K^P*5MxcT)BrJ`fL%>n+1duTR1~SKz-3Sg~0E8j*
> z_3fys$>~F*60lyJ{yjIZ_*q(ZibTAs^rNT01h<LO<ALCic_3ilcC+2CY`Ytoo^l(J
> zBC`(b at bfe4UP=pL&PdnKjdVF6o8`=>zthwO9G#Vg$8;PC3<#JS9$tE0+1KMX<+Id%
> zDzya2Bx$lA2x7g$0!Wg1&rVl+Z4<87a(|79%|C?s4ingJG`k8l`Q)%9NOc$eQT>k9
> z^Y6Hs^;fG1A4g3x!!}IXaxJTvnCg$$j*yHIM{7Sz7&i*tj-G%?+^Lg{7R5v*fsUBg
> zQe9#khW<zm66rQ;8pn$})DGOR=x!iEmLmO6ox60<rB<(&RrHwgok+ at gTbRMMCgB-}
> z6C`Lv5-(G<<O43XTz~%L$ZNHHyfpq9DwFr^QjppRmxy=a_5pO+?c1(%WhZ7>9s!TW
> zl0Cd$rk$cf<JDNsq-(_|)(;hp0_7UA4V_e&&bzH25<THHdP~CLy1j$_p6jAX!Dd+-
> zkCs)XCMP5+IhWtSB0H8MCh}L!KQTEsMSB#D at i{aFGa(+Z0Q@%il1C0ON$Li9R?j>O
> za32VW+Qnh+b>Sim2D?})b|tPft$OS<VwERo26=GiWcAgE$;K!GXZ&{BiMO_L26Eb(
> zNMvHeKnu@?M(u{$bpD*}p8BZaX}E@&PL_LPX@#0uc>pOdB)KNTCtxExY6CoOVt>Ok
> zPIe)cNx6|j|7{w}&<D+sTRWKr0!-g5^sS79 at v#mh at 4ADyueOxRy0((%9km?Sd~rqW
> zgTQV>w;i8F&wCDd?q~^Nl4KUH-zJ>KOgnP`yv_Qth#HG(0n73k=bgMAEFzKY4Iz9`
> z6tIh%^DuuG>tg5;(`}zn2i=)v4zsKA07G89N0jcE3}JWPej)6GGg}4o+|KRT15lka
> zLkFz%xu79U05&{d8A{U>AjGSSKCzQeK)b9(B#T2nTt3}Ci~oxVg4Ho3PkUPn(p~6!
> zXmI$uryPc%*#*#Cp1n`GyLK#|3+q?*7Q4ar;qm8b<5HHqu-GRP)2z#gKz8vnsZWbI
> z4o7nEn4!7(*#<(F5Af?Bs?k#cgzLl2BZ>iz`XDNoDC$m}pDcHD=&cNHvj?&!mK at RH
> zN6=n}g)`*M^vou*#M>3yWj)vyb{Jt4(s^1`+(Gm5G%<vrV+c at BHLbVhYKvdX;78Tn
> z+~>}<KC#7WK>Dw3Z$cPCMwsph`-sCrM4vXf+_w$LW$xe|iy*kLcCm~Hk3+`c<A9T5
> zD<XQe*#k}9lcgMDd{-kBo-6k^53rpOEDfj-a^j+dEj=xo>0TBHL{@Q~-li3kDx)t*
> z<2ZTNS(^n5OAl?)F4ghZ_t%va_%o`bmPz7jX_PHW!?;3QOseW&!=-rx;BEcOmx|+Q
> zXK5+4*!gHfY0vn54g7fK0GYD5z_`_GtJa|sSjm2=Cs(>;&7 at j^5ZM`R0Z_KosAQQn
> zRIl*Z?Cl|*2BKU=!h?kKLKYrjmWl0h+1PA5VsvqKaVo8lcApkMZ#8NlntS2Fg=B6A
> z>Ej~>O}a at CPVLsTQd8Rm#RPhzRHK?O`p<N_nP8S~J0)waUDQsrn^2fuXjf=e=!VyG
> z=P*hh(LH)AvBkLMocq*OS<ngl8oNTA!HdgJq<pB+)EKH*nRc0VnL2f9cyyLL8#P-#
> ztUk0~E=_1&m_-OG%qxG){F?P``5yT~AueGP*>^UfiSvmpi5+tLtUp;?x3V@{G&Qz*
> zmmg>rU>|;GAnS6P`5me?;Yi{wkNid}MGIu+mkYq7ez#;=6+R;8MU|zLO_bB^@7Y)P
> zR6L5IN77U1IbRO)gtDOzT4xw$IN&fAR<CVfHbr)GRU%I3(}nX(Omb{IjUDvV4NoPX
> zj99!Kb0g-eag1?MGup8*FN}Phd~?zZc|jZvGMfr{XB1 at Hr>*5wePrVtGs&6wSXs>(
> zTp(20PM4z)-?m}Vm(%01=deZnS^O{SpUb|=dipW^{+$zNXUKz2gC^1<(gxBC(tL&l
> zLz`<ONhg!mJ?>EIpgGWTFJl!y)js!k#C2-Y6KHc`*o#Sf(?fxZ5A0|TfyKpzLk<sY
> zjqQl`x(-$jJg_Y8(-_ELv~o{RH$7v4IOeBvMTI3<P^G$SPmgquO1Ckv)2`XhsXDO9
> z_-zc)##7bB<YDXsExgu1+Q?&CmXH5HR)76TlJ^boHlHKjh>`i4?%JfOHzOJ!Tm}o@
> z4Ob`(eCoIV*fS+PC^BF at y4dCT7TH|c9aQ(U26yv$fJt%Y!w=+FSP%hp#U`V(i8Dud
> z%x2y{z9Otbp)z&(<H~f<qd;t*aMh{6{dw*74G!J??5h>4i_6H_&KZ-r4NWG&_xnwS
> zr<Gciz^VnRkpe=(?Lza?UGP%LWmF_N5`0_T5~>6(hR}db%DGA;eB#XAg`B(yg|j|S
> z)ejc%r}Ojh7v;RQo^nKr6Z!3S!izC(Mjh94JcT=??;!=HM4w$ih+d50Jx`8ae>{)t
> zfVkl*T<+prZGpK#xgSV+Cq++1<DSb68`kzbyHaOd*ZpiFDmmIO5)_*{^2l4E3?!%_
> z=pis7uqF^I36u<%Dv=(%oDpv_gZGcBND)d*$W1t78P*=!9;cLCTuFolQi9QlgevJu
> zi^IZeh6_7<!yUpiL>EP^L at 6*d%*55eZKm)`;X;ug-ejosLtrIuNlZzex{acr&*VpX
> z=0eHdG#<#_N2(sArarZ*2Hfk`muFu_C7-T`H7LA1RVhU}YEwmBzq5M(p14CYmn7#h
> z>(gG+!#_!SULVL)eb_48MvO`Lc#Ws7wC=F({%E^romJ4ay8}7lH}9*j96fZDcd}-D
> zU}8_tM8S%CHjQXJ+9lqHoFL2>))aQ0%2;$#JZ|k&6kA|YO1WK=dCRAIWZiK^%d*bq
> zT{bn(<DT{1cV<YxkRa#jw81A=_6%RYb$uzKG-9%Y-u|GI*qOM$POMpNwOF&bYRR*%
> z^CAx?k1o&t*y)%HVmul>uigLb>bl)-*~YEPm7E!)D_;Kj;+X19#dC@!_li4i4Zbg(
> zUM`|!RPRId2i;nc9K^ryv+uKdXx78oo4z={m=v=d6W2W5e8xh-*w?T7WJwTZel6~`
> zM`liQeTp3Xs9N&rll{k<%ev>XKV*Vx9e0n#d<ynH@#nK%Br|gDY6Zx#Y&`h0OTNWa
> znZijM<Krb|^iO*R?VtO;7 at G(Z3G&jiU2W;0boT{6{e<~oG?whR?FD-?FM`{tbeKLi
> z>y_WzIh9)h0}DZEeri<zA>hj7Q047YpeeUEsizA at 4}8J)AI#Ppj!hKrT+3R*jYSUE
> zCz*A&R>`1D#4p^hOW8<Re;qNinmLp?EO=M&V!Ug7X6BnrvZlitX*J-}+~?8I)IUz=
> z1*fkJlphy6J(_H%3|qgvLGAAxu$j$|sc>3+bgJX@;!N_8>YPtFWw=i~=(&IAistxQ
> zZQuy|ctmt8eSf)Tz-fBvrHX>-y-R23RyYY{{I_C}(b}v#H>=I9Z)LdB=ICZy<!?2q
> z^1rD`f2}=-t<?*~RJog$gap;oI6{~r1wS$&YOL)zQv}LCSylFy?}e53>{2_CR;&C(
> zNdMAd)!^0Hg<g%Sji6+-#N6`g%Gin#rZg9==P^1XID7rY0nqW4OW1RSeIE1*oW+Y$
> zIE*{_ddl)dNy6PK*6JIR&u{K(;H`&T+;#8BdZ6*T_95}MHIaiI4=n10!7>MeFr5b=
> zwa&r=B7-j>O4_HeB1?|Ym3a?H!V4ym6-$#p?kfuD9mPBzh`U$0C!P2?dqVD*cbrO|
> z%zmfq&!0~`pLnIE?~3{`7mLs1XS=G(+aR6nIliMWk2SIc>lG`?siQf9ppHB4${XRG
> zmbn%<#>(FMzIQkG at +afPlK}^rgHJ~;@eT(!QZ9t7UluKIk8zB1;8LhbL3JVIb>DNT
> zs5b90lyLI4e4l at yjh|15?bd07rQSVdOM-)Y@$5MGp~PEZg6g5o&SoWx{kXmL_aHL*
> z)sjrtz^RM2hsABJX0rO(An)Hco?lABdUKsiIjOF6yec at pc`0na%fPno9ghWh51k!)
> z7!Z-r-K4i0a~~p}#S`IiQAr&ct*dUIwf|cDd<3m}c>1ufBeV_dwa}Vol7DT|Wa!8c
> z_=2Ty3b&Az%mEI2HDOp(64#L%MO>Yjvtwu8ICcfg<R5+C#iEyMzPHfyif1Hdke7c%
> z$F9W;yKltB{+j&FBlxiU`;?;M3`JiYlac at 9t}u66d+r=jF`+zT+VyZx$M%|ccWkVa
> z>++pTbJDp5I~u-Vs9`0lKoWB=*u5j_MX9zWYv<mzn0*<SrW$X&Ew#SPr4SDnGEIwY
> z9~srYnc|WI<CL|!i(}8KQGB&_C{p(QJKamh3+B%6Ys~A4-}H)RJL`LTPBkL99$FBN
> zXA8WtY~4taU#DcxmbY!N^PMfsVW)H1erXV{v{#x;JD=XlSth+#-|I0wa-U>=<_!|;
> zZQMih10(enKZvIq`U+HsZDb^gzers}BiUfBr+i;x4fEsI?U`N6Eg#p)Sjw~!YjI~<
> zY6G*gRMLb&R&I{I8 at r0>RnjDhU78zTlv`t&48gI!mC~VTy?Ulep{9IsRQIc>Yxj`%
> zo(I5X+Gxu&PXr>xD-^etO%V8IZWi$yWjHMc-Mcb>BcU*KpzbEpKI5^xSnC-7G?b`C
> zZ!6sHp911DwlCngy0iUtj{&<pGOxAQVjdp#A@`~QcVD7#EUWWlue#>XyK4_0Ppw;A
> z(1iOvF-w&^HvN27uU*06&#wI;E-A3p at bNL?EZ^&;ar3`3!e*>*vH)Be`kfFUznoHO
> zRIIl*0S}OM#gcpoa-1ME<LpVJPyw<Q1S-)LfO2&ul8Lkc#)u`6Mj`-YK~_Elst<@@
> zN~B_GARU5_Cyn9_vNl8?H^5QIKySS3cN8Lptiw3(0%Ua%P%uOVtOS8Vl)w;WxB?g|
> z0|v`5<cuiz|0H5crQm&W1cpY8qc(}?qF}0H0DuF*KxIWD;Fzot76&k~0N5%*z(6=a
> zMd_HF94CXvzHuMq at 8k#h%6^ss-UN^lfriCnX;_ejuM2In!`8^~Ckbk3`Fmq=o&*}e
> zh2TacBPFKFt0e$LJW|3&*$8apjV8Dg_32cC1>M*ZNB6|R at e*2^oB+m4!yn=A<?Y2l
> z2l#uD$UX>vqy&~h#smbTz1a<t_$tT{rQ%%?<~o>ff{b5C33nRJ8vz3O`S}6;U_c7h
> z4FrM1;UF*+1cfRxBouuD$TY0KBH8EQ51emEjQzk-iQY7Z?E#y}SQm;f4Jje<T at NpB
> zBcmS+kbQt#S^;qsFOWah8w3G at L0(=zmHYZEn{yBbWFH!qj3XH6X!`mR at dz}A;ZYC_
> zR1u<rf+&KOR3M5NB^7N&CAgZZvI<NarG!?}05Poa``j(_Y{G6DX=_l2g7ftvkZIq6
> zRWWKhO3DmOT{K)*5d~)eqf{`;iV!pkih`)XA!^!?@4&yz{Q;~2+I;R`?C{;v|Fwnw
> zZ~OdW at vqN-*a{iKrXOo=`Z>cGiV&zJL<s?gAhw(x0S0er{Hx>-eZPS)B7x`{@ZW&^
> zBKcR4Z^3Ixp^!9xkKbR`r%<=X|2p at 3Ec{n0e2bec*&jgvPs=ly<DV_h7+`oN>@RM~
> z=tX?z2F-t<hQBd`oCfH(IsZew8R7jcW`7GQ#&Z7uthqnp8}Vvx@$QypKl}byn&ELj
> z^z!zllD3!xj{^}%gw25SVW<ZAi&6171Z|V%f5yyKq;5tOibVUp_gg%Xh at 0GkATh2o
> zkrMujc!Dd|mqe4${LgvftG|$lzr%j*{mW_^pucPOZ{6+d0E1J%0yA9yI~!|q{^WE<
> zhCoVCHyNAJ`n`(YN)ek$6QT@({75CLKkMkN<bh at +4id!;WQuho_-tL at n*T^BfUU%1
> z{!1eIUYY;A8HT9+n=%}<1#jZwVL|g^TobD?ZjY%xG=LKPXKM2A at ij$xJO%Hp7!zIz
> zJ)%%n$n%6f=UKvK^V~OvyfxNG-3u;Ap=Vc)<Q+&*K}3qWMs)Afah7Dq-w+B3jTbPL
> zK(X0sT;^7D-Hw_Lb!O9c#Xrnwy!kd)=5?=r%6NobbGp~3m?~MTy%hGHkJFIW!a-GM
> zG3<hE_zck at gGi3_uALE7v;;ZMS@^h^)-jn=a~74V>*uS=TGuld*}B3mnZM(o$&0!g
> z5G>gD((Q|@I@@Dk&~V+(B=)kl4*J8U%7qXuI;@-!ebR`pNOUcsVl7dg=YGM$o<|R#
> zHndN+{V`V%c~ktf%$IA0w{^bI_XM(cTlb}6s+lic^3VT={o1tT=6*qcDRSUHx9cBn
> z-?vO`Yff+l**HKLm-J9akOh%W06 at VYa|(q9fNbuzImm$QN&#%uON_RTgN8OtMFpaw
> z1VQQOpkOF%l(LQ*Mi-@`3x~mVw9zna&HpUn$f%h%{{S$>QoVc_-hif%e7(p%0A-LV
> zm4GMWHj6I^R8#Z&9|&;Ot!&Bo_;vfeE<iZL4hylm?ca?GwJL7BSP^0~EyC>JpkN{t
> z8}9<inSI;W%N>jLXK9j5Nl&mkXi&>1>up~DDalccD#)%a{$~18$<&(yBd2xxti#+e
> psO{5wE4)N4;0f!yD3PAO+nAC4sWg8o!Ig8fkmHn+(lx<w{tHMLZ2JHJ
>
> literal 0
> HcmV?d00001
>
> diff --git a/extras/package/macosx/Resources/vlcmenubaricon/pauseIcon.png b/extras/package/macosx/Resources/vlcmenubaricon/pauseIcon.png
> deleted file mode 100644
> index 76b8a5c25a31bd37bac6bac06c76de824a7b6d99..0000000000000000000000000000000000000000
> GIT binary patch
> literal 0
> HcmV?d00001
>
> literal 455
> zcmV;&0XY7NP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU
> z000XU0RWnu7ytkO2XskIMF-#k1QjO|TLZ0g0004INkl<ZILob*L5|cw3`O5}xuQso
> zM6X&bSj{E4!EiT at Fel*(eFoMHQm>i?txibAET$X+5^SKPD3yHI^S7PAKQ8tAYv3Jl
> zPvLkxez{(+p8!s$)5GO*dAmC|0%zds3q^XA6lS(v<2XKL^x<&$u-7Gpq(=bnfV-Ii
> zd;<)q^E`h}!0mQ>E~PAz=7<R35E1v*+6%zlB?(~YWtCD&ou&zZVHi9jika08AR at E@
> zN-3Bbk^)dfu&!&Q12apVewc`0p68!{grwM7+dAg%8zl90UD<jt48s-xu&(R2Pe3L}
> zJrj6Z%pic)8ogBhq;K%dP;1=+((2y9 at A@x*S}X33yOTZH18S{*2c*S5PA$uVnQ31_
> zDTP`q5utq<=^(nz2{1`RYwi2a!BT5&?mp$K9CJDtODVYft6kPNyZxz@;;HvBkNZ#g
> xY-aDx?B1V|^t}CX(vzf**<4AZnVtC`>jxBYohU7qocjO(002ovPDHLkV1ncS#EJj_
>
> diff --git a/extras/package/macosx/Resources/vlcmenubaricon/pauseIcon at 2x.png b/extras/package/macosx/Resources/vlcmenubaricon/pauseIcon at 2x.png
> deleted file mode 100644
> index d5325b1e3457c60e63ffae9a6c4d6ec0e963ad70..0000000000000000000000000000000000000000
> GIT binary patch
> literal 0
> HcmV?d00001
>
> literal 1055
> zcmV+)1mOFLP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800009a7bBm000XU
> z000XU0RWnu7ytkO2XskIMF-#k1QjR<A^Awg000BNNkl<ZSi{X%yKW>m5UlE+@$Smd
> zL9k9|g$7m&NrC^sk;97}-Tj|aXA1lgjxJCjz&IER{DPp<T8|x)?cm5&FU66tfdLaB
> zR+yP;R#z9B6tOwFJPnPZs+deBsqg!EeSMw$yMu!Rd3box+uK_SAz)+>K*)3b000C)
> z!WLtHf1krJU~g{^F-BZoUK+L=Td(<_3}(rTB<}#c1rPz;xN=A?L72^Ezx93p^VQYW
> zFFw%W;o-OU_xIl~m&<twVVWODC;O`$=M2D)rQ}^j;4Ogn8w^R9J*pdH{6O+o02>5W
> ztJOClgdYHWH->fNk${L;N}o$1BC!B-eWXSX!*CTsxUHWrm&@Cf(%)tlMMQIqG7<pE
> zWTIQoI{zWboBSI|{%K~rSw<!KMM~*9#`uSsJt44Kt?mH)B_h9z$k!zA0R%JaNPYrv
> zU}l|}-K<?Gg070wX95b~%RD0hH8YT$sp<}ZzTRqG*YyB)0L%ase8?qE`4=Sn4V;J|
> z#<*tWO2G2lFfLm?!pxY7I#C~E)Se)TPE|1s!<s+=yC7?XnZZ6sXgSMBCX(i2*dx@|
> zF*Zt2vi1Zj1EC_&bauft5_oiCN*m9gc%TF*MEpV{+o?r>FC{Umz)J+4Q^2cNVwCTE
> ztY-<R>IQ)tU}i`uy-1+OKTAMWM+wvml^T{tQtyJ65}rUEbJT=BgSvKOUhuf`_e=O^
> zJ>YBTfwhyzuvLd`mTpu5RUIWzHJT=YQp);WZQv#WAHXkGG8ijC!TRY5mw4VkqXf$I
> za at QHP2&n2>Jx`#-s(sPi1zrUYc*%q<Z28vjDo<Wjw=-eMW~>$03VH%Q{)Pgzv at Qc{
> zHKDOKTa&L7D+ at k34J!|rlTor^Shi7qM>Au?1I%-s1b}ipvqhlQis>>)`G_^&&&Q5q
> zRW(&L5i#c<Gcywr^QCyM1R={9MC2wf6iId|rKyPAk^Be1(D30v@=iqVNd^(QGqZtY
> zCn7gyHqE!8Fj at kVyE*$#MBcb-ROtn;Nxl}5X`=*Fl3$U0lkvMnZdIKD=yM5nYX$uM
> zNt~Iw+C=%?9?6}C38y4q<&5jgN$-wm at xJl@69B+j1||TX0QA`dlFKoW{7CYmLEt0F
> zpGbZHu#*>$dBFf+Hz#=JU;+P&adL7Z+hXSPITwoskB*KwpU=51{`B-zo?N+)kB>W5
> z?Ix3nsp`gAkW#`h3>bzX#Teto#l^<0WU*L?h-lyU(skYXf>OF?j1jBViZRA;ety1|
> Z{$HL#3{PWl`7;0j002ovPDHLkV1h;@*=7I$
>
> diff --git a/extras/package/macosx/Resources/vlcmenubaricon/playIcon.png b/extras/package/macosx/Resources/vlcmenubaricon/playIcon.png
> deleted file mode 100644
> index c4bf1d6dcac5a6d0940dced28fe99a195071ee1b..0000000000000000000000000000000000000000
> GIT binary patch
> literal 0
> HcmV?d00001
>
> literal 559
> zcmV+~0?_ at 5P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU
> z000XU0RWnu7ytkO2XskIMF-#k1QjVL1B_Wu0005bNkl<ZILp0Kv5Hhd5UlCx>7Mu2
> zaor2$GEMvi!8<V3pYSIP{RI;v6U__-1C0bTK at iM^Lk<xx(%s>n^WN at Eo7@U_9(M*}
> zLqjK3)m0SmFQ)JNdEfW<Qc3{;VvJry+}~h50GQcct at VwW?TX0tQp$%~D^xXl?`y5~
> zVixDz9uXNc8#7zibuU%*0RW_wNLBSh0uk9)Ra4a>B5k`d#!sqx69Brd6IG?NSONg=
> zJ(w9G1ScX+L|h1A4d8}z?z5`Ct+i5X&0j_UX5QWsW4sb${4OGQnE59WJr<GOQ}zL1
> zXJ==hh~5#=1VGMl*;;G4);e#kwQ(F at 0C-qR`NjZ1L||rk?_p-!U;zNNRuB<X)eXad
> z^?FSwA_f2q;P?Am0_PlBYcMmUlzt4uFk7uwS4%0+i0Dx%<?Hq}25`#zR#jEk-uv<B
> z=;+!sP48>1cg?IGA0My(2$6{3y+;V4F|+l3-*V1;aB%R&%x>kJZ-)>XfOa+<KB=y$
> zDmI%<9LEudhlj7au6tcdc{-oZDW#;#<#If)Lks}R<x-g$tJUiHFbp3zo6VD)Gg3-%
> xnx--5JYH7ixpVG5fB*oq*~~8%3y1$PzW~|xz5&9$Zx#Rm002ovPDHLkV1i9$?12CP
>
> diff --git a/extras/package/macosx/Resources/vlcmenubaricon/playIcon at 2x.png b/extras/package/macosx/Resources/vlcmenubaricon/playIcon at 2x.png
> deleted file mode 100644
> index a17b73ff8a0875c573c54a4fc3ace504ddd78c41..0000000000000000000000000000000000000000
> GIT binary patch
> literal 0
> HcmV?d00001
>
> literal 1528
> zcmV<U1qb?xP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800009a7bBm000XU
> z000XU0RWnu7ytkO2XskIMF-#k1QjV6Qc_uU000G-Nkl<ZSi`kf&5LD675|<3xF7Fh
> zUUv_(&=5stVY?0P3?wdvEX0Mb{WAo?t>VIk3s(|cjG_nz5rnuA(P<=!K at Fs#83s)<
> z2B+usOTYK-ty@*+92ax%%$t|jCe2J26x at 63)~Vn5_?>f#uraEtasXWannMT~S3C#+
> z>bf><+sgK0RaF*%6Ojx+VvPE%0ayUYIqwwgoC5#`pjUA?0MKYOa!u1 at 02qx%-vaOr
> z00Q7v(=@*uew<7uCg)tMYF5=0W0YqBz%jD}kO6?1zXsr&!&+U}cbs$Yr<7)^)#`l!
> z>kapis-o+<r?QMmDLoR9QbLRoDJ3xTR{;Dx=lmyC{jT@^VEAt~n-PEtKv|ZheJTrx
> zJhr5WtN}n(GZF1E^Jn^{&lzLh8;wRsB9hy-eJ92^ANJLCZAHWY;I8W~<r?RlL(UJ`
> zX05eE1R`>(y3RS9{__D5eNRM^s=fo@`v873P*+u at kDE)o!#d|2Gcy2q?_VLJFB at Y(
> zL;-*yA|@gaz^bYT at Ej36=e<94&K;_1?z-*+W>#j#bUL-hn9^EH)>`dFUu*#)dQ6G_
> zg@|B`an{<Asscb()uz{U3gATmFRJQ)0o*EzVkshbiKtvIm&=~IgL_C-5klBabz{uq
> zh<vCyHbHIVi at FD6RTcg74FKOJqL-|- at 2ct_i0GE8W&qgV-?v at Yc>r41b=sBewk<Gd
> z4<b^1cnbB?53#DMt3Dsp0QOY%1pqIo>Sv3hm;rc8L_Rz_JNq|)Fvu^<(h?Cu2)xq*
> zTL7S{w2QjE8wM+609iyJA}_1zS5 at _{G3K{LQT!~%_;w#(wpT<ibb+<@2>=_1JOOg3
> zAw$su5JjX=RZ>-m$QPLT>mqWqD2l%m(VN!VzcfvAe at J2gTnHgKYwd*qwhzBxQ~;`8
> zkqDp_5z09~FCw2;)mK#YNL7DPRn_YN?uHN|fK*i#ne8CloYvY)O=FBBqLH<BRF)+s
> zlL=2Ilg at kpMOFO)fZG7RvjN^;7z4(bPiq0F>Z82_l~q-VNJIpE9`SuZ>L=2$*9HUK
> zcF^*P!v~<wx$M0U%#5~e$0;Q*B4FlYW6Uo_<TX`2+1Q at kE*A^{L}Vv`p?(k%y!XL5
> zmvYW7##rZ^3uZ>wbsy%O-v;nERsDyx_NZx^_lD#Iz_o3=8^ACxETP8eM&J%ID5az^
> zMrGy?nE7=P`DqB at 2mp$rFn!CXZQC+{1OOjn!Il*i0I4d5oNld^s;bt;m=r>&+qSJ^
> zjE<SX%ty at ps~F=O%zT=2{?{No#wb-)ZBzK;iD)>y4<=GoSZlQ?irjPDrIe<9GlCGp
> zM{V2QVdfKS?H}v9es#HAb^vgAcxdn4yH|;bib!gj=2EG6vrKbc*9`z&tyYus^K%zM
> zfU17f=l&mu5bjh}RiB=oc7wd*<72*d?V6}6nx@%ZjJBwzLsXY#nd`b<t1879M~lT`
> zmQq5_8C}=iUa!}GCZhk8W%<{pX^sIPgph9BxM4#Gg^1*wb3Q*m*H3Inwqw9KH#}Pr
> zaWO{B=kpjs5a-;n_x?vIrC$TUcszEq+02Lt0g(Im?=yh*Q+Gt8(Fhy0o4xla%QCH2
> zEC1lZgNm6!MCU1`ABGTad+*g+`_Ey|+1Xj1&1SYQQhM30$hGZbupxwTN(m_?zg#X)
> z=kxgqGuyhZ-#9op_{n;`evnea&6_vr<m99Vpw`;7SS)z63Axmm&1Tic^Q(J%d%C~B
> zuX}rYuMyFg08Fc at dVYJ~bULN!bV^TsFIcbFkM4i#_4 at Y!#(j5oOI6?PEwdbt#|A)c
> zjLF{nG at s9($;IUVYA_y;NkmYVB^Hatm0ZnC->qDfcMTC00L=C4*Xb$%(3Zw-BRS>O
> eYIWt;^Zx;7vQ+EhODxv_0000<MNUMnLSTY(+RjA)
>
> diff --git a/extras/package/macosx/Resources/vlcmenubaricon/statusBarIcon.pdf b/extras/package/macosx/Resources/vlcmenubaricon/statusBarIcon.pdf
> deleted file mode 100644
> index 0a905ba294a625be2a4b4254b983c006d4687860..0000000000000000000000000000000000000000
> GIT binary patch
> literal 0
> HcmV?d00001
>
> literal 6398
> zcmb_h2|UzY_eWW>W-TR6vdgTt8HUC%DEq!d#>`+CGa4gINF+-|LM3HMPl%AE$X1e&
> zggn+t){=c!ws&ZMp6C6)@8|P>=kuAFJNKUZz2|rCIp1^c9Vt^Cj3NZ6$|*H8_^OQ)
> z1^@#nE*_j38X!Xg*^TB7fHHc_K^P*5MxcT)BrJ`fL%>n+1duTR1~SKz-3Sg~0E8j*
> z_3fys$>~F*60lyJ{yjIZ_*q(ZibTAs^rNT01h<LO<ALCic_3ilcC+2CY`Ytoo^l(J
> zBC`(b at bfe4UP=pL&PdnKjdVF6o8`=>zthwO9G#Vg$8;PC3<#JS9$tE0+1KMX<+Id%
> zDzya2Bx$lA2x7g$0!Wg1&rVl+Z4<87a(|79%|C?s4ingJG`k8l`Q)%9NOc$eQT>k9
> z^Y6Hs^;fG1A4g3x!!}IXaxJTvnCg$$j*yHIM{7Sz7&i*tj-G%?+^Lg{7R5v*fsUBg
> zQe9#khW<zm66rQ;8pn$})DGOR=x!iEmLmO6ox60<rB<(&RrHwgok+ at gTbRMMCgB-}
> z6C`Lv5-(G<<O43XTz~%L$ZNHHyfpq9DwFr^QjppRmxy=a_5pO+?c1(%WhZ7>9s!TW
> zl0Cd$rk$cf<JDNsq-(_|)(;hp0_7UA4V_e&&bzH25<THHdP~CLy1j$_p6jAX!Dd+-
> zkCs)XCMP5+IhWtSB0H8MCh}L!KQTEsMSB#D at i{aFGa(+Z0Q@%il1C0ON$Li9R?j>O
> za32VW+Qnh+b>Sim2D?})b|tPft$OS<VwERo26=GiWcAgE$;K!GXZ&{BiMO_L26Eb(
> zNMvHeKnu@?M(u{$bpD*}p8BZaX}E@&PL_LPX@#0uc>pOdB)KNTCtxExY6CoOVt>Ok
> zPIe)cNx6|j|7{w}&<D+sTRWKr0!-g5^sS79 at v#mh at 4ADyueOxRy0((%9km?Sd~rqW
> zgTQV>w;i8F&wCDd?q~^Nl4KUH-zJ>KOgnP`yv_Qth#HG(0n73k=bgMAEFzKY4Iz9`
> z6tIh%^DuuG>tg5;(`}zn2i=)v4zsKA07G89N0jcE3}JWPej)6GGg}4o+|KRT15lka
> zLkFz%xu79U05&{d8A{U>AjGSSKCzQeK)b9(B#T2nTt3}Ci~oxVg4Ho3PkUPn(p~6!
> zXmI$uryPc%*#*#Cp1n`GyLK#|3+q?*7Q4ar;qm8b<5HHqu-GRP)2z#gKz8vnsZWbI
> z4o7nEn4!7(*#<(F5Af?Bs?k#cgzLl2BZ>iz`XDNoDC$m}pDcHD=&cNHvj?&!mK at RH
> zN6=n}g)`*M^vou*#M>3yWj)vyb{Jt4(s^1`+(Gm5G%<vrV+c at BHLbVhYKvdX;78Tn
> z+~>}<KC#7WK>Dw3Z$cPCMwsph`-sCrM4vXf+_w$LW$xe|iy*kLcCm~Hk3+`c<A9T5
> zD<XQe*#k}9lcgMDd{-kBo-6k^53rpOEDfj-a^j+dEj=xo>0TBHL{@Q~-li3kDx)t*
> z<2ZTNS(^n5OAl?)F4ghZ_t%va_%o`bmPz7jX_PHW!?;3QOseW&!=-rx;BEcOmx|+Q
> zXK5+4*!gHfY0vn54g7fK0GYD5z_`_GtJa|sSjm2=Cs(>;&7 at j^5ZM`R0Z_KosAQQn
> zRIl*Z?Cl|*2BKU=!h?kKLKYrjmWl0h+1PA5VsvqKaVo8lcApkMZ#8NlntS2Fg=B6A
> z>Ej~>O}a at CPVLsTQd8Rm#RPhzRHK?O`p<N_nP8S~J0)waUDQsrn^2fuXjf=e=!VyG
> z=P*hh(LH)AvBkLMocq*OS<ngl8oNTA!HdgJq<pB+)EKH*nRc0VnL2f9cyyLL8#P-#
> ztUk0~E=_1&m_-OG%qxG){F?P``5yT~AueGP*>^UfiSvmpi5+tLtUp;?x3V@{G&Qz*
> zmmg>rU>|;GAnS6P`5me?;Yi{wkNid}MGIu+mkYq7ez#;=6+R;8MU|zLO_bB^@7Y)P
> zR6L5IN77U1IbRO)gtDOzT4xw$IN&fAR<CVfHbr)GRU%I3(}nX(Omb{IjUDvV4NoPX
> zj99!Kb0g-eag1?MGup8*FN}Phd~?zZc|jZvGMfr{XB1 at Hr>*5wePrVtGs&6wSXs>(
> zTp(20PM4z)-?m}Vm(%01=deZnS^O{SpUb|=dipW^{+$zNXUKz2gC^1<(gxBC(tL&l
> zLz`<ONhg!mJ?>EIpgGWTFJl!y)js!k#C2-Y6KHc`*o#Sf(?fxZ5A0|TfyKpzLk<sY
> zjqQl`x(-$jJg_Y8(-_ELv~o{RH$7v4IOeBvMTI3<P^G$SPmgquO1Ckv)2`XhsXDO9
> z_-zc)##7bB<YDXsExgu1+Q?&CmXH5HR)76TlJ^boHlHKjh>`i4?%JfOHzOJ!Tm}o@
> z4Ob`(eCoIV*fS+PC^BF at y4dCT7TH|c9aQ(U26yv$fJt%Y!w=+FSP%hp#U`V(i8Dud
> z%x2y{z9Otbp)z&(<H~f<qd;t*aMh{6{dw*74G!J??5h>4i_6H_&KZ-r4NWG&_xnwS
> zr<Gciz^VnRkpe=(?Lza?UGP%LWmF_N5`0_T5~>6(hR}db%DGA;eB#XAg`B(yg|j|S
> z)ejc%r}Ojh7v;RQo^nKr6Z!3S!izC(Mjh94JcT=??;!=HM4w$ih+d50Jx`8ae>{)t
> zfVkl*T<+prZGpK#xgSV+Cq++1<DSb68`kzbyHaOd*ZpiFDmmIO5)_*{^2l4E3?!%_
> z=pis7uqF^I36u<%Dv=(%oDpv_gZGcBND)d*$W1t78P*=!9;cLCTuFolQi9QlgevJu
> zi^IZeh6_7<!yUpiL>EP^L at 6*d%*55eZKm)`;X;ug-ejosLtrIuNlZzex{acr&*VpX
> z=0eHdG#<#_N2(sArarZ*2Hfk`muFu_C7-T`H7LA1RVhU}YEwmBzq5M(p14CYmn7#h
> z>(gG+!#_!SULVL)eb_48MvO`Lc#Ws7wC=F({%E^romJ4ay8}7lH}9*j96fZDcd}-D
> zU}8_tM8S%CHjQXJ+9lqHoFL2>))aQ0%2;$#JZ|k&6kA|YO1WK=dCRAIWZiK^%d*bq
> zT{bn(<DT{1cV<YxkRa#jw81A=_6%RYb$uzKG-9%Y-u|GI*qOM$POMpNwOF&bYRR*%
> z^CAx?k1o&t*y)%HVmul>uigLb>bl)-*~YEPm7E!)D_;Kj;+X19#dC@!_li4i4Zbg(
> zUM`|!RPRId2i;nc9K^ryv+uKdXx78oo4z={m=v=d6W2W5e8xh-*w?T7WJwTZel6~`
> zM`liQeTp3Xs9N&rll{k<%ev>XKV*Vx9e0n#d<ynH@#nK%Br|gDY6Zx#Y&`h0OTNWa
> znZijM<Krb|^iO*R?VtO;7 at G(Z3G&jiU2W;0boT{6{e<~oG?whR?FD-?FM`{tbeKLi
> z>y_WzIh9)h0}DZEeri<zA>hj7Q047YpeeUEsizA at 4}8J)AI#Ppj!hKrT+3R*jYSUE
> zCz*A&R>`1D#4p^hOW8<Re;qNinmLp?EO=M&V!Ug7X6BnrvZlitX*J-}+~?8I)IUz=
> z1*fkJlphy6J(_H%3|qgvLGAAxu$j$|sc>3+bgJX@;!N_8>YPtFWw=i~=(&IAistxQ
> zZQuy|ctmt8eSf)Tz-fBvrHX>-y-R23RyYY{{I_C}(b}v#H>=I9Z)LdB=ICZy<!?2q
> z^1rD`f2}=-t<?*~RJog$gap;oI6{~r1wS$&YOL)zQv}LCSylFy?}e53>{2_CR;&C(
> zNdMAd)!^0Hg<g%Sji6+-#N6`g%Gin#rZg9==P^1XID7rY0nqW4OW1RSeIE1*oW+Y$
> zIE*{_ddl)dNy6PK*6JIR&u{K(;H`&T+;#8BdZ6*T_95}MHIaiI4=n10!7>MeFr5b=
> zwa&r=B7-j>O4_HeB1?|Ym3a?H!V4ym6-$#p?kfuD9mPBzh`U$0C!P2?dqVD*cbrO|
> z%zmfq&!0~`pLnIE?~3{`7mLs1XS=G(+aR6nIliMWk2SIc>lG`?siQf9ppHB4${XRG
> zmbn%<#>(FMzIQkG at +afPlK}^rgHJ~;@eT(!QZ9t7UluKIk8zB1;8LhbL3JVIb>DNT
> zs5b90lyLI4e4l at yjh|15?bd07rQSVdOM-)Y@$5MGp~PEZg6g5o&SoWx{kXmL_aHL*
> z)sjrtz^RM2hsABJX0rO(An)Hco?lABdUKsiIjOF6yec at pc`0na%fPno9ghWh51k!)
> z7!Z-r-K4i0a~~p}#S`IiQAr&ct*dUIwf|cDd<3m}c>1ufBeV_dwa}Vol7DT|Wa!8c
> z_=2Ty3b&Az%mEI2HDOp(64#L%MO>Yjvtwu8ICcfg<R5+C#iEyMzPHfyif1Hdke7c%
> z$F9W;yKltB{+j&FBlxiU`;?;M3`JiYlac at 9t}u66d+r=jF`+zT+VyZx$M%|ccWkVa
> z>++pTbJDp5I~u-Vs9`0lKoWB=*u5j_MX9zWYv<mzn0*<SrW$X&Ew#SPr4SDnGEIwY
> z9~srYnc|WI<CL|!i(}8KQGB&_C{p(QJKamh3+B%6Ys~A4-}H)RJL`LTPBkL99$FBN
> zXA8WtY~4taU#DcxmbY!N^PMfsVW)H1erXV{v{#x;JD=XlSth+#-|I0wa-U>=<_!|;
> zZQMih10(enKZvIq`U+HsZDb^gzers}BiUfBr+i;x4fEsI?U`N6Eg#p)Sjw~!YjI~<
> zY6G*gRMLb&R&I{I8 at r0>RnjDhU78zTlv`t&48gI!mC~VTy?Ulep{9IsRQIc>Yxj`%
> zo(I5X+Gxu&PXr>xD-^etO%V8IZWi$yWjHMc-Mcb>BcU*KpzbEpKI5^xSnC-7G?b`C
> zZ!6sHp911DwlCngy0iUtj{&<pGOxAQVjdp#A@`~QcVD7#EUWWlue#>XyK4_0Ppw;A
> z(1iOvF-w&^HvN27uU*06&#wI;E-A3p at bNL?EZ^&;ar3`3!e*>*vH)Be`kfFUznoHO
> zRIIl*0S}OM#gcpoa-1ME<LpVJPyw<Q1S-)LfO2&ul8Lkc#)u`6Mj`-YK~_Elst<@@
> zN~B_GARU5_Cyn9_vNl8?H^5QIKySS3cN8Lptiw3(0%Ua%P%uOVtOS8Vl)w;WxB?g|
> z0|v`5<cuiz|0H5crQm&W1cpY8qc(}?qF}0H0DuF*KxIWD;Fzot76&k~0N5%*z(6=a
> zMd_HF94CXvzHuMq at 8k#h%6^ss-UN^lfriCnX;_ejuM2In!`8^~Ckbk3`Fmq=o&*}e
> zh2TacBPFKFt0e$LJW|3&*$8apjV8Dg_32cC1>M*ZNB6|R at e*2^oB+m4!yn=A<?Y2l
> z2l#uD$UX>vqy&~h#smbTz1a<t_$tT{rQ%%?<~o>ff{b5C33nRJ8vz3O`S}6;U_c7h
> z4FrM1;UF*+1cfRxBouuD$TY0KBH8EQ51emEjQzk-iQY7Z?E#y}SQm;f4Jje<T at NpB
> zBcmS+kbQt#S^;qsFOWah8w3G at L0(=zmHYZEn{yBbWFH!qj3XH6X!`mR at dz}A;ZYC_
> zR1u<rf+&KOR3M5NB^7N&CAgZZvI<NarG!?}05Poa``j(_Y{G6DX=_l2g7ftvkZIq6
> zRWWKhO3DmOT{K)*5d~)eqf{`;iV!pkih`)XA!^!?@4&yz{Q;~2+I;R`?C{;v|Fwnw
> zZ~OdW at vqN-*a{iKrXOo=`Z>cGiV&zJL<s?gAhw(x0S0er{Hx>-eZPS)B7x`{@ZW&^
> zBKcR4Z^3Ixp^!9xkKbR`r%<=X|2p at 3Ec{n0e2bec*&jgvPs=ly<DV_h7+`oN>@RM~
> z=tX?z2F-t<hQBd`oCfH(IsZew8R7jcW`7GQ#&Z7uthqnp8}Vvx@$QypKl}byn&ELj
> z^z!zllD3!xj{^}%gw25SVW<ZAi&6171Z|V%f5yyKq;5tOibVUp_gg%Xh at 0GkATh2o
> zkrMujc!Dd|mqe4${LgvftG|$lzr%j*{mW_^pucPOZ{6+d0E1J%0yA9yI~!|q{^WE<
> zhCoVCHyNAJ`n`(YN)ek$6QT@({75CLKkMkN<bh at +4id!;WQuho_-tL at n*T^BfUU%1
> z{!1eIUYY;A8HT9+n=%}<1#jZwVL|g^TobD?ZjY%xG=LKPXKM2A at ij$xJO%Hp7!zIz
> zJ)%%n$n%6f=UKvK^V~OvyfxNG-3u;Ap=Vc)<Q+&*K}3qWMs)Afah7Dq-w+B3jTbPL
> zK(X0sT;^7D-Hw_Lb!O9c#Xrnwy!kd)=5?=r%6NobbGp~3m?~MTy%hGHkJFIW!a-GM
> zG3<hE_zck at gGi3_uALE7v;;ZMS@^h^)-jn=a~74V>*uS=TGuld*}B3mnZM(o$&0!g
> z5G>gD((Q|@I@@Dk&~V+(B=)kl4*J8U%7qXuI;@-!ebR`pNOUcsVl7dg=YGM$o<|R#
> zHndN+{V`V%c~ktf%$IA0w{^bI_XM(cTlb}6s+lic^3VT={o1tT=6*qcDRSUHx9cBn
> z-?vO`Yff+l**HKLm-J9akOh%W06 at VYa|(q9fNbuzImm$QN&#%uON_RTgN8OtMFpaw
> z1VQQOpkOF%l(LQ*Mi-@`3x~mVw9zna&HpUn$f%h%{{S$>QoVc_-hif%e7(p%0A-LV
> zm4GMWHj6I^R8#Z&9|&;Ot!&Bo_;vfeE<iZL4hylm?ca?GwJL7BSP^0~EyC>JpkN{t
> z8}9<inSI;W%N>jLXK9j5Nl&mkXi&>1>up~DDalccD#)%a{$~18$<&(yBd2xxti#+e
> psO{5wE4)N4;0f!yD3PAO+nAC4sWg8o!Ig8fkmHn+(lx<w{tHMLZ2JHJ
>
> diff --git a/extras/package/macosx/Resources/vlcmenubaricon/stopIcon.png b/extras/package/macosx/Resources/vlcmenubaricon/stopIcon.png
> deleted file mode 100644
> index 503ac127f80a14b3cd4e387bae0d88962f945096..0000000000000000000000000000000000000000
> GIT binary patch
> literal 0
> HcmV?d00001
>
> literal 354
> zcmV-o0iFJdP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU
> z000XU0RWnu7ytkO2XskIMF-#k1QjYHzjM<B00032Nkl<ZILoDzO=`n15QV=P&A2WU
> zdXD4*-DlCBJ*yt36jEdBbrIP~N`p=NV35$yr>BPm|CF`%8F&Fszs!$qTtL^_2jCs}
> zIIl8$H8Z*UrZO{`*#RIL;N<QApY4>NE=ucHU;rK^jng!p0TE$l29T}psmw4*wg5^g
> zxH}E9DoIFU7={aAhDh23sI{_W&~+W|PRn6cwN|ESx&Yjrh at h0R>cGsF%?ltR$jr at v
> zYo`H_nM4E;vHtSR7{~DzFkc}vmvHWB4*Dj8%v5tQY`DUgq^{PgYX^NPg@}0C0O*>7
> z{`x5&-TlqoPm*i}AT#UT{RqHrxBK%~-tYH(18^>Iu)%9_Gynhq07*qoM6N<$g5h71
> AfB*mh
>
> diff --git a/extras/package/macosx/Resources/vlcmenubaricon/stopIcon at 2x.png b/extras/package/macosx/Resources/vlcmenubaricon/stopIcon at 2x.png
> deleted file mode 100644
> index 0dad40c64924b85170368c58fc71f95817577eb2..0000000000000000000000000000000000000000
> GIT binary patch
> literal 0
> HcmV?d00001
>
> literal 688
> zcmV;h0#E&kP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800009a7bBm000XU
> z000XU0RWnu7ytkO2XskIMF-#k1QjYYJfK#?0006{Nkl<ZSi{9vTXNzs5bT~2A!L`|
> zJp$MqB}YgOxqtcFbHEw)GgKv8fHnJpM2%%T4{(U8R4#)x)6?B!OGJBwG!360eQW4`
> zXSy~34&{S_>yPiq*-ue$lso{qPc&`Qe{ZcNfIWbhG<N_ZfExfa0GjR_06$aJe*pZ>
> zl7|AoJ%Gnn77}K|mLRjVcmeR565ay%;b?v}vzhZ*2B1MiEXH^gMWk^-<0o~xOLK^=
> zT*!^fhu|sz$!)qul7G!??wrg4w=)5i;+dG&l6*F^+r;L-lM6*U8cz}cNfh3>pqGq&
> zmXf5l`d&oPG|dT-lYsQ}jN$kr2=n(rRk7diPXKaGk~U`YoY&0Qk|0;@0gPOD3xw~e
> zjt6q`4CJl$JA-;;_YX4g)d0K{y#Q3T1)yATZt}tdZ2+n|2w-dm%9w*D^bCAK7ktbE
> zA~GriF~&~3K?YRy1Rzs)Zq>P{O#izQh{y>***2Fj(ASEC0P-Ad>ywHpWA=7I$->wY
> z_*klX9TWPGoCnaiALvv+0s|%@W at eqDNOnA6P6FoExex&5h at b<Y?^R4^LMwJc=bRG=
> zz(gcw038z+5*(5Y2NBt(Aad?O#mt0c6p?2$n~|LOLrF&hlJiu35RqT+Y|B5~1*$qT
> zvq_R*UNS%jKwKvTALPO|oVd;s2Y{hCr#+<wk>r+S7~>6?a?DeKPwtUp?y9P=SS+q~
> z9IL7dbzQd(h~IWNWnI@;uh#&8<#HKRHB6^dQ`ONvMtSSM+wIsi&0(|I8~|XoTH!w>
> WEgX4wfMdS^0000<MNUMnLSTYOE+XLo
>
> diff --git a/extras/package/macosx/vlc.xcodeproj/project.pbxproj b/extras/package/macosx/vlc.xcodeproj/project.pbxproj
> index fdc3f6c..820a004 100644
> --- a/extras/package/macosx/vlc.xcodeproj/project.pbxproj
> +++ b/extras/package/macosx/vlc.xcodeproj/project.pbxproj
> @@ -461,19 +461,18 @@
> 1CE5ED2619DD6AB700FCEFD3 /* lion-window-fullscreen at 2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1CE5ED2019DD6AB700FCEFD3 /* lion-window-fullscreen at 2x.png */; };
> 633121D01B5112C300E636DA /* ResumeDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = 633121CE1B5112C300E636DA /* ResumeDialog.xib */; };
> 6B13E2A81BC67678001AD24A /* VLCScrollingClipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B13E2A71BC67678001AD24A /* VLCScrollingClipView.m */; };
> - 6B242D4F1CBD18DA00016E2A /* statusBarIcon.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 6B242D4E1CBD18DA00016E2A /* statusBarIcon.pdf */; };
> + 6B3F8D2C1CE58E0E002A4998 /* VLCNextTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 6B3F8D281CE58E0E002A4998 /* VLCNextTemplate.pdf */; };
> + 6B3F8D2D1CE58E0E002A4998 /* VLCPauseTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 6B3F8D291CE58E0E002A4998 /* VLCPauseTemplate.pdf */; };
> + 6B3F8D2E1CE58E0E002A4998 /* VLCPlayTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 6B3F8D2A1CE58E0E002A4998 /* VLCPlayTemplate.pdf */; };
> + 6B3F8D2F1CE58E0E002A4998 /* VLCPreviousTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 6B3F8D2B1CE58E0E002A4998 /* VLCPreviousTemplate.pdf */; };
> + 6B3F8D311CE5CC21002A4998 /* VLCStatusBarIcon.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 6B3F8D301CE5CC21002A4998 /* VLCStatusBarIcon.pdf */; };
> + 6B3F8D331CE5CD57002A4998 /* VLCShuffleTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 6B3F8D321CE5CD57002A4998 /* VLCShuffleTemplate.pdf */; };
> 7D3F6525188051F2005776C4 /* BWQuincyMain.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D3F6523188051F2005776C4 /* BWQuincyMain.xib */; };
> 7D8BB0B71830311300FAE9B7 /* DebugMessageVisualizer.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D8BB0B51830311300FAE9B7 /* DebugMessageVisualizer.xib */; };
> 7D8BB0BA1830367200FAE9B7 /* PlaylistMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D8BB0B81830367200FAE9B7 /* PlaylistMenu.xib */; };
> 7D8BB0C01830393300FAE9B7 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D8BB0BE1830393300FAE9B7 /* MainWindow.xib */; };
> 7D9516B71C60B69200D14E1A /* VLCStatusBarIconMainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D9516B51C60B69200D14E1A /* VLCStatusBarIconMainMenu.xib */; };
> 7D9516BA1C60B6AB00D14E1A /* VLCStatusBarIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D9516B91C60B6AB00D14E1A /* VLCStatusBarIcon.m */; };
> - 7D9516C41C60B6DB00D14E1A /* pauseIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D9516BC1C60B6DB00D14E1A /* pauseIcon.png */; };
> - 7D9516C51C60B6DB00D14E1A /* pauseIcon at 2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D9516BD1C60B6DB00D14E1A /* pauseIcon at 2x.png */; };
> - 7D9516C61C60B6DB00D14E1A /* playIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D9516BE1C60B6DB00D14E1A /* playIcon.png */; };
> - 7D9516C71C60B6DB00D14E1A /* playIcon at 2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D9516BF1C60B6DB00D14E1A /* playIcon at 2x.png */; };
> - 7D9516CA1C60B6DB00D14E1A /* stopIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D9516C21C60B6DB00D14E1A /* stopIcon.png */; };
> - 7D9516CB1C60B6DB00D14E1A /* stopIcon at 2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D9516C31C60B6DB00D14E1A /* stopIcon at 2x.png */; };
> 7DB65D5618ABD6490053B874 /* AddonManager.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7DB65D5418ABD6490053B874 /* AddonManager.xib */; };
> 7DBB06641CC2314D004C74D2 /* caopengllayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DBB06631CC2314D004C74D2 /* caopengllayer.m */; };
> 7DD6EC101B58136D0047CF5C /* SimplePreferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7DD6EC0E1B58136D0047CF5C /* SimplePreferences.xib */; };
> @@ -1253,7 +1252,12 @@
> 633121CF1B5112C300E636DA /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/ResumeDialog.xib; sourceTree = "<group>"; };
> 6B13E2A61BC67678001AD24A /* VLCScrollingClipView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLCScrollingClipView.h; path = ../../../modules/gui/macosx/VLCScrollingClipView.h; sourceTree = "<group>"; };
> 6B13E2A71BC67678001AD24A /* VLCScrollingClipView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VLCScrollingClipView.m; path = ../../../modules/gui/macosx/VLCScrollingClipView.m; sourceTree = "<group>"; };
> - 6B242D4E1CBD18DA00016E2A /* statusBarIcon.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = statusBarIcon.pdf; path = Resources/vlcmenubaricon/statusBarIcon.pdf; sourceTree = "<group>"; };
> + 6B3F8D281CE58E0E002A4998 /* VLCNextTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = VLCNextTemplate.pdf; path = Resources/vlcmenubaricon/VLCNextTemplate.pdf; sourceTree = "<group>"; };
> + 6B3F8D291CE58E0E002A4998 /* VLCPauseTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = VLCPauseTemplate.pdf; path = Resources/vlcmenubaricon/VLCPauseTemplate.pdf; sourceTree = "<group>"; };
> + 6B3F8D2A1CE58E0E002A4998 /* VLCPlayTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = VLCPlayTemplate.pdf; path = Resources/vlcmenubaricon/VLCPlayTemplate.pdf; sourceTree = "<group>"; };
> + 6B3F8D2B1CE58E0E002A4998 /* VLCPreviousTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = VLCPreviousTemplate.pdf; path = Resources/vlcmenubaricon/VLCPreviousTemplate.pdf; sourceTree = "<group>"; };
> + 6B3F8D301CE5CC21002A4998 /* VLCStatusBarIcon.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = VLCStatusBarIcon.pdf; path = Resources/vlcmenubaricon/VLCStatusBarIcon.pdf; sourceTree = "<group>"; };
> + 6B3F8D321CE5CD57002A4998 /* VLCShuffleTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = VLCShuffleTemplate.pdf; path = Resources/vlcmenubaricon/VLCShuffleTemplate.pdf; sourceTree = "<group>"; };
> 7D3F6524188051F2005776C4 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/BWQuincyMain.xib; sourceTree = "<group>"; };
> 7D3F652618805297005776C4 /* BWQuincyManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BWQuincyManager.h; path = ../../../modules/gui/macosx/BWQuincyManager.h; sourceTree = SOURCE_ROOT; };
> 7D3F652718805297005776C4 /* BWQuincyManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = BWQuincyManager.m; path = ../../../modules/gui/macosx/BWQuincyManager.m; sourceTree = SOURCE_ROOT; };
> @@ -1270,12 +1274,6 @@
> 7D9516B61C60B69200D14E1A /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/VLCStatusBarIconMainMenu.xib; sourceTree = "<group>"; };
> 7D9516B81C60B6AB00D14E1A /* VLCStatusBarIcon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLCStatusBarIcon.h; path = ../../../modules/gui/macosx/VLCStatusBarIcon.h; sourceTree = "<group>"; };
> 7D9516B91C60B6AB00D14E1A /* VLCStatusBarIcon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VLCStatusBarIcon.m; path = ../../../modules/gui/macosx/VLCStatusBarIcon.m; sourceTree = "<group>"; };
> - 7D9516BC1C60B6DB00D14E1A /* pauseIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pauseIcon.png; path = Resources/vlcmenubaricon/pauseIcon.png; sourceTree = "<group>"; };
> - 7D9516BD1C60B6DB00D14E1A /* pauseIcon at 2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "pauseIcon at 2x.png"; path = "Resources/vlcmenubaricon/pauseIcon at 2x.png"; sourceTree = "<group>"; };
> - 7D9516BE1C60B6DB00D14E1A /* playIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = playIcon.png; path = Resources/vlcmenubaricon/playIcon.png; sourceTree = "<group>"; };
> - 7D9516BF1C60B6DB00D14E1A /* playIcon at 2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "playIcon at 2x.png"; path = "Resources/vlcmenubaricon/playIcon at 2x.png"; sourceTree = "<group>"; };
> - 7D9516C21C60B6DB00D14E1A /* stopIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = stopIcon.png; path = Resources/vlcmenubaricon/stopIcon.png; sourceTree = "<group>"; };
> - 7D9516C31C60B6DB00D14E1A /* stopIcon at 2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "stopIcon at 2x.png"; path = "Resources/vlcmenubaricon/stopIcon at 2x.png"; sourceTree = "<group>"; };
> 7DA481221B5FC13700917FD7 /* VLCPlaylistView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = VLCPlaylistView.h; path = ../../../modules/gui/macosx/VLCPlaylistView.h; sourceTree = "<group>"; };
> 7DA481231B5FC13700917FD7 /* VLCPlaylistView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = VLCPlaylistView.m; path = ../../../modules/gui/macosx/VLCPlaylistView.m; sourceTree = "<group>"; };
> 7DB65D5218ABD6380053B874 /* AddonsWindowController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AddonsWindowController.h; path = ../../../modules/gui/macosx/AddonsWindowController.h; sourceTree = SOURCE_ROOT; };
> @@ -2367,13 +2365,12 @@
> 7D9516BB1C60B6C700D14E1A /* status bar item */ = {
> isa = PBXGroup;
> children = (
> - 7D9516BC1C60B6DB00D14E1A /* pauseIcon.png */,
> - 7D9516BD1C60B6DB00D14E1A /* pauseIcon at 2x.png */,
> - 7D9516BE1C60B6DB00D14E1A /* playIcon.png */,
> - 7D9516BF1C60B6DB00D14E1A /* playIcon at 2x.png */,
> - 6B242D4E1CBD18DA00016E2A /* statusBarIcon.pdf */,
> - 7D9516C21C60B6DB00D14E1A /* stopIcon.png */,
> - 7D9516C31C60B6DB00D14E1A /* stopIcon at 2x.png */,
> + 6B3F8D301CE5CC21002A4998 /* VLCStatusBarIcon.pdf */,
> + 6B3F8D281CE58E0E002A4998 /* VLCNextTemplate.pdf */,
> + 6B3F8D291CE58E0E002A4998 /* VLCPauseTemplate.pdf */,
> + 6B3F8D2A1CE58E0E002A4998 /* VLCPlayTemplate.pdf */,
> + 6B3F8D2B1CE58E0E002A4998 /* VLCPreviousTemplate.pdf */,
> + 6B3F8D321CE5CD57002A4998 /* VLCShuffleTemplate.pdf */,
> );
> name = "status bar item";
> sourceTree = "<group>";
> @@ -3237,6 +3234,7 @@
> CC04336613B28B8200D7D52E /* effects-one-button.png in Resources */,
> 1C88BA7E19DC7B2200645190 /* yosemite-window-zoom-over-graphite.png in Resources */,
> 1C88BC2719DC7C8100645190 /* ys-progressbar-fill-right_dark.png in Resources */,
> + 6B3F8D2E1CE58E0E002A4998 /* VLCPlayTemplate.pdf in Resources */,
> 1C88BB1A19DC7C7800645190 /* ys-effects-one-button.png in Resources */,
> 1C88BA9A19DC7C5D00645190 /* ys-sidebar-playlist at 2x.png in Resources */,
> 1C88BB5D19DC7C7800645190 /* ys-repeat at 2x.png in Resources */,
> @@ -3296,8 +3294,8 @@
> 1C88BB0A19DC7C7800645190 /* ys-backward-3btns.png in Resources */,
> 1C88BB0819DC7C7800645190 /* ys-backward-3btns-pressed.png in Resources */,
> CC04338C13B28B8200D7D52E /* stop-pressed.png in Resources */,
> + 6B3F8D2F1CE58E0E002A4998 /* VLCPreviousTemplate.pdf in Resources */,
> CC04338D13B28B8200D7D52E /* stop.png in Resources */,
> - 6B242D4F1CBD18DA00016E2A /* statusBarIcon.pdf in Resources */,
> CC04338E13B28B8200D7D52E /* volume-high.png in Resources */,
> CC04338F13B28B8200D7D52E /* volume-low.png in Resources */,
> 1C88BB3219DC7C7800645190 /* ys-pause.png in Resources */,
> @@ -3321,6 +3319,7 @@
> 1C88BCAC19DC7CB300645190 /* ys-fs_stop.png in Resources */,
> CC0433AD13B28B9C00D7D52E /* m4a.icns in Resources */,
> CC0433AE13B28B9C00D7D52E /* m4v.icns in Resources */,
> + 6B3F8D331CE5CD57002A4998 /* VLCShuffleTemplate.pdf in Resources */,
> 1C88BA6419DC7B2200645190 /* yosemite-window-fullscreen-on.png in Resources */,
> 1C88BCB419DC7CB300645190 /* ys-fs_time_slider_knob_highlight.png in Resources */,
> 1C88BB5A19DC7C7800645190 /* ys-repeat-pressed.png in Resources */,
> @@ -3495,6 +3494,7 @@
> CC9E5D7015975E2600D14E83 /* sidebar-local at 2x.png in Resources */,
> 1C88BB2D19DC7C7800645190 /* ys-next-6btns-pressed at 2x.png in Resources */,
> CC9E5D7115975E2600D14E83 /* sidebar-movie at 2x.png in Resources */,
> + 6B3F8D2C1CE58E0E002A4998 /* VLCNextTemplate.pdf in Resources */,
> 1C88BBE619DC7C8100645190 /* ys-backward-3btns-dark-pressed at 2x.png in Resources */,
> 1C88BB0C19DC7C7800645190 /* ys-backward-6btns-pressed.png in Resources */,
> 1C88BC2619DC7C8100645190 /* ys-progressbar-fill-middle_dark at 2x.png in Resources */,
> @@ -3510,7 +3510,6 @@
> 1C88BB6319DC7C7800645190 /* ys-shuffle-pressed at 2x.png in Resources */,
> CC9E5D9B15975F5B00D14E83 /* fs_background at 2x.png in Resources */,
> 1C88BC3E19DC7C8100645190 /* ys-shuffle-blue-pressed_dark at 2x.png in Resources */,
> - 7D9516C51C60B6DB00D14E1A /* pauseIcon at 2x.png in Resources */,
> 1C88BC2119DC7C8100645190 /* ys-previous-6btns-dark.png in Resources */,
> CC9E5D9C15975F5B00D14E83 /* fs_exit_fullscreen at 2x.png in Resources */,
> CC9E5D9D15975F5B00D14E83 /* fs_forward_highlight at 2x.png in Resources */,
> @@ -3533,16 +3532,15 @@
> 1C88BA7519DC7B2200645190 /* yosemite-window-minimize-over at 2x.png in Resources */,
> CC9E5DA815975F5B00D14E83 /* fs_skip_previous at 2x.png in Resources */,
> 1C88BC4319DC7C8100645190 /* ys-shuffle_dark.png in Resources */,
> - 7D9516C71C60B6DB00D14E1A /* playIcon at 2x.png in Resources */,
> CC9E5DA915975F5B00D14E83 /* fs_stop_highlight at 2x.png in Resources */,
> CC9E5DAA15975F5B00D14E83 /* fs_stop at 2x.png in Resources */,
> CC9E5DAB15975F5B00D14E83 /* fs_time_slider_knob_highlight at 2x.png in Resources */,
> - 7D9516C41C60B6DB00D14E1A /* pauseIcon.png in Resources */,
> 1CE5ED2619DD6AB700FCEFD3 /* lion-window-fullscreen at 2x.png in Resources */,
> 1C88BB3E19DC7C7800645190 /* ys-playlist-btn.png in Resources */,
> 1C88BBEB19DC7C8100645190 /* ys-backward-6btns-dark.png in Resources */,
> CC9E5DAC15975F5B00D14E83 /* fs_time_slider_knob at 2x.png in Resources */,
> 1C88BB3919DC7C7800645190 /* ys-playlist-1btn-pressed at 2x.png in Resources */,
> + 6B3F8D2D1CE58E0E002A4998 /* VLCPauseTemplate.pdf in Resources */,
> 1C88BC5519DC7C8100645190 /* ys-volume-slider-track_dark.png in Resources */,
> 1C88BB5419DC7C7800645190 /* ys-repeat-all.png in Resources */,
> CC9E5DAD15975F5B00D14E83 /* fs_time_slider at 2x.png in Resources */,
> @@ -3629,7 +3627,6 @@
> CC9E5E08159760B100D14E83 /* stop at 2x.png in Resources */,
> CC9E5E09159760B100D14E83 /* volume-high at 2x.png in Resources */,
> 1C88BCB719DC7CB300645190 /* ys-fs_volume_max at 2x.png in Resources */,
> - 7D9516CB1C60B6DB00D14E1A /* stopIcon at 2x.png in Resources */,
> 1C88BB3019DC7C7800645190 /* ys-pause-pressed.png in Resources */,
> CC9E5E0A159760B100D14E83 /* volume-low at 2x.png in Resources */,
> 1C88BCBD19DC7CB300645190 /* ys-fs_volume_mute_highlight at 2x.png in Resources */,
> @@ -3762,7 +3759,6 @@
> 1C88BA6019DC7B2200645190 /* yosemite-window-fullscreen-graphite.png in Resources */,
> CC166FB415F511CC0088201B /* backward-3btns-dark.png in Resources */,
> CC166FB515F511CC0088201B /* backward-3btns-dark at 2x.png in Resources */,
> - 7D9516CA1C60B6DB00D14E1A /* stopIcon.png in Resources */,
> CC166FBA15F511DB0088201B /* backward-3btns-pressed.png in Resources */,
> 1C88BB3C19DC7C7800645190 /* ys-playlist-btn-pressed.png in Resources */,
> CC166FBB15F511DB0088201B /* backward-3btns-pressed at 2x.png in Resources */,
> @@ -3799,7 +3795,6 @@
> CC166FE415F5136B0088201B /* previous-6btns-dark at 2x.png in Resources */,
> 1C88BB1E19DC7C7800645190 /* ys-forward-3btns.png in Resources */,
> CC166FE915F517660088201B /* backward-6btns-pressed.png in Resources */,
> - 7D9516C61C60B6DB00D14E1A /* playIcon.png in Resources */,
> 1C88BB6819DC7C7800645190 /* ys-stop.png in Resources */,
> CC166FEA15F517660088201B /* backward-6btns-pressed at 2x.png in Resources */,
> 1C88BBF719DC7C8100645190 /* ys-effects-one-button-pressed-dark.png in Resources */,
> @@ -3840,6 +3835,7 @@
> 1C88BB1619DC7C7800645190 /* ys-effects-double-buttons.png in Resources */,
> 1C88BB0D19DC7C7800645190 /* ys-backward-6btns-pressed at 2x.png in Resources */,
> 1C88BC9519DC7CB300645190 /* ys-fs_forward at 2x.png in Resources */,
> + 6B3F8D311CE5CC21002A4998 /* VLCStatusBarIcon.pdf in Resources */,
> 1C88BCA119DC7CB300645190 /* ys-fs_rewind at 2x.png in Resources */,
> 1C88BB6519DC7C7800645190 /* ys-shuffle at 2x.png in Resources */,
> 1CE5ED2119DD6AB700FCEFD3 /* lion-window-fullscreen-on.png in Resources */,
> diff --git a/modules/gui/macosx/InputManager.m b/modules/gui/macosx/InputManager.m
> index de4252f..41d22b2 100644
> --- a/modules/gui/macosx/InputManager.m
> +++ b/modules/gui/macosx/InputManager.m
> @@ -64,6 +64,7 @@ static int InputEvent(vlc_object_t *p_this, const char *psz_var,
> break;
> case INPUT_EVENT_POSITION:
> [[[VLCMain sharedInstance] mainWindow] performSelectorOnMainThread:@selector(updateTimeSlider) withObject: nil waitUntilDone:NO];
> + [[[VLCMain sharedInstance] statusBarIcon] performSelectorOnMainThread:@selector(updateProgress) withObject:nil waitUntilDone:NO];
> break;
> case INPUT_EVENT_TITLE:
> case INPUT_EVENT_CHAPTER:
> diff --git a/modules/gui/macosx/VLCStatusBarIcon.h b/modules/gui/macosx/VLCStatusBarIcon.h
> index a646e6b..f5b12a4 100644
> --- a/modules/gui/macosx/VLCStatusBarIcon.h
> +++ b/modules/gui/macosx/VLCStatusBarIcon.h
> @@ -26,15 +26,12 @@
> @interface VLCStatusBarIcon : NSObject <NSMenuDelegate>
>
> @property NSStatusItem *statusItem;
> - at property NSTimer *dataRefreshUpdateTimer;
> @property (readwrite, strong) IBOutlet NSMenu *vlcStatusBarIconMenu;
>
> -// get data from VLC and update the little status menu
> +// Get data from VLC and update the little status menu
> - (void)updateMenuItemRandom;
> -- (void)updateMenuItemPlayPause;
> -- (void)setDataUpdateTimer:(float)interval;
> +- (void)updateProgress;
>
> -- (IBAction)updateMenuItemContent:(id)sender;
> - (IBAction)restoreMainWindow:(id)sender;
> - (IBAction)statusBarIconTogglePlayPause:(id)sender;
> - (IBAction)statusBarIconStop:(id)sender;
> diff --git a/modules/gui/macosx/VLCStatusBarIcon.m b/modules/gui/macosx/VLCStatusBarIcon.m
> index f9e3484..b3c19c9 100644
> --- a/modules/gui/macosx/VLCStatusBarIcon.m
> +++ b/modules/gui/macosx/VLCStatusBarIcon.m
> @@ -32,32 +32,33 @@
> #import <CoreInteraction.h>
> #import <StringUtility.h>
>
> -#pragma mark -
> -#pragma mark Defines
> -
> -#define dataUpdateTimerInterval 1.0
> -#define NSInitialToolTipDelayIn_ms 20
> -// #define showURLInToolTip 1
> -
> @interface VLCStatusBarIcon ()
> {
> NSMenuItem *_vlcStatusBarMenuItem;
>
> + /* Outlets for Now Playing labels */
> + IBOutlet NSTextField *titleField;
> + IBOutlet NSTextField *artistField;
> + IBOutlet NSTextField *albumField;
> + IBOutlet NSTextField *progressField;
> + IBOutlet NSTextField *separatorField;
> + IBOutlet NSTextField *totalField;
> + IBOutlet NSImageView *coverImageView;
> +
> + /* Outlets for player controls */
> + IBOutlet NSButton *backwardsButton;
> + IBOutlet NSButton *playPauseButton;
> + IBOutlet NSButton *forwardButton;
> + IBOutlet NSButton *randButton;
> +
> + /* Outlets for menu items */
> + IBOutlet NSMenuItem *pathActionItem;
> IBOutlet NSMenuItem *showMainWindowItem;
> - IBOutlet NSMenuItem *playPauseItem;
> - IBOutlet NSMenuItem *stopItem;
> - IBOutlet NSMenuItem *nextItem;
> - IBOutlet NSMenuItem *prevItem;
> - IBOutlet NSMenuItem *randItem;
> IBOutlet NSMenuItem *quitItem;
>
> - NSString *_nameToDisplay;
> - NSString *_timeToDisplay;
> - NSString *_durationToDisplay;
> - NSString *_urlToDisplay;
> - NSImage *_menuImagePlay;
> - NSImage *_menuImagePause;
> - NSImage *_menuImageStop;
> + BOOL isStopped;
> + BOOL showTimeElapsed;
> + NSString *_currentPlaybackUrl;
> }
> @end
>
> @@ -69,280 +70,325 @@ @implementation VLCStatusBarIcon
> #pragma mark -
> #pragma mark Init
>
> -- (void)dealloc
> -{
> - // cleanup
> - [self.dataRefreshUpdateTimer invalidate];
> - self.dataRefreshUpdateTimer = nil;
> -}
> -
> - (void)awakeFromNib
> {
> [super awakeFromNib];
> -
> [self enableMenuIcon];
>
> + // Set Accessibility Attributes for Image Buttons
> + [backwardsButton.cell accessibilitySetOverrideValue:_NS("Go to previous track")
> + forAttribute:NSAccessibilityDescriptionAttribute];
> +
> + [playPauseButton.cell accessibilitySetOverrideValue:_NS("Play or pause current media")
> + forAttribute:NSAccessibilityDescriptionAttribute];
> +
> + [forwardButton.cell accessibilitySetOverrideValue:_NS("Go to next track")
> + forAttribute:NSAccessibilityDescriptionAttribute];
> +
> + [randButton.cell accessibilitySetOverrideValue:_NS("Toggle random order playback")
> + forAttribute:NSAccessibilityDescriptionAttribute];
> +
> +
> // Populate menu items with localized strings
> [showMainWindowItem setTitle:_NS("Show Main Window")];
> - [playPauseItem setTitle:_NS("Play")];
> - [stopItem setTitle:_NS("Stop")];
> - [nextItem setTitle:_NS("Next")];
> - [prevItem setTitle:_NS("Previous")];
> - [randItem setTitle:_NS("Random")];
> + [pathActionItem setTitle:_NS("Path/URL Action")];
> [quitItem setTitle:_NS("Quit")];
>
> - // add the top menu item for dynamic data
> - _vlcStatusBarMenuItem = [[NSMenuItem alloc] initWithTitle:_NS("URL/Path Options") action:@selector(updateMenuItemContent:) keyEquivalent:@""];
> -
> - [_vlcStatusBarMenuItem setToolTip:_NS("Misc functions with media URL or Path")];
> - [_vlcStatusBarMenuItem setTarget:self];
> -
> - [_vlcStatusBarIconMenu insertItem:_vlcStatusBarMenuItem atIndex:0];
> + showTimeElapsed = YES;
>
> // Set our selves up as delegate, to receive menuNeedsUpdate messages, so
> // we can update our menu as needed/before it's drawn
> [_vlcStatusBarIconMenu setDelegate:self];
> +
> + // Register notifications
> + [[NSNotificationCenter defaultCenter] addObserver:self
> + selector:@selector(updateNowPlayingInfo)
> + name:VLCInputChangedNotification
> + object:nil];
> +}
>
> - // Disable custom menu item initially
> - // needs to be done with validateMenuItem (see below)
> - [_vlcStatusBarMenuItem setEnabled:NO];
> -
> - // Increase toolTip speed, improves status usability
> - // Tweak delay above, with '#define NSInitialToolTipDelayIn_ms x'
> -
> - [[NSUserDefaults standardUserDefaults] setObject: [NSNumber numberWithInt: NSInitialToolTipDelayIn_ms] forKey: @"NSInitialToolTipDelay"];
> -
> - // init _urlToDisplay
> - _urlToDisplay = nil;
> -
> - // Load the menu icons
> - _menuImagePlay = [NSImage imageNamed:@"playIcon"];
> - _menuImagePause = [NSImage imageNamed:@"pauseIcon"];
> -
> - _menuImageStop = [NSImage imageNamed:@"stopIcon"];
> - [stopItem setImage:_menuImageStop];
> +/* Enables the Status Bar Item and initializes it's image
> + * and context menu
> + */
> +- (void)enableMenuIcon
> +{
> + // Init the status item
> + _statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
> + [_statusItem setHighlightMode:YES];
> + [_statusItem setEnabled:YES];
> + [_statusItem setTarget:self];
>
> - // I'd rather not use a timer and only update when mouse comes near
> - // status icon in bar. But one can't tell without evil sourcery :(
> - // Tweak update frequency above (#define)
> + // Set the status item image
> + NSImage *menuIcon = [NSImage imageNamed:@"VLCStatusBarIcon"];
> + [menuIcon setTemplate:YES];
> + [_statusItem setImage:menuIcon];
>
> - [self setDataUpdateTimer:dataUpdateTimerInterval];
> + // Attach pull-down menu
> + [_statusItem setMenu:_vlcStatusBarIconMenu];
> }
>
> +- (void)dealloc
> +{
> + // Cleanup
> + [[NSNotificationCenter defaultCenter] removeObserver:self];
> +}
>
> #pragma mark -
> -#pragma mark Various callback functions
> +#pragma mark Event callback functions
>
> -//---
> -// Menu delegate/callback for cocoa - called before menu is opened/displayed
> -// fire off menu item updates (dynamic item 0, play/pause, random)
> +/* Menu update delegate
> + * Called before menu is opened/displayed
> + */
> - (void)menuNeedsUpdate:(NSMenu *)menu
> {
> - // update dynamic menu 'item 0' (follows data gathered by timer handler)
> - [self updateDynamicMenuItemText];
> -
> - // update play/pause status in status bar menu
> - [self updateMenuItemPlayPause];
> -
> - // update random status in status bar menu
> + [self updateMetadata];
> [self updateMenuItemRandom];
> + [self updateDynamicMenuItemText];
> }
>
> -
> -//---
> -// Make sure we can enable/disable menu items (in our case index 0)
> -// override class method. Called every time before menu is drawn.
> -- (BOOL)validateMenuItem:(NSMenuItem *)menuItem
> +/* This is called whenever the playback status for VLC changes and here
> + * we can update our information in the menu/view
> + */
> +- (void) updateNowPlayingInfo
> {
> - // disable the URL/Path options menu if there is no meaningful data
> - if ((menuItem.action == @selector(updateMenuItemContent:)) && (!_urlToDisplay)) {
> - return NO;
> - }
> - return YES;
> + [self updateMetadata];
> + [self updateProgress];
> + [self updateDynamicMenuItemText];
> }
>
> -
> -//---
> -// callback for tooltip update timer
> -//
> -- (void)dataRefreshTimeHandler:(NSTimer *)timer
> +/* Callback to update current playback time
> + * Called by InputManager
> + */
> +- (void)updateProgress
> {
> - [self gatherDataToDisplay];
> - [self updateToolTipText];
> + input_thread_t *input = pl_CurrentInput(getIntf());
> +
> + if (input) {
> + NSString *elapsedTime;
> + NSString *remainingTime;
> + NSString *totalTime;
> +
> + /* Get elapsed and remaining time */
> + elapsedTime = [[VLCStringUtility sharedInstance] getCurrentTimeAsString:input negative:NO];
> + remainingTime = [[VLCStringUtility sharedInstance] getCurrentTimeAsString:input negative:YES];
> +
> + /* Check item duration */
> + mtime_t dur = input_item_GetDuration(input_GetItem(input));
> +
> + if (dur == -1) {
> + /* Unknown duration, possibly due to buffering */
> + [progressField setStringValue:@"--:--"];
> + [totalField setStringValue:@"--:--"];
> + } else if (dur == 0) {
> + /* Infinite duration */
> + [progressField setStringValue:elapsedTime];
> + [totalField setStringValue:@"∞"];
> + } else {
> + /* Not unknown, update displayed duration */
> + totalTime = [[VLCStringUtility sharedInstance] stringForTime:(dur/1000000)];
> + [progressField setStringValue:(showTimeElapsed) ? elapsedTime : remainingTime];
> + [totalField setStringValue:totalTime];
> + }
> + [self setStoppedStatus:NO];
> + vlc_object_release(input);
> + } else {
> + /* Nothing playing */
> + [self setStoppedStatus:YES];
> + }
> }
>
>
> #pragma mark -
> -#pragma mark Various functions
> -
> -
> -//---
> -// enables menu icon/status item, sets proporties like image, attach menu
> -//
> -- (void)enableMenuIcon
> -{
> - _statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
> - [_statusItem setHighlightMode:YES];
> - [_statusItem setEnabled:YES];
> - [_statusItem setTarget:self];
> -
> - NSImage *menuIcon;
> - // set black/white icon (or color, like originally)
> - menuIcon = [NSImage imageNamed:@"statusBarIcon"];
> - // Make sure the b/w statusItem icon is inverted on dark/light mode
> - menuIcon.template = YES;
> - [_statusItem setImage:menuIcon];
> - [_statusItem setLength:24];
> -
> - // Attach pull-down menu
> - [_statusItem setMenu:_vlcStatusBarIconMenu];
> -}
> +#pragma mark Update functions
>
> -
> -//---
> -// Make sure data is fresh, before displaying
> -//
> -- (void)gatherDataToDisplay
> +/* Updates the Metadata for the currently
> + * playing item or resets it if nothing is playing
> + */
> +- (void)updateMetadata
> {
> - mtime_t pos;
> + NSImage *coverArtImage;
> + NSString *title;
> + NSString *nowPlaying;
> + NSString *artist;
> + NSString *album;
> + input_thread_t *input = pl_CurrentInput(getIntf());
> + input_item_t *item = NULL;
> +
> + // Update play/pause status
> + switch ([self getPlaylistPlayStatus]) {
> + case PLAYLIST_RUNNING:
> + [self setStoppedStatus:NO];
> + [self setProgressTimeEnabled:YES];
> + [pathActionItem setEnabled:YES];
> + _currentPlaybackUrl = [[[VLCCoreInteraction sharedInstance]
> + URLOfCurrentPlaylistItem] absoluteString];
> + break;
> + case PLAYLIST_STOPPED:
> + [self setStoppedStatus:YES];
> + [self setProgressTimeEnabled:NO];
> + [pathActionItem setEnabled:NO];
> + _currentPlaybackUrl = nil;
> + break;
> + case PLAYLIST_PAUSED:
> + [self setStoppedStatus:NO];
> + [self setProgressTimeEnabled:YES];
> + [pathActionItem setEnabled:YES];
> + _currentPlaybackUrl = [[[VLCCoreInteraction sharedInstance]
> + URLOfCurrentPlaylistItem] absoluteString];
> + [playPauseButton setState:NSOffState];
> + default:
> + break;
> + }
>
> - // get name of current item - clear first!
> - _nameToDisplay = nil;
> - _nameToDisplay = [[VLCCoreInteraction sharedInstance] nameOfCurrentPlaylistItem];
> + if (input) {
> + item = input_GetItem(input);
> + }
>
> - // If status is 'stopped' there is no useful data
> - // Otherwise could have used 'if (_nameToDisplay == nil)'
> + if (item) {
> + /* Something is playing */
> + static char *tmp_cstr = NULL;
> +
> + // Get Coverart
> + tmp_cstr = input_item_GetArtworkURL(item);
> + if (tmp_cstr) {
> + NSString *tempStr = toNSStr(tmp_cstr);
> + if (![tempStr hasPrefix:@"attachment://"]) {
> + coverArtImage = [[NSImage alloc]
> + initWithContentsOfURL:[NSURL URLWithString:tempStr]];
> + }
> + FREENULL(tmp_cstr);
> + }
>
> - if ([self vlcPlayingStatus] == PLAYLIST_STOPPED) {
> - _urlToDisplay = nil;
> - } else {
> - input_thread_t * p_input;
> - p_input = pl_CurrentInput(getIntf());
> - if (p_input) {
> - pos = var_GetInteger(p_input, "time") / CLOCK_FREQ;
> - vlc_object_release(p_input); // must release or get segfault on quit
> + // Get Titel
> + tmp_cstr = input_item_GetTitle(item);
> + if (tmp_cstr) {
> + title = toNSStr(tmp_cstr);
> + FREENULL(tmp_cstr);
> }
>
> - // update our time counter
> - _timeToDisplay = [[VLCStringUtility sharedInstance] stringForTime:(long long) pos];
> + // Get Now Playing
> + tmp_cstr = input_item_GetNowPlaying(item);
> + if (tmp_cstr) {
> + nowPlaying = toNSStr(tmp_cstr);
> + FREENULL(tmp_cstr);
> + }
>
> - // get the duration (if it's there)
> - int duration = [[VLCCoreInteraction sharedInstance] durationOfCurrentPlaylistItem];
> - _durationToDisplay = [[VLCStringUtility sharedInstance] stringForTime:(long long) duration];
> + // Get author
> + tmp_cstr = input_item_GetArtist(item);
> + if (tmp_cstr) {
> + artist = toNSStr(tmp_cstr);
> + FREENULL(tmp_cstr);
> + }
>
> - // update the playing item's URL/Path
> - _urlToDisplay = [[[VLCCoreInteraction sharedInstance] URLOfCurrentPlaylistItem] absoluteString];
> + // Get album
> + tmp_cstr = input_item_GetAlbum(item);
> + if (tmp_cstr) {
> + album = toNSStr(tmp_cstr);
> + FREENULL(tmp_cstr);
> + }
> + } else {
> + /* Nothing playing */
> + title = _NS("VLC media player");
> + artist = _NS("Nothing playing");
> }
> -}
>
> + // Set fallback coverart
> + if (!coverArtImage) {
> + coverArtImage = [NSImage imageNamed:@"noart.png"];
> + }
>
> -//---
> -// Call for periodic updates of tooltip text
> -//
> -- (void)updateToolTipText
> -{
> - NSString *toolTipText = nil;
> -
> - // craft the multiline string, for the tooltip, depending on play status
> -
> - if ([self vlcPlayingStatus] == PLAYLIST_STOPPED) {
> - // nothing playing
> - toolTipText = _NS("VLC media player\nNothing playing");
> - } else {
> -#ifdef showURLInToolTip
> - toolTipText = [NSString stringWithFormat:_NS("VLC media player\nName: %@\nDuration: %@\nTime: %@\nURL/Path: %@"), _nameToDisplay, _durationToDisplay, _timeToDisplay, _urlToDisplay];
> -#else
> - toolTipText = [NSString stringWithFormat:_NS("VLC media player\nName: %@\nDuration: %@\nTime: %@"), _nameToDisplay, _durationToDisplay, _timeToDisplay];
> - // Causes warning, we need NS_FORMAT_ARGUMENT(1) for the localize function
> -#endif
> + // Hack to show now playing for streams (ICY)
> + if (nowPlaying && !artist) {
> + artist = nowPlaying;
> }
>
> - [_statusItem setToolTip:toolTipText];
> + // Set the metadata in the UI
> + [self setMetadataTitle:title artist:artist album:album andCover:coverArtImage];
> +
> + // Cleanup
> + if (input)
> + vlc_object_release(input);
> }
>
>
>
> -//---
> -// Call for updating of dynamic menu item
> -//
> +// Update dynamic copy/open menu item status
> - (void)updateDynamicMenuItemText
> {
> - NSString *menuString = nil;
> + if (!_currentPlaybackUrl) {
> + [pathActionItem setTitle:_NS("Path/URL Action")];
> + return;
> + }
> +
> + NSURL *itemURI = [NSURL URLWithString:_currentPlaybackUrl];
>
> - // create string for dynamic menu bit (sync?)
> - if ([self vlcPlayingStatus] == PLAYLIST_STOPPED) {
> - // put back our disabled menu item text.
> - menuString = _NS("URL/Path Options");
> + if ([itemURI.scheme isEqualToString:@"file"]) {
> + [pathActionItem setTitle:_NS("Select File In Finder")];
> } else {
> - if ([_urlToDisplay hasPrefix:@"file://"]) {
> - // offer to show 'file://' in finder
> - menuString = _NS("Select File In Finder");
> - } else {
> - // offer to copy URL to clipboard
> - menuString = _NS("Copy URL to clipboard");
> - }
> + [pathActionItem setTitle:_NS("Copy URL to clipboard")];
> }
> -
> - [_vlcStatusBarMenuItem setTitle:menuString];
> }
>
> -
> -//---
> -// set timer for tooltips updates and flee
> -//
> -- (void)setDataUpdateTimer:(float)interval
> +// Update the random menu item status
> +- (void)updateMenuItemRandom
> {
> - self.dataRefreshUpdateTimer = [NSTimer scheduledTimerWithTimeInterval:interval
> - target:self
> - selector:@selector(dataRefreshTimeHandler:)
> - userInfo:nil
> - repeats:YES];
> + // Get current random status
> + bool random;
> + playlist_t *playlist = pl_Get(getIntf());
> + random = var_GetBool(playlist, "random");
> +
> + [randButton setState:(random) ? NSOnState : NSOffState];
> }
>
>
> -//---
> -//
> -//
> -- (void)updateMenuItemRandom
> -{
> - // get current random status
> - bool b_value;
> - playlist_t *p_playlist = pl_Get(getIntf());
> - b_value = var_GetBool(p_playlist, "random");
>
> - if (b_value) {
> - [randItem setState:NSOnState];
> - } else {
> - [randItem setState:NSOffState];
> - }
> -}
> +#pragma mark -
> +#pragma mark Utility functions
>
> +/* Update the UI to the specified metadata
> + * Any of the values can be nil and will be replaced with empty strings
> + * or no cover Image at all
> + */
> +- (void)setMetadataTitle:(NSString *)title
> + artist:(NSString *)artist
> + album:(NSString *)album
> + andCover:(NSImage *)cover
> +{
> + [titleField setStringValue:(title) ? title : @""];
> + [artistField setStringValue:(artist) ? artist : @""];
> + [albumField setStringValue:(album) ? album : @""];
> + [coverImageView setImage:cover];
> +}
>
> -//---
> -//
> -//
> -- (void)updateMenuItemPlayPause
> +// Set the play/pause menu item status
> +- (void)setStoppedStatus:(BOOL)stopped
> {
> - if ([self vlcPlayingStatus] == PLAYLIST_RUNNING) {
> - [playPauseItem setTitle:_NS("Pause")];
> - [playPauseItem setImage:_menuImagePause];
> + isStopped = stopped;
> + if (stopped) {
> + [playPauseButton setState:NSOffState];
> } else {
> - [playPauseItem setTitle:_NS("Play")];
> - [playPauseItem setImage:_menuImagePlay];
> + [playPauseButton setState:NSOnState];
> }
> }
>
> +- (void)setProgressTimeEnabled:(BOOL)enabled
> +{
> + NSColor *color;
> + color = (!enabled) ? [NSColor secondaryLabelColor] : [NSColor blackColor];
> + // Set color to the labels
> + [progressField setTextColor:color];
> + [separatorField setTextColor:color];
> + [totalField setTextColor:color];
> +}
>
> -#pragma mark -
> -#pragma mark Utility functions
>
> -//---
> -// Returns VLC playlist status
> -// Check for: constants PLAYLIST_RUNNING, PLAYLIST_STOPPED, PLAYLIST_PAUSED.
> -- (int)vlcPlayingStatus
> +/* Returns VLC playlist status
> + * Check for constants:
> + * PLAYLIST_RUNNING, PLAYLIST_STOPPED, PLAYLIST_PAUSED
> + */
> +- (int)getPlaylistPlayStatus
> {
> int res;
> - // get the playlist 'playing' status
> playlist_t *p_playlist = pl_Get(getIntf());
>
> PL_LOCK;
> @@ -353,108 +399,80 @@ - (int)vlcPlayingStatus
> }
>
>
> -//---
> -// Returns true if playing, false in all other cases.
> -//
> -- (BOOL)isVLCPlaying
> -{
> - bool vlcPlaying = false;
> -
> - // get the playlist 'playing' status
> - playlist_t *p_playlist = pl_Get(getIntf());
> -
> - PL_LOCK;
> - if (playlist_Status( p_playlist ) == PLAYLIST_RUNNING) {
> - vlcPlaying = true;
> - }
> - PL_UNLOCK;
> -
> - return vlcPlaying;
> -}
> -
> -
> -
> #pragma mark -
> #pragma mark Menu item Actions
>
> -//-- action for dynamic menu index 0
> -
> -- (IBAction) updateMenuItemContent:(id)sender
> +/* Action: Select the currently playing file in Finder
> + * or in case of a network stream, copy the URL
> + */
> +- (IBAction)copyOrOpenCurrentPlaybackItem:(id)sender
> {
> - // Here we offer to copy the url to the clipboard or
> - // select/show a local file in the finder..(useful imo ;-)
> -
> - if ([self vlcPlayingStatus] != PLAYLIST_STOPPED) {
> - if ([_urlToDisplay hasPrefix:@"file://"]) {
> - // show local file in finder
> - NSString *path=[_urlToDisplay substringFromIndex:7];
> - [[NSWorkspace sharedWorkspace] selectFile:path inFileViewerRootedAtPath:path];
> - } else {
> - // copy remote URL to clipboard
> - NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
> - [pasteboard clearContents];
> - [pasteboard setString:_urlToDisplay forType:NSStringPboardType];
> - }
> + // If nothing playing, there is nothing to do
> + if (!_currentPlaybackUrl) {
> + return;
> }
> -}
>
> + // Check if path or URL
> + NSURL *itemURI = [NSURL URLWithString:_currentPlaybackUrl];
>
> -//-- action for 'main window'
> + if ([itemURI.scheme isEqualToString:@"file"]) {
> + // Local file, open in Finder
> + [[NSWorkspace sharedWorkspace] selectFile:itemURI.path
> + inFileViewerRootedAtPath:itemURI.path];
> + } else {
> + // URL, copy to pasteboard
> + NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
> + [pasteboard clearContents];
> + [pasteboard setString:_currentPlaybackUrl forType:NSPasteboardTypeString];
> + }
> +}
>
> +// Action: Show VLC main window
> - (IBAction)restoreMainWindow:(id)sender
> {
> - // force our window to go to front (huzzah) and restore window
> [[VLCApplication sharedApplication] activateIgnoringOtherApps:YES];
> [[[VLCMain sharedInstance] mainWindow] makeKeyAndOrderFront:sender];
> }
>
> -
> -//-- action for 'toggle play/pause'
> -
> +// Action: Toggle Play / Pause
> - (IBAction)statusBarIconTogglePlayPause:(id)sender
> {
> [[VLCCoreInteraction sharedInstance] playOrPause];
> }
>
> -
> -//-- action for 'stop'
> -
> +// Action: Stop playback
> - (IBAction)statusBarIconStop:(id)sender
> {
> [[VLCCoreInteraction sharedInstance] stop];
> }
>
> -
> -//-- action for 'Next track'
> -
> +// Action: Go to next track
> - (IBAction)statusBarIconNext:(id)sender
> {
> [[VLCCoreInteraction sharedInstance] next];
> }
>
> -
> -//-- action for 'previous track'
> -
> +// Action: Go to previous track
> - (IBAction)statusBarIconPrevious:(id)sender
> {
> [[VLCCoreInteraction sharedInstance] previous];
> }
>
> -
> -//-- action to actually 'toggle VLC randomize playorder status'
> -
> +// Action: Toggle random playback (shuffle)
> - (IBAction)statusBarIconToggleRandom:(id)sender
> {
> [[VLCCoreInteraction sharedInstance] shuffle];
> }
>
> +// Action: Toggle between elapsed and remaining time
> +- (IBAction)toggelProgressTime:(id)sender
> +{
> + showTimeElapsed = (!showTimeElapsed);
> +}
>
> -//-- action voor 'quit'
> -
> +// Action: Quit VLC
> - (IBAction)quitAction:(id)sender
> {
> - // clean timer, quit
> - [self.dataRefreshUpdateTimer invalidate];
> [[NSApplication sharedApplication] terminate:nil];
> }
>
> --
> 2.7.4 (Apple Git-66)
>
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
More information about the vlc-devel
mailing list