macosx: add basic addon manager
authorFelix Paul Kühne <fkuehne@videolan.org>
Wed, 12 Feb 2014 19:17:15 +0000 (20:17 +0100)
committerFelix Paul Kühne <fkuehne@videolan.org>
Wed, 12 Feb 2014 19:18:14 +0000 (20:18 +0100)
no fancy UI, but it works

Needs further UX improvements

Makefile.am
extras/package/macosx/Resources/English.lproj/AddonManager.xib [new file with mode: 0644]
extras/package/macosx/Resources/English.lproj/MainMenu.xib
extras/package/macosx/vlc.xcodeproj/project.pbxproj
modules/gui/macosx/AddonManager.h [new file with mode: 0644]
modules/gui/macosx/AddonManager.m [new file with mode: 0644]
modules/gui/macosx/MainMenu.h
modules/gui/macosx/MainMenu.m
modules/gui/macosx/Modules.am

index 9911640..7efa545 100644 (file)
@@ -118,6 +118,7 @@ EXTRA_DIST += \
        extras/package/macosx/VLC.entitlements \
        extras/package/macosx/Resources/dsa_pub.pem \
        extras/package/macosx/Resources/English.lproj/About.xib \
+       extras/package/macosx/Resources/English.lproj/AddonManager.xib \
        extras/package/macosx/Resources/English.lproj/AudioEffects.xib \
        extras/package/macosx/Resources/English.lproj/Bookmarks.xib \
        extras/package/macosx/Resources/English.lproj/ConvertAndSave.xib \
diff --git a/extras/package/macosx/Resources/English.lproj/AddonManager.xib b/extras/package/macosx/Resources/English.lproj/AddonManager.xib
new file mode 100644 (file)
index 0000000..8fc608c
--- /dev/null
@@ -0,0 +1,978 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
+  <data>
+    <int key="IBDocument.SystemTarget">1060</int>
+    <string key="IBDocument.SystemVersion">12F45</string>
+    <string key="IBDocument.InterfaceBuilderVersion">851</string>
+    <string key="IBDocument.AppKitVersion">1187.40</string>
+    <string key="IBDocument.HIToolboxVersion">626.00</string>
+    <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+      <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+      <string key="NS.object.0">851</string>
+    </object>
+    <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
+      <bool key="EncodedWithXMLCoder">YES</bool>
+      <integer value="6"/>
+    </object>
+    <object class="NSArray" key="IBDocument.PluginDependencies">
+      <bool key="EncodedWithXMLCoder">YES</bool>
+      <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+    </object>
+    <object class="NSMutableDictionary" key="IBDocument.Metadata">
+      <bool key="EncodedWithXMLCoder">YES</bool>
+      <object class="NSArray" key="dict.sortedKeys" id="0">
+        <bool key="EncodedWithXMLCoder">YES</bool>
+      </object>
+      <object class="NSMutableArray" key="dict.values">
+        <bool key="EncodedWithXMLCoder">YES</bool>
+      </object>
+    </object>
+    <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
+      <bool key="EncodedWithXMLCoder">YES</bool>
+      <object class="NSCustomObject" id="1001">
+        <string key="NSClassName">NSObject</string>
+      </object>
+      <object class="NSCustomObject" id="1003">
+        <string key="NSClassName">FirstResponder</string>
+      </object>
+      <object class="NSCustomObject" id="1004">
+        <string key="NSClassName">NSApplication</string>
+      </object>
+      <object class="NSWindowTemplate" id="1005">
+        <int key="NSWindowStyleMask">15</int>
+        <int key="NSWindowBacking">2</int>
+        <string key="NSWindowRect">{{196, 194}, {584, 316}}</string>
+        <int key="NSWTFlags">544735232</int>
+        <string key="NSWindowTitle">Window</string>
+        <string key="NSWindowClass">NSWindow</string>
+        <nil key="NSViewClass"/>
+        <nil key="NSUserInterfaceItemIdentifier"/>
+        <string key="NSWindowContentMaxSize">{1.7976931348623157e+308, 1.7976931348623157e+308}</string>
+        <object class="NSView" key="NSWindowView" id="1006">
+          <reference key="NSNextResponder"/>
+          <int key="NSvFlags">256</int>
+          <object class="NSMutableArray" key="NSSubviews">
+            <bool key="EncodedWithXMLCoder">YES</bool>
+            <object class="NSScrollView" id="935828197">
+              <reference key="NSNextResponder" ref="1006"/>
+              <int key="NSvFlags">268</int>
+              <object class="NSMutableArray" key="NSSubviews">
+                <bool key="EncodedWithXMLCoder">YES</bool>
+                <object class="NSClipView" id="243276057">
+                  <reference key="NSNextResponder" ref="935828197"/>
+                  <int key="NSvFlags">2304</int>
+                  <object class="NSMutableArray" key="NSSubviews">
+                    <bool key="EncodedWithXMLCoder">YES</bool>
+                    <object class="NSTableView" id="534114873">
+                      <reference key="NSNextResponder" ref="243276057"/>
+                      <int key="NSvFlags">256</int>
+                      <object class="NSMutableArray" key="NSSubviews">
+                        <bool key="EncodedWithXMLCoder">YES</bool>
+                      </object>
+                      <string key="NSFrameSize">{542, 228}</string>
+                      <reference key="NSSuperview" ref="243276057"/>
+                      <string key="NSReuseIdentifierKey">_NS:1843</string>
+                      <bool key="NSEnabled">YES</bool>
+                      <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+                      <bool key="NSControlAllowsExpansionToolTips">YES</bool>
+                      <object class="NSTableHeaderView" key="NSHeaderView" id="61244517">
+                        <reference key="NSNextResponder" ref="30886916"/>
+                        <int key="NSvFlags">256</int>
+                        <object class="NSMutableArray" key="NSSubviews">
+                          <bool key="EncodedWithXMLCoder">YES</bool>
+                        </object>
+                        <string key="NSFrameSize">{542, 17}</string>
+                        <reference key="NSSuperview" ref="30886916"/>
+                        <string key="NSReuseIdentifierKey">_NS:1845</string>
+                        <reference key="NSTableView" ref="534114873"/>
+                      </object>
+                      <object class="_NSCornerView" key="NSCornerView">
+                        <nil key="NSNextResponder"/>
+                        <int key="NSvFlags">-2147483392</int>
+                        <string key="NSFrame">{{224, 0}, {16, 17}}</string>
+                        <string key="NSReuseIdentifierKey">_NS:1848</string>
+                      </object>
+                      <object class="NSMutableArray" key="NSTableColumns">
+                        <bool key="EncodedWithXMLCoder">YES</bool>
+                        <object class="NSTableColumn" id="381593339">
+                          <string key="NSIdentifier">installed</string>
+                          <double key="NSWidth">97</double>
+                          <double key="NSMinWidth">10</double>
+                          <double key="NSMaxWidth">3.4028234663852886e+38</double>
+                          <object class="NSTableHeaderCell" key="NSHeaderCell">
+                            <int key="NSCellFlags">75497536</int>
+                            <int key="NSCellFlags2">2048</int>
+                            <string key="NSContents">Installed</string>
+                            <object class="NSFont" key="NSSupport" id="26">
+                              <string key="NSName">LucidaGrande</string>
+                              <double key="NSSize">11</double>
+                              <int key="NSfFlags">3088</int>
+                            </object>
+                            <object class="NSColor" key="NSBackgroundColor" id="574683561">
+                              <int key="NSColorSpace">6</int>
+                              <string key="NSCatalogName">System</string>
+                              <string key="NSColorName">headerColor</string>
+                              <object class="NSColor" key="NSColor" id="336123713">
+                                <int key="NSColorSpace">3</int>
+                                <bytes key="NSWhite">MQA</bytes>
+                              </object>
+                            </object>
+                            <object class="NSColor" key="NSTextColor" id="828772994">
+                              <int key="NSColorSpace">6</int>
+                              <string key="NSCatalogName">System</string>
+                              <string key="NSColorName">headerTextColor</string>
+                              <object class="NSColor" key="NSColor" id="414666870">
+                                <int key="NSColorSpace">3</int>
+                                <bytes key="NSWhite">MAA</bytes>
+                              </object>
+                            </object>
+                          </object>
+                          <object class="NSTextFieldCell" key="NSDataCell" id="220579646">
+                            <int key="NSCellFlags">337641536</int>
+                            <int key="NSCellFlags2">134219776</int>
+                            <string key="NSContents">Text Cell</string>
+                            <object class="NSFont" key="NSSupport" id="204814687">
+                              <string key="NSName">LucidaGrande</string>
+                              <double key="NSSize">13</double>
+                              <int key="NSfFlags">1040</int>
+                            </object>
+                            <reference key="NSControlView" ref="534114873"/>
+                            <object class="NSColor" key="NSBackgroundColor" id="91317641">
+                              <int key="NSColorSpace">6</int>
+                              <string key="NSCatalogName">System</string>
+                              <string key="NSColorName">controlBackgroundColor</string>
+                              <object class="NSColor" key="NSColor">
+                                <int key="NSColorSpace">3</int>
+                                <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
+                              </object>
+                            </object>
+                            <object class="NSColor" key="NSTextColor" id="930655848">
+                              <int key="NSColorSpace">6</int>
+                              <string key="NSCatalogName">System</string>
+                              <string key="NSColorName">controlTextColor</string>
+                              <reference key="NSColor" ref="414666870"/>
+                            </object>
+                          </object>
+                          <int key="NSResizingMask">3</int>
+                          <bool key="NSIsResizeable">YES</bool>
+                          <reference key="NSTableView" ref="534114873"/>
+                        </object>
+                        <object class="NSTableColumn" id="124874019">
+                          <string key="NSIdentifier">name</string>
+                          <double key="NSWidth">120.26953125</double>
+                          <double key="NSMinWidth">40</double>
+                          <double key="NSMaxWidth">1000</double>
+                          <object class="NSTableHeaderCell" key="NSHeaderCell">
+                            <int key="NSCellFlags">75497536</int>
+                            <int key="NSCellFlags2">2048</int>
+                            <string key="NSContents">Name</string>
+                            <reference key="NSSupport" ref="26"/>
+                            <object class="NSColor" key="NSBackgroundColor">
+                              <int key="NSColorSpace">3</int>
+                              <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
+                            </object>
+                            <reference key="NSTextColor" ref="828772994"/>
+                          </object>
+                          <object class="NSTextFieldCell" key="NSDataCell" id="434664558">
+                            <int key="NSCellFlags">337641536</int>
+                            <int key="NSCellFlags2">2048</int>
+                            <string key="NSContents">Text Cell</string>
+                            <reference key="NSSupport" ref="204814687"/>
+                            <reference key="NSControlView" ref="534114873"/>
+                            <reference key="NSBackgroundColor" ref="91317641"/>
+                            <reference key="NSTextColor" ref="930655848"/>
+                          </object>
+                          <int key="NSResizingMask">3</int>
+                          <bool key="NSIsResizeable">YES</bool>
+                          <reference key="NSTableView" ref="534114873"/>
+                        </object>
+                        <object class="NSTableColumn" id="834906084">
+                          <string key="NSIdentifier">author</string>
+                          <double key="NSWidth">134.63671875</double>
+                          <double key="NSMinWidth">10</double>
+                          <double key="NSMaxWidth">3.4028234663852886e+38</double>
+                          <object class="NSTableHeaderCell" key="NSHeaderCell">
+                            <int key="NSCellFlags">75497536</int>
+                            <int key="NSCellFlags2">2048</int>
+                            <string key="NSContents">Author</string>
+                            <reference key="NSSupport" ref="26"/>
+                            <reference key="NSBackgroundColor" ref="574683561"/>
+                            <reference key="NSTextColor" ref="828772994"/>
+                          </object>
+                          <object class="NSTextFieldCell" key="NSDataCell" id="695788846">
+                            <int key="NSCellFlags">337641536</int>
+                            <int key="NSCellFlags2">2048</int>
+                            <string key="NSContents">Text Cell</string>
+                            <reference key="NSSupport" ref="204814687"/>
+                            <reference key="NSControlView" ref="534114873"/>
+                            <reference key="NSBackgroundColor" ref="91317641"/>
+                            <reference key="NSTextColor" ref="930655848"/>
+                          </object>
+                          <int key="NSResizingMask">3</int>
+                          <bool key="NSIsResizeable">YES</bool>
+                          <reference key="NSTableView" ref="534114873"/>
+                        </object>
+                        <object class="NSTableColumn" id="299590599">
+                          <string key="NSIdentifier">type</string>
+                          <double key="NSWidth">178</double>
+                          <double key="NSMinWidth">10</double>
+                          <double key="NSMaxWidth">3.4028234663852886e+38</double>
+                          <object class="NSTableHeaderCell" key="NSHeaderCell">
+                            <int key="NSCellFlags">75497536</int>
+                            <int key="NSCellFlags2">2048</int>
+                            <string key="NSContents">Type</string>
+                            <reference key="NSSupport" ref="26"/>
+                            <reference key="NSBackgroundColor" ref="574683561"/>
+                            <reference key="NSTextColor" ref="828772994"/>
+                          </object>
+                          <object class="NSTextFieldCell" key="NSDataCell" id="1039534267">
+                            <int key="NSCellFlags">337641536</int>
+                            <int key="NSCellFlags2">2048</int>
+                            <string key="NSContents">Text Cell</string>
+                            <reference key="NSSupport" ref="204814687"/>
+                            <reference key="NSControlView" ref="534114873"/>
+                            <reference key="NSBackgroundColor" ref="91317641"/>
+                            <reference key="NSTextColor" ref="930655848"/>
+                          </object>
+                          <int key="NSResizingMask">3</int>
+                          <bool key="NSIsResizeable">YES</bool>
+                          <reference key="NSTableView" ref="534114873"/>
+                        </object>
+                      </object>
+                      <double key="NSIntercellSpacingWidth">3</double>
+                      <double key="NSIntercellSpacingHeight">2</double>
+                      <reference key="NSBackgroundColor" ref="336123713"/>
+                      <object class="NSColor" key="NSGridColor">
+                        <int key="NSColorSpace">6</int>
+                        <string key="NSCatalogName">System</string>
+                        <string key="NSColorName">gridColor</string>
+                        <object class="NSColor" key="NSColor">
+                          <int key="NSColorSpace">3</int>
+                          <bytes key="NSWhite">MC41AA</bytes>
+                        </object>
+                      </object>
+                      <double key="NSRowHeight">17</double>
+                      <int key="NSTvFlags">-692060160</int>
+                      <reference key="NSDelegate"/>
+                      <reference key="NSDataSource"/>
+                      <int key="NSColumnAutoresizingStyle">4</int>
+                      <int key="NSDraggingSourceMaskForLocal">15</int>
+                      <int key="NSDraggingSourceMaskForNonLocal">0</int>
+                      <bool key="NSAllowsTypeSelect">YES</bool>
+                      <int key="NSTableViewDraggingDestinationStyle">0</int>
+                      <int key="NSTableViewGroupRowStyle">1</int>
+                    </object>
+                  </object>
+                  <string key="NSFrame">{{1, 17}, {542, 228}}</string>
+                  <reference key="NSSuperview" ref="935828197"/>
+                  <reference key="NSNextKeyView" ref="534114873"/>
+                  <string key="NSReuseIdentifierKey">_NS:1841</string>
+                  <reference key="NSDocView" ref="534114873"/>
+                  <reference key="NSBGColor" ref="91317641"/>
+                  <int key="NScvFlags">4</int>
+                </object>
+                <object class="NSScroller" id="522020982">
+                  <reference key="NSNextResponder" ref="935828197"/>
+                  <int key="NSvFlags">-2147483392</int>
+                  <string key="NSFrame">{{224, 17}, {15, 102}}</string>
+                  <reference key="NSSuperview" ref="935828197"/>
+                  <string key="NSReuseIdentifierKey">_NS:1860</string>
+                  <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+                  <reference key="NSTarget" ref="935828197"/>
+                  <string key="NSAction">_doScroller:</string>
+                  <double key="NSCurValue">37</double>
+                  <double key="NSPercent">0.1947367936372757</double>
+                </object>
+                <object class="NSScroller" id="613824760">
+                  <reference key="NSNextResponder" ref="935828197"/>
+                  <int key="NSvFlags">-2147483392</int>
+                  <string key="NSFrame">{{1, 229}, {542, 16}}</string>
+                  <reference key="NSSuperview" ref="935828197"/>
+                  <string key="NSReuseIdentifierKey">_NS:1862</string>
+                  <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+                  <int key="NSsFlags">1</int>
+                  <reference key="NSTarget" ref="935828197"/>
+                  <string key="NSAction">_doScroller:</string>
+                  <double key="NSPercent">0.88998357963875208</double>
+                </object>
+                <object class="NSClipView" id="30886916">
+                  <reference key="NSNextResponder" ref="935828197"/>
+                  <int key="NSvFlags">2304</int>
+                  <object class="NSMutableArray" key="NSSubviews">
+                    <bool key="EncodedWithXMLCoder">YES</bool>
+                    <reference ref="61244517"/>
+                  </object>
+                  <string key="NSFrame">{{1, 0}, {542, 17}}</string>
+                  <reference key="NSSuperview" ref="935828197"/>
+                  <reference key="NSNextKeyView" ref="61244517"/>
+                  <string key="NSReuseIdentifierKey">_NS:1846</string>
+                  <reference key="NSDocView" ref="61244517"/>
+                  <reference key="NSBGColor" ref="91317641"/>
+                  <int key="NScvFlags">4</int>
+                </object>
+              </object>
+              <string key="NSFrame">{{20, 23}, {544, 246}}</string>
+              <reference key="NSSuperview" ref="1006"/>
+              <reference key="NSNextKeyView" ref="243276057"/>
+              <string key="NSReuseIdentifierKey">_NS:1839</string>
+              <int key="NSsFlags">133682</int>
+              <reference key="NSVScroller" ref="522020982"/>
+              <reference key="NSHScroller" ref="613824760"/>
+              <reference key="NSContentView" ref="243276057"/>
+              <reference key="NSHeaderClipView" ref="30886916"/>
+              <bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
+              <double key="NSMinMagnification">0.25</double>
+              <double key="NSMaxMagnification">4</double>
+              <double key="NSMagnification">1</double>
+            </object>
+            <object class="NSPopUpButton" id="642757678">
+              <reference key="NSNextResponder" ref="1006"/>
+              <int key="NSvFlags">268</int>
+              <string key="NSFrame">{{17, 275}, {227.61328125, 26}}</string>
+              <reference key="NSSuperview" ref="1006"/>
+              <string key="NSReuseIdentifierKey">_NS:791</string>
+              <bool key="NSEnabled">YES</bool>
+              <object class="NSPopUpButtonCell" key="NSCell" id="798928989">
+                <int key="NSCellFlags">-2076180416</int>
+                <int key="NSCellFlags2">2048</int>
+                <reference key="NSSupport" ref="204814687"/>
+                <string key="NSCellIdentifier">_NS:791</string>
+                <reference key="NSControlView" ref="642757678"/>
+                <int key="NSButtonFlags">109199360</int>
+                <int key="NSButtonFlags2">129</int>
+                <string key="NSAlternateContents"/>
+                <string key="NSKeyEquivalent"/>
+                <int key="NSPeriodicDelay">400</int>
+                <int key="NSPeriodicInterval">75</int>
+                <object class="NSMenuItem" key="NSMenuItem" id="789683844">
+                  <reference key="NSMenu" ref="669725325"/>
+                  <string key="NSTitle">Item 1</string>
+                  <string key="NSKeyEquiv"/>
+                  <int key="NSKeyEquivModMask">1048576</int>
+                  <int key="NSMnemonicLoc">2147483647</int>
+                  <int key="NSState">1</int>
+                  <object class="NSCustomResource" key="NSOnImage" id="102994963">
+                    <string key="NSClassName">NSImage</string>
+                    <string key="NSResourceName">NSMenuCheckmark</string>
+                  </object>
+                  <object class="NSCustomResource" key="NSMixedImage" id="388099486">
+                    <string key="NSClassName">NSImage</string>
+                    <string key="NSResourceName">NSMenuMixedState</string>
+                  </object>
+                  <string key="NSAction">_popUpItemAction:</string>
+                  <reference key="NSTarget" ref="798928989"/>
+                </object>
+                <bool key="NSMenuItemRespectAlignment">YES</bool>
+                <object class="NSMenu" key="NSMenu" id="669725325">
+                  <string key="NSTitle">OtherViews</string>
+                  <object class="NSMutableArray" key="NSMenuItems">
+                    <bool key="EncodedWithXMLCoder">YES</bool>
+                    <reference ref="789683844"/>
+                    <object class="NSMenuItem" id="161674973">
+                      <reference key="NSMenu" ref="669725325"/>
+                      <string key="NSTitle">Item 2</string>
+                      <string key="NSKeyEquiv"/>
+                      <int key="NSKeyEquivModMask">1048576</int>
+                      <int key="NSMnemonicLoc">2147483647</int>
+                      <reference key="NSOnImage" ref="102994963"/>
+                      <reference key="NSMixedImage" ref="388099486"/>
+                      <string key="NSAction">_popUpItemAction:</string>
+                      <reference key="NSTarget" ref="798928989"/>
+                    </object>
+                    <object class="NSMenuItem" id="624868396">
+                      <reference key="NSMenu" ref="669725325"/>
+                      <string key="NSTitle">Item 3</string>
+                      <string key="NSKeyEquiv"/>
+                      <int key="NSKeyEquivModMask">1048576</int>
+                      <int key="NSMnemonicLoc">2147483647</int>
+                      <reference key="NSOnImage" ref="102994963"/>
+                      <reference key="NSMixedImage" ref="388099486"/>
+                      <string key="NSAction">_popUpItemAction:</string>
+                      <reference key="NSTarget" ref="798928989"/>
+                    </object>
+                  </object>
+                  <reference key="NSMenuFont" ref="204814687"/>
+                </object>
+                <int key="NSPreferredEdge">1</int>
+                <bool key="NSUsesItemFromMenu">YES</bool>
+                <bool key="NSAltersState">YES</bool>
+                <int key="NSArrowPosition">2</int>
+              </object>
+              <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+            </object>
+            <object class="NSButton" id="646621222">
+              <reference key="NSNextResponder" ref="1006"/>
+              <int key="NSvFlags">268</int>
+              <string key="NSFrame">{{397.2109375, 280}, {168.7890625, 18}}</string>
+              <reference key="NSSuperview" ref="1006"/>
+              <string key="NSReuseIdentifierKey">_NS:682</string>
+              <bool key="NSEnabled">YES</bool>
+              <object class="NSButtonCell" key="NSCell" id="465550475">
+                <int key="NSCellFlags">-2080374784</int>
+                <int key="NSCellFlags2">0</int>
+                <string key="NSContents">Check</string>
+                <reference key="NSSupport" ref="204814687"/>
+                <string key="NSCellIdentifier">_NS:682</string>
+                <reference key="NSControlView" ref="646621222"/>
+                <int key="NSButtonFlags">1211912448</int>
+                <int key="NSButtonFlags2">2</int>
+                <object class="NSCustomResource" key="NSNormalImage">
+                  <string key="NSClassName">NSImage</string>
+                  <string key="NSResourceName">NSSwitch</string>
+                </object>
+                <object class="NSButtonImageSource" key="NSAlternateImage">
+                  <string key="NSImageName">NSSwitch</string>
+                </object>
+                <string key="NSAlternateContents"/>
+                <string key="NSKeyEquivalent"/>
+                <int key="NSPeriodicDelay">200</int>
+                <int key="NSPeriodicInterval">25</int>
+              </object>
+              <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+            </object>
+            <object class="NSProgressIndicator" id="231868942">
+              <reference key="NSNextResponder" ref="1006"/>
+              <int key="NSvFlags">268</int>
+              <string key="NSFrame">{{276, 130}, {32, 32}}</string>
+              <reference key="NSSuperview" ref="1006"/>
+              <string key="NSReuseIdentifierKey">_NS:4186</string>
+              <int key="NSpiFlags">28682</int>
+              <double key="NSMaxValue">100</double>
+            </object>
+          </object>
+          <string key="NSFrameSize">{584, 316}</string>
+          <reference key="NSSuperview"/>
+        </object>
+        <string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
+        <string key="NSMaxSize">{1.7976931348623157e+308, 1.7976931348623157e+308}</string>
+        <bool key="NSWindowIsRestorable">YES</bool>
+      </object>
+      <object class="NSCustomObject" id="102915137">
+        <string key="NSClassName">VLCAddonManager</string>
+      </object>
+    </object>
+    <object class="IBObjectContainer" key="IBDocument.Objects">
+      <object class="NSMutableArray" key="connectionRecords">
+        <bool key="EncodedWithXMLCoder">YES</bool>
+        <object class="IBConnectionRecord">
+          <object class="IBOutletConnection" key="connection">
+            <string key="label">_window</string>
+            <reference key="source" ref="102915137"/>
+            <reference key="destination" ref="1005"/>
+          </object>
+          <int key="connectionID">21</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBOutletConnection" key="connection">
+            <string key="label">_addonsTable</string>
+            <reference key="source" ref="102915137"/>
+            <reference key="destination" ref="534114873"/>
+          </object>
+          <int key="connectionID">22</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBOutletConnection" key="connection">
+            <string key="label">dataSource</string>
+            <reference key="source" ref="534114873"/>
+            <reference key="destination" ref="102915137"/>
+          </object>
+          <int key="connectionID">23</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBOutletConnection" key="connection">
+            <string key="label">delegate</string>
+            <reference key="source" ref="534114873"/>
+            <reference key="destination" ref="102915137"/>
+          </object>
+          <int key="connectionID">24</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBOutletConnection" key="connection">
+            <string key="label">_localAddonsOnlyCheckbox</string>
+            <reference key="source" ref="102915137"/>
+            <reference key="destination" ref="646621222"/>
+          </object>
+          <int key="connectionID">25</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBActionConnection" key="connection">
+            <string key="label">switchType:</string>
+            <reference key="source" ref="102915137"/>
+            <reference key="destination" ref="642757678"/>
+          </object>
+          <int key="connectionID">28</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBOutletConnection" key="connection">
+            <string key="label">_typeSwitcher</string>
+            <reference key="source" ref="102915137"/>
+            <reference key="destination" ref="642757678"/>
+          </object>
+          <int key="connectionID">29</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBActionConnection" key="connection">
+            <string key="label">toggleLocalCheckbox:</string>
+            <reference key="source" ref="102915137"/>
+            <reference key="destination" ref="646621222"/>
+          </object>
+          <int key="connectionID">30</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBOutletConnection" key="connection">
+            <string key="label">_spinner</string>
+            <reference key="source" ref="102915137"/>
+            <reference key="destination" ref="231868942"/>
+          </object>
+          <int key="connectionID">32</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBActionConnection" key="connection">
+            <string key="label">tableAction:</string>
+            <reference key="source" ref="102915137"/>
+            <reference key="destination" ref="534114873"/>
+          </object>
+          <int key="connectionID">39</int>
+        </object>
+      </object>
+      <object class="IBMutableOrderedSet" key="objectRecords">
+        <object class="NSArray" key="orderedObjects">
+          <bool key="EncodedWithXMLCoder">YES</bool>
+          <object class="IBObjectRecord">
+            <int key="objectID">0</int>
+            <reference key="object" ref="0"/>
+            <reference key="children" ref="1000"/>
+            <nil key="parent"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">-2</int>
+            <reference key="object" ref="1001"/>
+            <reference key="parent" ref="0"/>
+            <string key="objectName">File's Owner</string>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">-1</int>
+            <reference key="object" ref="1003"/>
+            <reference key="parent" ref="0"/>
+            <string key="objectName">First Responder</string>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">-3</int>
+            <reference key="object" ref="1004"/>
+            <reference key="parent" ref="0"/>
+            <string key="objectName">Application</string>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">1</int>
+            <reference key="object" ref="1005"/>
+            <object class="NSMutableArray" key="children">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <reference ref="1006"/>
+            </object>
+            <reference key="parent" ref="0"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">2</int>
+            <reference key="object" ref="1006"/>
+            <object class="NSMutableArray" key="children">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <reference ref="642757678"/>
+              <reference ref="935828197"/>
+              <reference ref="231868942"/>
+              <reference ref="646621222"/>
+            </object>
+            <reference key="parent" ref="1005"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">3</int>
+            <reference key="object" ref="935828197"/>
+            <object class="NSMutableArray" key="children">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <reference ref="522020982"/>
+              <reference ref="613824760"/>
+              <reference ref="534114873"/>
+              <reference ref="61244517"/>
+            </object>
+            <reference key="parent" ref="1006"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">4</int>
+            <reference key="object" ref="522020982"/>
+            <reference key="parent" ref="935828197"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">5</int>
+            <reference key="object" ref="613824760"/>
+            <reference key="parent" ref="935828197"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">6</int>
+            <reference key="object" ref="534114873"/>
+            <object class="NSMutableArray" key="children">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <reference ref="124874019"/>
+              <reference ref="834906084"/>
+              <reference ref="299590599"/>
+              <reference ref="381593339"/>
+            </object>
+            <reference key="parent" ref="935828197"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">7</int>
+            <reference key="object" ref="61244517"/>
+            <reference key="parent" ref="935828197"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">8</int>
+            <reference key="object" ref="124874019"/>
+            <object class="NSMutableArray" key="children">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <reference ref="434664558"/>
+            </object>
+            <reference key="parent" ref="534114873"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">11</int>
+            <reference key="object" ref="434664558"/>
+            <reference key="parent" ref="124874019"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">12</int>
+            <reference key="object" ref="642757678"/>
+            <object class="NSMutableArray" key="children">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <reference ref="798928989"/>
+            </object>
+            <reference key="parent" ref="1006"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">13</int>
+            <reference key="object" ref="798928989"/>
+            <object class="NSMutableArray" key="children">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <reference ref="669725325"/>
+            </object>
+            <reference key="parent" ref="642757678"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">14</int>
+            <reference key="object" ref="669725325"/>
+            <object class="NSMutableArray" key="children">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <reference ref="789683844"/>
+              <reference ref="161674973"/>
+              <reference ref="624868396"/>
+            </object>
+            <reference key="parent" ref="798928989"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">15</int>
+            <reference key="object" ref="789683844"/>
+            <reference key="parent" ref="669725325"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">16</int>
+            <reference key="object" ref="161674973"/>
+            <reference key="parent" ref="669725325"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">17</int>
+            <reference key="object" ref="624868396"/>
+            <reference key="parent" ref="669725325"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">18</int>
+            <reference key="object" ref="646621222"/>
+            <object class="NSMutableArray" key="children">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <reference ref="465550475"/>
+            </object>
+            <reference key="parent" ref="1006"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">19</int>
+            <reference key="object" ref="465550475"/>
+            <reference key="parent" ref="646621222"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">20</int>
+            <reference key="object" ref="102915137"/>
+            <reference key="parent" ref="0"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">31</int>
+            <reference key="object" ref="231868942"/>
+            <reference key="parent" ref="1006"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">33</int>
+            <reference key="object" ref="834906084"/>
+            <object class="NSMutableArray" key="children">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <reference ref="695788846"/>
+            </object>
+            <reference key="parent" ref="534114873"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">34</int>
+            <reference key="object" ref="695788846"/>
+            <reference key="parent" ref="834906084"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">35</int>
+            <reference key="object" ref="299590599"/>
+            <object class="NSMutableArray" key="children">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <reference ref="1039534267"/>
+            </object>
+            <reference key="parent" ref="534114873"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">36</int>
+            <reference key="object" ref="1039534267"/>
+            <reference key="parent" ref="299590599"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">37</int>
+            <reference key="object" ref="381593339"/>
+            <object class="NSMutableArray" key="children">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <reference ref="220579646"/>
+            </object>
+            <reference key="parent" ref="534114873"/>
+          </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">38</int>
+            <reference key="object" ref="220579646"/>
+            <reference key="parent" ref="381593339"/>
+          </object>
+        </object>
+      </object>
+      <object class="NSMutableDictionary" key="flattenedProperties">
+        <bool key="EncodedWithXMLCoder">YES</bool>
+        <object class="NSArray" key="dict.sortedKeys">
+          <bool key="EncodedWithXMLCoder">YES</bool>
+          <string>-1.IBPluginDependency</string>
+          <string>-2.IBPluginDependency</string>
+          <string>-3.IBPluginDependency</string>
+          <string>1.IBEditorWindowLastContentRect</string>
+          <string>1.IBPluginDependency</string>
+          <string>1.IBWindowTemplateEditedContentRect</string>
+          <string>1.NSWindowTemplate.visibleAtLaunch</string>
+          <string>1.WindowOrigin</string>
+          <string>1.editorWindowContentRectSynchronizationRect</string>
+          <string>11.IBPluginDependency</string>
+          <string>12.IBPluginDependency</string>
+          <string>12.IBViewBoundsToFrameTransform</string>
+          <string>13.IBPluginDependency</string>
+          <string>14.IBPluginDependency</string>
+          <string>15.IBPluginDependency</string>
+          <string>16.IBPluginDependency</string>
+          <string>17.IBPluginDependency</string>
+          <string>18.IBPluginDependency</string>
+          <string>18.IBViewBoundsToFrameTransform</string>
+          <string>19.IBPluginDependency</string>
+          <string>2.IBPluginDependency</string>
+          <string>20.IBPluginDependency</string>
+          <string>3.IBPluginDependency</string>
+          <string>3.IBViewBoundsToFrameTransform</string>
+          <string>31.IBPluginDependency</string>
+          <string>31.IBViewBoundsToFrameTransform</string>
+          <string>4.IBPluginDependency</string>
+          <string>5.IBPluginDependency</string>
+          <string>6.IBPluginDependency</string>
+          <string>7.IBPluginDependency</string>
+          <string>8.IBPluginDependency</string>
+        </object>
+        <object class="NSMutableArray" key="dict.values">
+          <bool key="EncodedWithXMLCoder">YES</bool>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>{{102, 300}, {584, 316}}</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>{{102, 300}, {584, 316}}</string>
+          <integer value="1"/>
+          <string>{196, 240}</string>
+          <string>{{357, 418}, {480, 270}}</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <object class="NSAffineTransform">
+            <bytes key="NSTransformStruct">P4AAAL+AAABBiAAAw5cAAA</bytes>
+          </object>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <object class="NSAffineTransform">
+            <bytes key="NSTransformStruct">P4AAAL+AAABD+4AAw5QAAA</bytes>
+          </object>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <object class="NSAffineTransform">
+            <bytes key="NSTransformStruct">P4AAAL+AAABC9AAAw08AAA</bytes>
+          </object>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <object class="NSAffineTransform">
+            <bytes key="NSTransformStruct">P4AAAL+AAABDjgAAw1EAAA</bytes>
+          </object>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+        </object>
+      </object>
+      <object class="NSMutableDictionary" key="unlocalizedProperties">
+        <bool key="EncodedWithXMLCoder">YES</bool>
+        <reference key="dict.sortedKeys" ref="0"/>
+        <object class="NSMutableArray" key="dict.values">
+          <bool key="EncodedWithXMLCoder">YES</bool>
+        </object>
+      </object>
+      <nil key="activeLocalization"/>
+      <object class="NSMutableDictionary" key="localizations">
+        <bool key="EncodedWithXMLCoder">YES</bool>
+        <reference key="dict.sortedKeys" ref="0"/>
+        <object class="NSMutableArray" key="dict.values">
+          <bool key="EncodedWithXMLCoder">YES</bool>
+        </object>
+      </object>
+      <nil key="sourceID"/>
+      <int key="maxID">39</int>
+    </object>
+    <object class="IBClassDescriber" key="IBDocument.Classes">
+      <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.1+">
+        <bool key="EncodedWithXMLCoder">YES</bool>
+        <object class="IBPartialClassDescription">
+          <string key="className">VLCAddonManager</string>
+          <string key="superclassName">NSObject</string>
+          <object class="NSMutableDictionary" key="actions">
+            <bool key="EncodedWithXMLCoder">YES</bool>
+            <object class="NSArray" key="dict.sortedKeys">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <string>switchType:</string>
+              <string>tableAction:</string>
+              <string>toggleLocalCheckbox:</string>
+            </object>
+            <object class="NSMutableArray" key="dict.values">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+            </object>
+          </object>
+          <object class="NSMutableDictionary" key="actionInfosByName">
+            <bool key="EncodedWithXMLCoder">YES</bool>
+            <object class="NSArray" key="dict.sortedKeys">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <string>switchType:</string>
+              <string>tableAction:</string>
+              <string>toggleLocalCheckbox:</string>
+            </object>
+            <object class="NSMutableArray" key="dict.values">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <object class="IBActionInfo">
+                <string key="name">switchType:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">tableAction:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">toggleLocalCheckbox:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+            </object>
+          </object>
+          <object class="NSMutableDictionary" key="outlets">
+            <bool key="EncodedWithXMLCoder">YES</bool>
+            <object class="NSArray" key="dict.sortedKeys">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <string>_addonsTable</string>
+              <string>_localAddonsOnlyCheckbox</string>
+              <string>_spinner</string>
+              <string>_typeSwitcher</string>
+              <string>_window</string>
+            </object>
+            <object class="NSMutableArray" key="dict.values">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <string>NSTableView</string>
+              <string>NSButton</string>
+              <string>NSProgressIndicator</string>
+              <string>NSPopUpButton</string>
+              <string>NSWindow</string>
+            </object>
+          </object>
+          <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+            <bool key="EncodedWithXMLCoder">YES</bool>
+            <object class="NSArray" key="dict.sortedKeys">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <string>_addonsTable</string>
+              <string>_localAddonsOnlyCheckbox</string>
+              <string>_spinner</string>
+              <string>_typeSwitcher</string>
+              <string>_window</string>
+            </object>
+            <object class="NSMutableArray" key="dict.values">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <object class="IBToOneOutletInfo">
+                <string key="name">_addonsTable</string>
+                <string key="candidateClassName">NSTableView</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">_localAddonsOnlyCheckbox</string>
+                <string key="candidateClassName">NSButton</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">_spinner</string>
+                <string key="candidateClassName">NSProgressIndicator</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">_typeSwitcher</string>
+                <string key="candidateClassName">NSPopUpButton</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">_window</string>
+                <string key="candidateClassName">NSWindow</string>
+              </object>
+            </object>
+          </object>
+          <object class="IBClassDescriptionSource" key="sourceIdentifier">
+            <string key="majorKey">IBDocumentRelativeSource</string>
+            <string key="minorKey">../../../../../modules/gui/macosx/AddonManager.h</string>
+          </object>
+        </object>
+      </object>
+    </object>
+    <int key="IBDocument.localizationMode">0</int>
+    <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
+    <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+      <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
+      <integer value="3000" key="NS.object.0"/>
+    </object>
+    <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+    <nil key="IBDocument.LastKnownRelativeProjectPath"/>
+    <int key="IBDocument.defaultPropertyAccessControl">3</int>
+    <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
+      <bool key="EncodedWithXMLCoder">YES</bool>
+      <object class="NSArray" key="dict.sortedKeys">
+        <bool key="EncodedWithXMLCoder">YES</bool>
+        <string>NSMenuCheckmark</string>
+        <string>NSMenuMixedState</string>
+        <string>NSSwitch</string>
+      </object>
+      <object class="NSMutableArray" key="dict.values">
+        <bool key="EncodedWithXMLCoder">YES</bool>
+        <string>{11, 11}</string>
+        <string>{10, 3}</string>
+        <string>{15, 15}</string>
+      </object>
+    </object>
+  </data>
+</archive>
index c59e503..73c3b28 100644 (file)
     </object>
     <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
       <bool key="EncodedWithXMLCoder">YES</bool>
-      <integer value="5132"/>
+      <integer value="5547"/>
       <integer value="2730"/>
+      <integer value="57"/>
       <integer value="2461"/>
-      <integer value="5547"/>
     </object>
     <object class="NSArray" key="IBDocument.PluginDependencies">
       <bool key="EncodedWithXMLCoder">YES</bool>
                     </object>
                   </object>
                 </object>
+                <object class="NSMenuItem" id="403409371">
+                  <reference key="NSMenu" ref="151826058"/>
+                  <string key="NSTitle">Addon Manager</string>
+                  <string key="NSKeyEquiv"/>
+                  <int key="NSMnemonicLoc">2147483647</int>
+                  <reference key="NSOnImage" ref="447396056"/>
+                  <reference key="NSMixedImage" ref="100133332"/>
+                </object>
                 <object class="NSMenuItem" id="113902940">
                   <reference key="NSMenu" ref="151826058"/>
                   <bool key="NSIsDisabled">YES</bool>
           </object>
           <int key="connectionID">5612</int>
         </object>
+        <object class="IBConnectionRecord">
+          <object class="IBActionConnection" key="connection">
+            <string key="label">openAddonManager:</string>
+            <reference key="source" ref="651263286"/>
+            <reference key="destination" ref="403409371"/>
+          </object>
+          <int key="connectionID">5614</int>
+        </object>
+        <object class="IBConnectionRecord">
+          <object class="IBOutletConnection" key="connection">
+            <string key="label">o_mi_addonManager</string>
+            <reference key="source" ref="651263286"/>
+            <reference key="destination" ref="403409371"/>
+          </object>
+          <int key="connectionID">5615</int>
+        </object>
       </object>
       <object class="IBMutableOrderedSet" key="objectRecords">
         <object class="NSArray" key="orderedObjects">
               <reference ref="354414928"/>
               <reference ref="113902940"/>
               <reference ref="266980466"/>
+              <reference ref="403409371"/>
             </object>
             <reference key="parent" ref="1012086926"/>
           </object>
             <reference key="object" ref="526748719"/>
             <reference key="parent" ref="1050252183"/>
           </object>
+          <object class="IBObjectRecord">
+            <int key="objectID">5613</int>
+            <reference key="object" ref="403409371"/>
+            <reference key="parent" ref="151826058"/>
+          </object>
         </object>
       </object>
       <object class="NSMutableDictionary" key="flattenedProperties">
           <string>5606.IBPluginDependency</string>
           <string>5609.IBPluginDependency</string>
           <string>5609.ImportedFromIB2</string>
+          <string>5613.IBPluginDependency</string>
           <string>57.IBEditorWindowLastContentRect</string>
           <string>57.IBPluginDependency</string>
           <string>57.ImportedFromIB2</string>
           <boolean value="YES"/>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <boolean value="YES"/>
-          <string>{{836, 453}, {243, 283}}</string>
+          <string>{{707, 453}, {243, 283}}</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <boolean value="YES"/>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <string>{{1009, 788}, {64, 6}}</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <boolean value="YES"/>
-          <string>{{807, 533}, {161, 223}}</string>
+          <string>{{678, 533}, {161, 223}}</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <boolean value="YES"/>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <boolean value="YES"/>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <boolean value="YES"/>
-          <string>{{373, 736}, {595, 20}}</string>
+          <string>{{244, 736}, {595, 20}}</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <boolean value="YES"/>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-          <string>{{596, 363}, {64, 6}}</string>
+          <string>{{523, 650}, {64, 6}}</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <boolean value="YES"/>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <boolean value="YES"/>
-          <string>{{567, 353}, {222, 383}}</string>
+          <string>{{438, 353}, {222, 383}}</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <boolean value="YES"/>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <boolean value="YES"/>
-          <string>{{329, 186}, {267, 263}}</string>
+          <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+          <string>{{256, 453}, {267, 283}}</string>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
           <boolean value="YES"/>
           <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
         </object>
       </object>
       <nil key="sourceID"/>
-      <int key="maxID">5612</int>
+      <int key="maxID">5615</int>
     </object>
     <object class="IBClassDescriber" key="IBDocument.Classes">
       <object class="NSMutableArray" key="referencedPartialClassDescriptions">
           <reference key="sourceIdentifier" ref="724014817"/>
         </object>
       </object>
+      <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.1+">
+        <bool key="EncodedWithXMLCoder">YES</bool>
+        <object class="IBPartialClassDescription">
+          <string key="className">VLCMainMenu</string>
+          <string key="superclassName">NSObject</string>
+          <object class="NSMutableDictionary" key="actions">
+            <bool key="EncodedWithXMLCoder">YES</bool>
+            <object class="NSArray" key="dict.sortedKeys">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <string>addSubtitleFile:</string>
+              <string>createVideoSnapshot:</string>
+              <string>floatOnTop:</string>
+              <string>intfOpenCapture:</string>
+              <string>intfOpenDisc:</string>
+              <string>intfOpenFile:</string>
+              <string>intfOpenFileGeneric:</string>
+              <string>intfOpenNet:</string>
+              <string>openAddonManager:</string>
+              <string>openDocumentation:</string>
+              <string>openDonate:</string>
+              <string>openForum:</string>
+              <string>openReadMe:</string>
+              <string>openWebsite:</string>
+              <string>quitAfterPlayback:</string>
+              <string>resizeVideoWindow:</string>
+              <string>savePlaylist:</string>
+              <string>setPlaybackRate:</string>
+              <string>showAudioEffects:</string>
+              <string>showBookmarks:</string>
+              <string>showConvertAndSave:</string>
+              <string>showInformationPanel:</string>
+              <string>showLicense:</string>
+              <string>showMainWindow:</string>
+              <string>showMessagesPanel:</string>
+              <string>showPlaylist:</string>
+              <string>showTrackSynchronization:</string>
+              <string>showVideoEffects:</string>
+              <string>showWizard:</string>
+              <string>switchSubtitleBackgroundOpacity:</string>
+              <string>switchSubtitleOption:</string>
+              <string>telxNavLink:</string>
+              <string>telxTransparent:</string>
+              <string>toggleAtoBloop:</string>
+              <string>toggleAudioDevice:</string>
+              <string>toggleEffectsButton:</string>
+              <string>toggleFullscreen:</string>
+              <string>toggleFullscreenDevice:</string>
+              <string>toggleJumpButtons:</string>
+              <string>togglePlaylistColumnTable:</string>
+              <string>togglePlaymodeButtons:</string>
+              <string>toggleRecord:</string>
+              <string>toggleSidebar:</string>
+              <string>toggleVar:</string>
+              <string>viewAbout:</string>
+              <string>viewErrorsAndWarnings:</string>
+              <string>viewHelp:</string>
+              <string>viewPreferences:</string>
+            </object>
+            <object class="NSMutableArray" key="dict.values">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+            </object>
+          </object>
+          <object class="NSMutableDictionary" key="actionInfosByName">
+            <bool key="EncodedWithXMLCoder">YES</bool>
+            <object class="NSArray" key="dict.sortedKeys">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <string>addSubtitleFile:</string>
+              <string>createVideoSnapshot:</string>
+              <string>floatOnTop:</string>
+              <string>intfOpenCapture:</string>
+              <string>intfOpenDisc:</string>
+              <string>intfOpenFile:</string>
+              <string>intfOpenFileGeneric:</string>
+              <string>intfOpenNet:</string>
+              <string>openAddonManager:</string>
+              <string>openDocumentation:</string>
+              <string>openDonate:</string>
+              <string>openForum:</string>
+              <string>openReadMe:</string>
+              <string>openWebsite:</string>
+              <string>quitAfterPlayback:</string>
+              <string>resizeVideoWindow:</string>
+              <string>savePlaylist:</string>
+              <string>setPlaybackRate:</string>
+              <string>showAudioEffects:</string>
+              <string>showBookmarks:</string>
+              <string>showConvertAndSave:</string>
+              <string>showInformationPanel:</string>
+              <string>showLicense:</string>
+              <string>showMainWindow:</string>
+              <string>showMessagesPanel:</string>
+              <string>showPlaylist:</string>
+              <string>showTrackSynchronization:</string>
+              <string>showVideoEffects:</string>
+              <string>showWizard:</string>
+              <string>switchSubtitleBackgroundOpacity:</string>
+              <string>switchSubtitleOption:</string>
+              <string>telxNavLink:</string>
+              <string>telxTransparent:</string>
+              <string>toggleAtoBloop:</string>
+              <string>toggleAudioDevice:</string>
+              <string>toggleEffectsButton:</string>
+              <string>toggleFullscreen:</string>
+              <string>toggleFullscreenDevice:</string>
+              <string>toggleJumpButtons:</string>
+              <string>togglePlaylistColumnTable:</string>
+              <string>togglePlaymodeButtons:</string>
+              <string>toggleRecord:</string>
+              <string>toggleSidebar:</string>
+              <string>toggleVar:</string>
+              <string>viewAbout:</string>
+              <string>viewErrorsAndWarnings:</string>
+              <string>viewHelp:</string>
+              <string>viewPreferences:</string>
+            </object>
+            <object class="NSMutableArray" key="dict.values">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <object class="IBActionInfo">
+                <string key="name">addSubtitleFile:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">createVideoSnapshot:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">floatOnTop:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">intfOpenCapture:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">intfOpenDisc:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">intfOpenFile:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">intfOpenFileGeneric:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">intfOpenNet:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">openAddonManager:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">openDocumentation:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">openDonate:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">openForum:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">openReadMe:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">openWebsite:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">quitAfterPlayback:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">resizeVideoWindow:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">savePlaylist:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">setPlaybackRate:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">showAudioEffects:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">showBookmarks:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">showConvertAndSave:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">showInformationPanel:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">showLicense:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">showMainWindow:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">showMessagesPanel:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">showPlaylist:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">showTrackSynchronization:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">showVideoEffects:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">showWizard:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">switchSubtitleBackgroundOpacity:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">switchSubtitleOption:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">telxNavLink:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">telxTransparent:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">toggleAtoBloop:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">toggleAudioDevice:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">toggleEffectsButton:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">toggleFullscreen:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">toggleFullscreenDevice:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">toggleJumpButtons:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">togglePlaylistColumnTable:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">togglePlaymodeButtons:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">toggleRecord:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">toggleSidebar:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">toggleVar:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">viewAbout:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">viewErrorsAndWarnings:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">viewHelp:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBActionInfo">
+                <string key="name">viewPreferences:</string>
+                <string key="candidateClassName">id</string>
+              </object>
+            </object>
+          </object>
+          <object class="NSMutableDictionary" key="outlets">
+            <bool key="EncodedWithXMLCoder">YES</bool>
+            <object class="NSArray" key="dict.sortedKeys">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <string>o_about</string>
+              <string>o_audioeffects</string>
+              <string>o_bookmarks</string>
+              <string>o_convertandsave</string>
+              <string>o_dmi_mute</string>
+              <string>o_dmi_next</string>
+              <string>o_dmi_play</string>
+              <string>o_dmi_previous</string>
+              <string>o_dmi_stop</string>
+              <string>o_extMgr</string>
+              <string>o_mi_AtoBloop</string>
+              <string>o_mi_about</string>
+              <string>o_mi_add_intf</string>
+              <string>o_mi_addonManager</string>
+              <string>o_mi_aspect_ratio</string>
+              <string>o_mi_audioeffects</string>
+              <string>o_mi_audiotrack</string>
+              <string>o_mi_bookmarks</string>
+              <string>o_mi_bring_atf</string>
+              <string>o_mi_bwd</string>
+              <string>o_mi_channels</string>
+              <string>o_mi_chapter</string>
+              <string>o_mi_checkForUpdate</string>
+              <string>o_mi_clear</string>
+              <string>o_mi_close_window</string>
+              <string>o_mi_controller</string>
+              <string>o_mi_convertandsave</string>
+              <string>o_mi_copy</string>
+              <string>o_mi_crop</string>
+              <string>o_mi_cut</string>
+              <string>o_mi_deinterlace</string>
+              <string>o_mi_deinterlace_mode</string>
+              <string>o_mi_device</string>
+              <string>o_mi_documentation</string>
+              <string>o_mi_donation</string>
+              <string>o_mi_double_window</string>
+              <string>o_mi_errorsAndWarnings</string>
+              <string>o_mi_extensions</string>
+              <string>o_mi_ffmpeg_pp</string>
+              <string>o_mi_fittoscreen</string>
+              <string>o_mi_floatontop</string>
+              <string>o_mi_forum</string>
+              <string>o_mi_fullscreen</string>
+              <string>o_mi_fwd</string>
+              <string>o_mi_half_window</string>
+              <string>o_mi_help</string>
+              <string>o_mi_hide</string>
+              <string>o_mi_hide_others</string>
+              <string>o_mi_info</string>
+              <string>o_mi_license</string>
+              <string>o_mi_loop</string>
+              <string>o_mi_messages</string>
+              <string>o_mi_minimize</string>
+              <string>o_mi_mute</string>
+              <string>o_mi_next</string>
+              <string>o_mi_normal_window</string>
+              <string>o_mi_openSubtitleFile</string>
+              <string>o_mi_open_capture</string>
+              <string>o_mi_open_disc</string>
+              <string>o_mi_open_file</string>
+              <string>o_mi_open_generic</string>
+              <string>o_mi_open_net</string>
+              <string>o_mi_open_recent</string>
+              <string>o_mi_open_wizard</string>
+              <string>o_mi_paste</string>
+              <string>o_mi_play</string>
+              <string>o_mi_player</string>
+              <string>o_mi_playlist</string>
+              <string>o_mi_playlistTableColumns</string>
+              <string>o_mi_prefs</string>
+              <string>o_mi_previous</string>
+              <string>o_mi_program</string>
+              <string>o_mi_quit</string>
+              <string>o_mi_quitAfterPB</string>
+              <string>o_mi_random</string>
+              <string>o_mi_rate</string>
+              <string>o_mi_rate_faster_lbl</string>
+              <string>o_mi_rate_fld</string>
+              <string>o_mi_rate_lbl</string>
+              <string>o_mi_rate_lbl_gray</string>
+              <string>o_mi_rate_normal_lbl</string>
+              <string>o_mi_rate_sld</string>
+              <string>o_mi_rate_slower_lbl</string>
+              <string>o_mi_rate_view</string>
+              <string>o_mi_readme</string>
+              <string>o_mi_record</string>
+              <string>o_mi_repeat</string>
+              <string>o_mi_save_playlist</string>
+              <string>o_mi_screen</string>
+              <string>o_mi_select_all</string>
+              <string>o_mi_services</string>
+              <string>o_mi_show_all</string>
+              <string>o_mi_snapshot</string>
+              <string>o_mi_stop</string>
+              <string>o_mi_subtitle_bgcolor</string>
+              <string>o_mi_subtitle_bgopacity</string>
+              <string>o_mi_subtitle_bgopacity_lbl</string>
+              <string>o_mi_subtitle_bgopacity_lbl_gray</string>
+              <string>o_mi_subtitle_bgopacity_sld</string>
+              <string>o_mi_subtitle_bgopacity_view</string>
+              <string>o_mi_subtitle_outlinethickness</string>
+              <string>o_mi_subtitle_size</string>
+              <string>o_mi_subtitle_textcolor</string>
+              <string>o_mi_subtitle_track</string>
+              <string>o_mi_teletext</string>
+              <string>o_mi_teletext_blue</string>
+              <string>o_mi_teletext_green</string>
+              <string>o_mi_teletext_index</string>
+              <string>o_mi_teletext_red</string>
+              <string>o_mi_teletext_transparent</string>
+              <string>o_mi_teletext_yellow</string>
+              <string>o_mi_title</string>
+              <string>o_mi_toggleEffectsButton</string>
+              <string>o_mi_toggleJumpButtons</string>
+              <string>o_mi_togglePlaymodeButtons</string>
+              <string>o_mi_toggleSidebar</string>
+              <string>o_mi_trackSynchronization</string>
+              <string>o_mi_videoeffects</string>
+              <string>o_mi_videotrack</string>
+              <string>o_mi_visual</string>
+              <string>o_mi_vol_down</string>
+              <string>o_mi_vol_up</string>
+              <string>o_mi_website</string>
+              <string>o_mi_zoom_window</string>
+              <string>o_mu_add_intf</string>
+              <string>o_mu_aspect_ratio</string>
+              <string>o_mu_audio</string>
+              <string>o_mu_audiotrack</string>
+              <string>o_mu_channels</string>
+              <string>o_mu_chapter</string>
+              <string>o_mu_controls</string>
+              <string>o_mu_crop</string>
+              <string>o_mu_deinterlace</string>
+              <string>o_mu_deinterlace_mode</string>
+              <string>o_mu_device</string>
+              <string>o_mu_edit</string>
+              <string>o_mu_extensions</string>
+              <string>o_mu_ffmpeg_pp</string>
+              <string>o_mu_file</string>
+              <string>o_mu_help</string>
+              <string>o_mu_playlistTableColumns</string>
+              <string>o_mu_program</string>
+              <string>o_mu_screen</string>
+              <string>o_mu_subtitle_bgcolor</string>
+              <string>o_mu_subtitle_outlinethickness</string>
+              <string>o_mu_subtitle_size</string>
+              <string>o_mu_subtitle_textcolor</string>
+              <string>o_mu_subtitle_tracks</string>
+              <string>o_mu_subtitles</string>
+              <string>o_mu_title</string>
+              <string>o_mu_video</string>
+              <string>o_mu_videotrack</string>
+              <string>o_mu_view</string>
+              <string>o_mu_visual</string>
+              <string>o_mu_window</string>
+              <string>o_trackSynchronization</string>
+              <string>o_videoeffects</string>
+              <string>o_vmi_fullscreen</string>
+              <string>o_vmi_mute</string>
+              <string>o_vmi_next</string>
+              <string>o_vmi_play</string>
+              <string>o_vmi_prev</string>
+              <string>o_vmi_snapshot</string>
+              <string>o_vmi_stop</string>
+              <string>o_vmi_voldown</string>
+              <string>o_vmi_volup</string>
+              <string>o_vout_menu</string>
+            </object>
+            <object class="NSMutableArray" key="dict.values">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>id</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>NSView</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>id</string>
+              <string>id</string>
+              <string>id</string>
+              <string>NSView</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>NSMenu</string>
+              <string>id</string>
+              <string>id</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenuItem</string>
+              <string>NSMenu</string>
+            </object>
+          </object>
+          <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+            <bool key="EncodedWithXMLCoder">YES</bool>
+            <object class="NSArray" key="dict.sortedKeys">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <string>o_about</string>
+              <string>o_audioeffects</string>
+              <string>o_bookmarks</string>
+              <string>o_convertandsave</string>
+              <string>o_dmi_mute</string>
+              <string>o_dmi_next</string>
+              <string>o_dmi_play</string>
+              <string>o_dmi_previous</string>
+              <string>o_dmi_stop</string>
+              <string>o_extMgr</string>
+              <string>o_mi_AtoBloop</string>
+              <string>o_mi_about</string>
+              <string>o_mi_add_intf</string>
+              <string>o_mi_addonManager</string>
+              <string>o_mi_aspect_ratio</string>
+              <string>o_mi_audioeffects</string>
+              <string>o_mi_audiotrack</string>
+              <string>o_mi_bookmarks</string>
+              <string>o_mi_bring_atf</string>
+              <string>o_mi_bwd</string>
+              <string>o_mi_channels</string>
+              <string>o_mi_chapter</string>
+              <string>o_mi_checkForUpdate</string>
+              <string>o_mi_clear</string>
+              <string>o_mi_close_window</string>
+              <string>o_mi_controller</string>
+              <string>o_mi_convertandsave</string>
+              <string>o_mi_copy</string>
+              <string>o_mi_crop</string>
+              <string>o_mi_cut</string>
+              <string>o_mi_deinterlace</string>
+              <string>o_mi_deinterlace_mode</string>
+              <string>o_mi_device</string>
+              <string>o_mi_documentation</string>
+              <string>o_mi_donation</string>
+              <string>o_mi_double_window</string>
+              <string>o_mi_errorsAndWarnings</string>
+              <string>o_mi_extensions</string>
+              <string>o_mi_ffmpeg_pp</string>
+              <string>o_mi_fittoscreen</string>
+              <string>o_mi_floatontop</string>
+              <string>o_mi_forum</string>
+              <string>o_mi_fullscreen</string>
+              <string>o_mi_fwd</string>
+              <string>o_mi_half_window</string>
+              <string>o_mi_help</string>
+              <string>o_mi_hide</string>
+              <string>o_mi_hide_others</string>
+              <string>o_mi_info</string>
+              <string>o_mi_license</string>
+              <string>o_mi_loop</string>
+              <string>o_mi_messages</string>
+              <string>o_mi_minimize</string>
+              <string>o_mi_mute</string>
+              <string>o_mi_next</string>
+              <string>o_mi_normal_window</string>
+              <string>o_mi_openSubtitleFile</string>
+              <string>o_mi_open_capture</string>
+              <string>o_mi_open_disc</string>
+              <string>o_mi_open_file</string>
+              <string>o_mi_open_generic</string>
+              <string>o_mi_open_net</string>
+              <string>o_mi_open_recent</string>
+              <string>o_mi_open_wizard</string>
+              <string>o_mi_paste</string>
+              <string>o_mi_play</string>
+              <string>o_mi_player</string>
+              <string>o_mi_playlist</string>
+              <string>o_mi_playlistTableColumns</string>
+              <string>o_mi_prefs</string>
+              <string>o_mi_previous</string>
+              <string>o_mi_program</string>
+              <string>o_mi_quit</string>
+              <string>o_mi_quitAfterPB</string>
+              <string>o_mi_random</string>
+              <string>o_mi_rate</string>
+              <string>o_mi_rate_faster_lbl</string>
+              <string>o_mi_rate_fld</string>
+              <string>o_mi_rate_lbl</string>
+              <string>o_mi_rate_lbl_gray</string>
+              <string>o_mi_rate_normal_lbl</string>
+              <string>o_mi_rate_sld</string>
+              <string>o_mi_rate_slower_lbl</string>
+              <string>o_mi_rate_view</string>
+              <string>o_mi_readme</string>
+              <string>o_mi_record</string>
+              <string>o_mi_repeat</string>
+              <string>o_mi_save_playlist</string>
+              <string>o_mi_screen</string>
+              <string>o_mi_select_all</string>
+              <string>o_mi_services</string>
+              <string>o_mi_show_all</string>
+              <string>o_mi_snapshot</string>
+              <string>o_mi_stop</string>
+              <string>o_mi_subtitle_bgcolor</string>
+              <string>o_mi_subtitle_bgopacity</string>
+              <string>o_mi_subtitle_bgopacity_lbl</string>
+              <string>o_mi_subtitle_bgopacity_lbl_gray</string>
+              <string>o_mi_subtitle_bgopacity_sld</string>
+              <string>o_mi_subtitle_bgopacity_view</string>
+              <string>o_mi_subtitle_outlinethickness</string>
+              <string>o_mi_subtitle_size</string>
+              <string>o_mi_subtitle_textcolor</string>
+              <string>o_mi_subtitle_track</string>
+              <string>o_mi_teletext</string>
+              <string>o_mi_teletext_blue</string>
+              <string>o_mi_teletext_green</string>
+              <string>o_mi_teletext_index</string>
+              <string>o_mi_teletext_red</string>
+              <string>o_mi_teletext_transparent</string>
+              <string>o_mi_teletext_yellow</string>
+              <string>o_mi_title</string>
+              <string>o_mi_toggleEffectsButton</string>
+              <string>o_mi_toggleJumpButtons</string>
+              <string>o_mi_togglePlaymodeButtons</string>
+              <string>o_mi_toggleSidebar</string>
+              <string>o_mi_trackSynchronization</string>
+              <string>o_mi_videoeffects</string>
+              <string>o_mi_videotrack</string>
+              <string>o_mi_visual</string>
+              <string>o_mi_vol_down</string>
+              <string>o_mi_vol_up</string>
+              <string>o_mi_website</string>
+              <string>o_mi_zoom_window</string>
+              <string>o_mu_add_intf</string>
+              <string>o_mu_aspect_ratio</string>
+              <string>o_mu_audio</string>
+              <string>o_mu_audiotrack</string>
+              <string>o_mu_channels</string>
+              <string>o_mu_chapter</string>
+              <string>o_mu_controls</string>
+              <string>o_mu_crop</string>
+              <string>o_mu_deinterlace</string>
+              <string>o_mu_deinterlace_mode</string>
+              <string>o_mu_device</string>
+              <string>o_mu_edit</string>
+              <string>o_mu_extensions</string>
+              <string>o_mu_ffmpeg_pp</string>
+              <string>o_mu_file</string>
+              <string>o_mu_help</string>
+              <string>o_mu_playlistTableColumns</string>
+              <string>o_mu_program</string>
+              <string>o_mu_screen</string>
+              <string>o_mu_subtitle_bgcolor</string>
+              <string>o_mu_subtitle_outlinethickness</string>
+              <string>o_mu_subtitle_size</string>
+              <string>o_mu_subtitle_textcolor</string>
+              <string>o_mu_subtitle_tracks</string>
+              <string>o_mu_subtitles</string>
+              <string>o_mu_title</string>
+              <string>o_mu_video</string>
+              <string>o_mu_videotrack</string>
+              <string>o_mu_view</string>
+              <string>o_mu_visual</string>
+              <string>o_mu_window</string>
+              <string>o_trackSynchronization</string>
+              <string>o_videoeffects</string>
+              <string>o_vmi_fullscreen</string>
+              <string>o_vmi_mute</string>
+              <string>o_vmi_next</string>
+              <string>o_vmi_play</string>
+              <string>o_vmi_prev</string>
+              <string>o_vmi_snapshot</string>
+              <string>o_vmi_stop</string>
+              <string>o_vmi_voldown</string>
+              <string>o_vmi_volup</string>
+              <string>o_vout_menu</string>
+            </object>
+            <object class="NSMutableArray" key="dict.values">
+              <bool key="EncodedWithXMLCoder">YES</bool>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_about</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_audioeffects</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_bookmarks</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_convertandsave</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_dmi_mute</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_dmi_next</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_dmi_play</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_dmi_previous</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_dmi_stop</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_extMgr</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_AtoBloop</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_about</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_add_intf</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_addonManager</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_aspect_ratio</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_audioeffects</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_audiotrack</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_bookmarks</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_bring_atf</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_bwd</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_channels</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_chapter</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_checkForUpdate</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_clear</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_close_window</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_controller</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_convertandsave</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_copy</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_crop</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_cut</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_deinterlace</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_deinterlace_mode</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_device</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_documentation</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_donation</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_double_window</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_errorsAndWarnings</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_extensions</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_ffmpeg_pp</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_fittoscreen</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_floatontop</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_forum</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_fullscreen</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_fwd</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_half_window</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_help</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_hide</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_hide_others</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_info</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_license</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_loop</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_messages</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_minimize</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_mute</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_next</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_normal_window</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_openSubtitleFile</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_open_capture</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_open_disc</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_open_file</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_open_generic</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_open_net</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_open_recent</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_open_wizard</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_paste</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_play</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_player</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_playlist</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_playlistTableColumns</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_prefs</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_previous</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_program</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_quit</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_quitAfterPB</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_random</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_rate</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_rate_faster_lbl</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_rate_fld</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_rate_lbl</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_rate_lbl_gray</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_rate_normal_lbl</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_rate_sld</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_rate_slower_lbl</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_rate_view</string>
+                <string key="candidateClassName">NSView</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_readme</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_record</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_repeat</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_save_playlist</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_screen</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_select_all</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_services</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_show_all</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_snapshot</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_stop</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_subtitle_bgcolor</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_subtitle_bgopacity</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_subtitle_bgopacity_lbl</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_subtitle_bgopacity_lbl_gray</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_subtitle_bgopacity_sld</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_subtitle_bgopacity_view</string>
+                <string key="candidateClassName">NSView</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_subtitle_outlinethickness</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_subtitle_size</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_subtitle_textcolor</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_subtitle_track</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_teletext</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_teletext_blue</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_teletext_green</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_teletext_index</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_teletext_red</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_teletext_transparent</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_teletext_yellow</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_title</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_toggleEffectsButton</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_toggleJumpButtons</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_togglePlaymodeButtons</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_toggleSidebar</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_trackSynchronization</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_videoeffects</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_videotrack</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_visual</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_vol_down</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_vol_up</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_website</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mi_zoom_window</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_add_intf</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_aspect_ratio</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_audio</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_audiotrack</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_channels</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_chapter</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_controls</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_crop</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_deinterlace</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_deinterlace_mode</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_device</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_edit</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_extensions</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_ffmpeg_pp</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_file</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_help</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_playlistTableColumns</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_program</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_screen</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_subtitle_bgcolor</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_subtitle_outlinethickness</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_subtitle_size</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_subtitle_textcolor</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_subtitle_tracks</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_subtitles</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_title</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_video</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_videotrack</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_view</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_visual</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_mu_window</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_trackSynchronization</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_videoeffects</string>
+                <string key="candidateClassName">id</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_vmi_fullscreen</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_vmi_mute</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_vmi_next</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_vmi_play</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_vmi_prev</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_vmi_snapshot</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_vmi_stop</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_vmi_voldown</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_vmi_volup</string>
+                <string key="candidateClassName">NSMenuItem</string>
+              </object>
+              <object class="IBToOneOutletInfo">
+                <string key="name">o_vout_menu</string>
+                <string key="candidateClassName">NSMenu</string>
+              </object>
+            </object>
+          </object>
+          <object class="IBClassDescriptionSource" key="sourceIdentifier">
+            <string key="majorKey">IBDocumentRelativeSource</string>
+            <string key="minorKey">../../../../../modules/gui/macosx/MainMenu.h</string>
+          </object>
+        </object>
+      </object>
       <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
         <bool key="EncodedWithXMLCoder">YES</bool>
         <object class="IBPartialClassDescription">
index e363d63..cdd5476 100644 (file)
@@ -11,6 +11,7 @@
                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 */; };
+               7DB65D5618ABD6490053B874 /* AddonManager.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7DB65D5418ABD6490053B874 /* AddonManager.xib */; };
                7DE88F2A1831396A00CD9DA2 /* PlaylistAccessoryView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7DE88F281831396A00CD9DA2 /* PlaylistAccessoryView.xib */; };
                7DFFA16C16124F38001AF89F /* effects-one-button-pressed-dark.png in Resources */ = {isa = PBXBuildFile; fileRef = 7DFFA16A16124F38001AF89F /* effects-one-button-pressed-dark.png */; };
                7DFFA16D16124F38001AF89F /* effects-one-button-pressed-dark@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7DFFA16B16124F38001AF89F /* effects-one-button-pressed-dark@2x.png */; };
                7D8BB0B61830311300FAE9B7 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/DebugMessageVisualizer.xib; sourceTree = "<group>"; };
                7D8BB0B91830367200FAE9B7 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/PlaylistMenu.xib; sourceTree = "<group>"; };
                7D8BB0BF1830393300FAE9B7 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/MainWindow.xib; sourceTree = "<group>"; };
+               7DB65D5218ABD6380053B874 /* AddonManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AddonManager.h; path = ../../../modules/gui/macosx/AddonManager.h; sourceTree = "<group>"; };
+               7DB65D5318ABD6380053B874 /* AddonManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = AddonManager.m; path = ../../../modules/gui/macosx/AddonManager.m; sourceTree = "<group>"; };
+               7DB65D5518ABD6490053B874 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/AddonManager.xib; sourceTree = "<group>"; };
                7DE88F291831396A00CD9DA2 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/PlaylistAccessoryView.xib; sourceTree = "<group>"; };
                7DFFA16A16124F38001AF89F /* effects-one-button-pressed-dark.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "effects-one-button-pressed-dark.png"; path = "Resources/mainwindow_dark/effects-one-button-pressed-dark.png"; sourceTree = "<group>"; };
                7DFFA16B16124F38001AF89F /* effects-one-button-pressed-dark@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "effects-one-button-pressed-dark@2x.png"; path = "Resources/mainwindow_dark/effects-one-button-pressed-dark@2x.png"; sourceTree = "<group>"; };
                                5CCED71114C0D4A90057F8D1 /* ExtensionsDialogProvider.m */,
                                5CCED71214C0D4A90057F8D1 /* ExtensionsManager.h */,
                                5CCED71314C0D4A90057F8D1 /* ExtensionsManager.m */,
+                               7DB65D5218ABD6380053B874 /* AddonManager.h */,
+                               7DB65D5318ABD6380053B874 /* AddonManager.m */,
                                5CCED71414C0D4A90057F8D1 /* VLCUIWidgets.h */,
                                5CCED71514C0D4A90057F8D1 /* VLCUIWidgets.m */,
                                8E6BC6FA041684EC0059A3A7 /* controls.h */,
                                7D8BB0BE1830393300FAE9B7 /* MainWindow.xib */,
                                7DE88F281831396A00CD9DA2 /* PlaylistAccessoryView.xib */,
                                7D3F6523188051F2005776C4 /* BWQuincyMain.xib */,
+                               7DB65D5418ABD6490053B874 /* AddonManager.xib */,
                        );
                        name = xibs;
                        sourceTree = "<group>";
                        files = (
                                CC8062641021F8790021EB9A /* dsa_pub.pem in Resources */,
                                CC402EB80E00ABBB006A4BA4 /* InfoPlist.strings in Resources */,
+                               7DB65D5618ABD6490053B874 /* AddonManager.xib in Resources */,
                                CC402EB90E00ABBB006A4BA4 /* vlc.scriptSuite in Resources */,
                                CC402EBA0E00ABBB006A4BA4 /* vlc.scriptTerminology in Resources */,
                                CC402EBB0E00ABBB006A4BA4 /* README.MacOSX.rtf in Resources */,
                        name = MainWindow.xib;
                        sourceTree = "<group>";
                };
+               7DB65D5418ABD6490053B874 /* AddonManager.xib */ = {
+                       isa = PBXVariantGroup;
+                       children = (
+                               7DB65D5518ABD6490053B874 /* English */,
+                       );
+                       name = AddonManager.xib;
+                       sourceTree = "<group>";
+               };
                7DE88F281831396A00CD9DA2 /* PlaylistAccessoryView.xib */ = {
                        isa = PBXVariantGroup;
                        children = (
diff --git a/modules/gui/macosx/AddonManager.h b/modules/gui/macosx/AddonManager.h
new file mode 100644 (file)
index 0000000..c8e2c9e
--- /dev/null
@@ -0,0 +1,39 @@
+/*****************************************************************************
+ * AddonManager.h: Addons manager for the Mac
+ ****************************************************************************
+ * Copyright (C) 2014 VideoLAN and authors
+ * Author:       Felix Paul Kühne <fkuehne # videolan.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import <Cocoa/Cocoa.h>
+
+@interface VLCAddonManager : NSObject <NSTableViewDataSource, NSTableViewDelegate>
+{
+    IBOutlet NSWindow *_window;
+    IBOutlet NSPopUpButton *_typeSwitcher;
+    IBOutlet NSButton *_localAddonsOnlyCheckbox;
+    IBOutlet NSTableView *_addonsTable;
+    IBOutlet NSProgressIndicator *_spinner;
+}
++ (VLCAddonManager *)sharedInstance;
+
+- (void)showWindow;
+- (IBAction)switchType:(id)sender;
+- (IBAction)toggleLocalCheckbox:(id)sender;
+- (IBAction)tableAction:(id)sender;
+
+@end
\ No newline at end of file
diff --git a/modules/gui/macosx/AddonManager.m b/modules/gui/macosx/AddonManager.m
new file mode 100644 (file)
index 0000000..d81901f
--- /dev/null
@@ -0,0 +1,286 @@
+/*****************************************************************************
+ * AddonManager.m: Addons manager for the Mac
+ ****************************************************************************
+ * Copyright (C) 2014 VideoLAN and authors
+ * Author:       Felix Paul Kühne <fkuehne # videolan.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import "AddonManager.h"
+
+#import <vlc_common.h>
+#import <vlc_events.h>
+#import <vlc_addons.h>
+#import "intf.h"
+
+@interface VLCAddonManager ()
+{
+    addons_manager_t *_manager;
+    NSMutableArray *_addons;
+    NSArray *_displayedAddons;
+}
+
+- (void)addAddon:(addon_entry_t *)data;
+- (void)discoveryEnded;
+- (void)addonChanged:(addon_entry_t *)data;
+@end
+
+static void addonsEventsCallback( const vlc_event_t *, void * );
+
+static void addonsEventsCallback( const vlc_event_t *event, void *data )
+{
+    if (event->type == vlc_AddonFound)
+        [[VLCAddonManager sharedInstance] addAddon:event->u.addon_generic_event.p_entry];
+    else if (event->type == vlc_AddonsDiscoveryEnded)
+        [[VLCAddonManager sharedInstance] discoveryEnded];
+    else if (event->type == vlc_AddonChanged)
+        [[VLCAddonManager sharedInstance] addonChanged:event->u.addon_generic_event.p_entry];
+}
+
+@implementation VLCAddonManager
+
+static VLCAddonManager *_o_sharedInstance = nil;
+
++ (VLCAddonManager *)sharedInstance
+{
+    return _o_sharedInstance ? _o_sharedInstance : [[self alloc] init];
+}
+
+#pragma mark - object handling
+
+- (id)init
+{
+    if (_o_sharedInstance)
+        [self dealloc];
+    else {
+        _o_sharedInstance = [super init];
+        _addons = [[NSMutableArray alloc] init];
+    }
+
+    return _o_sharedInstance;
+}
+
+- (void)dealloc
+{
+    [_addons release];
+    [_displayedAddons release];
+    if ( _manager )
+        addons_manager_Delete(_manager);
+    [super dealloc];
+}
+
+#pragma mark - UI handling
+
+- (void)awakeFromNib
+{
+    [_typeSwitcher removeAllItems];
+    [_typeSwitcher addItemWithTitle:_NS("All")];
+    [[_typeSwitcher lastItem] setTag: -1];
+    [_typeSwitcher addItemWithTitle:_NS("Skins")];
+    [[_typeSwitcher lastItem] setTag:ADDON_SKIN2];
+    [_typeSwitcher addItemWithTitle:_NS("Playlist parsers")];
+    [[_typeSwitcher lastItem] setTag:ADDON_PLAYLIST_PARSER];
+    [_typeSwitcher addItemWithTitle:_NS("Service discovery")];
+    [[_typeSwitcher lastItem] setTag:ADDON_SERVICE_DISCOVERY];
+    [_typeSwitcher addItemWithTitle:_NS("Extensions")];
+    [[_typeSwitcher lastItem] setTag:ADDON_EXTENSION];
+
+    [_localAddonsOnlyCheckbox setTitle:_NS("Show Installed Only")];
+    [_localAddonsOnlyCheckbox setState:NSOffState];
+    [_spinner setUsesThreadedAnimation:YES];
+
+    [_window setTitle:_NS("Addon Manager")];
+
+    [[[_addonsTable tableColumnWithIdentifier:@"installed"] headerCell] setStringValue:_NS("Installed")];
+    [[[_addonsTable tableColumnWithIdentifier:@"name"] headerCell] setStringValue:_NS("Name")];
+    [[[_addonsTable tableColumnWithIdentifier:@"author"] headerCell] setStringValue:_NS("Author")];
+    [[[_addonsTable tableColumnWithIdentifier:@"type"] headerCell] setStringValue:_NS("Type")];
+
+    _manager = addons_manager_New((vlc_object_t *)VLCIntf);
+    if (!_manager)
+        return;
+
+    vlc_event_manager_t *p_em = _manager->p_event_manager;
+    vlc_event_attach(p_em, vlc_AddonFound, addonsEventsCallback, self);
+    vlc_event_attach(p_em, vlc_AddonsDiscoveryEnded, addonsEventsCallback, self);
+    vlc_event_attach(p_em, vlc_AddonChanged, addonsEventsCallback, self);
+}
+
+- (void)showWindow
+{
+    [self _findNewAddons];
+    [_spinner startAnimation:nil];
+    [_window makeKeyAndOrderFront:nil];
+}
+
+- (IBAction)switchType:(id)sender
+{
+    [self _refactorDataModel];
+}
+
+- (IBAction)toggleLocalCheckbox:(id)sender
+{
+    [self _refactorDataModel];
+}
+
+- (IBAction)tableAction:(id)sender
+{
+    NSInteger clickedRow = [_addonsTable clickedRow];
+    if (clickedRow > _displayedAddons.count - 1 || clickedRow < 0)
+        return;
+
+    NSDictionary *currentItem = _displayedAddons[clickedRow];
+
+    if ([[currentItem objectForKey:@"state"] intValue] == ADDON_INSTALLED)
+        [self _removeAddonWithID:[[currentItem objectForKey:@"uuid"] pointerValue]];
+    else
+        [self _installAddonWithID:[[currentItem objectForKey:@"uuid"] pointerValue]];
+}
+
+- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView
+{
+    return [_displayedAddons count];
+}
+
+- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
+{
+    NSString *identifier = [aTableColumn identifier];
+    if ([identifier isEqualToString:@"installed"]) {
+        if ([[_displayedAddons[rowIndex] objectForKey:@"state"] intValue] == ADDON_INSTALLED)
+            return @"✔";
+        return @"✘";
+    } else if([identifier isEqualToString:@"type"])
+        return [self _getAddonType:[[_displayedAddons[rowIndex] objectForKey:@"type"] intValue]];
+
+    return [_displayedAddons[rowIndex] objectForKey:identifier];
+}
+
+#pragma mark - data handling
+
+- (void)addAddon:(addon_entry_t *)p_entry
+{
+    @autoreleasepool {
+        NSString *name = [NSString stringWithUTF8String:p_entry->psz_name ? p_entry->psz_name : ""];
+        if (p_entry->e_state == ADDON_INSTALLED)
+            name = [name stringByAppendingFormat: @" (%@)", _NS("installed")];
+
+        NSDictionary *addonProperties = [NSDictionary dictionaryWithObjectsAndKeys:
+                                         name, @"name",
+                                         [NSString stringWithUTF8String:p_entry->psz_description ? p_entry->psz_description : ""], @"description",
+                                         [NSString stringWithUTF8String:p_entry->psz_author ? p_entry->psz_author : ""], @"author",
+                                         [NSString stringWithUTF8String:p_entry->psz_source_uri ? p_entry->psz_source_uri : ""], @"uri",
+                                         [NSString stringWithUTF8String:p_entry->psz_version ? p_entry->psz_version : ""], @"version",
+                                         [NSString stringWithUTF8String:p_entry->psz_image_uri ? p_entry->psz_image_uri : ""], @"imageuri",
+                                         [NSNumber numberWithInt:p_entry->e_state], @"state",
+                                         [NSNumber numberWithInt:p_entry->e_type], @"type",
+                                         [NSValue valueWithPointer:&p_entry->uuid], @"uuid",
+                                         nil];
+        [_addons addObject:addonProperties];
+    }
+}
+
+- (void)discoveryEnded
+{
+    [self _refactorDataModel];
+    [_spinner stopAnimation:nil];
+}
+
+- (void)addonChanged:(addon_entry_t *)data
+{
+    [self _refactorDataModel];
+}
+
+#pragma mark - helpers
+
+- (void)_refactorDataModel
+{
+    BOOL installedOnly = _localAddonsOnlyCheckbox.state == NSOnState;
+    int type = [[_typeSwitcher selectedItem] tag];
+
+    NSUInteger count = _addons.count;
+    NSMutableArray *filteredItems = [[NSMutableArray alloc] initWithCapacity:count];
+    NSDictionary *currentItem;
+    for (NSUInteger x = 0; x < count; x++) {
+        currentItem = _addons[x];
+        if (type != -1) {
+            if ([[currentItem objectForKey:@"type"] intValue] == type) {
+                if (installedOnly) {
+                    if ([[currentItem objectForKey:@"state"] intValue] == ADDON_INSTALLED)
+                        [filteredItems addObject:currentItem];
+                } else
+                    [filteredItems addObject:currentItem];
+            }
+        } else {
+            if (installedOnly) {
+                if ([[currentItem objectForKey:@"state"] intValue] == ADDON_INSTALLED)
+                    [filteredItems addObject:currentItem];
+            } else
+                [filteredItems addObject:currentItem];
+        }
+    }
+
+    if (_displayedAddons)
+        [_displayedAddons release];
+    _displayedAddons = [NSArray arrayWithArray:filteredItems];
+    [_displayedAddons retain];
+    [_addonsTable reloadData];
+}
+
+- (void)_findNewAddons
+{
+    addons_manager_Gather(_manager, NULL);
+}
+
+/* FIXME: un-used */
+- (void)_findDesignatedAddon:(NSString *)uri
+{
+    addons_manager_Gather(_manager, [uri UTF8String]);
+}
+
+/* FIXME: un-used */
+- (void)_findInstalled
+{
+    addons_manager_LoadCatalog(_manager);
+}
+
+- (void)_installAddonWithID:(addon_uuid_t)addonid
+{
+    addons_manager_Install(_manager, addonid);
+}
+
+- (void)_removeAddonWithID:(addon_uuid_t)addonid
+{
+    addons_manager_Remove(_manager, addonid);
+}
+
+- (NSString *)_getAddonType:(int)i_type
+{
+    switch (i_type)
+    {
+        case ADDON_SKIN2:
+            return @"Skins";
+        case ADDON_PLAYLIST_PARSER:
+            return @"Playlist parsers";
+        case ADDON_SERVICE_DISCOVERY:
+            return @"Service Discovery";
+        case ADDON_EXTENSION:
+            return @"Extensions";
+        default:
+            return @"Unknown";
+    }
+}
+
+@end
\ No newline at end of file
index 55e548f..36c33db 100644 (file)
@@ -35,6 +35,7 @@
     BOOL b_nib_tracksynchro_loaded;
     BOOL b_nib_bookmarks_loaded;
     BOOL b_nib_convertandsave_loaded;
+    BOOL b_nib_addonmanager_loaded;
 
     id o_about;                 /* VLAboutBox     */
     id o_videoeffects;          /* VLCVideoEffects */
@@ -42,6 +43,7 @@
     id o_trackSynchronization;  /* VLCTrackSynchronization */
     id o_bookmarks;             /* VLCBookmarks */
     id o_convertandsave;        /* VLCConvertAndSave */
+    id o_addonManager;          /* VLCAddonManager */
 
     id o_extMgr;                /* Extensions Manager */
 
@@ -52,6 +54,7 @@
     IBOutlet NSMenuItem * o_mi_checkForUpdate;
     IBOutlet NSMenuItem * o_mi_extensions;
     IBOutlet NSMenu * o_mu_extensions;
+    IBOutlet NSMenuItem * o_mi_addonManager;
     IBOutlet NSMenuItem * o_mi_add_intf;
     IBOutlet NSMenu * o_mu_add_intf;
     IBOutlet NSMenuItem * o_mi_services;
 - (void)setupExtensionsMenu;
 - (void)updateSidebarMenuItem;
 
+- (IBAction)openAddonManager:(id)sender;
+
 - (IBAction)intfOpenFile:(id)sender;
 - (IBAction)intfOpenFileGeneric:(id)sender;
 - (IBAction)intfOpenDisc:(id)sender;
index 968adf4..a3a939a 100644 (file)
@@ -45,6 +45,7 @@
 #import "ExtensionsManager.h"
 #import "ConvertAndSave.h"
 #import "DebugMessageVisualizer.h"
+#import "AddonManager.h"
 
 @implementation VLCMainMenu
 static VLCMainMenu *_o_sharedInstance = nil;
@@ -312,6 +313,7 @@ static VLCMainMenu *_o_sharedInstance = nil;
     [o_mi_prefs setTitle: _NS("Preferences...")];
     [o_mi_extensions setTitle: _NS("Extensions")];
     [o_mu_extensions setTitle: _NS("Extensions")];
+    [o_mi_addonManager setTitle: _NS("Addon Manager")];
     [o_mi_add_intf setTitle: _NS("Add Interface")];
     [o_mu_add_intf setTitle: _NS("Add Interface")];
     [o_mi_services setTitle: _NS("Services")];
@@ -1126,6 +1128,17 @@ static VLCMainMenu *_o_sharedInstance = nil;
     [[[VLCMain sharedInstance] simplePreferences] showSimplePrefsWithLevel:i_level];
 }
 
+- (IBAction)openAddonManager:(id)sender
+{
+    if (!o_addonManager)
+        o_addonManager = [[VLCAddonManager alloc] init];
+
+    if (!b_nib_addonmanager_loaded)
+        b_nib_addonmanager_loaded = [NSBundle loadNibNamed:@"AddonManager" owner:NSApp];
+
+    [o_addonManager showWindow];
+}
+
 - (IBAction)showMessagesPanel:(id)showMessagesPanel
 {
     [[VLCDebugMessageVisualizer sharedInstance] showPanel];
index 2b62233..e1020b5 100644 (file)
@@ -20,6 +20,8 @@ SOURCES_macosx = \
        ExtensionsManager.m \
        ExtensionsDialogProvider.h \
        ExtensionsDialogProvider.m \
+       AddonManager.h \
+       AddonManager.m \
        VLCUIWidgets.h \
        VLCUIWidgets.m \
        about.h \