wxColour wxSystemSettingsNative::GetColour( wxSystemColour index ) { switch (index) { case wxSYS_COLOUR_SCROLLBAR: case wxSYS_COLOUR_BACKGROUND: 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_MENUBAR: case wxSYS_COLOUR_3DLIGHT: if (!gs_objects.m_colBtnFace.IsOk()) { int red, green, blue; if ( !GetColourFromGTKWidget(red, green, blue) ) { red = green = 0; blue = 0x9c40; } gs_objects.m_colBtnFace = wxColour( red >> SHIFT, green >> SHIFT, blue >> SHIFT ); } return gs_objects.m_colBtnFace; case wxSYS_COLOUR_WINDOW: return *wxWHITE; case wxSYS_COLOUR_3DDKSHADOW: return *wxBLACK; case wxSYS_COLOUR_GRAYTEXT: case wxSYS_COLOUR_BTNSHADOW: //case wxSYS_COLOUR_3DSHADOW: if (!gs_objects.m_colBtnShadow.IsOk()) { wxColour faceColour(GetColour(wxSYS_COLOUR_3DFACE)); gs_objects.m_colBtnShadow = wxColour((unsigned char) (faceColour.Red() * 0.666), (unsigned char) (faceColour.Green() * 0.666), (unsigned char) (faceColour.Blue() * 0.666)); } return gs_objects.m_colBtnShadow; case wxSYS_COLOUR_3DHIGHLIGHT: //case wxSYS_COLOUR_BTNHIGHLIGHT: return * wxWHITE; case wxSYS_COLOUR_HIGHLIGHT: if (!gs_objects.m_colHighlight.IsOk()) { int red, green, blue; if ( !GetColourFromGTKWidget(red, green, blue, wxGTK_BUTTON, GTK_STATE_SELECTED) ) { red = green = 0; blue = 0x9c40; } gs_objects.m_colHighlight = wxColour( red >> SHIFT, green >> SHIFT, blue >> SHIFT ); }
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; }
wxColour wxSystemSettingsNative::GetColour( wxSystemColour index ) { wxColor color; GdkColor gdkColor; switch (index) { case wxSYS_COLOUR_SCROLLBAR: case wxSYS_COLOUR_BACKGROUND: 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_3DLIGHT: if (!gs_objects.m_colBtnFace.Ok()) { gdkColor.red = gdkColor.green = 0; gdkColor.blue = 0x9c40; GetColourFromGTKWidget(gdkColor); gs_objects.m_colBtnFace = wxColor(gdkColor); } color = gs_objects.m_colBtnFace; break; case wxSYS_COLOUR_WINDOW: if (!gs_objects.m_colWindow.Ok()) { gdkColor.red = gdkColor.green = gdkColor.blue = 0xFFFF; GetColourFromGTKWidget(gdkColor, wxGTK_TEXTCTRL, GTK_STATE_NORMAL, wxGTK_BASE); gs_objects.m_colWindow = wxColor(gdkColor); } color = gs_objects.m_colWindow; break; case wxSYS_COLOUR_MENUBAR: if (!gs_objects.m_colMenubarBg.Ok()) { gdkColor.red = gdkColor.green = 0; gdkColor.blue = 0x9c40; GetColourFromGTKWidget(gdkColor,wxGTK_MENUBAR); gs_objects.m_colMenubarBg = wxColor(gdkColor); } color = gs_objects.m_colMenubarBg; break; case wxSYS_COLOUR_3DDKSHADOW: color = *wxBLACK; break; case wxSYS_COLOUR_GRAYTEXT: case wxSYS_COLOUR_BTNSHADOW: //case wxSYS_COLOUR_3DSHADOW: if (!gs_objects.m_colBtnShadow.Ok()) { wxColour faceColour(GetColour(wxSYS_COLOUR_3DFACE)); gs_objects.m_colBtnShadow = wxColour((unsigned char) (faceColour.Red() * 2 / 3), (unsigned char) (faceColour.Green() * 2 / 3), (unsigned char) (faceColour.Blue() * 2 / 3)); } color = gs_objects.m_colBtnShadow; break; case wxSYS_COLOUR_3DHIGHLIGHT: //case wxSYS_COLOUR_BTNHIGHLIGHT: color = *wxWHITE; break; case wxSYS_COLOUR_HIGHLIGHT: if (!gs_objects.m_colHighlight.Ok()) { gdkColor.red = gdkColor.green = 0; gdkColor.blue = 0x9c40; GetColourFromGTKWidget( gdkColor, wxGTK_BUTTON, GTK_STATE_SELECTED); gs_objects.m_colHighlight = wxColour(gdkColor); } color = gs_objects.m_colHighlight; break; case wxSYS_COLOUR_LISTBOX: if (!gs_objects.m_colListBox.Ok()) { if ( GetColourFromGTKWidget(gdkColor, wxGTK_LIST, GTK_STATE_NORMAL, wxGTK_BASE) ) { gs_objects.m_colListBox = wxColour(gdkColor); } else { gs_objects.m_colListBox = *wxWHITE; } } color = gs_objects.m_colListBox; break; case wxSYS_COLOUR_LISTBOXTEXT: if (!gs_objects.m_colListBoxText.Ok()) { if ( GetColourFromGTKWidget(gdkColor, wxGTK_LIST, GTK_STATE_NORMAL, wxGTK_TEXT) ) { gs_objects.m_colListBoxText = wxColour(gdkColor); } else { gs_objects.m_colListBoxText = GetColour(wxSYS_COLOUR_WINDOWTEXT); } } color = gs_objects.m_colListBoxText; break; case wxSYS_COLOUR_MENUTEXT: case wxSYS_COLOUR_WINDOWTEXT: case wxSYS_COLOUR_CAPTIONTEXT: case wxSYS_COLOUR_INACTIVECAPTIONTEXT: case wxSYS_COLOUR_BTNTEXT: if (!gs_objects.m_colBtnText.Ok()) { gdkColor.red = gdkColor.green = gdkColor.blue = 0; GetColourFromGTKWidget( gdkColor, wxGTK_BUTTON, GTK_STATE_NORMAL, wxGTK_FG); gs_objects.m_colBtnText = wxColour(gdkColor); } color = gs_objects.m_colBtnText; break; case wxSYS_COLOUR_INFOBK: if (!gs_objects.m_colTooltip.Ok()) { GetTooltipColors(); } color = gs_objects.m_colTooltip; break; case wxSYS_COLOUR_INFOTEXT: if (!gs_objects.m_colTooltipText.Ok()) { GetTooltipColors(); } color = gs_objects.m_colTooltipText; break; case wxSYS_COLOUR_HIGHLIGHTTEXT: if (!gs_objects.m_colHighlightText.Ok()) { gdkColor.red = gdkColor.green = gdkColor.blue = 0; GetColourFromGTKWidget( gdkColor, wxGTK_BUTTON, GTK_STATE_SELECTED, wxGTK_FG); gs_objects.m_colHighlightText = wxColour(gdkColor); } color = gs_objects.m_colHighlightText; break; case wxSYS_COLOUR_APPWORKSPACE: color = *wxWHITE; // ? break; case wxSYS_COLOUR_ACTIVECAPTION: case wxSYS_COLOUR_MENUHILIGHT: if (!gs_objects.m_colMenuItemHighlight.Ok()) { gdkColor.red = gdkColor.green = gdkColor.blue = 0; GetColourFromGTKWidget( gdkColor, wxGTK_MENUITEM, GTK_STATE_SELECTED, wxGTK_BG); gs_objects.m_colMenuItemHighlight = wxColour(gdkColor); } color = gs_objects.m_colMenuItemHighlight; break; case wxSYS_COLOUR_HOTLIGHT: case wxSYS_COLOUR_GRADIENTACTIVECAPTION: case wxSYS_COLOUR_GRADIENTINACTIVECAPTION: // TODO color = *wxBLACK; break; case wxSYS_COLOUR_MAX: default: wxFAIL_MSG( _T("unknown system colour index") ); color = *wxWHITE; break; } return color; }