1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/osx/fontdlg.h
3 // Purpose:     wxFontDialog class using fonts window services (10.2+).
4 // Author:      Ryan Norton
5 // Modified by:
6 // Created:     2004-09-25
7 // Copyright:   (c) Ryan Norton
8 // Licence:     wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
10 
11 #ifndef _WX_FONTDLG_H_
12 #define _WX_FONTDLG_H_
13 
14 #include "wx/dialog.h"
15 
16 /*
17  * Font dialog
18  */
19 
20 /*
21  * support old notation
22  */
23 #ifdef wxMAC_USE_EXPERIMENTAL_FONTDIALOG
24 #define wxOSX_USE_EXPERIMENTAL_FONTDIALOG wxMAC_USE_EXPERIMENTAL_FONTDIALOG
25 #endif
26 
27 #ifndef wxOSX_USE_EXPERIMENTAL_FONTDIALOG
28 #define wxOSX_USE_EXPERIMENTAL_FONTDIALOG 1
29 #endif
30 
31 #if wxOSX_USE_EXPERIMENTAL_FONTDIALOG
32 
33 class WXDLLIMPEXP_CORE wxFontDialog : public wxDialog
34 {
35 public:
36     wxFontDialog();
37     wxFontDialog(wxWindow *parent);
38     wxFontDialog(wxWindow *parent, const wxFontData& data);
39     virtual ~wxFontDialog();
40 
41     bool Create(wxWindow *parent);
42     bool Create(wxWindow *parent, const wxFontData& data);
43 
44     int ShowModal();
GetFontData()45     wxFontData& GetFontData() { return m_fontData; }
46 
47 protected:
48     wxFontData m_fontData;
49 
50     DECLARE_DYNAMIC_CLASS_NO_COPY(wxFontDialog)
51 };
52 
53 extern "C" int RunMixedFontDialog(wxFontDialog* dialog) ;
54 
55 #else // wxOSX_USE_EXPERIMENTAL_FONTDIALOG
56 
57 #if !USE_NATIVE_FONT_DIALOG_FOR_MACOSX
58 
59 /*!
60  * Forward declarations
61  */
62 
63 class wxFontColourSwatchCtrl;
64 class wxFontPreviewCtrl;
65 class WXDLLIMPEXP_FWD_CORE wxSpinCtrl;
66 class WXDLLIMPEXP_FWD_CORE wxSpinEvent;
67 class WXDLLIMPEXP_FWD_CORE wxListBox;
68 class WXDLLIMPEXP_FWD_CORE wxChoice;
69 class WXDLLIMPEXP_FWD_CORE wxButton;
70 class WXDLLIMPEXP_FWD_CORE wxStaticText;
71 class WXDLLIMPEXP_FWD_CORE wxCheckBox;
72 
73 /*!
74  * Control identifiers
75  */
76 
77 #define wxID_FONTDIALOG_FACENAME 20001
78 #define wxID_FONTDIALOG_FONTSIZE 20002
79 #define wxID_FONTDIALOG_BOLD 20003
80 #define wxID_FONTDIALOG_ITALIC 20004
81 #define wxID_FONTDIALOG_UNDERLINED 20005
82 #define wxID_FONTDIALOG_COLOUR 20006
83 #define wxID_FONTDIALOG_PREVIEW 20007
84 
85 #endif
86     // !USE_NATIVE_FONT_DIALOG_FOR_MACOSX
87 
88 class WXDLLIMPEXP_CORE wxFontDialog: public wxDialog
89 {
90 DECLARE_DYNAMIC_CLASS(wxFontDialog)
91 
92 #if !USE_NATIVE_FONT_DIALOG_FOR_MACOSX
93 DECLARE_EVENT_TABLE()
94 #endif
95 
96 public:
97     wxFontDialog();
98     wxFontDialog(wxWindow *parent, const wxFontData& data);
99     virtual ~wxFontDialog();
100 
101     bool Create(wxWindow *parent, const wxFontData& data);
102 
103     int ShowModal();
GetFontData()104     wxFontData& GetFontData() { return m_fontData; }
105     bool IsShown() const;
106     void OnPanelClose();
107     void SetData(const wxFontData& data);
108 
109 #if !USE_NATIVE_FONT_DIALOG_FOR_MACOSX
110 
111     /// Creates the controls and sizers
112     void CreateControls();
113 
114     /// Initialize font
115     void InitializeFont();
116 
117     /// Set controls according to current font
118     void InitializeControls();
119 
120     /// Respond to font change
121     void ChangeFont();
122 
123     /// Respond to colour change
124     void OnColourChanged(wxCommandEvent& event);
125 
126     /// wxEVT_LISTBOX event handler for wxID_FONTDIALOG_FACENAME
127     void OnFontdialogFacenameSelected( wxCommandEvent& event );
128 
129     /// wxEVT_SPINCTRL event handler for wxID_FONTDIALOG_FONTSIZE
130     void OnFontdialogFontsizeUpdated( wxSpinEvent& event );
131 
132     /// wxEVT_TEXT event handler for wxID_FONTDIALOG_FONTSIZE
133     void OnFontdialogFontsizeTextUpdated( wxCommandEvent& event );
134 
135     /// wxEVT_CHECKBOX event handler for wxID_FONTDIALOG_BOLD
136     void OnFontdialogBoldClick( wxCommandEvent& event );
137 
138     /// wxEVT_CHECKBOX event handler for wxID_FONTDIALOG_ITALIC
139     void OnFontdialogItalicClick( wxCommandEvent& event );
140 
141     /// wxEVT_CHECKBOX event handler for wxID_FONTDIALOG_UNDERLINED
142     void OnFontdialogUnderlinedClick( wxCommandEvent& event );
143 
144     /// wxEVT_BUTTON event handler for wxID_OK
145     void OnOkClick( wxCommandEvent& event );
146 
147     /// Should we show tooltips?
148     static bool ShowToolTips();
149 
150     wxListBox* m_facenameCtrl;
151     wxSpinCtrl* m_sizeCtrl;
152     wxCheckBox* m_boldCtrl;
153     wxCheckBox* m_italicCtrl;
154     wxCheckBox* m_underlinedCtrl;
155     wxFontColourSwatchCtrl* m_colourCtrl;
156     wxFontPreviewCtrl* m_previewCtrl;
157 
158     wxFont      m_dialogFont;
159     bool        m_suppressUpdates;
160 
161 #endif
162     // !USE_NATIVE_FONT_DIALOG_FOR_MACOSX
163 
164 protected:
165     wxWindow*   m_dialogParent;
166     wxFontData  m_fontData;
167     void*       m_pEventHandlerRef;
168 };
169 
170 #endif
171 
172 #endif
173     // _WX_FONTDLG_H_
174