- Added wxSHUTDOWN_LOGOFF and wxSHUTDOWN_FORCE wxShutdown() flags (troelsk).
- Added wxSocket::ShutdownOutput().
- Handle exceptions thrown from overridden wxView::OnCreate() gracefully.
+- Added wxStandardPaths::GetAppDocumentsDir().
All (Unix):
virtual void FileHistoryAddFilesToMenu();
virtual void FileHistoryAddFilesToMenu(wxMenu* menu);
- wxString GetLastDirectory() const { return m_lastDirectory; }
+ wxString GetLastDirectory() const;
void SetLastDirectory(const wxString& dir) { m_lastDirectory = dir; }
// Get the current document manager
// $HOME under Unix and ~/Documents under Mac
virtual wxString GetDocumentsDir() const;
+ // return the directory for the documents files used by this application:
+ // it's a subdirectory of GetDocumentsDir() constructed using the
+ // application name/vendor if it exists or just GetDocumentsDir() otherwise
+ virtual wxString GetAppDocumentsDir() const;
+
// return the temporary directory for the current user
virtual wxString GetTempDir() const;
protected:
- // append the path component, with a leading path seperator if a
- // path seperator or dot (.) is not already at the end of dir
+ // append the path component, with a leading path separator if a
+ // path separator or dot (.) is not already at the end of dir
static wxString AppendPathComponent(const wxString& dir, const wxString& component);
// append application information determined by m_usedAppInfo to dir
*/
static wxStandardPathsBase& Get();
+ /**
+ Return the directory for the document files used by this application.
+
+ If the application-specific directory doesn't exist, this function
+ returns GetDocumentsDir().
+
+ Example return values:
+ - Unix: @c ~/appname
+ - Windows: @c "C:\Documents and Settings\username\My Documents\appname"
+ - Mac: @c ~/Documents/appname
+
+ @since 2.9.0
+
+ @see GetAppDocumentsDir()
+ */
+ virtual wxString GetAppDocumentsDir() const;
+
/**
Return the directory containing the system config files.
Example return values:
/**
Return the directory containing the current user's documents.
+
Example return values:
- Unix: @c ~ (the home directory)
- Windows: @c "C:\Documents and Settings\username\My Documents"
- Mac: @c ~/Documents
@since 2.7.0
+
+ @see GetAppDocumentsDir()
*/
virtual wxString GetDocumentsDir() const;
#include "wx/cmdproc.h"
#include "wx/tokenzr.h"
#include "wx/filename.h"
+#include "wx/stdpaths.h"
#include "wx/vector.h"
#include "wx/ptr_scpd.h"
wxString filter = docTemplate->GetFileFilter() ;
#endif
wxString defaultDir = docTemplate->GetDirectory();
- if (defaultDir.IsEmpty())
+ if ( defaultDir.empty() )
+ {
defaultDir = wxPathOnly(GetFilename());
+ if ( defaultDir.empty() )
+ defaultDir = GetDocumentManager()->GetLastDirectory();
+ }
wxString fileName = wxFileSelector(_("Save As"),
defaultDir,
return true;
}
+wxString wxDocManager::GetLastDirectory() const
+{
+ // use the system-dependent default location for the document files if
+ // we're being opened for the first time
+ if ( m_lastDirectory.empty() )
+ {
+ wxDocManager * const self = const_cast<wxDocManager *>(this);
+ self->m_lastDirectory = wxStandardPaths::Get().GetAppDocumentsDir();
+ }
+
+ return m_lastDirectory;
+}
+
wxFileHistory *wxDocManager::OnCreateFileHistory()
{
return new wxFileHistory;
wxWindow* parent = wxFindSuitableParent();
wxString pathTmp = wxFileSelectorEx(_("Open File"),
- m_lastDirectory,
+ GetLastDirectory(),
wxEmptyString,
&FilterIndex,
descrBuf,
path = wxEmptyString;
return NULL;
}
- m_lastDirectory = wxPathOnly(pathTmp);
+
+ SetLastDirectory(wxPathOnly(pathTmp));
path = pathTmp;
return wxFileName::GetHomeDir();
}
+wxString wxStandardPathsBase::GetAppDocumentsDir() const
+{
+ const wxString docsDir = GetDocumentsDir();
+ wxString appDocsDir = AppendAppInfo(docsDir);
+
+ return wxDirExists(appDocsDir) ? appDocsDir : docsDir;
+}
+
// return the temporary directory for the current user
wxString wxStandardPathsBase::GetTempDir() const
{
}
/* static */
-wxString wxStandardPathsBase::AppendPathComponent(const wxString& dir, const wxString& component)
+wxString
+wxStandardPathsBase::AppendPathComponent(const wxString& dir,
+ const wxString& component)
{
wxString subdir(dir);