[opensource-dev] Review Request: STORM-1018 Improve error messaging for External Editor feature
Vadim ProductEngine
vsavchuk at productengine.com
Thu Mar 10 10:52:51 PST 2011
> On March 7, 2011, 10:31 p.m., Merov Linden wrote:
> > I like the intent. In the code though, I don't really understand why the EC_NOT_SPECIFIED case is treated differently than other error messages. I fail to understand why this needs a "custom" message (in the panel xml instead of strings.xml) and why having it in the panel xml has any advantage.
>
> Vadim ProductEngine wrote:
> It's because the XUI preview tool and script editing provide different ways to specify external editor.
>
> Script editing: ExternalEditor setting, which can be overriden with LL_SCRIPT_EDITOR environment variable.
>
> XUI preview tool: ExternalEditor settings, which can be overriden with LL_XUI_EDITOR that, in turn, is overridable with the Editor Path input field of the floater.
>
> Thus we need different warning messages for the two cases.
>
> Merov Linden wrote:
> I see. I understand the need for the 2 different warning messages. Still, the implementation is rather inelegant:
> - LLExternalEditor::getErrorMessage(LLExternalEditor::EC_NOT_SPECIFIED) though specified is actually never used
> - the whole "if / else" switch to extract the message string in indra/newview/llfloateruipreview.cpp is actually useless since ExternalEditorNotSet is used
> - the string ExternalEditorNotSet is defined twice (once in en/floater_ui_preview.xml and once in en/strings.xml)
>
> It just feels like lots of code to just get an error message from an error status.
>
> I'd rather create an additional error for preview (EC_NOT_SPECIFIED_PREVIEW) and overwritte the status in the preview tool using something like:
> status = (status == LLExternalEditor::EC_NOT_SPECIFIED ? LLExternalEditor::EC_NOT_SPECIFIED_PREVIEW : status);
>
> Then put all the messages in one place, use one call to get the msg from the status and avoid all this "if / else" on message extracting.
>
1. Right, the getErrorMessage() is never called with EC_NOT_SPECIFIED. I just added a generic error message for consistency.
2. The if/else statement isn't useless because LLPanel::getString() and LLTrans::getString() actually look up the string in different files: the panel/floater XML and strings.xml respectively.
3. Yes, the "not specified" messages have similar keys in strings.xml and in floater_ui_preview.xml, but is as harmless as having similarly named
local variables in different methods. However I can change the name if you find it confusing.
I agree that the code implementing custom messages is not very elegant, but I'd still prefer it to embedding caller-specific error codes to the generic LLExternalEditor class.
- Vadim
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://codereview.secondlife.com/r/179/#review432
-----------------------------------------------------------
On March 7, 2011, 9:16 a.m., Vadim ProductEngine wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://codereview.secondlife.com/r/179/
> -----------------------------------------------------------
>
> (Updated March 7, 2011, 9:16 a.m.)
>
>
> Review request for Viewer and Seth ProductEngine.
>
>
> Summary
> -------
>
> Let the user know what's wrong with external editor.
>
> Added meaningful messages for the following errors:
> * Editor not specified.
> * Error parsing command line.
> * Specified binary not found.
> * Editor failed to run.
>
> All the messages are translatable.
>
>
> This addresses bug STORM-1018.
> http://jira.secondlife.com/browse/STORM-1018
>
>
> Diffs
> -----
>
> indra/newview/llexternaleditor.h ef2df52563bb
> indra/newview/llexternaleditor.cpp ef2df52563bb
> indra/newview/llfloateruipreview.cpp ef2df52563bb
> indra/newview/llpreviewscript.cpp ef2df52563bb
> indra/newview/skins/default/xui/en/floater_ui_preview.xml ef2df52563bb
> indra/newview/skins/default/xui/en/panel_script_ed.xml ef2df52563bb
> indra/newview/skins/default/xui/en/strings.xml ef2df52563bb
>
> Diff: http://codereview.secondlife.com/r/179/diff
>
>
> Testing
> -------
>
> Test cases:
> 1. Use a path containing spaces without enclosing it with double quotes (/path to/editor).
> Expected: the "not found" message.
> 2. Specify empty path ().
> Expected: the "not found" message.
> 3. Try using an odd number of double quotes ("/path to/editor "%s").
> Expected: the "parse error" message.
> 4. Specifying a nonexistent editor (/non/existent/editor).
> Expected: the "not found" message.
> 5. Specify a valid editor path (/usr/bin/editor).
> Expected: the editor is executed.
>
> The command can be specified with the ExternalEditor debug setting or an environment variable: LL_SCRIPT_EDITOR for script editor and LL_XUI_EDITOR for the XUI preview tool. In the latter case you can also override the command via the "Editor Path" floater input field.
>
>
> Thanks,
>
> Vadim
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.secondlife.com/pipermail/opensource-dev/attachments/20110310/68d93f17/attachment.htm
More information about the opensource-dev
mailing list