summaryrefslogtreecommitdiff
path: root/src/tools
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-11-06 21:41:43 +0000
committerCarl Hetherington <cth@carlh.net>2014-11-06 21:41:43 +0000
commit90ec60c9e5b45453525368842345ad1a6498fa61 (patch)
tree720e97d855e98c4c62ffecfe4e2945a32ab27dc9 /src/tools
parentb17b68bb8e564601c7ea80ceea853fa564998c39 (diff)
Basic support for emailing a report of a problem (#43).
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/dcpomatic.cc20
-rw-r--r--src/tools/dcpomatic_server.cc8
2 files changed, 24 insertions, 4 deletions
diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc
index edd04fd51..3edc24181 100644
--- a/src/tools/dcpomatic.cc
+++ b/src/tools/dcpomatic.cc
@@ -46,6 +46,7 @@
#include "wx/hints_dialog.h"
#include "wx/update_dialog.h"
#include "wx/content_panel.h"
+#include "wx/report_problem_dialog.h"
#include "lib/film.h"
#include "lib/config.h"
#include "lib/util.h"
@@ -127,6 +128,7 @@ enum {
ID_tools_hints,
ID_tools_encoding_servers,
ID_tools_check_for_updates,
+ ID_help_report_a_problem,
/* IDs for shortcuts (with no associated menu item) */
ID_add_file
};
@@ -188,6 +190,7 @@ public:
Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::tools_encoding_servers, this), ID_tools_encoding_servers);
Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::tools_check_for_updates, this), ID_tools_check_for_updates);
Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::help_about, this), wxID_ABOUT);
+ Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::help_report_a_problem, this), ID_help_report_a_problem);
Bind (wxEVT_CLOSE_WINDOW, boost::bind (&Frame::close, this, _1));
@@ -501,6 +504,15 @@ private:
d->Destroy ();
}
+ void help_report_a_problem ()
+ {
+ ReportProblemDialog* d = new ReportProblemDialog (this, _film);
+ if (d->ShowModal () == wxID_OK) {
+ d->report ();
+ }
+ d->Destroy ();
+ }
+
bool should_close ()
{
if (!JobManager::instance()->work_to_do ()) {
@@ -647,6 +659,7 @@ private:
#else
add_item (help, _("About"), wxID_ABOUT, ALWAYS);
#endif
+ add_item (help, _("Report a problem..."), ID_help_report_a_problem, ALWAYS);
m->Append (_file_menu, _("&File"));
#ifndef __WXOSX__
@@ -824,9 +837,8 @@ class App : public wxApp
try {
throw;
} catch (exception& e) {
- error_dialog (0, wxString::Format (_("An exception occurred (%s). Please report this problem to the DCP-o-matic author (carl@dcpomatic.com)."), e.what ()));
- } catch (...) {
- error_dialog (0, _("An unknown exception occurred. Please report this problem to the DCP-o-matic author (carl@dcpomatic.com)."));
+ error_dialog (0, wxString::Format (_("An exception occurred (%s)."), e.what ()) + " " + REPORT_PROBLEM); } catch (...) {
+ error_dialog (0, _("An unknown exception occurred.") + " " + REPORT_PROBLEM);
}
/* This will terminate the program */
@@ -835,7 +847,7 @@ class App : public wxApp
void OnUnhandledException ()
{
- error_dialog (0, _("An unknown exception occurred. Please report this problem to the DCP-o-matic author (carl@dcpomatic.com)."));
+ error_dialog (0, _("An unknown exception occurred.") + " " + REPORT_PROBLEM);
}
void idle ()
diff --git a/src/tools/dcpomatic_server.cc b/src/tools/dcpomatic_server.cc
index a82478dfd..bcd5c8df6 100644
--- a/src/tools/dcpomatic_server.cc
+++ b/src/tools/dcpomatic_server.cc
@@ -47,6 +47,14 @@ public:
return _log;
}
+ string head_and_tail () const {
+ if (_log.size () < 2048) {
+ return _log;
+ }
+
+ return _log.substr (0, 1024) + _log.substr (_log.size() - 1025, 1024);
+ }
+
private:
void do_log (string m)
{