// Saves the doc bool ctConfigToolDoc::Save() { if (!IsModified() && m_savedYet) return true; bool ret = (m_documentFile == wxT("") || !m_savedYet) ? SaveAs() : OnSaveDocument(m_documentFile); if ( ret ) SetDocumentSaved(true); return ret; }
// Create the document bool ctConfigToolDoc::OnCreate(const wxString& path, long flags) { GetCommandProcessor()->SetEditMenu(wxGetApp().GetMainFrame()->GetEditMenu()); GetCommandProcessor()->Initialize(); GetCommandProcessor()->ClearCommands(); // wxGetApp().m_currentDoc = this; if (flags & wxDOC_NEW) { ctConfigItem* rootItem = new ctConfigItem(NULL, ctTypeGroup, _T("Configuration")); //rootItem->InitProperties(); rootItem->GetProperties().AddProperty( new ctProperty( wxT("The item description."), wxVariant(wxT(""), wxT("description")), wxT("multiline"))); rootItem->SetPropertyString(_T("description"), _T("<B>This is the top-level configuration item.</B>")); SetTopItem(rootItem); Modify(false); SetDocumentSaved(false); wxString rootName(wxT("untitled")); wxStripExtension(rootName); SetFilename(wxGetApp().GetSettings().GenerateFilename(rootName)); } // Creates the view, so do any view updating after this bool success = wxDocument::OnCreate(path, flags); if (success) { if (flags & wxDOC_NEW) { wxBusyCursor wait; ctConfigToolHint hint(NULL, ctInitialUpdate); UpdateAllViews (NULL, & hint); SetFilename(GetFilename(), true); } } return success; }
/*! * \brief Create a document from a specified file. * * \param path Pathname of the configuration file. */ bool CNutConfDoc::OnCreate(const wxString & path, long flags) { bool rc = false; wxString normPath(path); CSettings *cfg = wxGetApp().GetSettings(); normPath.Replace(wxT("\\"), wxT("/")); cfg->m_configname = normPath; wxGetApp().m_currentDoc = this; /* * The repository may refer to certain configuration values. Thus, * it must be loaded before reading the repository. */ cfg->Load(cfg->m_configname); if ((rc = ReadRepository(cfg->m_repositoryname, normPath)) == true) { Modify(false); SetDocumentSaved(false); rc = wxDocument::OnCreate(path, flags); if (rc) { if (flags & wxDOC_NEW) { wxBusyCursor wait; CNutConfHint hint(NULL, nutSelChanged); UpdateAllViews(NULL, &hint); SetFilename(GetFilename(), true); } } } if(!rc) { wxGetApp().m_currentDoc = NULL; } return rc; }
// Open the document bool ctConfigToolDoc::OnOpenDocument(const wxString& filename) { wxBusyCursor cursor; bool opened = DoOpen(filename); if (opened) { SetFilename(filename); wxGetApp().GetSettings().m_lastFilename = filename; ((ctConfigToolView*)GetFirstView())->OnChangeFilename(); RefreshDependencies(); // ctConfigToolHint hint(NULL, ctFilenameChanged); ctConfigToolHint hint(NULL, ctInitialUpdate); UpdateAllViews (NULL, & hint); } SetDocumentSaved(true); // Necessary or it will pop up the Save As dialog return opened; }
// Save the document bool ctConfigToolDoc::OnSaveDocument(const wxString& filename) { wxBusyCursor cursor; const wxString strOldPath(GetFilename()); // Do some backing up first // This is the backup filename wxString backupFilename(filename); backupFilename += wxT(".bak"); // This is the temporary copy of the backup wxString tempFilename(filename); tempFilename += wxT(".tmp"); if (wxFileExists(tempFilename)) wxRemoveFile(tempFilename); bool leaveBackup = true; bool saved = DoSave(tempFilename); if (saved) { // Remove the old .bak file if (wxFileExists(backupFilename)) { wxRemoveFile(backupFilename); } // Copy the old file to the .bak if (leaveBackup) { if (wxFileExists(filename)) { if (!wxRenameFile(filename, backupFilename)) { wxCopyFile(filename, backupFilename); wxRemoveFile(filename); } } } else { if (wxFileExists(filename)) wxRemoveFile(filename); } // Finally, copy the temporary file to the proper filename if (!wxRenameFile(tempFilename, filename)) { wxCopyFile(tempFilename, filename); wxRemoveFile(tempFilename); } Modify(false); ((ctConfigToolView*)GetFirstView())->OnChangeFilename(); SetDocumentSaved(true); SetFilename(filename); wxGetApp().GetSettings().m_lastFilename = filename; } else { SetFilename(strOldPath); } wxGetApp().GetMainFrame()->UpdateFrameTitle(); return saved; }