X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1e6feb95a79834836e88143b15d9f424ebe79621..da8b1d4b3b535aba94d04494f5b6e2b3e47901ee:/include/wx/cmdproc.h?ds=sidebyside diff --git a/include/wx/cmdproc.h b/include/wx/cmdproc.h index faa053dc89..6072e7fda0 100644 --- a/include/wx/cmdproc.h +++ b/include/wx/cmdproc.h @@ -5,29 +5,28 @@ // Modified by: // Created: 05.11.00 // RCS-ID: $Id$ -// Copyright: (c) wxWindows team +// Copyright: (c) wxWidgets team // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// #ifndef _WX_CMDPROC_H_ #define _WX_CMDPROC_H_ -#ifdef __GNUG__ - #pragma interface "cmdproc.h" -#endif - +#include "wx/defs.h" #include "wx/object.h" #include "wx/list.h" +class WXDLLIMPEXP_FWD_CORE wxMenu; + // ---------------------------------------------------------------------------- // wxCommand: a single command capable of performing itself // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxCommand : public wxObject +class WXDLLIMPEXP_CORE wxCommand : public wxObject { public: - wxCommand(bool canUndoIt = FALSE, const wxString& name = ""); - ~wxCommand(); + wxCommand(bool canUndoIt = false, const wxString& name = wxEmptyString); + virtual ~wxCommand(){} // Override this to perform a command virtual bool Do() = 0; @@ -50,7 +49,7 @@ private: // wxCommandProcessor: wxCommand manager // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxCommandProcessor : public wxObject +class WXDLLIMPEXP_CORE wxCommandProcessor : public wxObject { public: // if max number of commands is -1, it is unlimited @@ -58,8 +57,8 @@ public: virtual ~wxCommandProcessor(); // Pass a command to the processor. The processor calls Do(); if - // successful, is appended to the command history unless storeIt is FALSE. - virtual bool Submit(wxCommand *command, bool storeIt = TRUE); + // successful, is appended to the command history unless storeIt is false. + virtual bool Submit(wxCommand *command, bool storeIt = true); // just store the command without executing it virtual void Store(wxCommand *command); @@ -69,9 +68,18 @@ public: virtual bool CanUndo() const; virtual bool CanRedo() const; + // Initialises the current command and menu strings. virtual void Initialize(); + + // Sets the Undo/Redo menu strings for the current menu. virtual void SetMenuStrings(); + // Gets the current Undo menu label. + wxString GetUndoMenuLabel() const; + + // Gets the current Undo menu label. + wxString GetRedoMenuLabel() const; + #if wxUSE_MENUS // Call this to manage an edit menu. void SetEditMenu(wxMenu *menu) { m_commandEditMenu = menu; } @@ -79,14 +87,35 @@ public: #endif // wxUSE_MENUS // command list access - wxList& GetCommands() const { return (wxList&) m_commands; } + wxList& GetCommands() { return m_commands; } + const wxList& GetCommands() const { return m_commands; } wxCommand *GetCurrentCommand() const { - return (wxCommand *)(m_currentCommand ? m_currentCommand->Data() : NULL); + return (wxCommand *)(m_currentCommand ? m_currentCommand->GetData() : NULL); } int GetMaxCommands() const { return m_maxNoCommands; } virtual void ClearCommands(); + // Has the current project been changed? + virtual bool IsDirty() const + { + return m_currentCommand && (m_lastSavedCommand != m_currentCommand); + } + + // Mark the current command as the one where the last save took place + void MarkAsSaved() + { + m_lastSavedCommand = m_currentCommand; + } + + + // By default, the accelerators are "\tCtrl+Z" and "\tCtrl+Y" + const wxString& GetUndoAccelerator() const { return m_undoAccelerator; } + const wxString& GetRedoAccelerator() const { return m_redoAccelerator; } + + void SetUndoAccelerator(const wxString& accel) { m_undoAccelerator = accel; } + void SetRedoAccelerator(const wxString& accel) { m_redoAccelerator = accel; } + protected: // for further flexibility, command processor doesn't call wxCommand::Do() // and Undo() directly but uses these functions which can be overridden in @@ -96,14 +125,20 @@ protected: int m_maxNoCommands; wxList m_commands; - wxNode* m_currentCommand; + wxList::compatibility_iterator m_currentCommand, + m_lastSavedCommand; #if wxUSE_MENUS wxMenu* m_commandEditMenu; #endif // wxUSE_MENUS + wxString m_undoAccelerator; + wxString m_redoAccelerator; + private: DECLARE_DYNAMIC_CLASS(wxCommandProcessor) + wxDECLARE_NO_COPY_CLASS(wxCommandProcessor); }; #endif // _WX_CMDPROC_H_ +