def changeTextFont_(self, sender): "The user changed the current font selection, so update the default font" # Get font name and size from user defaults defaults = NSUserDefaultsController.sharedUserDefaultsController().values() fontName = getKey(defaults, 'FontName') fontSize = getKey(defaults, 'FontSize') # Create font from name and size; initialize font panel font = NSFont.fontWithName_size_(fontName, fontSize) if font is None: font = NSFont.systemFontOfSize_(NSFont.systemFontSize()) NSFontManager.sharedFontManager().setSelectedFont_isMultiple_(font, False) NSFontManager.sharedFontManager().orderFrontFontPanel_(self) # Set window as firstResponder so we get changeFont: messages self.window().makeFirstResponder_(self.window())
def changeFont_(self, sender): "This is the message the font panel sends when a new font is selected" # Get selected font fontManager = NSFontManager.sharedFontManager() selectedFont = fontManager.selectedFont() if selectedFont is None: selectedFont = NSFont.systemFontOfSize_(NSFont.systemFontSize()) panelFont = fontManager.convertFont_(selectedFont) # Get and store details of selected font # Note: use fontName, not displayName. The font name identifies the font to # the system, we use a value transformer to show the user the display name fontSize = panelFont.pointSize() defaults = NSUserDefaultsController.sharedUserDefaultsController().values() defaults.setValue_forKey_(panelFont.fontName(), "FontName") defaults.setValue_forKey_(fontSize, "FontSize")
def changeFont_(self, sender): """This is the message the font panel sends when a new font is selected""" # Get selected font fontManager = NSFontManager.sharedFontManager() selectedFont = fontManager.selectedFont() if selectedFont is None: selectedFont = NSFont.systemFontOfSize_(NSFont.systemFontSize()) panelFont = fontManager.convertFont_(selectedFont) # Get and store details of selected font # Note: use fontName, not displayName. The font name identifies the font to # the system, we use a value transformer to show the user the display name fontSize = panelFont.pointSize() defaults = NSUserDefaultsController.sharedUserDefaultsController( ).values() defaults.setValue_forKey_(panelFont.fontName(), "FontName") defaults.setValue_forKey_(fontSize, "FontSize")
def changeTextFont_(self, sender): "The user changed the current font selection, so update the default font" # Get font name and size from user defaults defaults = NSUserDefaultsController.sharedUserDefaultsController( ).values() fontName = getKey(defaults, "FontName") fontSize = getKey(defaults, "FontSize") # Create font from name and size; initialize font panel font = NSFont.fontWithName_size_(fontName, fontSize) if font is None: font = NSFont.systemFontOfSize_(NSFont.systemFontSize()) NSFontManager.sharedFontManager().setSelectedFont_isMultiple_( font, False) NSFontManager.sharedFontManager().orderFrontFontPanel_(self) # Set window as firstResponder so we get changeFont: messages self.window().makeFirstResponder_(self.window())
def drawRect_(self, rect): defaults = NSUserDefaultsController.sharedUserDefaultsController().values() favoriteColor = NSUnarchiver.unarchiveObjectWithData_(getKey(defaults, 'FavoriteColor')) fontName = getKey(defaults, 'FontName') fontSize = getKey(defaults, 'FontSize') favoriteFont = NSFont.fontWithName_size_(fontName, fontSize) wordOfTheDay = getKey(defaults, '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), ), )
# Get and store details of selected font # Note: use fontName, not displayName. The font name identifies the font to # the system, we use a value transformer to show the user the display name fontSize = panelFont.pointSize() defaults = NSUserDefaultsController.sharedUserDefaultsController().values() defaults.setValue_forKey_(panelFont.fontName(), "FontName") defaults.setValue_forKey_(fontSize, "FontSize") # Set up initial values for defaults: # Create dictionary with keys and values for WordOfTheDay, FontName, # FontSize, and FavoriteColor. Mostly straightforward, but: # # Store the fontName of the font as the default; the textfield displays # the font's displayName using a value transformer. # # The color must be archived -- you can't store NSColors directly in NSUserDefaults. dictionary = {} dictionary['WordOfTheDay'] = 'Today' systemFont = NSFont.systemFontOfSize_(NSFont.systemFontSize()) dictionary["FontName"] = systemFont.fontName() dictionary["FontSize"] = systemFont.pointSize() archivedColor = NSArchiver.archivedDataWithRootObject_(NSColor.greenColor()) dictionary['FavoriteColor'] = archivedColor NSUserDefaultsController.sharedUserDefaultsController().setInitialValues_(dictionary) # Create and register font name value transformer transformer = FontNameToDisplayNameTransformer.alloc().init() NSValueTransformer.setValueTransformer_forName_(transformer, 'FontNameToDisplayNameTransformer')
fontSize = panelFont.pointSize() defaults = NSUserDefaultsController.sharedUserDefaultsController( ).values() defaults.setValue_forKey_(panelFont.fontName(), "FontName") defaults.setValue_forKey_(fontSize, "FontSize") # Set up initial values for defaults: # Create dictionary with keys and values for WordOfTheDay, FontName, # FontSize, and FavoriteColor. Mostly straightforward, but: # # Store the fontName of the font as the default; the textfield displays # the font's displayName using a value transformer. # # The color must be archived -- you can't store NSColors directly in NSUserDefaults. dictionary = {} dictionary["WordOfTheDay"] = "Today" systemFont = NSFont.systemFontOfSize_(NSFont.systemFontSize()) dictionary["FontName"] = systemFont.fontName() dictionary["FontSize"] = systemFont.pointSize() archivedColor = NSArchiver.archivedDataWithRootObject_(NSColor.greenColor()) dictionary["FavoriteColor"] = archivedColor NSUserDefaultsController.sharedUserDefaultsController().setInitialValues_( dictionary) # Create and register font name value transformer transformer = FontNameToDisplayNameTransformer.alloc().init() NSValueTransformer.setValueTransformer_forName_( transformer, "FontNameToDisplayNameTransformer")