]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/fontdlg.cpp
capture mouse to be notified when it exists the popup rect (bug 1372228)
[wxWidgets.git] / src / os2 / fontdlg.cpp
index 56afb1cc61b7d1b85b856f4099711618c76c2288..1024e1b98e2af9825e3975d31c483d3f7a9c5b2f 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        fontdlg.cpp
+// Name:        src/os2/fontdlg.cpp
 // Purpose:     wxFontDialog class. NOTE: you can use the generic class
 //              if you wish, instead of implementing this.
 // Author:      David Webster
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
+#include "wx/fontdlg.h"
+
 #ifndef WX_PRECOMP
-#include <stdio.h>
-#include "wx/defs.h"
-#include "wx/utils.h"
-#include "wx/dialog.h"
+    #include <stdio.h>
+    #include "wx/utils.h"
+    #include "wx/dialog.h"
+    #include "wx/math.h"
+    #include "wx/cmndata.h"
 #endif
 
-#include "wx/fontdlg.h"
+#include "wx/fontutil.h"
 
 #define INCL_PM
 #include <os2.h>
 
 #include "wx/os2/private.h"
-#include "wx/cmndata.h"
 
-#include <math.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
-    return wxID_CANCEL;
-}
+        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 = (wxChar*)vFontDlg.fAttrs.szFacename;
+        m_fontData.EncodingInfo().charset = vFontDlg.fAttrs.usCodePage;
+
+        return wxID_OK;
+    }
+    return wxID_CANCEL;
+} // end of wxFontDialg::ShowModal