| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: wx/richtext/richtextsymboldlg.h
- // Purpose:
- // Author: Julian Smart
- // Modified by:
- // Created: 10/5/2006 3:11:58 PM
- // Copyright: (c) Julian Smart
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- #ifndef _RICHTEXTSYMBOLDLG_H_
- #define _RICHTEXTSYMBOLDLG_H_
- /*!
- * Includes
- */
- #include "wx/richtext/richtextuicustomization.h"
- #include "wx/dialog.h"
- #include "wx/vscroll.h"
- /*!
- * Forward declarations
- */
- class WXDLLIMPEXP_FWD_CORE wxStaticText;
- class WXDLLIMPEXP_FWD_CORE wxComboBox;
- class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
- ////@begin forward declarations
- class wxSymbolListCtrl;
- class wxStdDialogButtonSizer;
- ////@end forward declarations
- // __UNICODE__ is a symbol used by DialogBlocks-generated code.
- #ifndef __UNICODE__
- #if wxUSE_UNICODE
- #define __UNICODE__
- #endif
- #endif
- /*!
- * Symbols
- */
- #define SYMBOL_WXSYMBOLPICKERDIALOG_STYLE (wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER|wxCLOSE_BOX)
- #define SYMBOL_WXSYMBOLPICKERDIALOG_TITLE wxGetTranslation("Symbols")
- #define SYMBOL_WXSYMBOLPICKERDIALOG_IDNAME ID_SYMBOLPICKERDIALOG
- #define SYMBOL_WXSYMBOLPICKERDIALOG_SIZE wxSize(400, 300)
- #define SYMBOL_WXSYMBOLPICKERDIALOG_POSITION wxDefaultPosition
- /*!
- * wxSymbolPickerDialog class declaration
- */
- class WXDLLIMPEXP_RICHTEXT wxSymbolPickerDialog: public wxDialog
- {
- DECLARE_DYNAMIC_CLASS( wxSymbolPickerDialog )
- DECLARE_EVENT_TABLE()
- DECLARE_HELP_PROVISION()
- public:
- /// Constructors
- wxSymbolPickerDialog( );
- wxSymbolPickerDialog( const wxString& symbol, const wxString& fontName, const wxString& normalTextFont,
- 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 );
- /// Creation
- bool Create( const wxString& symbol, const wxString& fontName, const wxString& normalTextFont,
- 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 );
- /// Initialises members variables
- void Init();
- /// Creates the controls and sizers
- void CreateControls();
- /// Update the display
- void UpdateSymbolDisplay(bool updateSymbolList = true, bool showAtSubset = true);
- /// Respond to symbol selection
- void OnSymbolSelected( wxCommandEvent& event );
- /// Set Unicode mode
- void SetUnicodeMode(bool unicodeMode);
- /// Show at the current subset selection
- void ShowAtSubset();
- /// Get the selected symbol character
- int GetSymbolChar() const;
- /// Is there a selection?
- bool HasSelection() const { return !m_symbol.IsEmpty(); }
- /// Specifying normal text?
- bool UseNormalFont() const { return m_fontName.IsEmpty(); }
- /// Should we show tooltips?
- static bool ShowToolTips() { return sm_showToolTips; }
- /// Determines whether tooltips will be shown
- static void SetShowToolTips(bool show) { sm_showToolTips = show; }
- /// Data transfer
- virtual bool TransferDataToWindow();
- ////@begin wxSymbolPickerDialog event handler declarations
- /// wxEVT_COMBOBOX event handler for ID_SYMBOLPICKERDIALOG_FONT
- void OnFontCtrlSelected( wxCommandEvent& event );
- #if defined(__UNICODE__)
- /// wxEVT_COMBOBOX event handler for ID_SYMBOLPICKERDIALOG_SUBSET
- void OnSubsetSelected( wxCommandEvent& event );
- /// wxEVT_UPDATE_UI event handler for ID_SYMBOLPICKERDIALOG_SUBSET
- void OnSymbolpickerdialogSubsetUpdate( wxUpdateUIEvent& event );
- #endif
- #if defined(__UNICODE__)
- /// wxEVT_COMBOBOX event handler for ID_SYMBOLPICKERDIALOG_FROM
- void OnFromUnicodeSelected( wxCommandEvent& event );
- #endif
- /// wxEVT_UPDATE_UI event handler for wxID_OK
- void OnOkUpdate( wxUpdateUIEvent& event );
- /// wxEVT_BUTTON event handler for wxID_HELP
- void OnHelpClick( wxCommandEvent& event );
- /// wxEVT_UPDATE_UI event handler for wxID_HELP
- void OnHelpUpdate( wxUpdateUIEvent& event );
- ////@end wxSymbolPickerDialog event handler declarations
- ////@begin wxSymbolPickerDialog member function declarations
- wxString GetFontName() const { return m_fontName ; }
- void SetFontName(wxString value) { m_fontName = value ; }
- bool GetFromUnicode() const { return m_fromUnicode ; }
- void SetFromUnicode(bool value) { m_fromUnicode = value ; }
- wxString GetNormalTextFontName() const { return m_normalTextFontName ; }
- void SetNormalTextFontName(wxString value) { m_normalTextFontName = value ; }
- wxString GetSymbol() const { return m_symbol ; }
- void SetSymbol(wxString value) { m_symbol = value ; }
- /// Retrieves bitmap resources
- wxBitmap GetBitmapResource( const wxString& name );
- /// Retrieves icon resources
- wxIcon GetIconResource( const wxString& name );
- ////@end wxSymbolPickerDialog member function declarations
- ////@begin wxSymbolPickerDialog member variables
- wxComboBox* m_fontCtrl;
- #if defined(__UNICODE__)
- wxComboBox* m_subsetCtrl;
- #endif
- wxSymbolListCtrl* m_symbolsCtrl;
- wxStaticText* m_symbolStaticCtrl;
- wxTextCtrl* m_characterCodeCtrl;
- #if defined(__UNICODE__)
- wxComboBox* m_fromUnicodeCtrl;
- #endif
- wxStdDialogButtonSizer* m_stdButtonSizer;
- wxString m_fontName;
- bool m_fromUnicode;
- wxString m_normalTextFontName;
- wxString m_symbol;
- /// Control identifiers
- enum {
- ID_SYMBOLPICKERDIALOG = 10600,
- ID_SYMBOLPICKERDIALOG_FONT = 10602,
- ID_SYMBOLPICKERDIALOG_SUBSET = 10605,
- ID_SYMBOLPICKERDIALOG_LISTCTRL = 10608,
- ID_SYMBOLPICKERDIALOG_CHARACTERCODE = 10601,
- ID_SYMBOLPICKERDIALOG_FROM = 10603
- };
- ////@end wxSymbolPickerDialog member variables
- bool m_dontUpdate;
- static bool sm_showToolTips;
- };
- /*!
- * The scrolling symbol list.
- */
- class WXDLLIMPEXP_RICHTEXT wxSymbolListCtrl : public wxVScrolledWindow
- {
- public:
- // constructors and such
- // ---------------------
- // default constructor, you must call Create() later
- wxSymbolListCtrl() { Init(); }
- // normal constructor which calls Create() internally
- wxSymbolListCtrl(wxWindow *parent,
- wxWindowID id = wxID_ANY,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxString& name = wxPanelNameStr)
- {
- Init();
- (void)Create(parent, id, pos, size, style, name);
- }
- // really creates the control and sets the initial number of items in it
- // (which may be changed later with SetItemCount())
- //
- // returns true on success or false if the control couldn't be created
- bool Create(wxWindow *parent,
- wxWindowID id = wxID_ANY,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxString& name = wxPanelNameStr);
- // dtor does some internal cleanup
- virtual ~wxSymbolListCtrl();
- // accessors
- // ---------
- // set the current font
- virtual bool SetFont(const wxFont& font);
- // set Unicode/ASCII mode
- void SetUnicodeMode(bool unicodeMode);
- // get the index of the currently selected item or wxNOT_FOUND if there is no selection
- int GetSelection() const;
- // is this item selected?
- bool IsSelected(int item) const;
- // is this item the current one?
- bool IsCurrentItem(int item) const { return item == m_current; }
- // get the margins around each cell
- wxPoint GetMargins() const { return m_ptMargins; }
- // get the background colour of selected cells
- const wxColour& GetSelectionBackground() const { return m_colBgSel; }
- // operations
- // ----------
- // set the selection to the specified item, if it is wxNOT_FOUND the
- // selection is unset
- void SetSelection(int selection);
- // make this item visible
- void EnsureVisible(int item);
- // set the margins: horizontal margin is the distance between the window
- // border and the item contents while vertical margin is half of the
- // distance between items
- //
- // by default both margins are 0
- void SetMargins(const wxPoint& pt);
- void SetMargins(wxCoord x, wxCoord y) { SetMargins(wxPoint(x, y)); }
- // set the cell size
- void SetCellSize(const wxSize& sz) { m_cellSize = sz; }
- const wxSize& GetCellSize() const { return m_cellSize; }
- // change the background colour of the selected cells
- void SetSelectionBackground(const wxColour& col);
- virtual wxVisualAttributes GetDefaultAttributes() const
- {
- return GetClassDefaultAttributes(GetWindowVariant());
- }
- static wxVisualAttributes
- GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
- // Get min/max symbol values
- int GetMinSymbolValue() const { return m_minSymbolValue; }
- int GetMaxSymbolValue() const { return m_maxSymbolValue; }
- // Respond to size change
- void OnSize(wxSizeEvent& event);
- protected:
- // draws a line of symbols
- virtual void OnDrawItem(wxDC& dc, const wxRect& rect, size_t n) const;
- // gets the line height
- virtual wxCoord OnGetRowHeight(size_t line) const;
- // event handlers
- void OnPaint(wxPaintEvent& event);
- void OnKeyDown(wxKeyEvent& event);
- void OnLeftDown(wxMouseEvent& event);
- void OnLeftDClick(wxMouseEvent& event);
- // common part of all ctors
- void Init();
- // send the wxEVT_LISTBOX event
- void SendSelectedEvent();
- // change the current item (in single selection listbox it also implicitly
- // changes the selection); current may be wxNOT_FOUND in which case there
- // will be no current item any more
- //
- // return true if the current item changed, false otherwise
- bool DoSetCurrent(int current);
- // flags for DoHandleItemClick
- enum
- {
- ItemClick_Shift = 1, // item shift-clicked
- ItemClick_Ctrl = 2, // ctrl
- ItemClick_Kbd = 4 // item selected from keyboard
- };
- // common part of keyboard and mouse handling processing code
- void DoHandleItemClick(int item, int flags);
- // calculate line number from symbol value
- int SymbolValueToLineNumber(int item);
- // initialise control from current min/max values
- void SetupCtrl(bool scrollToSelection = true);
- // hit testing
- int HitTest(const wxPoint& pt);
- private:
- // the current item or wxNOT_FOUND
- int m_current;
- // margins
- wxPoint m_ptMargins;
- // the selection bg colour
- wxColour m_colBgSel;
- // double buffer
- wxBitmap* m_doubleBuffer;
- // cell size
- wxSize m_cellSize;
- // minimum and maximum symbol value
- int m_minSymbolValue;
- // minimum and maximum symbol value
- int m_maxSymbolValue;
- // number of items per line
- int m_symbolsPerLine;
- // Unicode/ASCII mode
- bool m_unicodeMode;
- DECLARE_EVENT_TABLE()
- wxDECLARE_NO_COPY_CLASS(wxSymbolListCtrl);
- DECLARE_ABSTRACT_CLASS(wxSymbolListCtrl)
- };
- #endif
- // _RICHTEXTSYMBOLDLG_H_
|