#include "wx/printdlg.h"
#include "wx/generic/prntdlgg.h"
#include "wx/generic/printps.h"
+#include "wx/confbase.h"
#include <stdio.h>
#include <string.h>
}
SetFilename(file, TRUE);
Modify(FALSE);
+ m_savedYet = TRUE;
UpdateAllViews();
void wxDocManager::FileHistoryUseMenu(wxMenu *menu)
{
if (m_fileHistory)
- m_fileHistory->FileHistoryUseMenu(menu);
+ m_fileHistory->UseMenu(menu);
}
-void wxDocManager::FileHistoryLoad(const wxString& resourceFile, const wxString& section)
+void wxDocManager::FileHistoryRemoveMenu(wxMenu *menu)
{
if (m_fileHistory)
- m_fileHistory->FileHistoryLoad(resourceFile, section);
+ m_fileHistory->RemoveMenu(menu);
}
-void wxDocManager::FileHistorySave(const wxString& resourceFile, const wxString& section)
+void wxDocManager::FileHistoryLoad(wxConfigBase& config)
{
if (m_fileHistory)
- m_fileHistory->FileHistorySave(resourceFile, section);
+ m_fileHistory->Load(config);
+}
+
+void wxDocManager::FileHistorySave(wxConfigBase& config)
+{
+ if (m_fileHistory)
+ m_fileHistory->Save(config);
+}
+
+void wxDocManager::FileHistoryAddFilesToMenu(wxMenu* menu)
+{
+ if (m_fileHistory)
+ m_fileHistory->AddFilesToMenu(menu);
+}
+
+void wxDocManager::FileHistoryAddFilesToMenu()
+{
+ if (m_fileHistory)
+ m_fileHistory->AddFilesToMenu();
}
int wxDocManager::GetNoHistoryFiles(void) const
return FALSE;
}
-bool wxCommandProcessor::CanUndo(void)
+bool wxCommandProcessor::CanUndo(void) const
{
if (m_currentCommand)
return ((wxCommand *)m_currentCommand->Data())->CanUndo();
return FALSE;
}
+bool wxCommandProcessor::CanRedo(void) const
+{
+ return ((m_currentCommand && m_currentCommand->Next()));
+}
+
void wxCommandProcessor::Initialize(void)
{
m_currentCommand = m_commands.Last();
wxFileHistory::wxFileHistory(int maxFiles)
{
m_fileMaxFiles = maxFiles;
- m_fileMenu = (wxMenu *) NULL;
m_fileHistoryN = 0;
m_fileHistory = new char *[m_fileMaxFiles];
}
// File history management
void wxFileHistory::AddFileToHistory(const wxString& file)
{
- if (!m_fileMenu)
- return;
-
int i;
-
// Check we don't already have this file
for (i = 0; i < m_fileHistoryN; i++)
{
- if (m_fileHistory[i] && wxString(m_fileHistory[i]) == file)
- return;
+ if (m_fileHistory[i] && wxString(m_fileHistory[i]) == file)
+ return;
}
-
+
// Add to the project file history:
// Move existing files (if any) down so we can insert file at beginning.
}
if (m_fileHistoryN < m_fileMaxFiles)
{
- if (m_fileHistoryN == 0)
- m_fileMenu->AppendSeparator();
- m_fileMenu->Append(wxID_FILE1+m_fileHistoryN, _("[EMPTY]"));
+ wxNode* node = m_fileMenus.First();
+ while (node)
+ {
+ wxMenu* menu = (wxMenu*) node->Data();
+ if (m_fileHistoryN == 0)
+ menu->AppendSeparator();
+ menu->Append(wxID_FILE1+m_fileHistoryN, _("[EMPTY]"));
+ node = node->Next();
+ }
m_fileHistoryN ++;
}
// Shuffle filenames down
{
char buf[400];
sprintf(buf, "&%d %s", i+1, m_fileHistory[i]);
- m_fileMenu->SetLabel(wxID_FILE1+i, buf);
+ wxNode* node = m_fileMenus.First();
+ while (node)
+ {
+ wxMenu* menu = (wxMenu*) node->Data();
+ menu->SetLabel(wxID_FILE1+i, buf);
+ node = node->Next();
+ }
}
}
return wxString("");
}
-void wxFileHistory::FileHistoryUseMenu(wxMenu *menu)
+void wxFileHistory::UseMenu(wxMenu *menu)
{
- m_fileMenu = menu;
+ if (!m_fileMenus.Member(menu))
+ m_fileMenus.Append(menu);
}
-void wxFileHistory::FileHistoryLoad(const wxString& resourceFile, const wxString& section)
+void wxFileHistory::RemoveMenu(wxMenu *menu)
+{
+ m_fileMenus.DeleteObject(menu);
+}
+
+void wxFileHistory::Load(wxConfigBase& config)
{
-#if USE_RESOURCES
m_fileHistoryN = 0;
char buf[400];
sprintf(buf, "file%d", m_fileHistoryN+1);
- char *historyFile = (char *) NULL;
- while ((m_fileHistoryN <= m_fileMaxFiles) && wxGetResource(section, buf, &historyFile, resourceFile) && historyFile)
+ wxString historyFile("");
+ while ((m_fileHistoryN <= m_fileMaxFiles) && config.Read(buf, &historyFile) && (historyFile != ""))
{
- // wxGetResource allocates memory so this is o.k.
- m_fileHistory[m_fileHistoryN] = historyFile;
+ m_fileHistory[m_fileHistoryN] = copystring((const char*) historyFile);
m_fileHistoryN ++;
sprintf(buf, "file%d", m_fileHistoryN+1);
- historyFile = (char *) NULL;
+ historyFile = "";
}
-#endif
+ AddFilesToMenu();
}
-void wxFileHistory::FileHistorySave(const wxString& resourceFile, const wxString& section)
+void wxFileHistory::Save(wxConfigBase& config)
{
-#if USE_RESOURCES
- char buf[400];
int i;
for (i = 0; i < m_fileHistoryN; i++)
{
- sprintf(buf, "file%d", i+1);
- wxWriteResource(section, buf, m_fileHistory[i], resourceFile);
+ wxString buf;
+ buf.Printf("file%d", i+1);
+ config.Write(buf, wxString(m_fileHistory[i]));
}
-#endif
+}
+
+void wxFileHistory::AddFilesToMenu()
+{
+ if (m_fileHistoryN > 0)
+ {
+ wxNode* node = m_fileMenus.First();
+ while (node)
+ {
+ wxMenu* menu = (wxMenu*) node->Data();
+ menu->AppendSeparator();
+ int i;
+ for (i = 0; i < m_fileHistoryN; i++)
+ {
+ if (m_fileHistory[i])
+ {
+ wxString buf;
+ buf.Printf("&%d %s", i+1, m_fileHistory[i]);
+ menu->Append(wxID_FILE1+i, buf);
+ }
+ }
+ node = node->Next();
+ }
+ }
+}
+
+void wxFileHistory::AddFilesToMenu(wxMenu* menu)
+{
+ if (m_fileHistoryN > 0)
+ {
+ menu->AppendSeparator();
+ int i;
+ for (i = 0; i < m_fileHistoryN; i++)
+ {
+ if (m_fileHistory[i])
+ {
+ wxString buf;
+ buf.Printf("&%d %s", i+1, m_fileHistory[i]);
+ menu->Append(wxID_FILE1+i, buf);
+ }
+ }
+ }
}
#if 0