]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/cmdproc.h
define wxUSE_LINE_IN_LISTBOOK to avoid -Wundef warnings (but define it as 0 so thje...
[wxWidgets.git] / include / wx / cmdproc.h
index faa053dc8974514b23f13cf249825f69e787e324..ace9465d26bcda9cf13e747492fa9a83f63e67fb 100644 (file)
@@ -5,20 +5,23 @@
 // Modified by:
 // Created:     05.11.00
 // RCS-ID:      $Id$
 // 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_
 
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 #ifndef _WX_CMDPROC_H_
 #define _WX_CMDPROC_H_
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
     #pragma interface "cmdproc.h"
 #endif
 
     #pragma interface "cmdproc.h"
 #endif
 
+#include "wx/defs.h"
 #include "wx/object.h"
 #include "wx/list.h"
 
 #include "wx/object.h"
 #include "wx/list.h"
 
+class WXDLLEXPORT wxMenu;
+
 // ----------------------------------------------------------------------------
 // wxCommand: a single command capable of performing itself
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // wxCommand: a single command capable of performing itself
 // ----------------------------------------------------------------------------
@@ -26,8 +29,8 @@
 class WXDLLEXPORT wxCommand : public wxObject
 {
 public:
 class WXDLLEXPORT wxCommand : public wxObject
 {
 public:
-    wxCommand(bool canUndoIt = FALSE, const wxString& name = "");
-    ~wxCommand();
+    wxCommand(bool canUndoIt = false, const wxString& name = wxEmptyString);
+    ~wxCommand(){}
 
     // Override this to perform a command
     virtual bool Do() = 0;
 
     // Override this to perform a command
     virtual bool Do() = 0;
@@ -58,8 +61,8 @@ public:
     virtual ~wxCommandProcessor();
 
     // Pass a command to the processor. The processor calls Do(); if
     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);
 
     // just store the command without executing it
     virtual void Store(wxCommand *command);
@@ -69,9 +72,18 @@ public:
     virtual bool CanUndo() const;
     virtual bool CanRedo() const;
 
     virtual bool CanUndo() const;
     virtual bool CanRedo() const;
 
+    // Initialises the current command and menu strings.
     virtual void Initialize();
     virtual void Initialize();
+
+    // Sets the Undo/Redo menu strings for the current menu.
     virtual void SetMenuStrings();
 
     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; }
 #if wxUSE_MENUS
     // Call this to manage an edit menu.
     void SetEditMenu(wxMenu *menu) { m_commandEditMenu = menu; }
@@ -82,11 +94,31 @@ public:
     wxList& GetCommands() const { return (wxList&) m_commands; }
     wxCommand *GetCurrentCommand() const
     {
     wxList& GetCommands() const { return (wxList&) 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();
 
     }
     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
 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 +128,20 @@ protected:
 
     int           m_maxNoCommands;
     wxList        m_commands;
 
     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
 
 
 #if wxUSE_MENUS
     wxMenu*       m_commandEditMenu;
 #endif // wxUSE_MENUS
 
+    wxString      m_undoAccelerator;
+    wxString      m_redoAccelerator;
+
 private:
     DECLARE_DYNAMIC_CLASS(wxCommandProcessor)
 private:
     DECLARE_DYNAMIC_CLASS(wxCommandProcessor)
+    DECLARE_NO_COPY_CLASS(wxCommandProcessor)
 };
 
 #endif // _WX_CMDPROC_H_
 };
 
 #endif // _WX_CMDPROC_H_
+