]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/debugrpt.h
Make storing non-trivial data in wxThreadSpecificInfo possible.
[wxWidgets.git] / interface / wx / debugrpt.h
index bb40cb19976d016e94b2b3c411a0f305efd828d5..c56dcba092fc6ace92902e3a6e06a930f8fddc6a 100644 (file)
@@ -2,13 +2,11 @@
 // Name:        debugrpt.h
 // Purpose:     interface of wxDebugReport*
 // Author:      wxWidgets team
 // Name:        debugrpt.h
 // Purpose:     interface of wxDebugReport*
 // Author:      wxWidgets team
-// RCS-ID:      $Id$
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 /**
     @class wxDebugReportPreview
 /////////////////////////////////////////////////////////////////////////////
 
 /**
     @class wxDebugReportPreview
-    @wxheader{debugrpt.h}
 
     This class presents the debug report to the user and allows him to veto
     report entirely or remove some parts of it. Although not mandatory, using
 
     This class presents the debug report to the user and allows him to veto
     report entirely or remove some parts of it. Although not mandatory, using
@@ -45,14 +43,13 @@ public:
                  chose to cancel report generation or removed all files from
                  it.
     */
                  chose to cancel report generation or removed all files from
                  it.
     */
-    virtual bool Show(wxDebugReport& dbgrpt) const;
+    virtual bool Show(wxDebugReport& dbgrpt) const = 0;
 };
 
 
 
 /**
     @class wxDebugReportCompress
 };
 
 
 
 /**
     @class wxDebugReportCompress
-    @wxheader{debugrpt.h}
 
     wxDebugReportCompress is a wxDebugReport which compresses all the files in
     this debug report into a single ZIP file in its wxDebugReport::Process()
 
     wxDebugReportCompress is a wxDebugReport which compresses all the files in
     this debug report into a single ZIP file in its wxDebugReport::Process()
@@ -69,18 +66,55 @@ 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 name
+            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).
     */
     /**
         Returns the full path of the compressed file (empty if creation
         failed).
     */
-    const wxString GetCompressedFileName() const;
+    const wxString& GetCompressedFileName() const;
 };
 
 
 
 /**
     @class wxDebugReport
 };
 
 
 
 /**
     @class wxDebugReport
-    @wxheader{debugrpt.h}
 
     wxDebugReport is used to generate a debug report, containing information
     about the program current state. It is usually used from
 
     wxDebugReport is used to generate a debug report, containing information
     about the program current state. It is usually used from
@@ -138,7 +172,7 @@ public:
         constructor with all the files it contains. Call Reset() to prevent
         this from happening.
     */
         constructor with all the files it contains. Call Reset() to prevent
         this from happening.
     */
-    ~wxDebugReport();
+    virtual ~wxDebugReport();
 
     /**
         Adds all available information to the report. Currently this includes a
 
     /**
         Adds all available information to the report. Currently this includes a
@@ -151,7 +185,7 @@ public:
         Add an XML file containing the current or exception context and the
         stack trace.
     */
         Add an XML file containing the current or exception context and the
         stack trace.
     */
-    bool AddContext(Context ctx);
+    virtual bool AddContext(Context ctx);
 
     /**
         The same as calling AddContext(Context_Current).
 
     /**
         The same as calling AddContext(Context_Current).
@@ -170,7 +204,7 @@ public:
         (@c dbghlp32.dll can be installed under older systems to make minidumps
         available).
     */
         (@c dbghlp32.dll can be installed under older systems to make minidumps
         available).
     */
-    bool AddDump(Context ctx);
+    virtual bool AddDump(Context ctx);
 
     /**
         The same as calling AddContext(Context_Exception).
 
     /**
         The same as calling AddContext(Context_Exception).
@@ -185,13 +219,15 @@ public:
     /**
         Add another file to the report. If @a filename is an absolute path, it
         is copied to a file in the debug report directory with the same name.
     /**
         Add another file to the report. If @a filename is an absolute path, it
         is copied to a file in the debug report directory with the same name.
-        Otherwise the file should already exist in this directory
-        @a description only exists to be displayed to the user in the report
-        summary shown by wxDebugReportPreview.
+        Otherwise the file will be searched in the temporary directory returned
+        by GetDirectory().
+        
+        The argument @a description only exists to be displayed to the user in 
+        the report summary shown by wxDebugReportPreview.
 
         @see GetDirectory(), AddText()
     */
 
         @see GetDirectory(), AddText()
     */
-    void AddFile(const wxString& filename, const wxString& description);
+    virtual void AddFile(const wxString& filename, const wxString& description);
 
     /**
         This is a convenient wrapper around AddFile(). It creates the file with
 
     /**
         This is a convenient wrapper around AddFile(). It creates the file with
@@ -204,30 +240,6 @@ public:
     bool AddText(const wxString& filename, const wxString& text,
                  const wxString& description);
 
     bool AddText(const wxString& filename, const wxString& text,
                  const wxString& description);
 
-    /**
-        This function may be overridden to add arbitrary custom context to the
-        XML context file created by AddContext(). By default, it does nothing.
-    */
-    void DoAddCustomContext(wxXmlNode* nodeRoot);
-
-    /**
-        This function may be overridden to modify the contents of the exception
-        tag in the XML context file.
-    */
-    bool DoAddExceptionInfo(wxXmlNode* nodeContext);
-
-    /**
-        This function may be overridden to modify the contents of the modules
-        tag in the XML context file.
-    */
-    bool DoAddLoadedModules(wxXmlNode* nodeModules);
-
-    /**
-        This function may be overridden to modify the contents of the system
-        tag in the XML context file.
-    */
-    bool DoAddSystemInfo(wxXmlNode* nodeSystemInfo);
-
     /**
         This method should be used to construct the full name of the files
         which you wish to add to the report using AddFile().
     /**
         This method should be used to construct the full name of the files
         which you wish to add to the report using AddFile().
@@ -235,12 +247,12 @@ public:
         @return The name of the temporary directory used for the files in this
                  report.
     */
         @return The name of the temporary directory used for the files in this
                  report.
     */
-    const wxString GetDirectory() const;
+    const wxString& GetDirectory() const;
 
     /**
         Retrieves the name (relative to GetDirectory()) and the description of
         the file with the given index. If @a n is greater than or equal to the
 
     /**
         Retrieves the name (relative to GetDirectory()) and the description of
         the file with the given index. If @a n is greater than or equal to the
-        number of filse, @false is returned.
+        number of files, then @false is returned.
     */
     bool GetFile(size_t n, wxString* name, wxString* desc) const;
 
     */
     bool GetFile(size_t n, wxString* name, wxString* desc) const;
 
@@ -253,7 +265,7 @@ public:
         Gets the name used as a base name for various files, by default
         wxApp::GetAppName() is used.
     */
         Gets the name used as a base name for various files, by default
         wxApp::GetAppName() is used.
     */
-    wxString GetReportName() const;
+    virtual wxString GetReportName() const;
 
     /**
         Returns @true if the object was successfully initialized. If this
 
     /**
         Returns @true if the object was successfully initialized. If this
@@ -280,13 +292,38 @@ public:
         after this as it becomes uninitialized and invalid.
     */
     void Reset();
         after this as it becomes uninitialized and invalid.
     */
     void Reset();
+
+protected:
+
+    /**
+        This function may be overridden to add arbitrary custom context to the
+        XML context file created by AddContext(). By default, it does nothing.
+    */
+    virtual void DoAddCustomContext(wxXmlNode* nodeRoot);
+
+    /**
+        This function may be overridden to modify the contents of the exception
+        tag in the XML context file.
+    */
+    virtual bool DoAddExceptionInfo(wxXmlNode* nodeContext);
+
+    /**
+        This function may be overridden to modify the contents of the modules
+        tag in the XML context file.
+    */
+    virtual bool DoAddLoadedModules(wxXmlNode* nodeModules);
+
+    /**
+        This function may be overridden to modify the contents of the system
+        tag in the XML context file.
+    */
+    virtual bool DoAddSystemInfo(wxXmlNode* nodeSystemInfo);
 };
 
 
 
 /**
     @class wxDebugReportPreviewStd
 };
 
 
 
 /**
     @class wxDebugReportPreviewStd
-    @wxheader{debugrpt.h}
 
     wxDebugReportPreviewStd is a standard debug report preview window. It
     displays a dialog allowing the user to examine the contents of a debug
 
     wxDebugReportPreviewStd is a standard debug report preview window. It
     displays a dialog allowing the user to examine the contents of a debug
@@ -315,7 +352,6 @@ public:
 
 /**
     @class wxDebugReportUpload
 
 /**
     @class wxDebugReportUpload
-    @wxheader{debugrpt.h}
 
     This class is used to upload a compressed file using HTTP POST request. As
     this class derives from wxDebugReportCompress, before upload the report is
 
     This class is used to upload a compressed file using HTTP POST request. As
     this class derives from wxDebugReportCompress, before upload the report is
@@ -340,12 +376,13 @@ public:
                         const wxString& action,
                         const wxString& curl = "curl");
 
                         const wxString& action,
                         const wxString& curl = "curl");
 
+protected:
     /**
         This function may be overridden in a derived class to show the output
         from curl: this may be an HTML page or anything else that the server
         returned. Value returned by this function becomes the return value of
         wxDebugReport::Process().
     */
     /**
         This function may be overridden in a derived class to show the output
         from curl: this may be an HTML page or anything else that the server
         returned. Value returned by this function becomes the return value of
         wxDebugReport::Process().
     */
-    bool OnServerReply(const wxArrayString& reply);
+    virtual bool OnServerReply(const wxArrayString& reply);
 };
 
 };