]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/fontdlg.cpp
As small as possible reorganization within wxDateTime to please PCH in DLL build...
[wxWidgets.git] / src / os2 / fontdlg.cpp
index 60e8e9b987958d84ca818de0d767cad90438f9c3..e6794d8d402a69e0473670c2c53f145ad60f24e6 100644 (file)
 // Name:        fontdlg.cpp
 // Purpose:     wxFontDialog class. NOTE: you can use the generic class
 //              if you wish, instead of implementing this.
-// Author:      AUTHOR
+// Author:      David Webster
 // Modified by:
-// Created:     ??/??/98
+// Created:     10/06/99
 // RCS-ID:      $Id$
-// Copyright:   (c) AUTHOR
-// Licence:    wxWindows licence
+// Copyright:   (c) David Webster
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
-#pragma implementation "fontdlg.h"
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifndef WX_PRECOMP
+#include <stdio.h>
+#include "wx/defs.h"
+#include "wx/utils.h"
+#include "wx/dialog.h"
+#include "wx/math.h"
 #endif
 
-#include "wx/stubs/fontdlg.h"
+#include "wx/fontdlg.h"
+#include "wx/fontutil.h"
+
+#define INCL_PM
+#include <os2.h>
+
+#include "wx/os2/private.h"
 #include "wx/cmndata.h"
 
-#if !USE_SHARED_LIBRARY
-IMPLEMENT_DYNAMIC_CLASS(wxFontDialog, wxDialog)
-#endif
+#include <stdlib.h>
+#include <string.h>
 
-/*
- * wxFontDialog
- */
+IMPLEMENT_DYNAMIC_CLASS(wxFontDialog, wxDialog)
 
-wxFontDialog::wxFontDialog()
+int wxFontDialog::ShowModal()
 {
-    m_dialogParent = NULL;
-}
+    FONTDLG                         vFontDlg;
+    char                            zCurrentFont[FACESIZE];
+    HWND                            hWndFontDlg;
+    FACENAMEDESC                    vFn;
 
-wxFontDialog::wxFontDialog(wxWindow *parent, wxFontData *data)
-{
-    Create(parent, data);
-}
+    memset(&vFontDlg, '\0', sizeof(FONTDLG));
+    zCurrentFont[0] = '\0';
 
-bool wxFontDialog::Create(wxWindow *parent, wxFontData *data)
-{
-    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;
 
-    if (data)
-        m_fontData = *data;
+    hWndFontDlg = WinFontDlg( HWND_DESKTOP
+                             ,GetParent()->GetHWND()
+                             ,&vFontDlg
+                            );
+    if (hWndFontDlg && vFontDlg.lReturn == DID_OK)
+    {
+        wxColour                    vColour((unsigned long)0x00000000);
+        wxNativeFontInfo            vInfo;
 
-    // TODO: you may need to do dialog creation here, unless it's
-    // done in ShowModal.
-    return TRUE;
-}
+        m_fontData.m_fontColour = vColour;
 
-int wxFontDialog::ShowModal()
-{
-    // TODO: show (maybe create) the dialog
+        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