]> code.delx.au - notipod/commitdiff
Nearly done!
authorJames Bunton <jamesbunton@fastmail.fm>
Sun, 2 Jan 2011 07:55:18 +0000 (18:55 +1100)
committerJames Bunton <jamesbunton@fastmail.fm>
Sun, 2 Jan 2011 07:55:18 +0000 (18:55 +1100)
English.lproj/NotiPod.xib
NotiPod.py
libsyncitunes.py
syncitunes.py

index b8f55cd136ad285e1379f5fb25972a669642e27c..b1b20bfd73f551e358a35f1c44f424a95fb81b8b 100644 (file)
                                                <object class="NSTextField" id="524945726">
                                                        <reference key="NSNextResponder" ref="439893737"/>
                                                        <int key="NSvFlags">268</int>
-                                                       <string key="NSFrame">{{17, 135}, {254, 17}}</string>
+                                                       <string key="NSFrame">{{17, 125}, {254, 17}}</string>
                                                        <reference key="NSSuperview" ref="439893737"/>
                                                        <bool key="NSEnabled">YES</bool>
                                                        <object class="NSTextFieldCell" key="NSCell" id="959016606">
                                                <object class="NSPopUpButton" id="997567970">
                                                        <reference key="NSNextResponder" ref="439893737"/>
                                                        <int key="NSvFlags">268</int>
-                                                       <string key="NSFrame">{{29, 103}, {206, 26}}</string>
+                                                       <string key="NSFrame">{{29, 93}, {335, 26}}</string>
                                                        <reference key="NSSuperview" ref="439893737"/>
                                                        <bool key="NSEnabled">YES</bool>
                                                        <object class="NSPopUpButtonCell" key="NSCell" id="467826865">
                                                                <reference key="NSTextColor" ref="888276067"/>
                                                        </object>
                                                </object>
-                                               <object class="NSScrollView" id="351141068">
+                                               <object class="NSScrollView" id="153822869">
                                                        <reference key="NSNextResponder" ref="439893737"/>
                                                        <int key="NSvFlags">268</int>
                                                        <object class="NSMutableArray" key="NSSubviews">
                                                                <bool key="EncodedWithXMLCoder">YES</bool>
-                                                               <object class="NSClipView" id="571230317">
-                                                                       <reference key="NSNextResponder" ref="351141068"/>
+                                                               <object class="NSClipView" id="593099093">
+                                                                       <reference key="NSNextResponder" ref="153822869"/>
                                                                        <int key="NSvFlags">2304</int>
                                                                        <object class="NSMutableArray" key="NSSubviews">
                                                                                <bool key="EncodedWithXMLCoder">YES</bool>
-                                                                               <object class="NSOutlineView" id="371935982">
-                                                                                       <reference key="NSNextResponder" ref="571230317"/>
+                                                                               <object class="NSOutlineView" id="1032464155">
+                                                                                       <reference key="NSNextResponder" ref="593099093"/>
                                                                                        <int key="NSvFlags">256</int>
                                                                                        <string key="NSFrameSize">{327, 338}</string>
-                                                                                       <reference key="NSSuperview" ref="571230317"/>
+                                                                                       <reference key="NSSuperview" ref="593099093"/>
                                                                                        <bool key="NSEnabled">YES</bool>
                                                                                        <object class="_NSCornerView" key="NSCornerView">
                                                                                                <nil key="NSNextResponder"/>
                                                                                        </object>
                                                                                        <object class="NSMutableArray" key="NSTableColumns">
                                                                                                <bool key="EncodedWithXMLCoder">YES</bool>
-                                                                                               <object class="NSTableColumn" id="50298789">
+                                                                                               <object class="NSTableColumn" id="428715212">
                                                                                                        <string key="NSIdentifier">selected</string>
                                                                                                        <double key="NSWidth">4.000000e+01</double>
                                                                                                        <double key="NSMinWidth">1.600000e+01</double>
                                                                                                                        <int key="NSColorSpace">3</int>
                                                                                                                        <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
                                                                                                                </object>
-                                                                                                               <object class="NSColor" key="NSTextColor" id="204738612">
+                                                                                                               <object class="NSColor" key="NSTextColor" id="1008090455">
                                                                                                                        <int key="NSColorSpace">6</int>
                                                                                                                        <string key="NSCatalogName">System</string>
                                                                                                                        <string key="NSColorName">headerTextColor</string>
                                                                                                                        <reference key="NSColor" ref="495955423"/>
                                                                                                                </object>
                                                                                                        </object>
-                                                                                                       <object class="NSButtonCell" key="NSDataCell" id="811465044">
+                                                                                                       <object class="NSButtonCell" key="NSDataCell" id="824905231">
                                                                                                                <int key="NSCellFlags">67239424</int>
                                                                                                                <int key="NSCellFlags2">131072</int>
                                                                                                                <string key="NSContents"/>
                                                                                                                <reference key="NSSupport" ref="26"/>
-                                                                                                               <reference key="NSControlView" ref="371935982"/>
+                                                                                                               <reference key="NSControlView" ref="1032464155"/>
                                                                                                                <int key="NSButtonFlags">1211912703</int>
                                                                                                                <int key="NSButtonFlags2">130</int>
                                                                                                                <object class="NSCustomResource" key="NSNormalImage">
                                                                                                        <int key="NSResizingMask">1</int>
                                                                                                        <bool key="NSIsResizeable">YES</bool>
                                                                                                        <bool key="NSIsEditable">YES</bool>
-                                                                                                       <reference key="NSTableView" ref="371935982"/>
+                                                                                                       <reference key="NSTableView" ref="1032464155"/>
                                                                                                </object>
-                                                                                               <object class="NSTableColumn" id="296871537">
+                                                                                               <object class="NSTableColumn" id="403831249">
                                                                                                        <string key="NSIdentifier">playlist</string>
-                                                                                                       <double key="NSWidth">2.710000e+02</double>
+                                                                                                       <double key="NSWidth">2.810000e+02</double>
                                                                                                        <double key="NSMinWidth">1.000000e+01</double>
                                                                                                        <double key="NSMaxWidth">3.402823e+38</double>
                                                                                                        <object class="NSTableHeaderCell" key="NSHeaderCell">
                                                                                                                                <bytes key="NSWhite">MQA</bytes>
                                                                                                                        </object>
                                                                                                                </object>
-                                                                                                               <reference key="NSTextColor" ref="204738612"/>
+                                                                                                               <reference key="NSTextColor" ref="1008090455"/>
                                                                                                        </object>
-                                                                                                       <object class="NSTextFieldCell" key="NSDataCell" id="286239095">
+                                                                                                       <object class="NSTextFieldCell" key="NSDataCell" id="825348797">
                                                                                                                <int key="NSCellFlags">337772096</int>
                                                                                                                <int key="NSCellFlags2">2048</int>
                                                                                                                <string key="NSContents"/>
                                                                                                                <reference key="NSSupport" ref="822023840"/>
-                                                                                                               <reference key="NSControlView" ref="371935982"/>
+                                                                                                               <reference key="NSControlView" ref="1032464155"/>
                                                                                                                <object class="NSColor" key="NSBackgroundColor" id="928689894">
                                                                                                                        <int key="NSColorSpace">6</int>
                                                                                                                        <string key="NSCatalogName">System</string>
                                                                                                        </object>
                                                                                                        <int key="NSResizingMask">1</int>
                                                                                                        <bool key="NSIsResizeable">YES</bool>
-                                                                                                       <reference key="NSTableView" ref="371935982"/>
+                                                                                                       <reference key="NSTableView" ref="1032464155"/>
                                                                                                </object>
                                                                                        </object>
                                                                                        <double key="NSIntercellSpacingWidth">3.000000e+00</double>
                                                                                                </object>
                                                                                        </object>
                                                                                        <double key="NSRowHeight">1.700000e+01</double>
-                                                                                       <int key="NSTvFlags">-759169024</int>
+                                                                                       <int key="NSTvFlags">46137344</int>
                                                                                        <int key="NSColumnAutoresizingStyle">4</int>
                                                                                        <int key="NSDraggingSourceMaskForLocal">15</int>
                                                                                        <int key="NSDraggingSourceMaskForNonLocal">0</int>
-                                                                                       <bool key="NSAllowsTypeSelect">YES</bool>
+                                                                                       <bool key="NSAllowsTypeSelect">NO</bool>
                                                                                        <int key="NSTableViewDraggingDestinationStyle">1</int>
                                                                                </object>
                                                                        </object>
                                                                        <string key="NSFrame">{{1, 1}, {327, 338}}</string>
-                                                                       <reference key="NSSuperview" ref="351141068"/>
-                                                                       <reference key="NSNextKeyView" ref="371935982"/>
-                                                                       <reference key="NSDocView" ref="371935982"/>
+                                                                       <reference key="NSSuperview" ref="153822869"/>
+                                                                       <reference key="NSNextKeyView" ref="1032464155"/>
+                                                                       <reference key="NSDocView" ref="1032464155"/>
                                                                        <reference key="NSBGColor" ref="928689894"/>
                                                                        <int key="NScvFlags">4</int>
                                                                </object>
-                                                               <object class="NSScroller" id="174881734">
-                                                                       <reference key="NSNextResponder" ref="351141068"/>
+                                                               <object class="NSScroller" id="330926440">
+                                                                       <reference key="NSNextResponder" ref="153822869"/>
                                                                        <int key="NSvFlags">-2147483392</int>
                                                                        <string key="NSFrame">{{313, 1}, {15, 323}}</string>
-                                                                       <reference key="NSSuperview" ref="351141068"/>
-                                                                       <reference key="NSTarget" ref="351141068"/>
+                                                                       <reference key="NSSuperview" ref="153822869"/>
+                                                                       <reference key="NSTarget" ref="153822869"/>
                                                                        <string key="NSAction">_doScroller:</string>
-                                                                       <double key="NSPercent">9.556213e-01</double>
+                                                                       <double key="NSPercent">9.970502e-01</double>
                                                                </object>
-                                                               <object class="NSScroller" id="9933412">
-                                                                       <reference key="NSNextResponder" ref="351141068"/>
+                                                               <object class="NSScroller" id="646502877">
+                                                                       <reference key="NSNextResponder" ref="153822869"/>
                                                                        <int key="NSvFlags">-2147483392</int>
                                                                        <string key="NSFrame">{{1, 324}, {327, 15}}</string>
-                                                                       <reference key="NSSuperview" ref="351141068"/>
+                                                                       <reference key="NSSuperview" ref="153822869"/>
                                                                        <int key="NSsFlags">1</int>
-                                                                       <reference key="NSTarget" ref="351141068"/>
+                                                                       <reference key="NSTarget" ref="153822869"/>
                                                                        <string key="NSAction">_doScroller:</string>
-                                                                       <double key="NSPercent">9.159664e-01</double>
+                                                                       <double key="NSPercent">9.969512e-01</double>
                                                                </object>
                                                        </object>
                                                        <string key="NSFrame">{{32, 160}, {329, 340}}</string>
                                                        <reference key="NSSuperview" ref="439893737"/>
-                                                       <reference key="NSNextKeyView" ref="571230317"/>
+                                                       <reference key="NSNextKeyView" ref="593099093"/>
                                                        <int key="NSsFlags">562</int>
-                                                       <reference key="NSVScroller" ref="174881734"/>
-                                                       <reference key="NSHScroller" ref="9933412"/>
-                                                       <reference key="NSContentView" ref="571230317"/>
+                                                       <reference key="NSVScroller" ref="330926440"/>
+                                                       <reference key="NSHScroller" ref="646502877"/>
+                                                       <reference key="NSContentView" ref="593099093"/>
                                                        <bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
                                                </object>
                                        </object>
                                <string key="NSScreenRect">{{0, 0}, {1024, 746}}</string>
                                <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
                        </object>
-                       <object class="NSCustomObject" id="567503449">
-                               <string key="NSClassName">NotiPodController</string>
-                       </object>
                        <object class="NSCustomObject" id="719278169">
                                <string key="NSClassName">NotiPodAppDelegate</string>
                        </object>
                                <string key="NSScreenRect">{{0, 0}, {1024, 746}}</string>
                                <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
                        </object>
-                       <object class="NSCustomObject" id="354550651">
+                       <object class="NSCustomObject" id="792415288">
                                <string key="NSClassName">PlaylistModel</string>
                        </object>
+                       <object class="NSCustomObject" id="236606853">
+                               <string key="NSClassName">FolderModel</string>
+                       </object>
                </object>
                <object class="IBObjectContainer" key="IBDocument.Objects">
                        <object class="NSMutableArray" key="connectionRecords">
                                        <int key="connectionID">370</int>
                                </object>
                                <object class="IBConnectionRecord">
-                                       <object class="IBActionConnection" key="connection">
-                                               <string key="label">doSync:</string>
-                                               <reference key="source" ref="567503449"/>
-                                               <reference key="destination" ref="703636579"/>
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">delegate</string>
+                                               <reference key="source" ref="1050"/>
+                                               <reference key="destination" ref="719278169"/>
                                        </object>
-                                       <int key="connectionID">407</int>
+                                       <int key="connectionID">435</int>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBOutletConnection" key="connection">
-                                               <string key="label">window</string>
-                                               <reference key="source" ref="567503449"/>
-                                               <reference key="destination" ref="972006081"/>
+                                               <string key="label">outlineView</string>
+                                               <reference key="source" ref="792415288"/>
+                                               <reference key="destination" ref="1032464155"/>
                                        </object>
-                                       <int key="connectionID">420</int>
+                                       <int key="connectionID">478</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">folderPopup</string>
+                                               <reference key="source" ref="236606853"/>
+                                               <reference key="destination" ref="997567970"/>
+                                       </object>
+                                       <int key="connectionID">493</int>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBActionConnection" key="connection">
                                                <string key="label">doSelectFolder:</string>
-                                               <reference key="source" ref="567503449"/>
-                                               <reference key="destination" ref="178047326"/>
+                                               <reference key="source" ref="236606853"/>
+                                               <reference key="destination" ref="997567970"/>
                                        </object>
-                                       <int key="connectionID">421</int>
+                                       <int key="connectionID">495</int>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBOutletConnection" key="connection">
-                                               <string key="label">loadingSheet</string>
-                                               <reference key="source" ref="567503449"/>
-                                               <reference key="destination" ref="92204650"/>
+                                               <string key="label">window</string>
+                                               <reference key="source" ref="236606853"/>
+                                               <reference key="destination" ref="972006081"/>
                                        </object>
-                                       <int key="connectionID">434</int>
+                                       <int key="connectionID">496</int>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBOutletConnection" key="connection">
-                                               <string key="label">delegate</string>
-                                               <reference key="source" ref="1050"/>
-                                               <reference key="destination" ref="719278169"/>
+                                               <string key="label">window</string>
+                                               <reference key="source" ref="719278169"/>
+                                               <reference key="destination" ref="972006081"/>
                                        </object>
-                                       <int key="connectionID">435</int>
+                                       <int key="connectionID">497</int>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBOutletConnection" key="connection">
-                                               <string key="label">folderPopup</string>
-                                               <reference key="source" ref="567503449"/>
-                                               <reference key="destination" ref="997567970"/>
+                                               <string key="label">playlistModel</string>
+                                               <reference key="source" ref="719278169"/>
+                                               <reference key="destination" ref="792415288"/>
                                        </object>
-                                       <int key="connectionID">451</int>
+                                       <int key="connectionID">498</int>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBOutletConnection" key="connection">
-                                               <string key="label">outlineView</string>
-                                               <reference key="source" ref="354550651"/>
-                                               <reference key="destination" ref="371935982"/>
+                                               <string key="label">folderModel</string>
+                                               <reference key="source" ref="719278169"/>
+                                               <reference key="destination" ref="236606853"/>
                                        </object>
-                                       <int key="connectionID">478</int>
+                                       <int key="connectionID">499</int>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBOutletConnection" key="connection">
-                                               <string key="label">playlistModel</string>
-                                               <reference key="source" ref="567503449"/>
-                                               <reference key="destination" ref="354550651"/>
+                                               <string key="label">loadingSheet</string>
+                                               <reference key="source" ref="719278169"/>
+                                               <reference key="destination" ref="92204650"/>
                                        </object>
-                                       <int key="connectionID">479</int>
+                                       <int key="connectionID">500</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">doSync:</string>
+                                               <reference key="source" ref="719278169"/>
+                                               <reference key="destination" ref="703636579"/>
+                                       </object>
+                                       <int key="connectionID">501</int>
                                </object>
                        </object>
                        <object class="IBMutableOrderedSet" key="objectRecords">
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                                        <reference ref="818249148"/>
-                                                       <reference ref="524945726"/>
-                                                       <reference ref="997567970"/>
                                                        <reference ref="323617138"/>
                                                        <reference ref="703636579"/>
-                                                       <reference ref="351141068"/>
+                                                       <reference ref="153822869"/>
+                                                       <reference ref="524945726"/>
+                                                       <reference ref="997567970"/>
                                                </object>
                                                <reference key="parent" ref="972006081"/>
                                        </object>
                                                <reference key="object" ref="1061036965"/>
                                                <reference key="parent" ref="703636579"/>
                                        </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">404</int>
-                                               <reference key="object" ref="567503449"/>
-                                               <reference key="parent" ref="0"/>
-                                               <string key="objectName">NotiPodController</string>
-                                       </object>
                                        <object class="IBObjectRecord">
                                                <int key="objectID">411</int>
                                                <reference key="object" ref="997567970"/>
                                        </object>
                                        <object class="IBObjectRecord">
                                                <int key="objectID">467</int>
-                                               <reference key="object" ref="351141068"/>
+                                               <reference key="object" ref="153822869"/>
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="174881734"/>
-                                                       <reference ref="9933412"/>
-                                                       <reference ref="371935982"/>
+                                                       <reference ref="330926440"/>
+                                                       <reference ref="646502877"/>
+                                                       <reference ref="1032464155"/>
                                                </object>
                                                <reference key="parent" ref="439893737"/>
                                        </object>
                                        <object class="IBObjectRecord">
                                                <int key="objectID">468</int>
-                                               <reference key="object" ref="174881734"/>
-                                               <reference key="parent" ref="351141068"/>
+                                               <reference key="object" ref="330926440"/>
+                                               <reference key="parent" ref="153822869"/>
                                        </object>
                                        <object class="IBObjectRecord">
                                                <int key="objectID">469</int>
-                                               <reference key="object" ref="9933412"/>
-                                               <reference key="parent" ref="351141068"/>
+                                               <reference key="object" ref="646502877"/>
+                                               <reference key="parent" ref="153822869"/>
                                        </object>
                                        <object class="IBObjectRecord">
                                                <int key="objectID">470</int>
-                                               <reference key="object" ref="371935982"/>
+                                               <reference key="object" ref="1032464155"/>
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="50298789"/>
-                                                       <reference ref="296871537"/>
+                                                       <reference ref="428715212"/>
+                                                       <reference ref="403831249"/>
                                                </object>
-                                               <reference key="parent" ref="351141068"/>
+                                               <reference key="parent" ref="153822869"/>
                                        </object>
                                        <object class="IBObjectRecord">
                                                <int key="objectID">472</int>
-                                               <reference key="object" ref="50298789"/>
+                                               <reference key="object" ref="428715212"/>
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="811465044"/>
+                                                       <reference ref="824905231"/>
                                                </object>
-                                               <reference key="parent" ref="371935982"/>
+                                               <reference key="parent" ref="1032464155"/>
                                        </object>
                                        <object class="IBObjectRecord">
                                                <int key="objectID">477</int>
-                                               <reference key="object" ref="354550651"/>
+                                               <reference key="object" ref="792415288"/>
                                                <reference key="parent" ref="0"/>
                                        </object>
                                        <object class="IBObjectRecord">
                                                <int key="objectID">484</int>
-                                               <reference key="object" ref="811465044"/>
-                                               <reference key="parent" ref="50298789"/>
+                                               <reference key="object" ref="824905231"/>
+                                               <reference key="parent" ref="428715212"/>
                                        </object>
                                        <object class="IBObjectRecord">
                                                <int key="objectID">485</int>
-                                               <reference key="object" ref="296871537"/>
+                                               <reference key="object" ref="403831249"/>
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="286239095"/>
+                                                       <reference ref="825348797"/>
                                                </object>
-                                               <reference key="parent" ref="371935982"/>
+                                               <reference key="parent" ref="1032464155"/>
                                        </object>
                                        <object class="IBObjectRecord">
                                                <int key="objectID">486</int>
-                                               <reference key="object" ref="286239095"/>
-                                               <reference key="parent" ref="296871537"/>
+                                               <reference key="object" ref="825348797"/>
+                                               <reference key="parent" ref="403831249"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">490</int>
+                                               <reference key="object" ref="236606853"/>
+                                               <reference key="parent" ref="0"/>
                                        </object>
                                </object>
                        </object>
                                        <string>394.IBPluginDependency</string>
                                        <string>395.IBPluginDependency</string>
                                        <string>396.IBPluginDependency</string>
-                                       <string>404.IBPluginDependency</string>
                                        <string>411.IBPluginDependency</string>
                                        <string>412.IBPluginDependency</string>
                                        <string>413.IBPluginDependency</string>
                                        <string>472.IBPluginDependency</string>
                                        <string>477.IBPluginDependency</string>
                                        <string>484.IBPluginDependency</string>
+                                       <string>490.IBPluginDependency</string>
                                        <string>56.IBPluginDependency</string>
                                        <string>56.ImportedFromIB2</string>
                                        <string>57.IBPluginDependency</string>
                                        <reference ref="9"/>
                                        <string>{74, 862}</string>
                                        <string>{{529, 476}, {148, 20}}</string>
-                                       <string>{{253, 91}, {381, 545}}</string>
-                                       <string>{{253, 91}, {381, 545}}</string>
+                                       <string>{{238, 116}, {381, 545}}</string>
+                                       <string>{{238, 116}, {381, 545}}</string>
                                        <reference ref="9"/>
                                        <string>{{505, 213}, {252, 190}}</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>
                                        <string>{{89, 581}, {211, 33}}</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>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <reference ref="9"/>
                                </object>
                        </object>
                        <nil key="sourceID"/>
-                       <int key="maxID">487</int>
+                       <int key="maxID">502</int>
                </object>
                <object class="IBClassDescriber" key="IBDocument.Classes">
                        <object class="NSMutableArray" key="referencedPartialClassDescriptions">
                                <bool key="EncodedWithXMLCoder">YES</bool>
                                <object class="IBPartialClassDescription">
-                                       <string key="className">NotiPodAppDelegate</string>
-                                       <string key="superclassName">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier" id="344772374">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">NotiPod.py</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NotiPodAppDelegate</string>
-                                       <string key="superclassName">NSObject</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBUserSource</string>
-                                               <string key="minorKey"/>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">NotiPodController</string>
+                                       <string key="className">FolderModel</string>
                                        <string key="superclassName">NSObject</string>
                                        <object class="NSMutableDictionary" key="actions">
+                                               <string key="NS.key.0">doSelectFolder:</string>
+                                               <string key="NS.object.0">id</string>
+                                       </object>
+                                       <object class="NSMutableDictionary" key="outlets">
                                                <bool key="EncodedWithXMLCoder">YES</bool>
                                                <object class="NSArray" key="dict.sortedKeys">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>doSelectFolder:</string>
-                                                       <string>doSync:</string>
+                                                       <string>folderPopup</string>
+                                                       <string>window</string>
                                                </object>
                                                <object class="NSMutableArray" key="dict.values">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                                        <string>id</string>
                                                </object>
                                        </object>
+                                       <object class="IBClassDescriptionSource" key="sourceIdentifier" id="344772374">
+                                               <string key="majorKey">IBProjectSource</string>
+                                               <string key="minorKey">NotiPod.py</string>
+                                       </object>
+                               </object>
+                               <object class="IBPartialClassDescription">
+                                       <string key="className">NotiPodAppDelegate</string>
+                                       <string key="superclassName">NSObject</string>
+                                       <object class="NSMutableDictionary" key="actions">
+                                               <string key="NS.key.0">doSync:</string>
+                                               <string key="NS.object.0">id</string>
+                                       </object>
                                        <object class="NSMutableDictionary" key="outlets">
                                                <bool key="EncodedWithXMLCoder">YES</bool>
                                                <object class="NSArray" key="dict.sortedKeys">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>folderPopup</string>
+                                                       <string>folderModel</string>
                                                        <string>loadingSheet</string>
                                                        <string>playlistModel</string>
                                                        <string>window</string>
                                        <reference key="sourceIdentifier" ref="344772374"/>
                                </object>
                                <object class="IBPartialClassDescription">
-                                       <string key="className">NotiPodController</string>
+                                       <string key="className">NotiPodAppDelegate</string>
                                        <string key="superclassName">NSObject</string>
                                        <object class="IBClassDescriptionSource" key="sourceIdentifier">
                                                <string key="majorKey">IBUserSource</string>
index 68bb1a11d1d15c20f109c4d0636bb7c9c2b111ca..610d4059353bc5aacd044bd70b4e0f197fe9baa3 100644 (file)
@@ -2,6 +2,8 @@
 # Copyright 2009 James Bunton <jamesbunton@fastmail.fm>
 # Licensed for distribution under the GPL version 2, check COPYING for details
 
+import logging
+
 import objc
 from Foundation import *
 from AppKit import *
@@ -25,6 +27,7 @@ class PlaylistModel(NSObject):
                        if playlist.parent is None:
                                self.root.append(playlist)
                self.outlineView.reloadData()
+               self.outlineView.expandItem_expandChildren_(None, True)
 
        def outlineView_child_ofItem_(self, _, childIndex, playlist):
                if playlist == None:
@@ -58,74 +61,53 @@ class PlaylistModel(NSObject):
 
                if col != "selected":
                        return
-               if v:
-                       NSApp.delegate().addPlaylist_(playlist.pid)
-               else:
-                       NSApp.delegate().delPlaylist_(playlist.pid)
+               NSApp.delegate().setPlaylist_selected_(playlist.pid, v)
 
 
-class NotiPodController(NSObject):
-       playlistModel = objc.IBOutlet()
-       folderPopup = objc.IBOutlet()
+class FolderModel(NSObject):
        window = objc.IBOutlet()
-       loadingSheet = objc.IBOutlet()
-
+       folderPopup = objc.IBOutlet()
 
        def awakeFromNib(self):
-               self.performSelectorInBackground_withObject_(self.loadLibrary, None)
-       
-       def finishLoading(self):
-               self.playlistModel.setPlaylists(self.library.get_playlists())
                self.folderPopup.addItemsWithTitles_(NSApp.delegate().folders())
+               self.folderPopup.selectItemAtIndex_(2)
 
-       def loadLibrary(self):
-               pool = NSAutoreleasePool.alloc().init()
-               NSApp.beginSheet_modalForWindow_modalDelegate_didEndSelector_contextInfo_(self.loadingSheet, self.window, None, None, None)
-               self.library = libsyncitunes.ITunesLibrary.alloc().init()
-               self.loadingSheet.close()
-               self.performSelectorOnMainThread_withObject_waitUntilDone_(self.finishLoading, None, True)
-               del pool
+       @objc.IBAction
+       def doSelectFolder_(self, sender):
+               if self.folderPopup.indexOfSelectedItem() >= 2:
+                       NSApp.delegate().addFolder_(self.folderPopup.titleOfSelectedItem())
+                       return
+               panel = NSOpenPanel.openPanel()
+               panel.setCanChooseFiles_(False)
+               panel.setCanChooseDirectories_(True)
+               panel.setAllowsMultipleSelection_(False)
+               panel.beginSheetForDirectory_file_types_modalForWindow_modalDelegate_didEndSelector_contextInfo_(
+                       None, None, [], self.window, self, self.selectFolderEnd_returnCode_contextInfo_, None)
 
        @objc.signature("v@:@ii")
        def selectFolderEnd_returnCode_contextInfo_(self, panel, ret, _):
                if ret == NSOKButton:
                        assert len(panel.filenames()) == 1
                        folder = panel.filenames()[0]
-###                    NSApp.delegate().addFolder_(folder)
+                       NSApp.delegate().addFolder_(folder)
                        self.folderPopup.insertItemWithTitle_atIndex_(folder, 2)
                        self.folderPopup.selectItemAtIndex_(2)
 
-       @objc.IBAction
-       def doSelectFolder_(self, sender):
-               print "select folder"
-               try:
-                       folders = NSApp.delegate().folders()
-                       if len(folders) > 0:
-                               folder = folders[0]
-                       else:
-                               folder = None
-                       panel = NSOpenPanel.openPanel()
-                       panel.setCanChooseFiles_(False)
-                       panel.setCanChooseDirectories_(True)
-                       panel.setAllowsMultipleSelection_(False)
-                       panel.beginSheetForDirectory_file_types_modalForWindow_modalDelegate_didEndSelector_contextInfo_(folder, None, None, self.window, self, self.selectFolderEnd_returnCode_contextInfo_, None)
-               except:
-                       import traceback
-                       traceback.print_exc()
-
-       @objc.IBAction
-       def doSync_(self, sender):
-               print "hello me"
-
 
 class NotiPodAppDelegate(NSObject):
+       window = objc.IBOutlet()
+       playlistModel = objc.IBOutlet()
+       folderModel = objc.IBOutlet()
+       loadingSheet = objc.IBOutlet()
+
 
        # Delegate methods
        def applicationWillFinishLaunching_(self, _):
                pass
 
        def applicationDidFinishLaunching_(self, _):
-               pass
+               NSApp.beginSheet_modalForWindow_modalDelegate_didEndSelector_contextInfo_(self.loadingSheet, self.window, None, None, None)
+               self.performSelectorInBackground_withObject_(self.loadFromThread, None)
 
        def applicationWillTerminate_(self, _):
                self.prefs().synchronize()
@@ -134,6 +116,33 @@ class NotiPodAppDelegate(NSObject):
                return True
 
 
+       def loadFromThread(self):
+               pool = NSAutoreleasePool.alloc().init()
+               self.library = libsyncitunes.ITunesLibrary.alloc().init()
+               self.performSelectorOnMainThread_withObject_waitUntilDone_(self.finishLoading, None, True)
+               del pool
+
+       def finishLoading(self):
+               self.playlistModel.setPlaylists(self.library.get_playlists())
+               NSApp.endSheet_(self.loadingSheet)
+               self.loadingSheet.close()
+
+       @objc.IBAction
+       def doSync_(self, sender):
+               folder = self.folders()[0]
+               playlists = [self.library.get_playlist_pid(pid) for pid in self.playlists()]
+
+               all_tracks = []
+               for playlist in playlists:
+                       print playlist.name, playlist.tracks
+                       all_tracks.extend(playlist.tracks)
+                       libsyncitunes.export_m3u(dry_run=True, dest=folder, path_prefix="",
+                                       playlist_name=playlist.name, files=playlist.tracks)
+
+               libsyncitunes.sync(dry_run=True,
+                       source=self.library.folder, dest=folder, files=all_tracks)
+
+
        # Public accessors
 
        def prefs(self):
@@ -154,20 +163,27 @@ class NotiPodAppDelegate(NSObject):
 
        def addFolder_(self, folder):
                folders = self.folders()
-               folders.append(folder)
+               while folder in folders:
+                       folders.remove(folder)
+               folders.insert(0, folder)
+               folders = folders[:10]
                self._saveArray("folders", folders)
 
-       def delPlaylist_(self, playlist):
+       def setPlaylist_selected_(self, playlist, selected):
                playlists = self.playlists()
-               playlists.remove(playlist)
-               self._saveArray("playlists", playlists)
-
-       def addPlaylist_(self, playlist):
-               playlists = self.playlists()
-               playlists.append(playlist)
-               self._saveArray("playlists", playlists)
+               if selected:
+                       playlists.append(playlist)
+               else:
+                       playlists.remove(playlist)
+               playlists = list(set(playlists))
+               self._saveArray("playlists", list(set(playlists)))
 
 
+def main():
+       logging.basicConfig(format="%(levelname)s: %(message)s")
+       logging.getLogger().setLevel(logging.DEBUG)
+       AppHelper.runEventLoop()
 
-AppHelper.runEventLoop()
+if __name__ == "__main__":
+       main()
 
index 7e955ad72def6fba3b5e55ef4561d931d40bcfdf..e9ed9cd1bf3f5504c55145a249d930b5cf06250a 100644 (file)
@@ -30,7 +30,7 @@ class Playlist(NSObject):
                self.name = name
                self.pid = pid
                self.children = []
-               self.tracks = []
+               self.tracks = tracks
                self.parent = parent
                if parent is not None:
                        parent.children.append(self)
@@ -54,7 +54,6 @@ class ITunesLibrary(NSObject):
                return urllib.splithost(urllib.splittype(urllib.unquote(location))[1])[1]
        
        def make_playlist(self, pl_playlist, pl_tracks):
-###            print pl_playlist
                name = pl_playlist["Name"]
                pid = pl_playlist["Playlist Persistent ID"]
                parent = None
@@ -69,20 +68,32 @@ class ITunesLibrary(NSObject):
                        filename = str(pl_tracks[str(trackID)]["Location"])
                        filename = self.loc2name(filename)
                        filename = eval(repr(filename).lstrip("u")).decode("utf-8")
+                       if not filename.startswith(self.folder):
+                               logging.warn("Skipping: " + filename)
+                               continue
+                       filename = filename[len(self.folder):]
+                       if filename.startswith("/"):
+                               filename = filename[1:]
                        tracks.append(filename)
                playlist = Playlist.alloc().init()
                playlist.set(name, pid, tracks, parent)
                return playlist
 
-       def has_playlist(self, playlist):
-               for p in self.playlists:
-                       if p.name == playlist:
+       def has_playlist_name(self, name):
+               for p in self.get_playlists():
+                       if p.name == name:
                                return True
                return False
 
-       def get_playlist(self, name):
-               playlist = [p for p in self.playlists if p.name == name][0]
-               return playlist.tracks
+       def get_playlist_name(self, name):
+               for playlist in self.get_playlists():
+                       if playlist.name == name:
+                               return playlist
+       
+       def get_playlist_pid(self, pid):
+               for playlist in self.get_playlists():
+                       if playlist.pid == pid:
+                               return playlist
 
        def get_playlists(self):
                return self.playlists.values()
@@ -106,13 +117,13 @@ class ITunesLibrary(NSObject):
                return item.name
 
 
-def export_m3u(dry_run, dest, drive_letter, music_dir, playlist_name, files):
+def export_m3u(dry_run, dest, path_prefix, playlist_name, files):
        if dry_run:
                return
        f = open(os.path.join(dest, playlist_name) + ".m3u", "w")
        for filename in files:
                filename = filename.replace("/", "\\").encode("utf-8")
-               f.write("%s:\\%s\\%s\n" % (drive_letter, music_dir, filename))
+               f.write("%s\\%s\\%s\n" % (path_prefix, filename))
        f.close()
 
 def strip_prefix(s, prefix):
index 0f507807bb7c602d2f3b5abdb4e68458cefa5af5..16c64bfb6c136e4855e65ce022d6f92393d6c6a6 100755 (executable)
@@ -23,17 +23,14 @@ def parse_options():
                action="store_true", dest="dry_run", default=False)
        parser.add_option("--itunes-library",
                action="store", dest="itunes_library", default=None)
-       parser.add_option("--drive-letter",
-               action="store", dest="drive_letter", default="E")
-       parser.add_option("--media-dir",
-               action="store", dest="media_dir", default="iTunes")
+       parser.add_option("--path-prefix",
+               action="store", dest="path_prefix", default="E:")
 
        opts, args = parser.parse_args(sys.argv[1:])
        if len(args) < 2:
                parser.print_usage()
                sys.exit(1)
        opts.dest = args[0]
-       opts.full_dest = os.path.join(opts.dest, opts.media_dir)
        opts.playlists = args[1:]
 
        return opts
@@ -42,11 +39,7 @@ def main():
        opts = parse_options()
 
        # Set up logging
-       try:
-               logging.basicConfig(format="%(levelname)s: %(message)s")
-       except TypeError:
-               # Support for Python 2.3
-               logging.basicConfig()
+       logging.basicConfig(format="%(levelname)s: %(message)s")
        if opts.quiet:
                logging.getLogger().setLevel(logging.CRITICAL)
        elif opts.verbose:
@@ -66,21 +59,20 @@ def main():
                library = library.init()
 
        for playlist in opts.playlists:
-               if not library.has_playlist(playlist):
+               if not library.has_playlist_name(playlist):
                        logging.fatal("Could not find playlist: " + playlist)
                        sys.exit(1)
 
        logging.info("Loading playlists")
        all_tracks = []
        for playlist in opts.playlists:
-               tracks = list(library.get_playlist(playlist))
+               tracks = library.get_playlist_name(playlist).tracks
                all_tracks.extend(tracks)
-               libsyncitunes.export_m3u(opts.dry_run, opts.full_dest,
-                               opts.drive_letter, opts.media_dir,
+               libsyncitunes.export_m3u(opts.dry_run, opts.dest, opts.path_prefix,
                                playlist, tracks)
 
        logging.info("Synchronising")
-       libsyncitunes.sync(opts.dry_run, library.folder, opts.full_dest, all_tracks)
+       libsyncitunes.sync(opts.dry_run, library.folder, opts.dest, all_tracks)
 
 
 if __name__ == "__main__":