// Modified by:
// Created: 05.11.00
// RCS-ID: $Id$
-// Copyright: (c) wxWindows team
+// Copyright: (c) wxWidgets team
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
// headers
// ----------------------------------------------------------------------------
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "cmdproc.h"
#endif
wxCommandProcessor::wxCommandProcessor(int maxCommands)
{
m_maxNoCommands = maxCommands;
- m_currentCommand = (wxNode *) NULL;
#if wxUSE_MENUS
m_commandEditMenu = (wxMenu *) NULL;
#endif // wxUSE_MENUS
m_undoAccelerator = wxT("\tCtrl+Z");
m_redoAccelerator = wxT("\tCtrl+Y");
+#if !wxUSE_STL
+ m_currentCommand = NULL;
+#endif
}
wxCommandProcessor::~wxCommandProcessor()
// Pass a command to the processor. The processor calls Do();
// if successful, is appended to the command history unless
-// storeIt is FALSE.
+// storeIt is false.
bool wxCommandProcessor::Submit(wxCommand *command, bool storeIt)
{
- wxCHECK_MSG( command, FALSE, _T("no command in wxCommandProcessor::Submit") );
+ wxCHECK_MSG( command, false, _T("no command in wxCommandProcessor::Submit") );
if ( !DoCommand(*command) )
{
// the user code expects the command to be deleted anyhow
delete command;
- return FALSE;
+ return false;
}
if ( storeIt )
Store(command);
+ else
+ delete command;
- return TRUE;
+ return true;
}
void wxCommandProcessor::Store(wxCommand *command)
if ( (int)m_commands.GetCount() == m_maxNoCommands )
{
- wxNode *firstNode = m_commands.GetFirst();
+ wxList::compatibility_iterator firstNode = m_commands.GetFirst();
wxCommand *firstCommand = (wxCommand *)firstNode->GetData();
delete firstCommand;
- delete firstNode;
+ m_commands.Erase(firstNode);
}
// Correct a bug: we must chop off the current 'branch'
ClearCommands();
else
{
- wxNode *node = m_currentCommand->GetNext();
+ wxList::compatibility_iterator node = m_currentCommand->GetNext();
while (node)
{
- wxNode *next = node->GetNext();
+ wxList::compatibility_iterator next = node->GetNext();
delete (wxCommand *)node->GetData();
- delete node;
+ m_commands.Erase(node);
node = next;
}
}
{
m_currentCommand = m_currentCommand->GetPrevious();
SetMenuStrings();
- return TRUE;
+ return true;
}
}
- return FALSE;
+ return false;
}
bool wxCommandProcessor::Redo()
{
wxCommand *redoCommand = (wxCommand *) NULL;
- wxNode *redoNode = (wxNode *) NULL;
+ wxList::compatibility_iterator redoNode
+#if !wxUSE_STL
+ = NULL // just to avoid warnings
+#endif // !wxUSE_STL
+ ;
if ( m_currentCommand )
{
{
m_currentCommand = redoNode;
SetMenuStrings();
- return TRUE;
+ return true;
}
}
- return FALSE;
+ return false;
}
bool wxCommandProcessor::CanUndo() const
bool wxCommandProcessor::CanRedo() const
{
- if ((m_currentCommand != (wxNode*) NULL) && (m_currentCommand->GetNext() == (wxNode*) NULL))
- return FALSE;
+ if (m_currentCommand && !m_currentCommand->GetNext())
+ return false;
- if ((m_currentCommand != (wxNode*) NULL) && (m_currentCommand->GetNext() != (wxNode*) NULL))
- return TRUE;
+ if (m_currentCommand && m_currentCommand->GetNext())
+ return true;
- if ((m_currentCommand == (wxNode*) NULL) && (m_commands.GetCount() > 0))
- return TRUE;
+ if (!m_currentCommand && (m_commands.GetCount() > 0))
+ return true;
- return FALSE;
+ return false;
}
void wxCommandProcessor::Initialize()
{
wxString undoLabel = GetUndoMenuLabel();
wxString redoLabel = GetRedoMenuLabel();
-
+
m_commandEditMenu->SetLabel(wxID_UNDO, undoLabel);
m_commandEditMenu->Enable(wxID_UNDO, CanUndo());
{
buf = _("&Undo") + m_undoAccelerator;
}
-
+
return buf;
}
void wxCommandProcessor::ClearCommands()
{
- wxNode *node = m_commands.GetFirst();
+ wxList::compatibility_iterator node = m_commands.GetFirst();
while (node)
{
wxCommand *command = (wxCommand *)node->GetData();
delete command;
- delete node;
+ m_commands.Erase(node);
node = m_commands.GetFirst();
}
- m_currentCommand = (wxNode *) NULL;
+ m_currentCommand = wxList::compatibility_iterator();
}