]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/textctrl.h
common event code
[wxWidgets.git] / include / wx / textctrl.h
index d92157292a4ee0c367b42d922e778bd5dca2d568..a3ad96f2d8b3cc63aa7ec8c36833fd9563890114 100644 (file)
@@ -161,96 +161,108 @@ enum wxTextAttrAlignment
 };
 
 // Flags to indicate which attributes are being applied
-
-#define wxTEXT_ATTR_TEXT_COLOUR             0x00000001
-#define wxTEXT_ATTR_BACKGROUND_COLOUR       0x00000002
-#define wxTEXT_ATTR_FONT_FACE               0x00000004
-#define wxTEXT_ATTR_FONT_SIZE               0x00000008
-#define wxTEXT_ATTR_FONT_WEIGHT             0x00000010
-#define wxTEXT_ATTR_FONT_ITALIC             0x00000020
-#define wxTEXT_ATTR_FONT_UNDERLINE          0x00000040
-#define wxTEXT_ATTR_FONT_ENCODING           0x02000000
-#define wxTEXT_ATTR_FONT \
-  ( wxTEXT_ATTR_FONT_FACE | wxTEXT_ATTR_FONT_SIZE | wxTEXT_ATTR_FONT_WEIGHT | \
-    wxTEXT_ATTR_FONT_ITALIC | wxTEXT_ATTR_FONT_UNDERLINE | wxTEXT_ATTR_FONT_ENCODING )
-#define wxTEXT_ATTR_ALIGNMENT               0x00000080
-#define wxTEXT_ATTR_LEFT_INDENT             0x00000100
-#define wxTEXT_ATTR_RIGHT_INDENT            0x00000200
-#define wxTEXT_ATTR_TABS                    0x00000400
-
-#define wxTEXT_ATTR_PARA_SPACING_AFTER      0x00000800
-#define wxTEXT_ATTR_PARA_SPACING_BEFORE     0x00001000
-#define wxTEXT_ATTR_LINE_SPACING            0x00002000
-#define wxTEXT_ATTR_CHARACTER_STYLE_NAME    0x00004000
-#define wxTEXT_ATTR_PARAGRAPH_STYLE_NAME    0x00008000
-#define wxTEXT_ATTR_LIST_STYLE_NAME         0x00010000
-#define wxTEXT_ATTR_BULLET_STYLE            0x00020000
-#define wxTEXT_ATTR_BULLET_NUMBER           0x00040000
-#define wxTEXT_ATTR_BULLET_TEXT             0x00080000
-#define wxTEXT_ATTR_BULLET_NAME             0x00100000
-#define wxTEXT_ATTR_URL                     0x00200000
-#define wxTEXT_ATTR_PAGE_BREAK              0x00400000
-#define wxTEXT_ATTR_EFFECTS                 0x00800000
-#define wxTEXT_ATTR_OUTLINE_LEVEL           0x01000000
-
-/*!
- * Character and paragraph combined styles
- */
-
-#define wxTEXT_ATTR_CHARACTER (wxTEXT_ATTR_FONT|wxTEXT_ATTR_FONT_ENCODING|wxTEXT_ATTR_EFFECTS|wxTEXT_ATTR_BACKGROUND_COLOUR|wxTEXT_ATTR_TEXT_COLOUR|wxTEXT_ATTR_CHARACTER_STYLE_NAME|wxTEXT_ATTR_URL)
-
-#define wxTEXT_ATTR_PARAGRAPH (wxTEXT_ATTR_ALIGNMENT|wxTEXT_ATTR_LEFT_INDENT|wxTEXT_ATTR_RIGHT_INDENT|wxTEXT_ATTR_TABS|\
-    wxTEXT_ATTR_PARA_SPACING_BEFORE|wxTEXT_ATTR_PARA_SPACING_AFTER|wxTEXT_ATTR_LINE_SPACING|\
-    wxTEXT_ATTR_BULLET_STYLE|wxTEXT_ATTR_BULLET_NUMBER|wxTEXT_ATTR_BULLET_TEXT|wxTEXT_ATTR_BULLET_NAME|\
-    wxTEXT_ATTR_PARAGRAPH_STYLE_NAME|wxTEXT_ATTR_LIST_STYLE_NAME|wxTEXT_ATTR_OUTLINE_LEVEL)
-
-#define wxTEXT_ATTR_ALL (wxTEXT_ATTR_CHARACTER|wxTEXT_ATTR_PARAGRAPH)
+enum wxTextAttrFlags
+{
+    wxTEXT_ATTR_TEXT_COLOUR          = 0x00000001,
+    wxTEXT_ATTR_BACKGROUND_COLOUR    = 0x00000002,
+    wxTEXT_ATTR_FONT_FACE            = 0x00000004,
+    wxTEXT_ATTR_FONT_SIZE            = 0x00000008,
+    wxTEXT_ATTR_FONT_WEIGHT          = 0x00000010,
+    wxTEXT_ATTR_FONT_ITALIC          = 0x00000020,
+    wxTEXT_ATTR_FONT_UNDERLINE       = 0x00000040,
+    wxTEXT_ATTR_FONT_ENCODING        = 0x02000000,
+    wxTEXT_ATTR_FONT = \
+        ( wxTEXT_ATTR_FONT_FACE | wxTEXT_ATTR_FONT_SIZE | wxTEXT_ATTR_FONT_WEIGHT | \
+            wxTEXT_ATTR_FONT_ITALIC | wxTEXT_ATTR_FONT_UNDERLINE | wxTEXT_ATTR_FONT_ENCODING ),
+
+    wxTEXT_ATTR_ALIGNMENT            = 0x00000080,
+    wxTEXT_ATTR_LEFT_INDENT          = 0x00000100,
+    wxTEXT_ATTR_RIGHT_INDENT         = 0x00000200,
+    wxTEXT_ATTR_TABS                 = 0x00000400,
+
+    wxTEXT_ATTR_PARA_SPACING_AFTER   = 0x00000800,
+    wxTEXT_ATTR_PARA_SPACING_BEFORE  = 0x00001000,
+    wxTEXT_ATTR_LINE_SPACING         = 0x00002000,
+    wxTEXT_ATTR_CHARACTER_STYLE_NAME = 0x00004000,
+    wxTEXT_ATTR_PARAGRAPH_STYLE_NAME = 0x00008000,
+    wxTEXT_ATTR_LIST_STYLE_NAME      = 0x00010000,
+    wxTEXT_ATTR_BULLET_STYLE         = 0x00020000,
+    wxTEXT_ATTR_BULLET_NUMBER        = 0x00040000,
+    wxTEXT_ATTR_BULLET_TEXT          = 0x00080000,
+    wxTEXT_ATTR_BULLET_NAME          = 0x00100000,
+    wxTEXT_ATTR_URL                  = 0x00200000,
+    wxTEXT_ATTR_PAGE_BREAK           = 0x00400000,
+    wxTEXT_ATTR_EFFECTS              = 0x00800000,
+    wxTEXT_ATTR_OUTLINE_LEVEL        = 0x01000000,
+
+    /*!
+    * Character and paragraph combined styles
+    */
+
+    wxTEXT_ATTR_CHARACTER = \
+        (wxTEXT_ATTR_FONT|wxTEXT_ATTR_FONT_ENCODING|wxTEXT_ATTR_EFFECTS| \
+            wxTEXT_ATTR_BACKGROUND_COLOUR|wxTEXT_ATTR_TEXT_COLOUR|wxTEXT_ATTR_CHARACTER_STYLE_NAME|wxTEXT_ATTR_URL),
+
+    wxTEXT_ATTR_PARAGRAPH = \
+        (wxTEXT_ATTR_ALIGNMENT|wxTEXT_ATTR_LEFT_INDENT|wxTEXT_ATTR_RIGHT_INDENT|wxTEXT_ATTR_TABS|\
+            wxTEXT_ATTR_PARA_SPACING_BEFORE|wxTEXT_ATTR_PARA_SPACING_AFTER|wxTEXT_ATTR_LINE_SPACING|\
+            wxTEXT_ATTR_BULLET_STYLE|wxTEXT_ATTR_BULLET_NUMBER|wxTEXT_ATTR_BULLET_TEXT|wxTEXT_ATTR_BULLET_NAME|\
+            wxTEXT_ATTR_PARAGRAPH_STYLE_NAME|wxTEXT_ATTR_LIST_STYLE_NAME|wxTEXT_ATTR_OUTLINE_LEVEL),
+
+    wxTEXT_ATTR_ALL = (wxTEXT_ATTR_CHARACTER|wxTEXT_ATTR_PARAGRAPH)
+};
 
 /*!
  * Styles for wxTextAttr::SetBulletStyle
  */
-
-#define wxTEXT_ATTR_BULLET_STYLE_NONE               0x00000000
-#define wxTEXT_ATTR_BULLET_STYLE_ARABIC             0x00000001
-#define wxTEXT_ATTR_BULLET_STYLE_LETTERS_UPPER      0x00000002
-#define wxTEXT_ATTR_BULLET_STYLE_LETTERS_LOWER      0x00000004
-#define wxTEXT_ATTR_BULLET_STYLE_ROMAN_UPPER        0x00000008
-#define wxTEXT_ATTR_BULLET_STYLE_ROMAN_LOWER        0x00000010
-#define wxTEXT_ATTR_BULLET_STYLE_SYMBOL             0x00000020
-#define wxTEXT_ATTR_BULLET_STYLE_BITMAP             0x00000040
-#define wxTEXT_ATTR_BULLET_STYLE_PARENTHESES        0x00000080
-#define wxTEXT_ATTR_BULLET_STYLE_PERIOD             0x00000100
-#define wxTEXT_ATTR_BULLET_STYLE_STANDARD           0x00000200
-#define wxTEXT_ATTR_BULLET_STYLE_RIGHT_PARENTHESIS  0x00000400
-#define wxTEXT_ATTR_BULLET_STYLE_OUTLINE            0x00000800
-
-#define wxTEXT_ATTR_BULLET_STYLE_ALIGN_LEFT         0x00000000
-#define wxTEXT_ATTR_BULLET_STYLE_ALIGN_RIGHT        0x00001000
-#define wxTEXT_ATTR_BULLET_STYLE_ALIGN_CENTRE       0x00002000
+enum wxTextAttrBulletStyle
+{
+    wxTEXT_ATTR_BULLET_STYLE_NONE            = 0x00000000,
+    wxTEXT_ATTR_BULLET_STYLE_ARABIC          = 0x00000001,
+    wxTEXT_ATTR_BULLET_STYLE_LETTERS_UPPER   = 0x00000002,
+    wxTEXT_ATTR_BULLET_STYLE_LETTERS_LOWER   = 0x00000004,
+    wxTEXT_ATTR_BULLET_STYLE_ROMAN_UPPER     = 0x00000008,
+    wxTEXT_ATTR_BULLET_STYLE_ROMAN_LOWER     = 0x00000010,
+    wxTEXT_ATTR_BULLET_STYLE_SYMBOL          = 0x00000020,
+    wxTEXT_ATTR_BULLET_STYLE_BITMAP          = 0x00000040,
+    wxTEXT_ATTR_BULLET_STYLE_PARENTHESES     = 0x00000080,
+    wxTEXT_ATTR_BULLET_STYLE_PERIOD          = 0x00000100,
+    wxTEXT_ATTR_BULLET_STYLE_STANDARD        = 0x00000200,
+    wxTEXT_ATTR_BULLET_STYLE_RIGHT_PARENTHESIS = 0x00000400,
+    wxTEXT_ATTR_BULLET_STYLE_OUTLINE         = 0x00000800,
+
+    wxTEXT_ATTR_BULLET_STYLE_ALIGN_LEFT      = 0x00000000,
+    wxTEXT_ATTR_BULLET_STYLE_ALIGN_RIGHT     = 0x00001000,
+    wxTEXT_ATTR_BULLET_STYLE_ALIGN_CENTRE    = 0x00002000
+};
 
 /*!
  * Styles for wxTextAttr::SetTextEffects
  */
-
-#define wxTEXT_ATTR_EFFECT_NONE                     0x00000000
-#define wxTEXT_ATTR_EFFECT_CAPITALS                 0x00000001
-#define wxTEXT_ATTR_EFFECT_SMALL_CAPITALS           0x00000002
-#define wxTEXT_ATTR_EFFECT_STRIKETHROUGH            0x00000004
-#define wxTEXT_ATTR_EFFECT_DOUBLE_STRIKETHROUGH     0x00000008
-#define wxTEXT_ATTR_EFFECT_SHADOW                   0x00000010
-#define wxTEXT_ATTR_EFFECT_EMBOSS                   0x00000020
-#define wxTEXT_ATTR_EFFECT_OUTLINE                  0x00000040
-#define wxTEXT_ATTR_EFFECT_ENGRAVE                  0x00000080
-#define wxTEXT_ATTR_EFFECT_SUPERSCRIPT              0x00000100
-#define wxTEXT_ATTR_EFFECT_SUBSCRIPT                0x00000200
+enum wxTextAttrEffects
+{
+    wxTEXT_ATTR_EFFECT_NONE                  = 0x00000000,
+    wxTEXT_ATTR_EFFECT_CAPITALS              = 0x00000001,
+    wxTEXT_ATTR_EFFECT_SMALL_CAPITALS        = 0x00000002,
+    wxTEXT_ATTR_EFFECT_STRIKETHROUGH         = 0x00000004,
+    wxTEXT_ATTR_EFFECT_DOUBLE_STRIKETHROUGH  = 0x00000008,
+    wxTEXT_ATTR_EFFECT_SHADOW                = 0x00000010,
+    wxTEXT_ATTR_EFFECT_EMBOSS                = 0x00000020,
+    wxTEXT_ATTR_EFFECT_OUTLINE               = 0x00000040,
+    wxTEXT_ATTR_EFFECT_ENGRAVE               = 0x00000080,
+    wxTEXT_ATTR_EFFECT_SUPERSCRIPT           = 0x00000100,
+    wxTEXT_ATTR_EFFECT_SUBSCRIPT             = 0x00000200
+};
 
 /*!
  * Line spacing values
  */
-
-#define wxTEXT_ATTR_LINE_SPACING_NORMAL         10
-#define wxTEXT_ATTR_LINE_SPACING_HALF           15
-#define wxTEXT_ATTR_LINE_SPACING_TWICE          20
+enum wxTextAttrLineSpacing
+{
+    wxTEXT_ATTR_LINE_SPACING_NORMAL         = 10,
+    wxTEXT_ATTR_LINE_SPACING_HALF           = 15,
+    wxTEXT_ATTR_LINE_SPACING_TWICE          = 20
+};
 
 // ----------------------------------------------------------------------------
 // wxTextAttr: a structure containing the visual attributes of a text
@@ -345,6 +357,8 @@ public:
     const wxString& GetListStyleName() const { return m_listStyleName; }
     int GetParagraphSpacingAfter() const { return m_paragraphSpacingAfter; }
     int GetParagraphSpacingBefore() const { return m_paragraphSpacingBefore; }
+
+    // TODO: should return the relative wxTextAttr* enumeration values
     int GetLineSpacing() const { return m_lineSpacing; }
     int GetBulletStyle() const { return m_bulletStyle; }
     int GetBulletNumber() const { return m_bulletNumber; }
@@ -705,19 +719,26 @@ protected:
 // wxTextCtrl events
 // ----------------------------------------------------------------------------
 
-extern WXDLLIMPEXP_CORE const wxEventType wxEVT_COMMAND_TEXT_UPDATED;
-extern WXDLLIMPEXP_CORE const wxEventType wxEVT_COMMAND_TEXT_ENTER;
-extern WXDLLIMPEXP_CORE const wxEventType wxEVT_COMMAND_TEXT_URL;
-extern WXDLLIMPEXP_CORE const wxEventType wxEVT_COMMAND_TEXT_MAXLEN;
+class WXDLLIMPEXP_FWD_CORE wxTextUrlEvent;
+
+wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_CORE, wxEVT_COMMAND_TEXT_UPDATED, wxCommandEvent)
+wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_CORE, wxEVT_COMMAND_TEXT_ENTER, wxCommandEvent)
+wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_CORE, wxEVT_COMMAND_TEXT_URL, wxTextUrlEvent)
+wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_CORE, wxEVT_COMMAND_TEXT_MAXLEN, wxCommandEvent)
 
 class WXDLLIMPEXP_CORE wxTextUrlEvent : public wxCommandEvent
 {
 public:
     wxTextUrlEvent(int winid, const wxMouseEvent& evtMouse,
                    long start, long end)
-        : wxCommandEvent(wxEVT_COMMAND_TEXT_URL, winid)
-        , m_evtMouse(evtMouse), m_start(start), m_end(end)
+        : wxCommandEvent(wxEVT_COMMAND_TEXT_URL, winid),
+          m_evtMouse(evtMouse), m_start(start), m_end(end)
         { }
+    wxTextUrlEvent(const wxTextUrlEvent& event)
+        : wxCommandEvent(event),
+          m_evtMouse(event.m_evtMouse),
+          m_start(event.m_start),
+          m_end(event.m_end) { }
 
     // get the mouse event which happend over the URL
     const wxMouseEvent& GetMouseEvent() const { return m_evtMouse; }
@@ -728,6 +749,8 @@ public:
     // get the end of the URL
     long GetURLEnd() const { return m_end; }
 
+    virtual wxEvent *Clone() const { return new wxTextUrlEvent(*this); }
+
 protected:
     // the corresponding mouse event
     wxMouseEvent m_evtMouse;
@@ -737,7 +760,7 @@ protected:
          m_end;
 
 private:
-    DECLARE_DYNAMIC_CLASS_NO_COPY(wxTextUrlEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxTextUrlEvent)
 
 public:
     // for wxWin RTTI only, don't use
@@ -748,7 +771,7 @@ typedef void (wxEvtHandler::*wxTextUrlEventFunction)(wxTextUrlEvent&);
 
 #define wxTextEventHandler(func) wxCommandEventHandler(func)
 #define wxTextUrlEventHandler(func) \
-    (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxTextUrlEventFunction, &func)
+    wxEVENT_HANDLER_CAST(wxTextUrlEventFunction, func)
 
 #define wx__DECLARE_TEXTEVT(evt, id, fn) \
     wx__DECLARE_EVT1(wxEVT_COMMAND_TEXT_ ## evt, id, wxTextEventHandler(fn))