home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / include / wx / accel.h next >
C/C++ Source or Header  |  2002-05-07  |  4KB  |  137 lines

  1. ///////////////////////////////////////////////////////////////////////////////
  2. // Name:        wx/accel.h
  3. // Purpose:     wxAcceleratorEntry and wxAcceleratorTable classes
  4. // Author:      Julian Smart, Robert Roebling, Vadim Zeitlin
  5. // Modified by:
  6. // Created:     31.05.01 (extracted from other files)
  7. // RCS-ID:      $Id: accel.h,v 1.9 2002/05/07 20:40:04 GD Exp $
  8. // Copyright:   (c) wxWindows team
  9. // Licence:     wxWindows license
  10. ///////////////////////////////////////////////////////////////////////////////
  11.  
  12. #ifndef _WX_ACCEL_H_BASE_
  13. #define _WX_ACCEL_H_BASE_
  14.  
  15. #include "wx/defs.h"
  16.  
  17. #if wxUSE_ACCEL
  18.  
  19. #include "wx/object.h"
  20.  
  21. class WXDLLEXPORT wxAcceleratorTable;
  22. class WXDLLEXPORT wxMenuItem;
  23. class WXDLLEXPORT wxKeyEvent;
  24.  
  25. // ----------------------------------------------------------------------------
  26. // constants
  27. // ----------------------------------------------------------------------------
  28.  
  29. // wxAcceleratorEntry flags
  30. enum
  31. {
  32.     wxACCEL_NORMAL  = 0x0000,   // no modifiers
  33.     wxACCEL_ALT     = 0x0001,   // hold Alt key down
  34.     wxACCEL_CTRL    = 0x0002,   // hold Ctrl key down
  35.     wxACCEL_SHIFT   = 0x0004    // hold Shift key down
  36. };
  37.  
  38. // ----------------------------------------------------------------------------
  39. // an entry in wxAcceleratorTable corresponds to one accelerator
  40. // ----------------------------------------------------------------------------
  41.  
  42. class WXDLLEXPORT wxAcceleratorEntry
  43. {
  44. public:
  45.     wxAcceleratorEntry(int flags = 0, int keyCode = 0, int cmd = 0,
  46.                        wxMenuItem *item = NULL)
  47.         : m_flags(flags)
  48.         , m_keyCode(keyCode)
  49.         , m_command(cmd)
  50.         , m_item(item)
  51.         { }
  52.  
  53.     wxAcceleratorEntry(const wxAcceleratorEntry& entry)
  54.         : m_flags(entry.m_flags)
  55.         , m_keyCode(entry.m_keyCode)
  56.         , m_command(entry.m_command)
  57.         , m_item(entry.m_item)
  58.         { }
  59.  
  60.     wxAcceleratorEntry& operator=(const wxAcceleratorEntry& entry)
  61.     {
  62.         Set(entry.m_flags, entry.m_keyCode, entry.m_command, entry.m_item);
  63.         return *this;
  64.     }
  65.     
  66.     void Set(int flags, int keyCode, int cmd, wxMenuItem *item = NULL)
  67.     {
  68.         m_flags = flags;
  69.         m_keyCode = keyCode;
  70.         m_command = cmd;
  71.         m_item = item;
  72.     }
  73.  
  74.     void SetMenuItem(wxMenuItem *item) { m_item = item; }
  75.  
  76.     int GetFlags() const { return m_flags; }
  77.     int GetKeyCode() const { return m_keyCode; }
  78.     int GetCommand() const { return m_command; }
  79.  
  80.     wxMenuItem *GetMenuItem() const { return m_item; }
  81.  
  82.     bool operator==(const wxAcceleratorEntry& entry) const
  83.     {
  84.         return m_flags == entry.m_flags &&
  85.                m_keyCode == entry.m_keyCode &&
  86.                m_command == entry.m_command &&
  87.                m_item == entry.m_item;
  88.     }
  89.  
  90.     bool operator!=(const wxAcceleratorEntry& entry) const
  91.         { return !(*this == entry); }
  92.  
  93. #if defined(__WXMOTIF__)
  94.     // Implementation use only
  95.     bool MatchesEvent(const wxKeyEvent& event) const;
  96. #endif
  97.     
  98. private:
  99.     int m_flags;    // combination of wxACCEL_XXX constants
  100.     int m_keyCode;  // ASCII or virtual keycode
  101.     int m_command;  // Command id to generate
  102.  
  103.     // the menu item this entry corresponds to, may be NULL
  104.     wxMenuItem *m_item;
  105.  
  106.     // for compatibility with old code, use accessors now!
  107.     friend class WXDLLEXPORT wxMenu;
  108. };
  109.  
  110. // ----------------------------------------------------------------------------
  111. // include wxAcceleratorTable class declaration, it is only used by the library
  112. // and so doesn't have any published user visible interface
  113. // ----------------------------------------------------------------------------
  114.  
  115. #if defined(__WXUNIVERSAL__)
  116.     #include "wx/generic/accel.h"
  117. #elif defined(__WXMSW__)
  118.     #include "wx/msw/accel.h"
  119. #elif defined(__WXMOTIF__)
  120.     #include "wx/motif/accel.h"
  121. #elif defined(__WXGTK__)
  122.     #include "wx/gtk/accel.h"
  123. #elif defined(__WXMAC__)
  124.     #include "wx/mac/accel.h"
  125. #elif defined(__WXPM__)
  126.     #include "wx/os2/accel.h"
  127. #elif defined(__WXSTUBS__)
  128.     #include "wx/stubs/accel.h"
  129. #endif
  130.  
  131. WXDLLEXPORT_DATA(extern wxAcceleratorTable) wxNullAcceleratorTable;
  132.  
  133. #endif // wxUSE_ACCEL
  134.  
  135. #endif
  136.     // _WX_ACCEL_H_BASE_
  137.