It may be useful to change the directory where it is generated to allow the
users to find it more quickly. Also allow changing the crash report base name
for completeness.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61663
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
public:
wxDebugReportCompress() { }
+ // you can optionally specify the directory and/or name of the file where
+ // the debug report should be generated, a default location under the
+ // directory containing temporary files will be used if you don't
+ //
+ // both of these functions should be called before Process()ing the report
+ // if they're called at all
+ void SetCompressedFileDirectory(const wxString& dir);
+ void SetCompressedFileBaseName(const wxString& name);
+
// returns the full path of the compressed file (empty if creation failed)
const wxString& GetCompressedFileName() const { return m_zipfile; }
virtual bool DoProcess();
private:
+ // user-specified file directory/base name, use defaults if empty
+ wxString m_zipDir,
+ m_zipName;
+
// full path to the ZIP file we created
wxString m_zipfile;
};
*/
wxDebugReportCompress();
+ /**
+ Set the directory where the debug report should be generated.
+
+ By default, the debug report is generated under user temporary files
+ directory. This is usually fine if it is meant to be processed in some
+ way (e.g. automatically uploaded to a remote server) but if the user is
+ asked to manually upload or send the report, it may be more convenient
+ to generate it in e.g. the users home directory and this function
+ allows to do this.
+
+ Notice that it should be called before wxDebugReport::Process() or it
+ has no effect.
+
+ @param dir
+ The full path to an existing directory where the debug report file
+ should be generated.
+
+ @since 2.9.1
+ */
+ void SetCompressedFileDirectory(const wxString& dir);
+
+ /**
+ Set the base name of the generated debug report file.
+
+ This function is similar to SetCompressedFileDirectory() but allows to
+ change the base name of the file. Notice that the file extension will
+ always be @c .zip.
+
+ By default, a unique name constructed from wxApp::GetAppName(), the
+ current process id and the current date and time is used.
+
+ @param dir
+ The base name (i.e. without extension) of the file.
+
+ @since 2.9.1
+ */
+ void SetCompressedFileBaseName(const wxString& name);
+
/**
Returns the full path of the compressed file (empty if creation
failed).
// wxDebugReportCompress
// ----------------------------------------------------------------------------
+void wxDebugReportCompress::SetCompressedFileDirectory(const wxString& dir)
+{
+ wxASSERT_MSG( m_zipfile.empty(), "Too late: call this before Process()" );
+
+ m_zipDir = dir;
+}
+
+void wxDebugReportCompress::SetCompressedFileBaseName(const wxString& name)
+{
+ wxASSERT_MSG( m_zipfile.empty(), "Too late: call this before Process()" );
+
+ m_zipName = name;
+}
+
bool wxDebugReportCompress::DoProcess()
{
const size_t count = GetFilesCount();
// keep this one: for this we simply treat the directory name as the name
// of the file so that its last component becomes our base name
wxFileName fn(GetDirectory());
+ if ( !m_zipDir.empty() )
+ fn.SetPath(m_zipDir);
+ if ( !m_zipName.empty() )
+ fn.SetName(m_zipName);
fn.SetExt("zip");
// create the streams