Mercurial > geeqie
changeset 670:a484500de88d
Improve editor commands error display:
- display all errors (not only syntax errors)
- display errors from Preferences (checks are made on Apply or OK)
author | zas_ |
---|---|
date | Fri, 16 May 2008 09:10:56 +0000 |
parents | dd5d7fe9458f |
children | 8268cbe682f1 |
files | src/editors.c src/preferences.c |
diffstat | 2 files changed, 26 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/editors.c Fri May 16 08:37:07 2008 +0000 +++ b/src/editors.c Fri May 16 09:10:56 2008 +0000 @@ -814,9 +814,9 @@ error = editor_command_start(command, options->editor_name[n], list, cb, data); g_free(command); - if (n < GQ_EDITOR_GENERIC_SLOTS && (error & EDITOR_ERROR_SYNTAX)) + if (n < GQ_EDITOR_GENERIC_SLOTS && (error & EDITOR_ERROR_MASK)) { - gchar *text = g_strdup_printf(_("Syntax error in the editor template \"%s\":\n%s"), + gchar *text = g_strdup_printf(_("%s\n#%d \"%s\":\n%s"), editor_get_error_str(error), n+1, options->editor_name[n], options->editor_command[n]); file_util_warning_dialog(_("Invalid editor command"), text, GTK_STOCK_DIALOG_ERROR, NULL);
--- a/src/preferences.c Fri May 16 08:37:07 2008 +0000 +++ b/src/preferences.c Fri May 16 09:10:56 2008 +0000 @@ -157,6 +157,9 @@ gint i; gint refresh = FALSE; + { + GString *errmsg = g_string_new(""); + for (i = 0; i < GQ_EDITOR_SLOTS; i++) { if (i < GQ_EDITOR_GENERIC_SLOTS) @@ -170,8 +173,28 @@ g_free(options->editor_command[i]); options->editor_command[i] = NULL; buf = gtk_entry_get_text(GTK_ENTRY(editor_command_entry[i])); - if (buf && strlen(buf) > 0) options->editor_command[i] = g_strdup(buf); + if (buf && strlen(buf) > 0) + { + gint flags = editor_command_parse(buf, NULL, NULL); + + if (flags & EDITOR_ERROR_MASK) + { + if (errmsg->str[0]) g_string_append(errmsg, "\n\n"); + g_string_append_printf(errmsg, _("%s\n#%d \"%s\":\n%s"), editor_get_error_str(flags), + i+1, options->editor_name[i], buf); + + } + options->editor_command[i] = g_strdup(buf); + } } + + if (errmsg->str[0]) + { + file_util_warning_dialog(_("Invalid editor command"), errmsg->str, GTK_STOCK_DIALOG_ERROR, NULL); + } + + g_string_free(errmsg, TRUE); + } layout_edit_update_all(); g_free(options->file_ops.safe_delete_path);