Как установить значения по умолчанию для NSFontPanel?
Я настраиваю окно настроек для моего классного приложения, которое отображает некоторый текст. В настройках я установил кнопку, которая открывает NSFontPanel
, Мое приложение сохраняет предпочитаемый пользователем цвет и шрифт текста и всегда открывается с этими настройками, так что пользователю никогда не придется видеть текст, отображаемый в цвете или шрифте, которые он не предпочитает.
Проблема в том, что, хотя мое приложение может запомнить эти настройки, NSFontPanel
есть проблемы. Когда я впервые открываю панель шрифтов, значения по умолчанию для всех полей сбрасываются. После игры с ними, закрытия панели и последующего ее открытия правильные значения сохраняются. Проблема возникает только при первом открытии панели.
Я не понимаю, почему это происходит!
Я тщательно настроил шрифт и цвет панели при запуске моего приложения, как вы можете видеть из этого фрагмента:
def show_entry_font_menu(sender)
font_manager = NSFontManager.sharedFontManager
color_panel = NSColorPanel.sharedColorPanel
font_manager.setDelegate self
color_panel.setDelegate self
font_manager.setSelectedFont(preferences.entry_font, isMultiple:false)
font_panel = font_manager.fontPanel(true)
font_panel.makeKeyAndOrderFront(sender)
attributes = preferences.entry_font_attributes
color = preferences.entry_font_color
font_manager.setSelectedAttributes(attributes, isMultiple:false)
color_panel.setColor(color) if preferences.entry_font_color
self.did_open_font_panel = true
end
1 ответ
Есть странность в инициализации sharedFontPanel. Если вы устанавливаете шрифт до его создания в первый раз, это работает нормально, но установка атрибутов - нет.
То, что вам нужно сделать, это сначала makeKeyAndOrderFront, а затем установить атрибуты. Когда панель будет создана таким образом в первый раз, она будет правильно отражать setSelectedAttributes.
font_panel.makeKeyAndOrderFront(sender)
font_manager.setSelectedAttributes(attributes, isMultiple:false)