# # FontSampleDisplayView.py # ControlledPreferences # # Converted by u.fiedler on 04.02.05. # with great help from Bob Ippolito - Thank you Bob! # # The original version was written in Objective-C by Malcolm Crawford # at http://homepage.mac.com/mmalc/CocoaExamples/controllers.html from Foundation import * from AppKit import * from PyObjCTools.KeyValueCoding import * class FontSampleDisplayView(NSView): """ Display WordOfTheDay with the preferred font and color """ def drawRect_(self, rect): defaults = NSUserDefaultsController.sharedUserDefaultsController().values() favoriteColor = NSUnarchiver.unarchiveObjectWithData_(getKey(defaults, u'FavoriteColor')) fontName = getKey(defaults, u'FontName') fontSize = getKey(defaults, u'FontSize') favoriteFont = NSFont.fontWithName_size_(fontName, fontSize) wordOfTheDay = getKey(defaults, u'WordOfTheDay') # Do the actual drawing myBounds = self.bounds() # = (x, y), (bw, bh) NSDrawLightBezel(myBounds, myBounds) favoriteColor.set() NSRectFill(NSInsetRect(myBounds, 2, 2)) attrsDictionary = {NSFontAttributeName: favoriteFont} attrString = NSAttributedString.alloc().initWithString_attributes_(wordOfTheDay, attrsDictionary) attrSize = attrString.size() # = (bw, bh) attrString.drawAtPoint_( NSMakePoint( (attrSize.width / -2) + (myBounds.size.width / 2), (attrSize.height / -2) + (myBounds.size.height / 2), ), ) def initWithFrame_(self, frameRect): self = super(FontSampleDisplayView, self).initWithFrame_(frameRect) dnc = NSNotificationCenter.defaultCenter() dnc.addObserver_selector_name_object_(self, "redisplay:", NSUserDefaultsDidChangeNotification, None) return self def redisplay_(self, sender): self.setNeedsDisplay_(True)