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_systemWinColour          = (wxColour *) NULL; 
  60 wxColour 
*g_systemBtnFaceColour      
= (wxColour 
*) NULL
; 
  61 wxColour 
*g_systemBtnShadowColour    
= (wxColour 
*) NULL
; 
  62 wxColour 
*g_systemBtnHighlightColour 
= (wxColour 
*) NULL
; 
  63 wxColour 
*g_systemHighlightColour    
= (wxColour 
*) NULL
; 
  65 wxFont 
*g_systemFont 
= (wxFont 
*) NULL
; 
  67 void wxSystemSettings::Done()  
  69 //    delete g_systemWinColour; 
  70     delete g_systemBtnFaceColour
; 
  71     delete g_systemBtnShadowColour
; 
  72     delete g_systemBtnHighlightColour
; 
  73     delete g_systemHighlightColour
; 
  77 wxColour 
wxSystemSettings::GetSystemColour( int index 
) 
  81         case wxSYS_COLOUR_SCROLLBAR
: 
  82         case wxSYS_COLOUR_BACKGROUND
: 
  83         case wxSYS_COLOUR_ACTIVECAPTION
: 
  84         case wxSYS_COLOUR_INACTIVECAPTION
: 
  85         case wxSYS_COLOUR_MENU
: 
  86         case wxSYS_COLOUR_WINDOWFRAME
: 
  87         case wxSYS_COLOUR_ACTIVEBORDER
: 
  88         case wxSYS_COLOUR_INACTIVEBORDER
: 
  89         case wxSYS_COLOUR_BTNFACE
: 
  91             if (!g_systemBtnFaceColour
) 
  93                 g_systemBtnFaceColour 
=  
  94                         new wxColour( 0xd6d6 >> SHIFT
, 
  98             return *g_systemBtnFaceColour
; 
 100         case wxSYS_COLOUR_WINDOW
: 
 104         case wxSYS_COLOUR_GRAYTEXT
: 
 105         case wxSYS_COLOUR_BTNSHADOW
: 
 107             if (!g_systemBtnShadowColour
) 
 109                 g_systemBtnShadowColour 
=  
 110                         new wxColour( 0x7530 >> SHIFT
, 
 114             return *g_systemBtnShadowColour
; 
 116         case wxSYS_COLOUR_BTNHIGHLIGHT
: 
 118             if (!g_systemBtnHighlightColour
) 
 120                 g_systemBtnHighlightColour 
=  
 121                         new wxColour( 0xea60 >> SHIFT
, 
 125             return *g_systemBtnHighlightColour
; 
 127         case wxSYS_COLOUR_HIGHLIGHT
: 
 129             if (!g_systemHighlightColour
) 
 131                 GtkWidget 
*widget 
= gtk_button_new(); 
 132                 GtkStyle 
*def 
= gtk_rc_get_style( widget 
); 
 134                     def 
= gtk_widget_get_default_style(); 
 137                     int red 
= def
->bg
[GTK_STATE_SELECTED
].red
; 
 138                     int green 
= def
->bg
[GTK_STATE_SELECTED
].green
; 
 139                     int blue 
= def
->bg
[GTK_STATE_SELECTED
].blue
; 
 140                     g_systemHighlightColour 
=  
 141                             new wxColour( red    
>> SHIFT
, 
 147                     g_systemHighlightColour 
=  
 148                             new wxColour( 0      >> SHIFT
, 
 152                 gtk_widget_destroy( widget 
); 
 155             return *g_systemHighlightColour
; 
 157     case wxSYS_COLOUR_MENUTEXT
: 
 158     case wxSYS_COLOUR_WINDOWTEXT
: 
 159     case wxSYS_COLOUR_CAPTIONTEXT
: 
 160     case wxSYS_COLOUR_INACTIVECAPTIONTEXT
: 
 161     case wxSYS_COLOUR_BTNTEXT
: 
 162     case wxSYS_COLOUR_INFOTEXT
: 
 166     case wxSYS_COLOUR_HIGHLIGHTTEXT
: 
 170     case wxSYS_COLOUR_INFOBK
: 
 171     case wxSYS_COLOUR_APPWORKSPACE
: 
 173       return *wxWHITE
;    // ? 
 179 wxFont 
wxSystemSettings::GetSystemFont( int index 
)  
 183         case wxSYS_OEM_FIXED_FONT
: 
 184         case wxSYS_ANSI_FIXED_FONT
: 
 185         case wxSYS_SYSTEM_FIXED_FONT
: 
 187             return *wxNORMAL_FONT
; 
 189         case wxSYS_ANSI_VAR_FONT
: 
 190         case wxSYS_SYSTEM_FONT
: 
 191         case wxSYS_DEVICE_DEFAULT_FONT
: 
 192         case wxSYS_DEFAULT_GUI_FONT
: 
 195                 g_systemFont 
= new wxFont( 12, wxSWISS
, wxNORMAL
, wxNORMAL 
); 
 196             return *g_systemFont
; 
 203 int wxSystemSettings::GetSystemMetric( int index 
) 
 207         case wxSYS_SCREEN_X
:   return gdk_screen_width(); 
 208         case wxSYS_SCREEN_Y
:   return gdk_screen_height(); 
 209         case wxSYS_HSCROLL_Y
:  return 15; 
 210         case wxSYS_VSCROLL_X
:  return 15; 
 213     wxCHECK_MSG( index
, 0, wxT("wxSystemSettings::GetSystemMetric not fully implemented") );