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( 
 258         case wxSYS_MOUSE_BUTTONS
: 
 291         case wxSYS_HSCROLL_ARROW_X
: 
 294         case wxSYS_HSCROLL_ARROW_Y
: 
 306         case wxSYS_ICONSPACING_X
: 
 309         case wxSYS_ICONSPACING_Y
: 
 312         case wxSYS_WINDOWMIN_X
: 
 315         case wxSYS_WINDOWMIN_Y
: 
 319             return ::WinQuerySysValue(HWND_DESKTOP
,SV_CXSCREEN
); 
 321             return ::WinQuerySysValue(HWND_DESKTOP
,SV_CYSCREEN
); 
 322         case wxSYS_FRAMESIZE_X
: 
 325         case wxSYS_FRAMESIZE_Y
: 
 328         case wxSYS_SMALLICON_X
: 
 331         case wxSYS_SMALLICON_Y
: 
 334         case wxSYS_HSCROLL_Y
: 
 337         case wxSYS_VSCROLL_X
: 
 340         case wxSYS_VSCROLL_ARROW_X
: 
 343         case wxSYS_VSCROLL_ARROW_Y
: 
 349         case wxSYS_CAPTION_Y
: 
 355         case wxSYS_NETWORK_PRESENT
: 
 358         case wxSYS_PENWINDOWS_PRESENT
: 
 361         case wxSYS_SHOW_SOUNDS
: 
 364         case wxSYS_SWAP_BUTTONS
: 
 373 bool wxSystemSettingsNative::HasFeature( 
 374   wxSystemFeature                   index
 
 379         case wxSYS_CAN_ICONIZE_FRAME
: 
 382         case wxSYS_CAN_DRAW_FRAME_DECORATIONS
: