]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/event.h
added AppendText method, now used by operator <<
[wxWidgets.git] / include / wx / event.h
index e9eb695cd2889ac2c15a6e1224aff1ee0dae9336..9ab216b3d5335b1e206ad32ffad7184251353182 100644 (file)
@@ -50,6 +50,9 @@ const wxEventType wxEVT_COMMAND_COMBOBOX_SELECTED =         wxEVT_FIRST + 15;
 const wxEventType wxEVT_COMMAND_TOOL_RCLICKED =             wxEVT_FIRST + 16;
 const wxEventType wxEVT_COMMAND_TOOL_ENTER =                wxEVT_FIRST + 17;
 
+/* Sockets send events, too */
+const wxEventType wxEVT_SOCKET =                            wxEVT_FIRST + 50;
+
 /* Mouse event types */
 const wxEventType wxEVT_LEFT_DOWN =                         wxEVT_FIRST + 100;
 const wxEventType wxEVT_LEFT_UP =                           wxEVT_FIRST + 101;
@@ -66,7 +69,7 @@ const wxEventType wxEVT_RIGHT_DCLICK =                      wxEVT_FIRST + 111;
 const wxEventType wxEVT_SET_FOCUS =                         wxEVT_FIRST + 112;
 const wxEventType wxEVT_KILL_FOCUS =                        wxEVT_FIRST + 113;
 
- // Non-client mouse events
+ /* Non-client mouse events */
 const wxEventType wxEVT_NC_LEFT_DOWN =                      wxEVT_FIRST + 200;
 const wxEventType wxEVT_NC_LEFT_UP =                        wxEVT_FIRST + 201;
 const wxEventType wxEVT_NC_MIDDLE_DOWN =                    wxEVT_FIRST + 202;
@@ -82,7 +85,10 @@ const wxEventType wxEVT_NC_RIGHT_DCLICK =                   wxEVT_FIRST + 211;
 
 /* Character input event type  */
 const wxEventType wxEVT_CHAR =                              wxEVT_FIRST + 212;
-const wxEventType wxEVT_NAVIGATION_KEY =                    wxEVT_FIRST + 213;
+const wxEventType wxEVT_CHAR_HOOK =                         wxEVT_FIRST + 213;
+const wxEventType wxEVT_NAVIGATION_KEY =                    wxEVT_FIRST + 214;
+const wxEventType wxEVT_KEY_DOWN =                          wxEVT_FIRST + 215;
+const wxEventType wxEVT_KEY_UP =                            wxEVT_FIRST + 216;
 
  /*
   * Scrollbar event identifiers
@@ -102,8 +108,6 @@ const wxEventType wxEVT_END_SESSION =                       wxEVT_FIRST + 403;
 const wxEventType wxEVT_QUERY_END_SESSION =                 wxEVT_FIRST + 404;
 const wxEventType wxEVT_ACTIVATE_APP =                      wxEVT_FIRST + 405;
 const wxEventType wxEVT_POWER =                             wxEVT_FIRST + 406;
-const wxEventType wxEVT_CHAR_HOOK =                         wxEVT_FIRST + 407;
-const wxEventType wxEVT_KEY_UP =                            wxEVT_FIRST + 408;
 const wxEventType wxEVT_ACTIVATE =                          wxEVT_FIRST + 409;
 const wxEventType wxEVT_CREATE =                            wxEVT_FIRST + 410;
 const wxEventType wxEVT_DESTROY =                           wxEVT_FIRST + 411;
@@ -139,8 +143,7 @@ const wxEventType wxEVT_UPDATE_UI =                         wxEVT_FIRST + 439;
 const wxEventType wxEVT_END_PROCESS =                       wxEVT_FIRST + 440;
 
  /* Generic command events */
- // Note: a click is a higher-level event
- // than button down/up
+ /* Note: a click is a higher-level event than button down/up */
 const wxEventType wxEVT_COMMAND_LEFT_CLICK =                wxEVT_FIRST + 500;
 const wxEventType wxEVT_COMMAND_LEFT_DCLICK =               wxEVT_FIRST + 501;
 const wxEventType wxEVT_COMMAND_RIGHT_CLICK =               wxEVT_FIRST + 502;
@@ -164,6 +167,7 @@ const wxEventType wxEVT_COMMAND_TREE_ITEM_COLLAPSING =      wxEVT_FIRST + 610;
 const wxEventType wxEVT_COMMAND_TREE_SEL_CHANGED =          wxEVT_FIRST + 611;
 const wxEventType wxEVT_COMMAND_TREE_SEL_CHANGING =         wxEVT_FIRST + 612;
 const wxEventType wxEVT_COMMAND_TREE_KEY_DOWN =             wxEVT_FIRST + 613;
+const wxEventType wxEVT_COMMAND_TREE_ITEM_ACTIVATED =       wxEVT_FIRST + 614;
 
  /* List control event types */
 const wxEventType wxEVT_COMMAND_LIST_BEGIN_DRAG =           wxEVT_FIRST + 700;
@@ -179,16 +183,26 @@ const wxEventType wxEVT_COMMAND_LIST_ITEM_DESELECTED =      wxEVT_FIRST + 709;
 const wxEventType wxEVT_COMMAND_LIST_KEY_DOWN =             wxEVT_FIRST + 710;
 const wxEventType wxEVT_COMMAND_LIST_INSERT_ITEM =          wxEVT_FIRST + 711;
 const wxEventType wxEVT_COMMAND_LIST_COL_CLICK =            wxEVT_FIRST + 712;
+const wxEventType wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK =     wxEVT_FIRST + 713;
+const wxEventType wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK =    wxEVT_FIRST + 714;
+const wxEventType wxEVT_COMMAND_LIST_ITEM_ACTIVATED =       wxEVT_FIRST + 715;
 
  /* Tab and notebook control event types */
 const wxEventType wxEVT_COMMAND_TAB_SEL_CHANGED =           wxEVT_FIRST + 800;
 const wxEventType wxEVT_COMMAND_TAB_SEL_CHANGING =          wxEVT_FIRST + 801;
+
+#if defined(__BORLANDC__) && defined(__WIN16__)
+/* For 16-bit BC++, these 2 are identical (truncated) */
+const wxEventType wxEVT_COMMAND_NB_PAGE_CHANGED =     wxEVT_FIRST + 802;
+const wxEventType wxEVT_COMMAND_NB_PAGE_CHANGING =    wxEVT_FIRST + 803;
+#else
 const wxEventType wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED =     wxEVT_FIRST + 802;
 const wxEventType wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING =    wxEVT_FIRST + 803;
+#endif
 
 const wxEventType wxEVT_USER_FIRST =                        wxEVT_FIRST + 2000;
 
-// Compatibility
+/* Compatibility */
 
 #if WXWIN_COMPATIBILITY
 
@@ -345,6 +359,26 @@ class WXDLLEXPORT wxCommandEvent: public wxEvent
   wxClientData*     m_clientObject;  // Arbitrary client object
 };
 
+// this class adds a possibility to react (from the user) code to a control
+// notification: allow or veto the operation being reported.
+class WXDLLEXPORT wxNotifyEvent : public wxCommandEvent
+{
+public:
+    wxNotifyEvent(wxEventType commandType = wxEVT_NULL, int id = 0)
+                : wxCommandEvent(commandType, id) { m_bAllow = TRUE; }
+
+    // veto the operation (by default it's allowed)
+    void Veto() { m_bAllow = FALSE; }
+
+    // for implementation code only: is the operation allowed?
+    bool IsAllowed() const { return m_bAllow; }
+
+private:
+    bool m_bAllow;
+
+    DECLARE_DYNAMIC_CLASS(wxNotifyEvent)
+};
+
 // Scroll event class
 /*
  wxEVT_SCROLL_TOP
@@ -456,7 +490,7 @@ class WXDLLEXPORT wxMouseEvent: public wxEvent
   inline bool RightIsDown(void) const { return m_rightDown; }
 
   // True if a button is down and the mouse is moving
-  inline bool Dragging(void) const { return ((m_eventType == wxEVENT_TYPE_MOTION) && (LeftIsDown() || MiddleIsDown() || RightIsDown())); }
+  inline bool Dragging(void) const { return ((m_eventType == wxEVT_MOTION) && (LeftIsDown() || MiddleIsDown() || RightIsDown())); }
 
   // True if the mouse is moving, and no button is down
   inline bool Moving(void) const { return (m_eventType == wxEVT_MOTION); }
@@ -504,6 +538,7 @@ public:
 /*
  wxEVT_CHAR
  wxEVT_CHAR_HOOK
+ wxEVT_KEY_DOWN
  wxEVT_KEY_UP
  */
 
@@ -1051,11 +1086,16 @@ class WXDLLEXPORT wxEvtHandler: public wxObject
 
   virtual bool ProcessEvent(wxEvent& event);
   virtual bool SearchEventTable(wxEventTable& table, wxEvent& event);
-  
-  void Connect( int id, int lastId,
-                int eventType,
+
+  // Dynamic association of a member function handler with the event handler, id and event type
+  void Connect( int id, int lastId, wxEventType eventType,
                wxObjectEventFunction func,
                wxObject *userData = (wxObject *) NULL );
+
+  // Convenience function: take just one id
+  inline void Connect( int id, wxEventType eventType,
+               wxObjectEventFunction func,
+               wxObject *userData = (wxObject *) NULL ) { Connect(id, -1, eventType, func, userData); }
                
   bool SearchDynamicEventTable( wxEvent& event );
 
@@ -1115,7 +1155,7 @@ const wxEventTable theClass::sm_eventTable =\
 const wxEventTableEntry theClass::sm_eventTableEntries[] = { \
 
 #define END_EVENT_TABLE() \
- { 0, 0, 0, 0 } };
+ { 0, 0, 0, 0, 0 } };
  
 /*
  * Event table macros
@@ -1134,6 +1174,8 @@ const wxEventTableEntry theClass::sm_eventTableEntries[] = { \
 #define EVT_PAINT(func)  { wxEVT_PAINT, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxPaintEventFunction) & func, (wxObject *) NULL },
 #define EVT_ERASE_BACKGROUND(func)  { wxEVT_ERASE_BACKGROUND, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxEraseEventFunction) & func, (wxObject *) NULL },
 #define EVT_CHAR(func)  { wxEVT_CHAR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCharEventFunction) & func, (wxObject *) NULL },
+#define EVT_KEY_DOWN(func)  { wxEVT_KEY_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCharEventFunction) & func, (wxObject *) NULL },
+#define EVT_KEY_UP(func)  { wxEVT_KEY_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCharEventFunction) & func, (wxObject *) NULL },
 #define EVT_CHAR_HOOK(func)  { wxEVT_CHAR_HOOK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCharEventFunction) & func, NULL },
 #define EVT_MENU_HIGHLIGHT(id, func)  { wxEVT_MENU_HIGHLIGHT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxMenuEventFunction) & func, (wxObject *) NULL },
 #define EVT_MENU_HIGHLIGHT_ALL(func)  { wxEVT_MENU_HIGHLIGHT, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMenuEventFunction) & func, (wxObject *) NULL },
@@ -1183,8 +1225,8 @@ const wxEventTableEntry theClass::sm_eventTableEntries[] = { \
  { wxEVT_LEAVE_WINDOW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL },
 
 // EVT_COMMAND
-#define EVT_COMMAND(id, cmd, fn)  { cmd, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
-#define EVT_COMMAND_RANGE(id1, id2, cmd, fn)  { cmd, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
+#define EVT_COMMAND(id, event, fn)  { event, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
+#define EVT_COMMAND_RANGE(id1, id2, event, fn)  { eventId, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
 
 // Scrolling
 #define EVT_SCROLL(func) \