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