]> code.delx.au - notipod/blob - NotiPodController.py
Renamed stuff
[notipod] / NotiPodController.py
1 #!/usr/bin/env python
2 # Copyright 2009 James Bunton <jamesbunton@fastmail.fm>
3 # Licensed for distribution under the GPL version 2, check COPYING for details
4
5 from Foundation import *
6 from AppKit import *
7 import objc
8
9 import itunes
10
11 class NotiPodController(NSObject):
12 playlistView = objc.IBOutlet()
13 folderPopup = objc.IBOutlet()
14 window = objc.IBOutlet()
15 loadingSheet = objc.IBOutlet()
16
17
18 def awakeFromNib(self):
19 ### self.loadLibrary()
20 self.performSelectorInBackground_withObject_(self.loadLibrary, None)
21 print "awakeFromNib"
22
23 def finishLoading(self):
24 self.playlistView.setDataSource_(self.library)
25 self.folderPopup.addItemsWithTitles_(NSApp.delegate().folders())
26
27 def loadLibrary(self):
28 pool = NSAutoreleasePool.alloc().init()
29 NSApp.beginSheet_modalForWindow_modalDelegate_didEndSelector_contextInfo_(self.loadingSheet, self.window, None, None, None)
30 self.library = itunes.Library.alloc().init()
31 self.loadingSheet.close()
32 self.performSelectorOnMainThread_withObject_waitUntilDone_(self.finishLoading, None, False)
33 pool.drain()
34
35 @objc.signature("v@:@ii")
36 def selectFolderEnd_returnCode_contextInfo_(self, panel, ret, _):
37 if ret == NSOKButton:
38 assert len(panel.filenames()) == 1
39 folder = panel.filenames()[0]
40 ### NSApp.delegate().addFolder_(folder)
41 self.folderPopup.insertItemWithTitle_atIndex_(folder, 2)
42 self.folderPopup.selectItemAtIndex_(2)
43
44 @objc.IBAction
45 def doSelectFolder_(self, sender):
46 print "select folder"
47 try:
48 folders = NSApp.delegate().folders()
49 if len(folders) > 0:
50 folder = folders[0]
51 else:
52 folder = None
53 panel = NSOpenPanel.openPanel()
54 panel.setCanChooseFiles_(False)
55 panel.setCanChooseDirectories_(True)
56 panel.setAllowsMultipleSelection_(False)
57 panel.beginSheetForDirectory_file_types_modalForWindow_modalDelegate_didEndSelector_contextInfo_(folder, None, None, self.window, self, self.selectFolderEnd_returnCode_contextInfo_, None)
58 except:
59 import traceback
60 traceback.print_exc()
61
62 @objc.IBAction
63 def doSync_(self, sender):
64 print "hello me"
65