X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0201182bf56889e11f925f8a6c9f967d5c598a10..66c2bf7b1d9326fb650acfaae22ec50528cfbf7c:/include/wx/accel.h?ds=sidebyside diff --git a/include/wx/accel.h b/include/wx/accel.h index faf7d50f88..5226b8b35a 100644 --- a/include/wx/accel.h +++ b/include/wx/accel.h @@ -4,8 +4,7 @@ // Author: Julian Smart, Robert Roebling, Vadim Zeitlin // Modified by: // Created: 31.05.01 (extracted from other files) -// RCS-ID: $Id$ -// Copyright: (c) wxWindows team +// Copyright: (c) wxWidgets team // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// @@ -18,28 +17,34 @@ #include "wx/object.h" -class WXDLLEXPORT wxAcceleratorTable; -class WXDLLEXPORT wxMenuItem; -class WXDLLEXPORT wxKeyEvent; +class WXDLLIMPEXP_FWD_CORE wxAcceleratorTable; +class WXDLLIMPEXP_FWD_CORE wxMenuItem; +class WXDLLIMPEXP_FWD_CORE wxKeyEvent; // ---------------------------------------------------------------------------- // constants // ---------------------------------------------------------------------------- // wxAcceleratorEntry flags -enum +enum wxAcceleratorEntryFlags { wxACCEL_NORMAL = 0x0000, // no modifiers wxACCEL_ALT = 0x0001, // hold Alt key down wxACCEL_CTRL = 0x0002, // hold Ctrl key down - wxACCEL_SHIFT = 0x0004 // hold Shift key down + wxACCEL_SHIFT = 0x0004, // hold Shift key down +#if defined(__WXMAC__) || defined(__WXCOCOA__) + wxACCEL_RAW_CTRL= 0x0008, // +#else + wxACCEL_RAW_CTRL= wxACCEL_CTRL, +#endif + wxACCEL_CMD = wxACCEL_CTRL }; // ---------------------------------------------------------------------------- // an entry in wxAcceleratorTable corresponds to one accelerator // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxAcceleratorEntry +class WXDLLIMPEXP_CORE wxAcceleratorEntry { public: wxAcceleratorEntry(int flags = 0, int keyCode = 0, int cmd = 0, @@ -57,12 +62,17 @@ public: , m_item(entry.m_item) { } + // create accelerator corresponding to the specified string, return NULL if + // string couldn't be parsed or a pointer to be deleted by the caller + static wxAcceleratorEntry *Create(const wxString& str); + wxAcceleratorEntry& operator=(const wxAcceleratorEntry& entry) { - Set(entry.m_flags, entry.m_keyCode, entry.m_command, entry.m_item); + if (&entry != this) + Set(entry.m_flags, entry.m_keyCode, entry.m_command, entry.m_item); return *this; } - + void Set(int flags, int keyCode, int cmd, wxMenuItem *item = NULL) { m_flags = flags; @@ -94,8 +104,38 @@ public: // Implementation use only bool MatchesEvent(const wxKeyEvent& event) const; #endif - + + bool IsOk() const + { + return m_keyCode != 0; + } + + + // string <-> wxAcceleratorEntry conversion + // ---------------------------------------- + + // returns a wxString for the this accelerator. + // this function formats it using the - format + // where maybe a hyphen-separated list of "shift|alt|ctrl" + wxString ToString() const { return AsPossiblyLocalizedString(true); } + + // same as above but without translating, useful if the string is meant to + // be stored in a file or otherwise stored, instead of being shown to the + // user + wxString ToRawString() const { return AsPossiblyLocalizedString(false); } + + // returns true if the given string correctly initialized this object + // (i.e. if IsOk() returns true after this call) + bool FromString(const wxString& str); + + private: + wxString AsPossiblyLocalizedString(bool localized) const; + + // common part of Create() and FromString() + static bool ParseAccel(const wxString& str, int *flags, int *keycode); + + int m_flags; // combination of wxACCEL_XXX constants int m_keyCode; // ASCII or virtual keycode int m_command; // Command id to generate @@ -104,7 +144,7 @@ private: wxMenuItem *m_item; // for compatibility with old code, use accessors now! - friend class WXDLLEXPORT wxMenu; + friend class WXDLLIMPEXP_FWD_CORE wxMenu; }; // ---------------------------------------------------------------------------- @@ -118,17 +158,19 @@ private: #include "wx/msw/accel.h" #elif defined(__WXMOTIF__) #include "wx/motif/accel.h" -#elif defined(__WXGTK__) +#elif defined(__WXGTK20__) #include "wx/gtk/accel.h" +#elif defined(__WXGTK__) + #include "wx/gtk1/accel.h" #elif defined(__WXMAC__) - #include "wx/mac/accel.h" + #include "wx/osx/accel.h" #elif defined(__WXCOCOA__) #include "wx/generic/accel.h" #elif defined(__WXPM__) #include "wx/os2/accel.h" #endif -WXDLLEXPORT_DATA(extern wxAcceleratorTable) wxNullAcceleratorTable; +extern WXDLLIMPEXP_DATA_CORE(wxAcceleratorTable) wxNullAcceleratorTable; #endif // wxUSE_ACCEL