]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/fontdlg.cpp
fixed bug with lower-case colours in wxColourDatabase::AddColour() (patch 1074865)
[wxWidgets.git] / src / os2 / fontdlg.cpp
index 56afb1cc61b7d1b85b856f4099711618c76c2288..c2b6091965909b508023027ee8bda1f6cef0d73e 100644 (file)
@@ -21,6 +21,7 @@
 #endif
 
 #include "wx/fontdlg.h"
+#include "wx/fontutil.h"
 
 #define INCL_PM
 #include <os2.h>
 #include <stdlib.h>
 #include <string.h>
 
-#define wxDIALOG_DEFAULT_X 300
-#define wxDIALOG_DEFAULT_Y 300
-
 IMPLEMENT_DYNAMIC_CLASS(wxFontDialog, wxDialog)
 
-/*
- * wxFontDialog
- */
-wxFontDialog::wxFontDialog()
+int wxFontDialog::ShowModal()
 {
-    m_dialogParent = NULL;
-}
+    FONTDLG                         vFontDlg;
+    char                            zCurrentFont[FACESIZE];
+    HWND                            hWndFontDlg;
+    FACENAMEDESC                    vFn;
 
-wxFontDialog::wxFontDialog(wxWindow *parent, const wxFontData& rData)
-{
-    Create(parent, rData);
-}
+    memset(&vFontDlg, '\0', sizeof(FONTDLG));
+    zCurrentFont[0] = '\0';
 
-bool wxFontDialog::Create(wxWindow *parent, const wxFontData& rData)
-{
-    m_dialogParent = parent;
+    //
+    // Set the fontdlg fields
+    //
+    vFontDlg.cbSize         = sizeof(FONTDLG);
+    vFontDlg.hpsScreen      = ::WinGetScreenPS(HWND_DESKTOP);
+    vFontDlg.hpsPrinter     = NULL;
+    vFontDlg.pszFamilyname  = zCurrentFont;
+    vFontDlg.fxPointSize    = MAKEFIXED(12,0);
+    vFontDlg.usFamilyBufLen = FACESIZE;
+    vFontDlg.fl             = FNTS_CENTER;
+    vFontDlg.clrFore        = CLR_BLACK;
+    vFontDlg.clrBack        = CLR_WHITE;
 
-    m_fontData = rData;
-    return TRUE;
-}
+    hWndFontDlg = WinFontDlg( HWND_DESKTOP
+                             ,GetParent()->GetHWND()
+                             ,&vFontDlg
+                            );
+    if (hWndFontDlg && vFontDlg.lReturn == DID_OK)
+    {
+        wxColour                    vColour((unsigned long)0x00000000);
+        wxNativeFontInfo            vInfo;
 
-int wxFontDialog::ShowModal()
-{
-    // TODO: show (maybe create) the dialog
+        m_fontData.m_fontColour = vColour;
+
+        memset(&vFn, '\0', sizeof(FACENAMEDESC));
+        vFn.usSize        = sizeof(FACENAMEDESC);
+        vFn.usWeightClass = vFontDlg.usWeight;
+        vFn.usWidthClass  = vFontDlg.usWidth;
+
+        memset(&vInfo.fa, '\0', sizeof(FATTRS));
+        memcpy(&vInfo.fn, &vFn, sizeof(FACENAMEDESC));
+
+        vInfo.fa.usRecordLength = vFontDlg.fAttrs.usRecordLength;
+        strcpy(vInfo.fa.szFacename, vFontDlg.fAttrs.szFacename);
+        vInfo.fa.lMatch = vFontDlg.fAttrs.lMatch;
+
+        //
+        // Debugging
+        //
+        wxFont                      vChosenFont(vInfo);
+
+        int                         nPointSize = vFontDlg.fxPointSize >> 16;
+
+        vChosenFont.SetPointSize(nPointSize);
+        m_fontData.m_chosenFont = vChosenFont;
+
+        m_fontData.EncodingInfo().facename = vFontDlg.fAttrs.szFacename;
+        m_fontData.EncodingInfo().charset = vFontDlg.fAttrs.usCodePage;
+
+        return wxID_OK;
+    }
     return wxID_CANCEL;
-}
+} // end of wxFontDialg::ShowModal