1from Cocoa import * 2from PyObjCTools import NibClassBuilder 3from Quartz import * 4import objc 5 6import ShadowOffsetView 7 8 9class TLayerDemo (NSObject: 10 colorWell = objc.IBOutlet() 11 shadowOffsetView = objc.IBOutlet() 12 shadowRadiusSlider = objc.IBOutlet() 13 tlayerView = objc.IBOutlet() 14 transparencyLayerButton = objc.IBOutlet() 15 16 17 @classmethod 18 def initialize(self): 19 NSColorPanel.sharedColorPanel().setShowsAlpha_(True) 20 21 def init(self): 22 self = super(TLayerDemo, self).init() 23 if self is None: 24 return None 25 26 if not NSBundle.loadNibNamed_owner_("TLayerDemo", self): 27 NSLog("Failed to load TLayerDemo.nib") 28 return nil 29 30 self.shadowOffsetView.setScale_(40) 31 self.shadowOffsetView.setOffset_(CGSizeMake(-30, -30)) 32 self.tlayerView.setShadowOffset_(CGSizeMake(-30, -30)) 33 34 self.shadowRadiusChanged_(self.shadowRadiusSlider) 35 36 # Better to do this as a subclass of NSControl.... 37 NSNotificationCenter.defaultCenter( 38 ).addObserver_selector_name_object_( 39 self, 'shadowOffsetChanged:', 40 ShadowOffsetView.ShadowOffsetChanged, None) 41 return self 42 43 def dealloc(self): 44 NSNotificationCenter.defaultCenter().removeObserver_(self) 45 super(TLayerDemo, self).dealloc() 46 47 def window(self): 48 return self.tlayerView.window() 49 50 @objc.IBAction 51 def shadowRadiusChanged_(self, sender): 52 self.tlayerView.setShadowRadius_(self.shadowRadiusSlider.floatValue()) 53 54 @objc.IBAction 55 def toggleTransparencyLayers_(self, sender): 56 self.tlayerView.setUsesTransparencyLayers_(self.transparencyLayerButton.state()) 57 58 def shadowOffsetChanged_(self, notification): 59 offset = notification.object().offset() 60 self.tlayerView.setShadowOffset_(offset) 61