Allow customizing wxDebugReportCompress output file.

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
This commit is contained in:
Vadim Zeitlin
2009-08-14 00:06:03 +00:00
parent 94aff795d4
commit fdf20a26db
3 changed files with 69 additions and 0 deletions

View File

@@ -134,6 +134,15 @@ class WXDLLIMPEXP_QA wxDebugReportCompress : public wxDebugReport
public: public:
wxDebugReportCompress() { } 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) // returns the full path of the compressed file (empty if creation failed)
const wxString& GetCompressedFileName() const { return m_zipfile; } const wxString& GetCompressedFileName() const { return m_zipfile; }
@@ -141,6 +150,10 @@ protected:
virtual bool DoProcess(); virtual bool DoProcess();
private: private:
// user-specified file directory/base name, use defaults if empty
wxString m_zipDir,
m_zipName;
// full path to the ZIP file we created // full path to the ZIP file we created
wxString m_zipfile; wxString m_zipfile;
}; };

View File

@@ -67,6 +67,44 @@ public:
*/ */
wxDebugReportCompress(); 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 Returns the full path of the compressed file (empty if creation
failed). failed).

View File

@@ -598,6 +598,20 @@ bool wxDebugReport::DoProcess()
// wxDebugReportCompress // 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() bool wxDebugReportCompress::DoProcess()
{ {
const size_t count = GetFilesCount(); const size_t count = GetFilesCount();
@@ -609,6 +623,10 @@ bool wxDebugReportCompress::DoProcess()
// keep this one: for this we simply treat the directory name as the name // 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 // of the file so that its last component becomes our base name
wxFileName fn(GetDirectory()); wxFileName fn(GetDirectory());
if ( !m_zipDir.empty() )
fn.SetPath(m_zipDir);
if ( !m_zipName.empty() )
fn.SetName(m_zipName);
fn.SetExt("zip"); fn.SetExt("zip");
// create the streams // create the streams