1 ///////////////////////////////////////////////////////////////////////////// 
   4 // Author:      David Webster 
   8 // Copyright:   (c) David Webster 
   9 // Licence:     wxWindows licence 
  10 ///////////////////////////////////////////////////////////////////////////// 
  12 // For compilers that support precompilation, includes "wx.h". 
  13 #include "wx/wxprec.h" 
  20 #include "wx/gdicmn.h" 
  23 #include "wx/module.h" 
  24 #include "wx/settings.h" 
  25 #include "wx/window.h" 
  26 #include "wx/os2/private.h" 
  28 // the module which is used to clean up wxSystemSettings data (this is a 
  29 // singleton class so it can't be done in the dtor) 
  30 class wxSystemSettingsModule 
: public wxModule
 
  32     friend class wxSystemSettings
; 
  34     virtual bool OnInit(); 
  35     virtual void OnExit(); 
  38     DECLARE_DYNAMIC_CLASS(wxSystemSettingsModule
) 
  40     static wxArrayString   sm_optionNames
; 
  41     static wxArrayString   sm_optionValues
; 
  44 // ---------------------------------------------------------------------------- 
  46 // ---------------------------------------------------------------------------- 
  48 static wxFont 
*gs_fontDefault 
= NULL
; 
  50 // ============================================================================ 
  52 // ============================================================================ 
  54 // ---------------------------------------------------------------------------- 
  55 // wxSystemSettingsModule 
  56 // ---------------------------------------------------------------------------- 
  58 IMPLEMENT_DYNAMIC_CLASS(wxSystemSettingsModule
, wxModule
) 
  60 wxArrayString 
wxSystemSettingsModule::sm_optionNames
; 
  61 wxArrayString 
wxSystemSettingsModule::sm_optionValues
; 
  63 bool wxSystemSettingsModule::OnInit() 
  68 void wxSystemSettingsModule::OnExit() 
  70     sm_optionNames
.Clear(); 
  71     sm_optionValues
.Clear(); 
  72     delete gs_fontDefault
; 
  75 wxColour 
wxSystemSettingsNative::GetColour( 
  84         // PM actually has values for these 
  86         case wxSYS_COLOUR_WINDOW
: 
  87             vRef 
= (ULONG
)::WinQuerySysColor( HWND_DESKTOP
 
  91             vCol
.Set( GetRValue(vRef
) 
  97         case wxSYS_COLOUR_WINDOWFRAME
: 
  98             vRef 
= (ULONG
)::WinQuerySysColor( HWND_DESKTOP
 
 102             vCol
.Set( GetRValue(vRef
) 
 108         case wxSYS_COLOUR_MENUTEXT
: 
 109             vRef 
= (ULONG
)::WinQuerySysColor( HWND_DESKTOP
 
 113             vCol
.Set( GetRValue(vRef
) 
 119         case wxSYS_COLOUR_BTNFACE
: 
 120             vRef 
= (ULONG
)::WinQuerySysColor( HWND_DESKTOP
 
 121                                              ,SYSCLR_BUTTONDEFAULT
 
 124             vCol
.Set( GetRValue(vRef
) 
 130         case wxSYS_COLOUR_BTNSHADOW
: 
 131             vRef 
= (ULONG
)::WinQuerySysColor( HWND_DESKTOP
 
 135             vCol
.Set( GetRValue(vRef
) 
 141         case wxSYS_COLOUR_BTNHIGHLIGHT
: 
 142             vRef 
= (ULONG
)::WinQuerySysColor( HWND_DESKTOP
 
 146             vCol
.Set( GetRValue(vRef
) 
 152         case wxSYS_COLOUR_MENUBAR
: 
 153             vRef 
= (ULONG
)::WinQuerySysColor( HWND_DESKTOP
 
 157             vCol
.Set( GetRValue(vRef
) 
 164         // We'll have to just give values to these 
 166         case wxSYS_COLOUR_LISTBOX
: 
 167         case wxSYS_COLOUR_CAPTIONTEXT
: 
 171         case wxSYS_COLOUR_WINDOWTEXT
: 
 172         case wxSYS_COLOUR_INACTIVECAPTIONTEXT
: 
 173         case wxSYS_COLOUR_BTNTEXT
: 
 174         case wxSYS_COLOUR_INFOTEXT
: 
 179         // We should customize these to look like other ports 
 182         case wxSYS_COLOUR_ACTIVECAPTION
: 
 183         case wxSYS_COLOUR_ACTIVEBORDER
: 
 184         case wxSYS_COLOUR_HIGHLIGHT
: 
 188         case wxSYS_COLOUR_SCROLLBAR
: 
 189         case wxSYS_COLOUR_BACKGROUND
: 
 190         case wxSYS_COLOUR_INACTIVECAPTION
: 
 191         case wxSYS_COLOUR_MENU
: 
 192         case wxSYS_COLOUR_INACTIVEBORDER
: 
 193         case wxSYS_COLOUR_APPWORKSPACE
: 
 194         case wxSYS_COLOUR_HIGHLIGHTTEXT
: 
 195         case wxSYS_COLOUR_GRAYTEXT
: 
 196         case wxSYS_COLOUR_3DDKSHADOW
: 
 197         case wxSYS_COLOUR_3DLIGHT
: 
 198         case wxSYS_COLOUR_INFOBK
: 
 199             vCol 
= (*wxLIGHT_GREY
); 
 203             vRef 
= (ULONG
)::WinQuerySysColor( HWND_DESKTOP
 
 207             vCol
.Set( GetRValue(vRef
) 
 214 } // end of wxSystemSettingsNative::GetColour 
 216 wxFont 
wxSystemSettingsNative::GetFont( 
 223         case wxSYS_DEVICE_DEFAULT_FONT
: 
 227         case wxSYS_DEFAULT_PALETTE
: 
 231         case wxSYS_SYSTEM_FIXED_FONT
: 
 235         case wxSYS_SYSTEM_FONT
: 
 240         case wxSYS_DEFAULT_GUI_FONT
: 
 246          return *wxSWISS_FONT
; 
 251 // Get a system metric, e.g. scrollbar size 
 252 int wxSystemSettingsNative::GetMetric( 
 254 , wxWindow
*                         WXUNUSED(win
) 
 259         // TODO case wxSYS_MOUSE_BUTTONS: 
 260         // TODO case wxSYS_BORDER_X: 
 261         // TODO case wxSYS_BORDER_Y: 
 262         // TODO case wxSYS_CURSOR_X: 
 263         // TODO case wxSYS_CURSOR_Y: 
 264         // TODO case wxSYS_DCLICK_X: 
 265         // TODO case wxSYS_DCLICK_Y: 
 266         // TODO case wxSYS_DRAG_X: 
 267         // TODO case wxSYS_DRAG_Y: 
 268         // TODO case wxSYS_EDGE_X: 
 269         // TODO case wxSYS_EDGE_Y: 
 270         // TODO case wxSYS_HSCROLL_ARROW_X: 
 271         // TODO case wxSYS_HSCROLL_ARROW_Y: 
 272         // TODO case wxSYS_HTHUMB_X: 
 273         // TODO case wxSYS_ICON_X: 
 274         // TODO case wxSYS_ICON_Y: 
 275         // TODO case wxSYS_ICONSPACING_X: 
 276         // TODO case wxSYS_ICONSPACING_Y: 
 277         // TODO case wxSYS_WINDOWMIN_X: 
 278         // TODO case wxSYS_WINDOWMIN_Y: 
 281             return ::WinQuerySysValue(HWND_DESKTOP
,SV_CXSCREEN
); 
 283             return ::WinQuerySysValue(HWND_DESKTOP
,SV_CYSCREEN
); 
 285         // TODO case wxSYS_FRAMESIZE_X: 
 286         // TODO case wxSYS_FRAMESIZE_Y: 
 287         // TODO case wxSYS_SMALLICON_X: 
 288         // TODO case wxSYS_SMALLICON_Y: 
 289         // TODO case wxSYS_HSCROLL_Y: 
 290         // TODO case wxSYS_VSCROLL_X: 
 291         // TODO case wxSYS_VSCROLL_ARROW_X: 
 292         // TODO case wxSYS_VSCROLL_ARROW_Y: 
 293         // TODO case wxSYS_VTHUMB_Y: 
 294         // TODO case wxSYS_CAPTION_Y: 
 295         // TODO case wxSYS_MENU_Y: 
 296         // TODO case wxSYS_NETWORK_PRESENT: 
 297         // TODO case wxSYS_PENWINDOWS_PRESENT: 
 298         // TODO case wxSYS_SHOW_SOUNDS: 
 299         // TODO case wxSYS_SWAP_BUTTONS: 
 302             return -1;  // unsupported metric 
 307 bool wxSystemSettingsNative::HasFeature( 
 308   wxSystemFeature                   index
 
 313         case wxSYS_CAN_ICONIZE_FRAME
: 
 316         case wxSYS_CAN_DRAW_FRAME_DECORATIONS
: