wxFont wxSystemSettingsNative::GetFont( wxSystemFont index ) { wxFont font; switch (index) { case wxSYS_OEM_FIXED_FONT: case wxSYS_ANSI_FIXED_FONT: case wxSYS_SYSTEM_FIXED_FONT: font = *wxNORMAL_FONT; break; case wxSYS_ANSI_VAR_FONT: case wxSYS_SYSTEM_FONT: case wxSYS_DEVICE_DEFAULT_FONT: case wxSYS_DEFAULT_GUI_FONT: if (!gs_fontSystem.IsOk()) { wxNativeFontInfo info; #ifdef __WXGTK3__ GtkStyleContext* sc = gtk_widget_get_style_context(ButtonWidget()); gtk_style_context_set_state(sc, GTK_STATE_FLAG_NORMAL); gtk_style_context_get(sc, GTK_STATE_FLAG_NORMAL, GTK_STYLE_PROPERTY_FONT, &info.description, NULL); #else info.description = ButtonStyle()->font_desc; #endif gs_fontSystem = wxFont(info); #if wxUSE_FONTENUM // (try to) heal the default font (on some common systems e.g. Ubuntu // it's "Sans Serif" but the real font is called "Sans"): if (!wxFontEnumerator::IsValidFacename(gs_fontSystem.GetFaceName()) && gs_fontSystem.GetFaceName() == "Sans Serif") { gs_fontSystem.SetFaceName("Sans"); } #endif // wxUSE_FONTENUM #ifndef __WXGTK3__ info.description = NULL; #endif } font = gs_fontSystem; break; default: break; } wxASSERT( font.IsOk() ); return font; }
wxFont wxSystemSettingsNative::GetFont( wxSystemFont index ) { wxFont font; switch (index) { case wxSYS_OEM_FIXED_FONT: case wxSYS_ANSI_FIXED_FONT: case wxSYS_SYSTEM_FIXED_FONT: font = *wxNORMAL_FONT; break; case wxSYS_ANSI_VAR_FONT: case wxSYS_SYSTEM_FONT: case wxSYS_DEVICE_DEFAULT_FONT: case wxSYS_DEFAULT_GUI_FONT: if (!gs_fontSystem.Ok()) { wxNativeFontInfo info; info.description = ButtonStyle()->font_desc; gs_fontSystem = wxFont(info); #if wxUSE_FONTENUM // (try to) heal the default font (on some common systems e.g. Ubuntu // it's "Sans Serif" but the real font is called "Sans"): if (!wxFontEnumerator::IsValidFacename(gs_fontSystem.GetFaceName()) && gs_fontSystem.GetFaceName() == "Sans Serif") gs_fontSystem.SetFaceName("Sans"); #endif // wxUSE_FONTENUM info.description = NULL; } font = gs_fontSystem; break; default: break; } wxASSERT( font.IsOk() ); return font; }
wxColour wxSystemSettingsNative::GetColour( wxSystemColour index ) { wxColor color; switch (index) { case wxSYS_COLOUR_SCROLLBAR: case wxSYS_COLOUR_BACKGROUND: //case wxSYS_COLOUR_DESKTOP: case wxSYS_COLOUR_INACTIVECAPTION: case wxSYS_COLOUR_MENU: case wxSYS_COLOUR_WINDOWFRAME: case wxSYS_COLOUR_ACTIVEBORDER: case wxSYS_COLOUR_INACTIVEBORDER: case wxSYS_COLOUR_BTNFACE: //case wxSYS_COLOUR_3DFACE: case wxSYS_COLOUR_3DLIGHT: color = wxColor(ButtonStyle()->bg[GTK_STATE_NORMAL]); break; case wxSYS_COLOUR_WINDOW: color = wxColor(TextCtrlStyle()->base[GTK_STATE_NORMAL]); break; case wxSYS_COLOUR_MENUBAR: color = wxColor(MenuBarStyle()->bg[GTK_STATE_NORMAL]); break; case wxSYS_COLOUR_3DDKSHADOW: color = *wxBLACK; break; case wxSYS_COLOUR_GRAYTEXT: case wxSYS_COLOUR_BTNSHADOW: //case wxSYS_COLOUR_3DSHADOW: { wxColour faceColour(GetColour(wxSYS_COLOUR_3DFACE)); color = wxColour((unsigned char) (faceColour.Red() * 2 / 3), (unsigned char) (faceColour.Green() * 2 / 3), (unsigned char) (faceColour.Blue() * 2 / 3)); } break; case wxSYS_COLOUR_BTNHIGHLIGHT: //case wxSYS_COLOUR_BTNHILIGHT: //case wxSYS_COLOUR_3DHIGHLIGHT: //case wxSYS_COLOUR_3DHILIGHT: color = *wxWHITE; break; case wxSYS_COLOUR_HIGHLIGHT: color = wxColor(ButtonStyle()->bg[GTK_STATE_SELECTED]); break; case wxSYS_COLOUR_LISTBOX: color = wxColor(ListStyle()->base[GTK_STATE_NORMAL]); break; case wxSYS_COLOUR_LISTBOXTEXT: color = wxColor(ListStyle()->text[GTK_STATE_NORMAL]); break; case wxSYS_COLOUR_LISTBOXHIGHLIGHTTEXT: // This is for the text in a list control (or tree) when the // item is selected, but not focused color = wxColor(ListStyle()->text[GTK_STATE_ACTIVE]); break; case wxSYS_COLOUR_MENUTEXT: case wxSYS_COLOUR_WINDOWTEXT: case wxSYS_COLOUR_CAPTIONTEXT: case wxSYS_COLOUR_INACTIVECAPTIONTEXT: case wxSYS_COLOUR_BTNTEXT: color = wxColor(ButtonStyle()->fg[GTK_STATE_NORMAL]); break; case wxSYS_COLOUR_INFOBK: color = wxColor(ToolTipStyle()->bg[GTK_STATE_NORMAL]); break; case wxSYS_COLOUR_INFOTEXT: color = wxColor(ToolTipStyle()->fg[GTK_STATE_NORMAL]); break; case wxSYS_COLOUR_HIGHLIGHTTEXT: color = wxColor(ButtonStyle()->fg[GTK_STATE_SELECTED]); break; case wxSYS_COLOUR_APPWORKSPACE: color = *wxWHITE; // ? break; case wxSYS_COLOUR_ACTIVECAPTION: case wxSYS_COLOUR_MENUHILIGHT: color = wxColor(MenuItemStyle()->bg[GTK_STATE_SELECTED]); break; case wxSYS_COLOUR_HOTLIGHT: case wxSYS_COLOUR_GRADIENTACTIVECAPTION: case wxSYS_COLOUR_GRADIENTINACTIVECAPTION: // TODO color = *wxBLACK; break; case wxSYS_COLOUR_MAX: default: wxFAIL_MSG( wxT("unknown system colour index") ); color = *wxWHITE; break; } wxASSERT(color.IsOk()); return color; }