## wxSymbolPickerDialog

wxSymbolPickerDialog presents the user with a choice of fonts and a grid of available characters. This modal dialog provides the application with a selected symbol and optional font selection.

Although this dialog is contained in the rich text library, the dialog is generic and can be used in other contexts.

To use the dialog, pass a default symbol specified as a string, an initial font name, and a current font name. The difference between the initial font and current font is that the initial font determines what the font control will be set to when the dialog shows - an empty string will show the selection normal text. The current font, on the other hand, is used by the dialog to determine what font to display the characters in, even when no initial font is selected. This allows the user (and application) to distinguish between inserting a symbol in the current font, and inserting it with a specified font.

When the dialog is dismissed, the application can get the selected symbol with GetSymbol and test whether a font was specified with UseNormalFont, fetching the specified font with GetFontName.

Here's a realistic example, inserting the supplied symbol into a rich text control in either the current font or specified font.

        wxRichTextCtrl* ctrl = (wxRichTextCtrl*) FindWindow(ID_RICHTEXT_CTRL);

        wxTextAttrEx attr;
        attr.SetFlags(wxTEXT_ATTR_FONT);
        ctrl->GetStyle(ctrl->GetInsertionPoint(), attr);

        wxString currentFontName;
        if (attr.HasFont() && attr.GetFont().Ok())
            currentFontName = attr.GetFont().GetFaceName();

        // Don't set the initial font in the dialog (so the user is choosing
        // 'normal text', i.e. the current font) but do tell the dialog
        // what 'normal text' is.

        wxSymbolPickerDialog dlg(wxT("*"), wxEmptyString, currentFontName, this);

        if (dlg.ShowModal() == wxID_OK)
        {
            if (dlg.HasSelection())
            {
                long insertionPoint = ctrl->GetInsertionPoint();

                ctrl->WriteText(dlg.GetSymbol());

                if (!dlg.UseNormalFont())
                {
                    wxFont font(attr.GetFont());
                    font.SetFaceName(dlg.GetFontName());
                    attr.SetFont(font);
                    ctrl->SetStyle(insertionPoint, insertionPoint+1, attr);
                }
            }
        }

Derived from

wxDialog

Include files

<wx/richtext/richtextsymboldlg.h>

Data structures

Members

wxSymbolPickerDialog::wxSymbolPickerDialog
wxSymbolPickerDialog::Create
wxSymbolPickerDialog::GetFontName
wxSymbolPickerDialog::GetFromUnicode
wxSymbolPickerDialog::GetNormalTextFontName
wxSymbolPickerDialog::GetSymbol
wxSymbolPickerDialog::GetSymbolChar
wxSymbolPickerDialog::HasSelection
wxSymbolPickerDialog::SetFontName
wxSymbolPickerDialog::SetFromUnicode
wxSymbolPickerDialog::SetNormalTextFontName
wxSymbolPickerDialog::SetSymbol
wxSymbolPickerDialog::SetUnicodeMode
wxSymbolPickerDialog::UseNormalFont

### wxSymbolPickerDialog::wxSymbolPickerDialog

wxSymbolPickerDialog(const wxString& symbol, const wxString& initialFont, const wxString& normalTextFont, wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Symbols"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER|wxCLOSE_BOX)

wxSymbolPickerDialog()

Constructors.

Parameters

symbol

The initial symbol to show. Specify a single character in a string, or an empty string.

initialFont

The initial font to be displayed in the font list. If empty, the item normal text will be selected.

normalTextFont

The font the dialog will use to display the symbols if the initial font is empty.

parent

The dialog's parent.

id

The dialog's identifier.

title

The dialog's caption.

pos

The dialog's position.

size

The dialog's size.

style

The dialog's window style.

### wxSymbolPickerDialog::Create

bool Create(const wxString& symbol, const wxString& initialFont, const wxString& normalTextFont, wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Symbols"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER|wxCLOSE_BOX)

Creation: see the constructor for details about the parameters.

### wxSymbolPickerDialog::GetFontName

wxString GetFontName() const

Returns the font name (the font reflected in the font list).

### wxSymbolPickerDialog::GetFromUnicode

bool GetFromUnicode() const

Returns `true` if the dialog is showing the full range of Unicode characters.

### wxSymbolPickerDialog::GetNormalTextFontName

wxString GetNormalTextFontName() const

Gets the font name used for displaying symbols in the absence of a selected font.

### wxSymbolPickerDialog::GetSymbol

wxString GetSymbol() const

Gets the current or initial symbol as a string.

### wxSymbolPickerDialog::GetSymbolChar

int GetSymbolChar() const

Gets the selected symbol character as an integer.

### wxSymbolPickerDialog::HasSelection

bool HasSelection() const

Returns `true` if a symbol is selected.

### wxSymbolPickerDialog::SetFontName

void SetFontName(const wxString& value)

Sets the initial/selected font name.

### wxSymbolPickerDialog::SetFromUnicode

void SetFromUnicode(bool value)

Sets the internal flag indicating that the full Unicode range should be displayed.

### wxSymbolPickerDialog::SetNormalTextFontName

void SetNormalTextFontName(const wxString& value)

Sets the name of the font to be used in the absence of a selected font.

### wxSymbolPickerDialog::SetSymbol

void SetSymbol(const wxString& value)

Sets the symbol as a one or zero character string.

### wxSymbolPickerDialog::SetUnicodeMode

void SetUnicodeMode(bool unicodeMode)

Sets Unicode display mode.

### wxSymbolPickerDialog::UseNormalFont

bool UseNormalFont() const

Returns true if the has specified normal text - that is, there is no selected font.