2011-07-11 70 views
2

我正在設置我的酷應用程序的偏好窗口,它顯示一些文本。在偏好設置中,我設置了一個打開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 

回答

4

有一個在初始化sharedFontPanel一個奇怪。如果您在第一次創建字體之前設置字體,那可以正常工作,但設置屬性不會。

你要做的就是makeKeyAndOrderFront,然後設置屬性。一旦面板被第一次創建,它將正確反映setSelectedAttributes。

font_panel.makeKeyAndOrderFront(sender) 
    font_manager.setSelectedAttributes(attributes, isMultiple:false) 
+0

哈!這是我從未想過的事情! – Ziggy