]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/dbgrptg.cpp
avoiding potential mismatch between true and expected state of wxGraphicsContext...
[wxWidgets.git] / src / generic / dbgrptg.cpp
index efb75d241b0c6c3d9d73433ad15a999cbab2a68d..a6b5561a4b8e0f04af40e6f7ea1812ac0f889261 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     2005-01-21
 // RCS-ID:      $Id$
 // Copyright:   (c) 2005 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
 // Created:     2005-01-21
 // RCS-ID:      $Id$
 // Copyright:   (c) 2005 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// License:     wxWindows licence
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
 ///////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
     #pragma hdrstop
 #endif
 
     #pragma hdrstop
 #endif
 
+#if wxUSE_DEBUGREPORT && wxUSE_XML
+
+#include "wx/debugrpt.h"
+
 #ifndef WX_PRECOMP
     #include "wx/sizer.h"
     #include "wx/checklst.h"
     #include "wx/textctrl.h"
 #ifndef WX_PRECOMP
     #include "wx/sizer.h"
     #include "wx/checklst.h"
     #include "wx/textctrl.h"
+    #include "wx/intl.h"
+    #include "wx/stattext.h"
+    #include "wx/filedlg.h"
+    #include "wx/valtext.h"
+    #include "wx/button.h"
 #endif // WX_PRECOMP
 
 #endif // WX_PRECOMP
 
-#if wxUSE_DEBUGREPORT && wxUSE_XML
-
-#include "wx/debugrpt.h"
-
-#include "wx/intl.h"
 #include "wx/filename.h"
 #include "wx/ffile.h"
 #include "wx/mimetype.h"
 
 #include "wx/statline.h"
 #include "wx/filename.h"
 #include "wx/ffile.h"
 #include "wx/mimetype.h"
 
 #include "wx/statline.h"
-#include "wx/stattext.h"
-#include "wx/filedlg.h"
-#include "wx/valtext.h"
 
 #ifdef __WXMSW__
     #include "wx/evtloop.h"     // for SetCriticalWindow()
 
 #ifdef __WXMSW__
     #include "wx/evtloop.h"     // for SetCriticalWindow()
+    #include "wx/scopeguard.h"
 #endif // __WXMSW__
 
 // ----------------------------------------------------------------------------
 #endif // __WXMSW__
 
 // ----------------------------------------------------------------------------
@@ -62,7 +64,7 @@ private:
     // the text we show
     wxTextCtrl *m_text;
 
     // the text we show
     wxTextCtrl *m_text;
 
-    DECLARE_NO_COPY_CLASS(wxDumpPreviewDlg)
+    wxDECLARE_NO_COPY_CLASS(wxDumpPreviewDlg);
 };
 
 wxDumpPreviewDlg::wxDumpPreviewDlg(wxWindow *parent,
 };
 
 wxDumpPreviewDlg::wxDumpPreviewDlg(wxWindow *parent,
@@ -131,14 +133,21 @@ public:
     wxString m_command;
 
 private:
     wxString m_command;
 
 private:
+
+#if wxUSE_FILEDLG
     void OnBrowse(wxCommandEvent& event);
     void OnBrowse(wxCommandEvent& event);
+#endif // wxUSE_FILEDLG
 
     DECLARE_EVENT_TABLE()
 
     DECLARE_EVENT_TABLE()
-    DECLARE_NO_COPY_CLASS(wxDumpOpenExternalDlg)
+    wxDECLARE_NO_COPY_CLASS(wxDumpOpenExternalDlg);
 };
 
 BEGIN_EVENT_TABLE(wxDumpOpenExternalDlg, wxDialog)
 };
 
 BEGIN_EVENT_TABLE(wxDumpOpenExternalDlg, wxDialog)
+
+#if wxUSE_FILEDLG
     EVT_BUTTON(wxID_MORE, wxDumpOpenExternalDlg::OnBrowse)
     EVT_BUTTON(wxID_MORE, wxDumpOpenExternalDlg::OnBrowse)
+#endif
+
 END_EVENT_TABLE()
 
 
 END_EVENT_TABLE()
 
 
@@ -180,12 +189,17 @@ wxDumpOpenExternalDlg::wxDumpOpenExternalDlg(wxWindow *parent,
                               );
     sizerH->Add(command,
                     wxSizerFlags(1).Align(wxALIGN_CENTER_VERTICAL));
                               );
     sizerH->Add(command,
                     wxSizerFlags(1).Align(wxALIGN_CENTER_VERTICAL));
+
+#if wxUSE_FILEDLG
+
     wxButton *browse = new wxButton(this, wxID_MORE, wxT(">>"),
                                     wxDefaultPosition, wxDefaultSize,
                                     wxBU_EXACTFIT);
     sizerH->Add(browse,
                 wxSizerFlags(0).Align(wxALIGN_CENTER_VERTICAL). Border(wxLEFT));
 
     wxButton *browse = new wxButton(this, wxID_MORE, wxT(">>"),
                                     wxDefaultPosition, wxDefaultSize,
                                     wxBU_EXACTFIT);
     sizerH->Add(browse,
                 wxSizerFlags(0).Align(wxALIGN_CENTER_VERTICAL). Border(wxLEFT));
 
+#endif // wxUSE_FILEDLG
+
     sizerTop->Add(sizerH, wxSizerFlags(0).Expand().Border());
 
     sizerTop->Add(new wxStaticLine(this), wxSizerFlags().Expand().Border());
     sizerTop->Add(sizerH, wxSizerFlags(0).Expand().Border());
 
     sizerTop->Add(new wxStaticLine(this), wxSizerFlags().Expand().Border());
@@ -204,6 +218,8 @@ wxDumpOpenExternalDlg::wxDumpOpenExternalDlg(wxWindow *parent,
     command->SetFocus();
 }
 
     command->SetFocus();
 }
 
+#if wxUSE_FILEDLG
+
 void wxDumpOpenExternalDlg::OnBrowse(wxCommandEvent& )
 {
     wxFileName fname(m_command);
 void wxDumpOpenExternalDlg::OnBrowse(wxCommandEvent& )
 {
     wxFileName fname(m_command);
@@ -212,7 +228,7 @@ void wxDumpOpenExternalDlg::OnBrowse(wxCommandEvent& )
                      fname.GetPathWithSep(),
                      fname.GetFullName()
 #ifdef __WXMSW__
                      fname.GetPathWithSep(),
                      fname.GetFullName()
 #ifdef __WXMSW__
-                     , _("Executable files (*.exe)|*.exe|All files (*.*)|*.*||")
+                     , _("Executable files (*.exe)|*.exe|") + wxALL_FILES
 #endif // __WXMSW__
                      );
     if ( dlg.ShowModal() == wxID_OK )
 #endif // __WXMSW__
                      );
     if ( dlg.ShowModal() == wxID_OK )
@@ -222,6 +238,7 @@ void wxDumpOpenExternalDlg::OnBrowse(wxCommandEvent& )
     }
 }
 
     }
 }
 
+#endif // wxUSE_FILEDLG
 
 // ----------------------------------------------------------------------------
 // wxDebugReportDialog: class showing debug report to the user
 
 // ----------------------------------------------------------------------------
 // wxDebugReportDialog: class showing debug report to the user
@@ -256,7 +273,7 @@ private:
     wxArrayString m_files;
 
     DECLARE_EVENT_TABLE()
     wxArrayString m_files;
 
     DECLARE_EVENT_TABLE()
-    DECLARE_NO_COPY_CLASS(wxDebugReportDialog)
+    wxDECLARE_NO_COPY_CLASS(wxDebugReportDialog);
 };
 
 // ============================================================================
 };
 
 // ============================================================================
@@ -281,21 +298,30 @@ wxDebugReportDialog::wxDebugReportDialog(wxDebugReport& dbgrpt)
                               dbgrpt.GetReportName().c_str()),
                               wxDefaultPosition,
                               wxDefaultSize,
                               dbgrpt.GetReportName().c_str()),
                               wxDefaultPosition,
                               wxDefaultSize,
-                              wxDEFAULT_DIALOG_STYLE | wxTHICK_FRAME),
+                              wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER),
                      m_dbgrpt(dbgrpt)
 {
     // upper part of the dialog: explanatory message
     wxString msg;
                      m_dbgrpt(dbgrpt)
 {
     // upper part of the dialog: explanatory message
     wxString msg;
+    wxString debugDir = dbgrpt.GetDirectory();
+
+    // The temporary directory can be the short form on Windows;
+    // normalize it for the benefit of users.
+#ifdef __WXMSW__
+    wxFileName debugDirFilename(debugDir, wxEmptyString);
+    debugDirFilename.Normalize(wxPATH_NORM_LONG);
+    debugDir = debugDirFilename.GetPath();
+#endif
     msg << _("A debug report has been generated in the directory\n")
     msg << _("A debug report has been generated in the directory\n")
-        << _T('\n')
-        << _T("             \"") << dbgrpt.GetDirectory() << _T("\"\n")
-        << _T('\n')
+        << wxT('\n')
+        << wxT("             \"") << debugDir << wxT("\"\n")
+        << wxT('\n')
         << _("The report contains the files listed below. If any of these files contain private information,\nplease uncheck them and they will be removed from the report.\n")
         << _("The report contains the files listed below. If any of these files contain private information,\nplease uncheck them and they will be removed from the report.\n")
-        << _T('\n')
+        << wxT('\n')
         << _("If you wish to suppress this debug report completely, please choose the \"Cancel\" button,\nbut be warned that it may hinder improving the program, so if\nat all possible please do continue with the report generation.\n")
         << _("If you wish to suppress this debug report completely, please choose the \"Cancel\" button,\nbut be warned that it may hinder improving the program, so if\nat all possible please do continue with the report generation.\n")
-        << _T('\n')
+        << wxT('\n')
         << _("              Thank you and we're sorry for the inconvenience!\n")
         << _("              Thank you and we're sorry for the inconvenience!\n")
-        << _T("\n\n"); // just some white space to separate from other stuff
+        << wxT("\n\n"); // just some white space to separate from other stuff
 
     const wxSizerFlags flagsFixed(SizerFlags(0));
     const wxSizerFlags flagsExpand(SizerFlags(1));
 
     const wxSizerFlags flagsFixed(SizerFlags(0));
     const wxSizerFlags flagsExpand(SizerFlags(1));
@@ -308,9 +334,9 @@ wxDebugReportDialog::wxDebugReportDialog(wxDebugReport& dbgrpt)
     // ... and the list of files in this debug report with buttons to view them
     wxSizer *sizerFileBtns = new wxBoxSizer(wxVERTICAL);
     sizerFileBtns->AddStretchSpacer(1);
     // ... and the list of files in this debug report with buttons to view them
     wxSizer *sizerFileBtns = new wxBoxSizer(wxVERTICAL);
     sizerFileBtns->AddStretchSpacer(1);
-    sizerFileBtns->Add(new wxButton(this, wxID_VIEW_DETAILS, _T("&View...")),
+    sizerFileBtns->Add(new wxButton(this, wxID_VIEW_DETAILS, _("&View...")),
                         wxSizerFlags().Border(wxBOTTOM));
                         wxSizerFlags().Border(wxBOTTOM));
-    sizerFileBtns->Add(new wxButton(this, wxID_OPEN, _T("&Open...")),
+    sizerFileBtns->Add(new wxButton(this, wxID_OPEN, _("&Open...")),
                         wxSizerFlags().Border(wxTOP));
     sizerFileBtns->AddStretchSpacer(1);
 
                         wxSizerFlags().Border(wxTOP));
     sizerFileBtns->AddStretchSpacer(1);
 
@@ -361,7 +387,7 @@ bool wxDebugReportDialog::TransferDataToWindow()
             desc;
         if ( m_dbgrpt.GetFile(n, &name, &desc) )
         {
             desc;
         if ( m_dbgrpt.GetFile(n, &name, &desc) )
         {
-            m_checklst->Append(name + _T(" (") + desc + _T(')'));
+            m_checklst->Append(name + wxT(" (") + desc + wxT(')'));
             m_checklst->Check(n);
 
             m_files.Add(name);
             m_checklst->Check(n);
 
             m_files.Add(name);
@@ -388,7 +414,7 @@ bool wxDebugReportDialog::TransferDataFromWindow()
     if ( !notes.empty() )
     {
         // for now filename fixed, could make it configurable in the future...
     if ( !notes.empty() )
     {
         // for now filename fixed, could make it configurable in the future...
-        m_dbgrpt.AddText(_T("notes.txt"), notes, _T("user notes"));
+        m_dbgrpt.AddText(wxT("notes.txt"), notes, wxT("user notes"));
     }
 
     return true;
     }
 
     return true;
@@ -401,7 +427,7 @@ bool wxDebugReportDialog::TransferDataFromWindow()
 void wxDebugReportDialog::OnView(wxCommandEvent& )
 {
     const int sel = m_checklst->GetSelection();
 void wxDebugReportDialog::OnView(wxCommandEvent& )
 {
     const int sel = m_checklst->GetSelection();
-    wxCHECK_RET( sel != -1, _T("invalid selection in OnView()") );
+    wxCHECK_RET( sel != wxNOT_FOUND, wxT("invalid selection in OnView()") );
 
     wxFileName fn(m_dbgrpt.GetDirectory(), m_files[sel]);
     wxString str;
 
     wxFileName fn(m_dbgrpt.GetDirectory(), m_files[sel]);
     wxString str;
@@ -417,7 +443,7 @@ void wxDebugReportDialog::OnView(wxCommandEvent& )
 void wxDebugReportDialog::OnOpen(wxCommandEvent& )
 {
     const int sel = m_checklst->GetSelection();
 void wxDebugReportDialog::OnOpen(wxCommandEvent& )
 {
     const int sel = m_checklst->GetSelection();
-    wxCHECK_RET( sel != -1, _T("invalid selection in OnOpen()") );
+    wxCHECK_RET( sel != wxNOT_FOUND, wxT("invalid selection in OnOpen()") );
 
     wxFileName fn(m_dbgrpt.GetDirectory(), m_files[sel]);
 
 
     wxFileName fn(m_dbgrpt.GetDirectory(), m_files[sel]);
 
@@ -446,7 +472,7 @@ void wxDebugReportDialog::OnOpen(wxCommandEvent& )
             if ( !cmd.empty() )
             {
 #if wxUSE_MIMETYPE
             if ( !cmd.empty() )
             {
 #if wxUSE_MIMETYPE
-                if ( cmd.find(_T('%')) != wxString::npos )
+                if ( cmd.find(wxT('%')) != wxString::npos )
                 {
                     command = wxFileType::ExpandCommand(cmd, fn.GetFullPath());
                 }
                 {
                     command = wxFileType::ExpandCommand(cmd, fn.GetFullPath());
                 }
@@ -454,7 +480,7 @@ void wxDebugReportDialog::OnOpen(wxCommandEvent& )
 #endif // wxUSE_MIMETYPE
                 {
                     // append the file name to the end
 #endif // wxUSE_MIMETYPE
                 {
                     // append the file name to the end
-                    command << cmd << _T(" \"") << fn.GetFullPath() << _T('"');
+                    command << cmd << wxT(" \"") << fn.GetFullPath() << wxT('"');
                 }
             }
         }
                 }
             }
         }
@@ -492,10 +518,12 @@ bool wxDebugReportPreviewStd::Show(wxDebugReport& dbgrpt) const
     // before entering the event loop (from ShowModal()), block the event
     // handling for all other windows as this could result in more crashes
     wxEventLoop::SetCriticalWindow(&dlg);
     // before entering the event loop (from ShowModal()), block the event
     // handling for all other windows as this could result in more crashes
     wxEventLoop::SetCriticalWindow(&dlg);
+
+    wxON_BLOCK_EXIT1( wxEventLoop::SetCriticalWindow,
+                        static_cast<wxWindow *>(NULL) );
 #endif // __WXMSW__
 
     return dlg.ShowModal() == wxID_OK && dbgrpt.GetFilesCount() != 0;
 }
 
 #endif // __WXMSW__
 
     return dlg.ShowModal() == wxID_OK && dbgrpt.GetFilesCount() != 0;
 }
 
-#endif // wxUSE_DEBUGREPORT
-
+#endif // wxUSE_DEBUGREPORT && wxUSE_XML