diff --git a/aegisub/src/command/tool.cpp b/aegisub/src/command/tool.cpp index e7babeb1c..b668d7188 100644 --- a/aegisub/src/command/tool.cpp +++ b/aegisub/src/command/tool.cpp @@ -49,6 +49,7 @@ #include "../dialog_fonts_collector.h" #include "../standard_paths.h" // tool_assdraw #include "../video_context.h" // tool_font_collector +#include "../compat.h" #include "../dialog_export.h" #include "../dialog_resample.h" #include "../dialog_selection.h" @@ -227,10 +228,16 @@ struct tool_translation_assistant : public Command { void operator()(agi::Context *c) { c->videoController->Stop(); - DialogTranslation d(c); - c->translationAssistant = &d; - d.ShowModal(); - c->translationAssistant = 0; + try { + DialogTranslation d(c); + c->translationAssistant = &d; + d.ShowModal(); + c->translationAssistant = 0; + } + catch (agi::Exception const& e) { + c->translationAssistant = 0; + wxMessageBox(lagi_wxString(e.GetChainedMessage())); + } } }; diff --git a/aegisub/src/dialog_translation.cpp b/aegisub/src/dialog_translation.cpp index a04237337..b1df9ddab 100644 --- a/aegisub/src/dialog_translation.cpp +++ b/aegisub/src/dialog_translation.cpp @@ -32,6 +32,7 @@ #include "ass_file.h" #include "audio_controller.h" #include "command/command.h" +#include "compat.h" #include "help_button.h" #include "libresrc/libresrc.h" #include "persist_location.h" @@ -157,8 +158,10 @@ DialogTranslation::DialogTranslation(agi::Context *c) Bind(wxEVT_KEY_DOWN, &DialogTranslation::OnKeyDown, this); active_line->ParseASSTags(); - if (bad_block(active_line->Blocks[0])) - NextBlock(); + if (bad_block(active_line->Blocks[0])) { + if (!NextBlock()) + throw NothingToTranslate(STD_STR(_("There is nothing to translate in the file."))); + } else UpdateDisplay(); } diff --git a/aegisub/src/dialog_translation.h b/aegisub/src/dialog_translation.h index e8a96a0a8..569e989ac 100644 --- a/aegisub/src/dialog_translation.h +++ b/aegisub/src/dialog_translation.h @@ -24,6 +24,7 @@ #include #endif +#include #include namespace agi { struct Context; } @@ -71,4 +72,6 @@ public: bool PrevBlock(); void Commit(bool next); void InsertOriginal(); + + DEFINE_SIMPLE_EXCEPTION_NOINNER(NothingToTranslate, agi::Exception, "dialog/translation/nothing_to_translate"); };