1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/richtext/richtextsymboldlg.h
4 // Author: Julian Smart
6 // Created: 10/5/2006 3:11:58 PM
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 #ifndef _RICHTEXTSYMBOLDLG_H_
13 #define _RICHTEXTSYMBOLDLG_H_
19 #include "wx/dialog.h"
20 #include "wx/vscroll.h"
23 * Forward declarations
26 class WXDLLIMPEXP_FWD_CORE wxStaticText
;
27 class WXDLLIMPEXP_FWD_CORE wxComboBox
;
28 class WXDLLIMPEXP_FWD_CORE wxTextCtrl
;
30 ////@begin forward declarations
31 class wxSymbolListCtrl
;
32 ////@end forward declarations
34 // __UNICODE__ is a symbol used by DialogBlocks-generated code.
45 #define SYMBOL_WXSYMBOLPICKERDIALOG_STYLE (wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER|wxCLOSE_BOX)
46 #define SYMBOL_WXSYMBOLPICKERDIALOG_TITLE _("Symbols")
47 #define SYMBOL_WXSYMBOLPICKERDIALOG_IDNAME ID_SYMBOLPICKERDIALOG
48 #define SYMBOL_WXSYMBOLPICKERDIALOG_SIZE wxSize(400, 300)
49 #define SYMBOL_WXSYMBOLPICKERDIALOG_POSITION wxDefaultPosition
52 * wxSymbolPickerDialog class declaration
55 class WXDLLIMPEXP_RICHTEXT wxSymbolPickerDialog
: public wxDialog
57 DECLARE_DYNAMIC_CLASS( wxSymbolPickerDialog
)
62 wxSymbolPickerDialog( );
63 wxSymbolPickerDialog( const wxString
& symbol
, const wxString
& fontName
, const wxString
& normalTextFont
,
64 wxWindow
* parent
, wxWindowID id
= wxID_ANY
, const wxString
& caption
= SYMBOL_WXSYMBOLPICKERDIALOG_TITLE
, const wxPoint
& pos
= SYMBOL_WXSYMBOLPICKERDIALOG_POSITION
, const wxSize
& size
= SYMBOL_WXSYMBOLPICKERDIALOG_SIZE
, long style
= SYMBOL_WXSYMBOLPICKERDIALOG_STYLE
);
67 bool Create( const wxString
& symbol
, const wxString
& fontName
, const wxString
& normalTextFont
,
68 wxWindow
* parent
, wxWindowID id
= wxID_ANY
, const wxString
& caption
= SYMBOL_WXSYMBOLPICKERDIALOG_TITLE
, const wxPoint
& pos
= SYMBOL_WXSYMBOLPICKERDIALOG_POSITION
, const wxSize
& size
= SYMBOL_WXSYMBOLPICKERDIALOG_SIZE
, long style
= SYMBOL_WXSYMBOLPICKERDIALOG_STYLE
);
70 /// Initialises members variables
73 /// Creates the controls and sizers
74 void CreateControls();
76 /// Update the display
77 void UpdateSymbolDisplay(bool updateSymbolList
= true, bool showAtSubset
= true);
79 /// Respond to symbol selection
80 void OnSymbolSelected( wxCommandEvent
& event
);
83 void SetUnicodeMode(bool unicodeMode
);
85 /// Show at the current subset selection
88 /// Get the selected symbol character
89 int GetSymbolChar() const;
91 /// Is there a selection?
92 bool HasSelection() const { return !m_symbol
.IsEmpty(); }
94 /// Specifying normal text?
95 bool UseNormalFont() const { return m_fontName
.IsEmpty(); }
97 /// Should we show tooltips?
98 static bool ShowToolTips() { return sm_showToolTips
; }
100 /// Determines whether tooltips will be shown
101 static void SetShowToolTips(bool show
) { sm_showToolTips
= show
; }
104 virtual bool TransferDataToWindow();
106 ////@begin wxSymbolPickerDialog event handler declarations
108 /// wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_SYMBOLPICKERDIALOG_FONT
109 void OnFontCtrlSelected( wxCommandEvent
& event
);
111 #if defined(__UNICODE__)
112 /// wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_SYMBOLPICKERDIALOG_SUBSET
113 void OnSubsetSelected( wxCommandEvent
& event
);
116 #if defined(__UNICODE__)
117 /// wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_SYMBOLPICKERDIALOG_FROM
118 void OnFromUnicodeSelected( wxCommandEvent
& event
);
121 /// wxEVT_UPDATE_UI event handler for wxID_OK
122 void OnOkUpdate( wxUpdateUIEvent
& event
);
124 ////@end wxSymbolPickerDialog event handler declarations
126 ////@begin wxSymbolPickerDialog member function declarations
128 wxString
GetFontName() const { return m_fontName
; }
129 void SetFontName(wxString value
) { m_fontName
= value
; }
131 wxString
GetSymbol() const { return m_symbol
; }
132 void SetSymbol(wxString value
) { m_symbol
= value
; }
134 bool GetFromUnicode() const { return m_fromUnicode
; }
135 void SetFromUnicode(bool value
) { m_fromUnicode
= value
; }
137 wxString
GetNormalTextFontName() const { return m_normalTextFontName
; }
138 void SetNormalTextFontName(wxString value
) { m_normalTextFontName
= value
; }
140 /// Retrieves bitmap resources
141 wxBitmap
GetBitmapResource( const wxString
& name
);
143 /// Retrieves icon resources
144 wxIcon
GetIconResource( const wxString
& name
);
145 ////@end wxSymbolPickerDialog member function declarations
147 ////@begin wxSymbolPickerDialog member variables
148 wxComboBox
* m_fontCtrl
;
149 #if defined(__UNICODE__)
150 wxComboBox
* m_subsetCtrl
;
152 wxSymbolListCtrl
* m_symbolsCtrl
;
153 wxStaticText
* m_symbolStaticCtrl
;
154 wxTextCtrl
* m_characterCodeCtrl
;
155 #if defined(__UNICODE__)
156 wxComboBox
* m_fromUnicodeCtrl
;
161 wxString m_normalTextFontName
;
162 /// Control identifiers
164 ID_SYMBOLPICKERDIALOG
= 10600,
165 ID_SYMBOLPICKERDIALOG_FONT
= 10602,
166 ID_SYMBOLPICKERDIALOG_SUBSET
= 10605,
167 ID_SYMBOLPICKERDIALOG_LISTCTRL
= 10608,
168 ID_SYMBOLPICKERDIALOG_CHARACTERCODE
= 10601,
169 ID_SYMBOLPICKERDIALOG_FROM
= 10603
171 ////@end wxSymbolPickerDialog member variables
174 static bool sm_showToolTips
;
178 * The scrolling symbol list.
181 class WXDLLIMPEXP_RICHTEXT wxSymbolListCtrl
: public wxVScrolledWindow
184 // constructors and such
185 // ---------------------
187 // default constructor, you must call Create() later
188 wxSymbolListCtrl() { Init(); }
190 // normal constructor which calls Create() internally
191 wxSymbolListCtrl(wxWindow
*parent
,
192 wxWindowID id
= wxID_ANY
,
193 const wxPoint
& pos
= wxDefaultPosition
,
194 const wxSize
& size
= wxDefaultSize
,
196 const wxString
& name
= wxPanelNameStr
)
200 (void)Create(parent
, id
, pos
, size
, style
, name
);
203 // really creates the control and sets the initial number of items in it
204 // (which may be changed later with SetItemCount())
206 // returns true on success or false if the control couldn't be created
207 bool Create(wxWindow
*parent
,
208 wxWindowID id
= wxID_ANY
,
209 const wxPoint
& pos
= wxDefaultPosition
,
210 const wxSize
& size
= wxDefaultSize
,
212 const wxString
& name
= wxPanelNameStr
);
214 // dtor does some internal cleanup
215 virtual ~wxSymbolListCtrl();
221 // set the current font
222 virtual bool SetFont(const wxFont
& font
);
224 // set Unicode/ASCII mode
225 void SetUnicodeMode(bool unicodeMode
);
227 // get the index of the currently selected item or wxNOT_FOUND if there is no selection
228 int GetSelection() const;
230 // is this item selected?
231 bool IsSelected(int item
) const;
233 // is this item the current one?
234 bool IsCurrentItem(int item
) const { return item
== m_current
; }
236 // get the margins around each cell
237 wxPoint
GetMargins() const { return m_ptMargins
; }
239 // get the background colour of selected cells
240 const wxColour
& GetSelectionBackground() const { return m_colBgSel
; }
245 // set the selection to the specified item, if it is wxNOT_FOUND the
246 // selection is unset
247 void SetSelection(int selection
);
249 // make this item visible
250 void EnsureVisible(int item
);
252 // set the margins: horizontal margin is the distance between the window
253 // border and the item contents while vertical margin is half of the
254 // distance between items
256 // by default both margins are 0
257 void SetMargins(const wxPoint
& pt
);
258 void SetMargins(wxCoord x
, wxCoord y
) { SetMargins(wxPoint(x
, y
)); }
261 void SetCellSize(const wxSize
& sz
) { m_cellSize
= sz
; }
262 const wxSize
& GetCellSize() const { return m_cellSize
; }
264 // change the background colour of the selected cells
265 void SetSelectionBackground(const wxColour
& col
);
267 virtual wxVisualAttributes
GetDefaultAttributes() const
269 return GetClassDefaultAttributes(GetWindowVariant());
272 static wxVisualAttributes
273 GetClassDefaultAttributes(wxWindowVariant variant
= wxWINDOW_VARIANT_NORMAL
);
275 // Get min/max symbol values
276 int GetMinSymbolValue() const { return m_minSymbolValue
; }
277 int GetMaxSymbolValue() const { return m_maxSymbolValue
; }
279 // Respond to size change
280 void OnSize(wxSizeEvent
& event
);
284 // draws a line of symbols
285 virtual void OnDrawItem(wxDC
& dc
, const wxRect
& rect
, size_t n
) const;
287 // gets the line height
288 virtual wxCoord
OnGetRowHeight(size_t line
) const;
291 void OnPaint(wxPaintEvent
& event
);
292 void OnKeyDown(wxKeyEvent
& event
);
293 void OnLeftDown(wxMouseEvent
& event
);
294 void OnLeftDClick(wxMouseEvent
& event
);
296 // common part of all ctors
299 // send the wxEVT_COMMAND_LISTBOX_SELECTED event
300 void SendSelectedEvent();
302 // change the current item (in single selection listbox it also implicitly
303 // changes the selection); current may be wxNOT_FOUND in which case there
304 // will be no current item any more
306 // return true if the current item changed, false otherwise
307 bool DoSetCurrent(int current
);
309 // flags for DoHandleItemClick
312 ItemClick_Shift
= 1, // item shift-clicked
313 ItemClick_Ctrl
= 2, // ctrl
314 ItemClick_Kbd
= 4 // item selected from keyboard
317 // common part of keyboard and mouse handling processing code
318 void DoHandleItemClick(int item
, int flags
);
320 // calculate line number from symbol value
321 int SymbolValueToLineNumber(int item
);
323 // initialise control from current min/max values
324 void SetupCtrl(bool scrollToSelection
= true);
327 int HitTest(const wxPoint
& pt
);
330 // the current item or wxNOT_FOUND
336 // the selection bg colour
340 wxBitmap
* m_doubleBuffer
;
345 // minimum and maximum symbol value
346 int m_minSymbolValue
;
348 // minimum and maximum symbol value
349 int m_maxSymbolValue
;
351 // number of items per line
352 int m_symbolsPerLine
;
354 // Unicode/ASCII mode
357 DECLARE_EVENT_TABLE()
358 DECLARE_NO_COPY_CLASS(wxSymbolListCtrl
)
359 DECLARE_ABSTRACT_CLASS(wxSymbolListCtrl
)
363 // _RICHTEXTSYMBOLDLG_H_