import objc from Foundation import * from AppKit import * from PyObjCTools import NibClassBuilder try: set except NameError: from sets import Set as set class SelectedObjectsFilteringController(NSArrayController): files = objc.ivar('files') def awakeFromNib(self): print "ADD OBSERVER", self.files self.files.addObserver_forKeyPath_options_context_( self, 'selectedObjects', NSKeyValueObservingOptionNew, 0) def observeValueForKeyPath_ofObject_change_context_( self, keypath, obj, change, context): print "OBSERVE" self.rearrangeObjects() def arrangeObjects_(self, objects): try: selected = set(self.valueForKeyPath_('files.selectedObjects.fileName')) print "ARRANGE OBJ" if selected: #print "BE4", len(objects), objects objects = [dct for dct in objects if dct and dct['fileName'] in selected] #print "AF", len(objects), objects if len(objects) == 0: return None return NSArray.arrayWithArray_(objects) except Exception, e: import traceback; traceback.print_exc() raise e