1 ///////////////////////////////////////////////////////////////////////////// 
   4 // Author:      Robert Roebling 
   6 // Copyright:   (c) 1998 Robert Roebling 
   7 // Licence:     wxWindows licence 
   8 ///////////////////////////////////////////////////////////////////////////// 
  12 #pragma implementation "settings.h" 
  15 #include "wx/settings.h" 
  22 #define wxSYS_COLOUR_SCROLLBAR         0 
  23 #define wxSYS_COLOUR_BACKGROUND        1 
  24 #define wxSYS_COLOUR_ACTIVECAPTION     2 
  25 #define wxSYS_COLOUR_INACTIVECAPTION   3 
  26 #define wxSYS_COLOUR_MENU              4 
  27 #define wxSYS_COLOUR_WINDOW            5 
  28 #define wxSYS_COLOUR_WINDOWFRAME       6 
  29 #define wxSYS_COLOUR_MENUTEXT          7 
  30 #define wxSYS_COLOUR_WINDOWTEXT        8 
  31 #define wxSYS_COLOUR_CAPTIONTEXT       9 
  32 #define wxSYS_COLOUR_ACTIVEBORDER      10 
  33 #define wxSYS_COLOUR_INACTIVEBORDER    11 
  34 #define wxSYS_COLOUR_APPWORKSPACE      12 
  35 #define wxSYS_COLOUR_HIGHLIGHT         13 
  36 #define wxSYS_COLOUR_HIGHLIGHTTEXT     14 
  37 #define wxSYS_COLOUR_BTNFACE           15 
  38 #define wxSYS_COLOUR_BTNSHADOW         16 
  39 #define wxSYS_COLOUR_GRAYTEXT          17 
  40 #define wxSYS_COLOUR_BTNTEXT           18 
  41 #define wxSYS_COLOUR_INACTIVECAPTIONTEXT 19 
  42 #define wxSYS_COLOUR_BTNHIGHLIGHT      20 
  44 #define wxSYS_COLOUR_3DDKSHADOW        21 
  45 #define wxSYS_COLOUR_3DLIGHT           22 
  46 #define wxSYS_COLOUR_INFOTEXT          23 
  47 #define wxSYS_COLOUR_INFOBK            24 
  49 #define wxSYS_COLOUR_DESKTOP           wxSYS_COLOUR_BACKGROUND 
  50 #define wxSYS_COLOUR_3DFACE            wxSYS_COLOUR_BTNFACE 
  51 #define wxSYS_COLOUR_3DSHADOW          wxSYS_COLOUR_BTNSHADOW 
  52 #define wxSYS_COLOUR_3DHIGHLIGHT       wxSYS_COLOUR_BTNHIGHLIGHT 
  53 #define wxSYS_COLOUR_3DHILIGHT         wxSYS_COLOUR_BTNHIGHLIGHT 
  54 #define wxSYS_COLOUR_BTNHILIGHT        wxSYS_COLOUR_BTNHIGHLIGHT 
  57 #define SHIFT (8*(sizeof(short int)-sizeof(char))) 
  59 wxColour 
*g_systemBtnFaceColour      
= (wxColour 
*) NULL
; 
  60 wxColour 
*g_systemBtnShadowColour    
= (wxColour 
*) NULL
; 
  61 wxColour 
*g_systemBtnHighlightColour 
= (wxColour 
*) NULL
; 
  62 wxColour 
*g_systemHighlightColour    
= (wxColour 
*) NULL
; 
  64 wxFont 
*g_systemFont 
= (wxFont 
*) NULL
; 
  66 void wxSystemSettings::Done()  
  68     wxDELETE(g_systemBtnFaceColour
); 
  69     wxDELETE(g_systemBtnShadowColour
); 
  70     wxDELETE(g_systemBtnHighlightColour
); 
  71     wxDELETE(g_systemHighlightColour
); 
  72     wxDELETE(g_systemFont
); 
  75 wxColour 
wxSystemSettings::GetSystemColour( int index 
) 
  79     case wxSYS_COLOUR_SCROLLBAR
: 
  80     case wxSYS_COLOUR_BACKGROUND
: 
  81     case wxSYS_COLOUR_ACTIVECAPTION
: 
  82     case wxSYS_COLOUR_INACTIVECAPTION
: 
  83     case wxSYS_COLOUR_MENU
: 
  84     case wxSYS_COLOUR_WINDOW
: 
  85     case wxSYS_COLOUR_WINDOWFRAME
: 
  86     case wxSYS_COLOUR_ACTIVEBORDER
: 
  87     case wxSYS_COLOUR_INACTIVEBORDER
: 
  88     case wxSYS_COLOUR_BTNFACE
: 
  90       GtkStyle 
*style 
= gtk_widget_get_default_style(); 
  91       if (!g_systemBtnFaceColour
) 
  93         g_systemBtnFaceColour 
=  
  94           new wxColour( style
->bg
[0].red 
>> SHIFT
, 
  95                         style
->bg
[0].green 
>> SHIFT
, 
  96                         style
->bg
[0].blue 
>> SHIFT 
); 
  98       return *g_systemBtnFaceColour
; 
 100     case wxSYS_COLOUR_BTNSHADOW
: 
 102       GtkStyle 
*style 
= gtk_widget_get_default_style(); 
 103       if (!g_systemBtnShadowColour
) 
 105         g_systemBtnShadowColour 
=  
 106           new wxColour( style
->dark
[0].red 
>> SHIFT
, 
 107                         style
->dark
[0].green 
>> SHIFT
, 
 108                         style
->dark
[0].blue 
>> SHIFT 
); 
 110       return *g_systemBtnShadowColour
; 
 112     case wxSYS_COLOUR_GRAYTEXT
: 
 113     case wxSYS_COLOUR_BTNHIGHLIGHT
: 
 115       GtkStyle 
*style 
= gtk_widget_get_default_style(); 
 116       if (!g_systemBtnHighlightColour
) 
 118         g_systemBtnHighlightColour 
=  
 119           new wxColour( style
->light
[0].red 
>> SHIFT
, 
 120                         style
->light
[0].green 
>> SHIFT
, 
 121                         style
->light
[0].blue 
>> SHIFT 
); 
 123       return *g_systemBtnHighlightColour
; 
 125     case wxSYS_COLOUR_HIGHLIGHT
: 
 127       GtkStyle 
*style 
= gtk_widget_get_default_style(); 
 128       if (!g_systemHighlightColour
) 
 130         g_systemHighlightColour 
=  
 131           new wxColour( style
->bg
[GTK_STATE_SELECTED
].red 
>> SHIFT
, 
 132                         style
->bg
[GTK_STATE_SELECTED
].green 
>> SHIFT
, 
 133                         style
->bg
[GTK_STATE_SELECTED
].blue 
>> SHIFT 
); 
 135       return *g_systemHighlightColour
; 
 137     case wxSYS_COLOUR_MENUTEXT
: 
 138     case wxSYS_COLOUR_WINDOWTEXT
: 
 139     case wxSYS_COLOUR_CAPTIONTEXT
: 
 140     case wxSYS_COLOUR_INACTIVECAPTIONTEXT
: 
 141     case wxSYS_COLOUR_BTNTEXT
: 
 142     case wxSYS_COLOUR_INFOTEXT
: 
 146     case wxSYS_COLOUR_HIGHLIGHTTEXT
: 
 150     case wxSYS_COLOUR_INFOBK
: 
 151     case wxSYS_COLOUR_APPWORKSPACE
: 
 153       return *wxWHITE
;    // ? 
 159 wxFont 
wxSystemSettings::GetSystemFont( int index 
)  
 163         case wxSYS_OEM_FIXED_FONT
: 
 164         case wxSYS_ANSI_FIXED_FONT
: 
 165         case wxSYS_SYSTEM_FIXED_FONT
: 
 167             return *wxNORMAL_FONT
; 
 169         case wxSYS_ANSI_VAR_FONT
: 
 170         case wxSYS_SYSTEM_FONT
: 
 171         case wxSYS_DEVICE_DEFAULT_FONT
: 
 172         case wxSYS_DEFAULT_GUI_FONT
: 
 175                 g_systemFont 
= new wxFont( 12, wxSWISS
, wxNORMAL
, wxNORMAL 
); 
 176             return *g_systemFont
; 
 183 int wxSystemSettings::GetSystemMetric( int index 
) 
 187         case wxSYS_SCREEN_X
:   return gdk_screen_width(); 
 188         case wxSYS_SCREEN_Y
:   return gdk_screen_height(); 
 189         case wxSYS_HSCROLL_Y
:  return 15; 
 190         case wxSYS_VSCROLL_X
:  return 15; 
 193     wxCHECK_MSG( index
, 0, "wxSystemSettings::GetSystemMetric not fully implemented" );