]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/settings.cpp
Add entry for 2.8.0.1
[wxWidgets.git] / src / os2 / settings.cpp
index 2f42f126e1dfc4af5aebabf6a5035b81e88bb93e..b384ebb03478dae2d41b8a41b6eaf0e9fc42a2fd 100644 (file)
 #include "wx/wxprec.h"
 
 #ifndef WX_PRECOMP
-#include <stdio.h>
-#include "wx/defs.h"
-#include "wx/pen.h"
-#include "wx/brush.h"
-#include "wx/gdicmn.h"
+    #include <stdio.h>
+    #include "wx/pen.h"
+    #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/window.h"
+#include "wx/fontutil.h"
+
 #include "wx/os2/private.h"
 
 // the module which is used to clean up wxSystemSettings data (this is a
@@ -70,6 +71,7 @@ void wxSystemSettingsModule::OnExit()
     sm_optionNames.Clear();
     sm_optionValues.Clear();
     delete gs_fontDefault;
+    gs_fontDefault = NULL;
 }
 
 wxColour wxSystemSettingsNative::GetColour(
@@ -201,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( _T("stock font not found") );
+                return GetFont(wxSYS_ANSI_VAR_FONT);
     }
-    if(wxSWISS_FONT)
-         return *wxSWISS_FONT;
 
-    return wxNullFont;
+
+    if ( isDefaultRequested )
+    {
+        // if we got here it means we hadn't cached it yet - do now
+        gs_fontDefault = new wxFont(font);
+    }
+
+    return font;
 }
 
 // Get a system metric, e.g. scrollbar size
@@ -289,6 +315,7 @@ int wxSystemSettingsNative::GetMetric( wxSystemMetric index,
         // TODO case wxSYS_SWAP_BUTTONS:
 
         default:
+            break;
     }
     return -1;  // unsupported metric
 }
@@ -300,8 +327,11 @@ bool wxSystemSettingsNative::HasFeature( wxSystemFeature index )
         case wxSYS_CAN_ICONIZE_FRAME:
             return true;
 
-        case wxSYS_CAN_DRAW_FRAME_DECORATIONS:
-            return false;
+        // TODO case wxSYS_CAN_DRAW_FRAME_DECORATIONS:
+        // TODO case wxSYS_TABLET_PRESENT:
+
+        default:
+            break;
     }
 
     return false;