]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/settings.cpp
Add support for CURRENCY and SCODE to MSW OLE helpers.
[wxWidgets.git] / src / os2 / settings.cpp
index a190d277d0a96b789e6c30c8c11e024ef1db4919..484be7380c92ca6da48ffa3aea589eacd0d557bf 100644 (file)
     #include "wx/brush.h"
     #include "wx/gdicmn.h"
     #include "wx/window.h"
+    #include "wx/settings.h"
+    #include "wx/module.h"
 #endif
 
-#include "wx/module.h"
-#include "wx/settings.h"
+#include "wx/fontutil.h"
+
 #include "wx/os2/private.h"
 
 // the module which is used to clean up wxSystemSettings data (this is a
@@ -68,7 +70,7 @@ void wxSystemSettingsModule::OnExit()
 {
     sm_optionNames.Clear();
     sm_optionValues.Clear();
-    delete gs_fontDefault;
+    wxDELETE(gs_fontDefault);
 }
 
 wxColour wxSystemSettingsNative::GetColour(
@@ -170,6 +172,7 @@ wxColour wxSystemSettingsNative::GetColour(
             break;
 
         case wxSYS_COLOUR_HIGHLIGHTTEXT:
+        case wxSYS_COLOUR_LISTBOXHIGHLIGHTTEXT:
             vSysClr = SYSCLR_HILITEFOREGROUND;
             break;
 
@@ -200,39 +203,63 @@ wxColour wxSystemSettingsNative::GetColour(
     return(vCol);
 } // end of wxSystemSettingsNative::GetColour
 
+// ----------------------------------------------------------------------------
+// fonts
+// ----------------------------------------------------------------------------
+
 wxFont wxSystemSettingsNative::GetFont(
   wxSystemFont                      index
 )
 {
-    // TODO
+    const bool isDefaultRequested = index == wxSYS_DEFAULT_GUI_FONT;
+    if ( isDefaultRequested )
+    {
+        if ( gs_fontDefault )
+            return *gs_fontDefault;
+    }
+
+    wxFont font;
+    // FIXME: The mapping could be improved and also OS/2 system fonts
+    // should be taken into account e.g. by using PrfQueryProfileString
+    // to look for PM_System_Fonts in HINI_USERPROFILE.
+    // FIXME2: Creating a font from the native font info does not
+    // seem to work properly.
     switch (index)
     {
-        case wxSYS_DEVICE_DEFAULT_FONT:
-        {
-            break;
-        }
-        case wxSYS_DEFAULT_PALETTE:
-        {
-            break;
-        }
         case wxSYS_SYSTEM_FIXED_FONT:
-        {
-            break;
-        }
+        case wxSYS_OEM_FIXED_FONT:
+        case wxSYS_ANSI_FIXED_FONT:
+                font.Create(  10,
+                              wxFONTFAMILY_TELETYPE,
+                              wxFONTSTYLE_NORMAL,
+                              wxFONTWEIGHT_NORMAL   );
+                break;
+        case wxSYS_ANSI_VAR_FONT:
+                font.Create(  10,
+                              wxFONTFAMILY_MODERN,
+                              wxFONTSTYLE_NORMAL,
+                              wxFONTWEIGHT_NORMAL   );
+                break;
         case wxSYS_SYSTEM_FONT:
-        {
-            break;
-        }
-        default:
         case wxSYS_DEFAULT_GUI_FONT:
-        {
-            break;
-        }
+                font.Create(  10,
+                              wxFONTFAMILY_SWISS,
+                              wxFONTSTYLE_NORMAL,
+                              wxFONTWEIGHT_NORMAL   );
+                break;
+        default:
+                wxFAIL_MSG( wxT("stock font not found") );
+                return GetFont(wxSYS_ANSI_VAR_FONT);
+    }
+
+
+    if ( isDefaultRequested )
+    {
+        // if we got here it means we hadn't cached it yet - do now
+        gs_fontDefault = new wxFont(font);
     }
-    if(wxSWISS_FONT)
-         return *wxSWISS_FONT;
 
-    return wxNullFont;
+    return font;
 }
 
 // Get a system metric, e.g. scrollbar size