diff --git a/data/en.mse-locale/locale b/data/en.mse-locale/locale index b5d89202..ad3be729 100644 --- a/data/en.mse-locale/locale +++ b/data/en.mse-locale/locale @@ -635,6 +635,11 @@ error: has no member value: String "%s" has no member '%s' can't convert value: Can't convert "%s" from %s to %s unsupported format: Invalid string format: '%s' + in function: + %s + in function %s + in parameter: + Parameter %s: %s # Image stuff coordinates for blending overlap: Coordinates for blending overlap diff --git a/src/gui/update_checker.cpp b/src/gui/update_checker.cpp index 07d8dc00..9cd2b413 100644 --- a/src/gui/update_checker.cpp +++ b/src/gui/update_checker.cpp @@ -41,7 +41,7 @@ class PackageVersionData : public IntrusivePtrBase { DECLARE_REFLECTION(); }; -/// Information on the latest availible version +/// Information on the latest available version class VersionData : public IntrusivePtrBase { public: Version version; ///< Latest version number of MSE @@ -163,7 +163,7 @@ struct HtmlWindowToBrowser : public wxHtmlWindow { void show_update_dialog(Window* parent) { if (!update_available() || shown_dialog) return; // we already have the latest version, or this has already been displayed. // Show update dialog - wxDialog* dlg = new wxDialog(parent, wxID_ANY, _TITLE_("updates availible"), wxDefaultPosition); + wxDialog* dlg = new wxDialog(parent, wxID_ANY, _TITLE_("updates available"), wxDefaultPosition); // controls wxHtmlWindow* html = new HtmlWindowToBrowser(dlg, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO | wxSUNKEN_BORDER); html->SetPage(update_version_data->description); diff --git a/src/gui/update_checker.hpp b/src/gui/update_checker.hpp index 9a2dc4bc..ab992560 100644 --- a/src/gui/update_checker.hpp +++ b/src/gui/update_checker.hpp @@ -21,7 +21,7 @@ void check_updates(); */ void check_updates_now(bool async = true); -/// Show a dialog to inform the user that updates are availible (if there are any) +/// Show a dialog to inform the user that updates are available (if there are any) /** Call check_updates first. * Call this function from an onIdle loop */ void show_update_dialog(Window* parent); diff --git a/src/resource/common/expected_locale_keys b/src/resource/common/expected_locale_keys index 3abb4b12..22071081 100644 --- a/src/resource/common/expected_locale_keys +++ b/src/resource/common/expected_locale_keys @@ -1,6 +1,6 @@ # This file contains the keys expected to be in MSE locales # It was automatically generated by tools/locale/locale.pl -# Generated on Sun Sep 2 02:25:24 2007 +# Generated on Thu Sep 20 23:50:25 2007 action: add control point: 0 @@ -88,6 +88,8 @@ error: has no member: 2 has no member value: 2 images used for blending must have the same size: 0 + in function: 2 + in parameter: 2 internal error: 1 newer version: 2 no game specified for the set: 0 diff --git a/src/script/context.cpp b/src/script/context.cpp index f0e6ab78..1b6d571c 100644 --- a/src/script/context.cpp +++ b/src/script/context.cpp @@ -131,7 +131,7 @@ ScriptValueP Context::eval(const Script& script, bool useScope) { const Instruction* instr_bt = script.backtraceSkip(instr - i.data - 2, i.data); // have we have reached the name if (instr_bt) { - throw ScriptError(e.what() + _("\n in function: ") + script.instructionName(instr_bt)); + throw ScriptError(_ERROR_2_("in function", e.what(), script.instructionName(instr_bt))); } else { throw e; // rethrow } diff --git a/src/script/functions/util.hpp b/src/script/functions/util.hpp index 6f6dcfeb..7d72e123 100644 --- a/src/script/functions/util.hpp +++ b/src/script/functions/util.hpp @@ -62,6 +62,15 @@ // ----------------------------------------------------------------------------- : Parameters +template +inline Type from_script(const ScriptValueP& v, const String& str) { + try { + return from_script(v); + } catch (ScriptError& e) { + throw ScriptError(_ERROR_2_("in parameter", str, e.what())); + } +} + /// Retrieve a parameter to a SCRIPT_FUNCTION with the given name and type /** Usage: * @code @@ -75,7 +84,7 @@ #define SCRIPT_PARAM(Type, name) \ SCRIPT_PARAM_N(Type, _(#name), name) #define SCRIPT_PARAM_N(Type, str, name) \ - Type name = from_script(ctx.getVariable(str)) + Type name = from_script(ctx.getVariable(str), str) /// Retrieve an optional parameter /** Usage: @@ -102,7 +111,7 @@ #define SCRIPT_OPTIONAL_PARAM_N_(Type, str, name) \ ScriptValueP name##_ = ctx.getVariableOpt(str); \ Type name = name##_ && name##_ != script_nil \ - ? from_script(name##_) : Type(); + ? from_script(name##_, str) : Type(); /// Retrieve an optional parameter with a default value #define SCRIPT_PARAM_DEFAULT(Type, name, def) \ @@ -110,7 +119,7 @@ /// Retrieve a named optional parameter with a default value #define SCRIPT_PARAM_DEFAULT_N(Type, str, name, def) \ ScriptValueP name##_ = ctx.getVariableOpt(str); \ - Type name = name##_ ? from_script(name##_) : def + Type name = name##_ ? from_script(name##_, str) : def // ----------------------------------------------------------------------------- : Rules diff --git a/src/script/value.cpp b/src/script/value.cpp index 97357da9..3b8ae820 100644 --- a/src/script/value.cpp +++ b/src/script/value.cpp @@ -14,7 +14,7 @@ // ----------------------------------------------------------------------------- : ScriptValue // Base cases -ScriptValue::operator String() const { return _("[[") + typeName() + _("]]"); } +ScriptValue::operator String() const { throw ScriptError(_ERROR_2_("can't convert", typeName(), _TYPE_("string" ))); } ScriptValue::operator int() const { throw ScriptError(_ERROR_2_("can't convert", typeName(), _TYPE_("integer" ))); } ScriptValue::operator double() const { throw ScriptError(_ERROR_2_("can't convert", typeName(), _TYPE_("double" ))); } ScriptValue::operator Color() const { throw ScriptError(_ERROR_2_("can't convert", typeName(), _TYPE_("color" ))); }