]> git.saurik.com Git - wxWidgets.git/commitdiff
Allow customizing wxDebugReportCompress output file.
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 14 Aug 2009 00:06:03 +0000 (00:06 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 14 Aug 2009 00:06:03 +0000 (00:06 +0000)
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

include/wx/debugrpt.h
interface/wx/debugrpt.h
src/common/debugrpt.cpp

index 02c895c4e6760d6cf9c2227876aaccccc54b32c6..c57b27e458f4def96b6079f52e7679030314b81b 100644 (file)
@@ -134,6 +134,15 @@ class WXDLLIMPEXP_QA wxDebugReportCompress : public wxDebugReport
 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; }
 
@@ -141,6 +150,10 @@ protected:
     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;
 };
index 7a3a73b9d7ad54f114fd5c876bfce58991d59d44..0db0c4dd8fbe8ab3144f94e7b90aba0542875d21 100644 (file)
@@ -67,6 +67,44 @@ public:
     */
     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).
index 7a6cb7b6040d0be989a49a38974b2c24888a169e..88beafc6bbf9a3b0ca09354ecdd6b354cb5f3fce 100644 (file)
@@ -598,6 +598,20 @@ bool wxDebugReport::DoProcess()
 // 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();
@@ -609,6 +623,10 @@ bool wxDebugReportCompress::DoProcess()
     // 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