From 4e99c39bcf70a2b15d4bd6dbb609ef0aba8d9675 Mon Sep 17 00:00:00 2001 From: Not Zed Date: Wed, 28 Apr 2004 06:37:26 +0000 Subject: holder for system errors. 2004-04-28 Not Zed * e-system-errors.xml.in: holder for system errors. * test-error.c: helper to show an error message/test it. * e-error.[ch]: Api for disk-based, hig-compliant error messages and query boxes. svn path=/trunk/; revision=25650 --- widgets/misc/ChangeLog | 9 ++++++ widgets/misc/Makefile.am | 20 ++++++++++-- widgets/misc/e-error.c | 15 +++++---- widgets/misc/e-error.h | 23 ++++++++++--- widgets/misc/e-system-errors.xml.in | 22 +++++++++++++ widgets/misc/test-error.c | 64 +++++++++++++++++++++++++++++++++++++ 6 files changed, 141 insertions(+), 12 deletions(-) create mode 100644 widgets/misc/e-system-errors.xml.in create mode 100644 widgets/misc/test-error.c (limited to 'widgets/misc') diff --git a/widgets/misc/ChangeLog b/widgets/misc/ChangeLog index 53fd3deaf6..899e901ab0 100644 --- a/widgets/misc/ChangeLog +++ b/widgets/misc/ChangeLog @@ -1,3 +1,12 @@ +2004-04-28 Not Zed + + * e-system-errors.xml.in: holder for system errors. + + * test-error.c: helper to show an error message/test it. + + * e-error.[ch]: Api for disk-based, hig-compliant error messages + and query boxes. + 2004-04-19 Jeffrey Stedfast * e-info-label.c (e_info_label_new): Updated to sue E_ICON_SIZE enums. diff --git a/widgets/misc/Makefile.am b/widgets/misc/Makefile.am index 768f36cd9b..d1df5e467e 100644 --- a/widgets/misc/Makefile.am +++ b/widgets/misc/Makefile.am @@ -2,6 +2,7 @@ INCLUDES = \ -I$(top_srcdir) \ -I$(top_srcdir)/a11y/widgets/ \ -DMAP_DIR=\""$(imagesdir)"\" \ + -DEVOLUTION_PRIVDATADIR=\""$(privdatadir)"\" \ -DG_LOG_DOMAIN=__FILE__ \ $(SOURCE_SEL_CFLAGS) @@ -24,6 +25,7 @@ widgetsinclude_HEADERS = \ e-combo-button.h \ e-dateedit.h \ e-dropdown-button.h \ + e-error.h \ e-expander.h \ e-image-chooser.h \ e-info-label.h \ @@ -53,6 +55,7 @@ libemiscwidgets_la_SOURCES = \ e-combo-button.c \ e-dateedit.c \ e-dropdown-button.c \ + e-error.c \ e-expander.c \ e-image-chooser.c \ e-info-label.c \ @@ -69,6 +72,11 @@ libemiscwidgets_la_SOURCES = \ MARSHAL_GENERATED = e-util-marshal.c e-util-marshal.h @EVO_MARSHAL_RULE@ +error_in_files = e-system-errors.xml.in +error_DATA = $(error_in_files:.xml.in=.xml) +errordir = $(privdatadir)/errors +@INTLTOOL_XML_RULE@ + libemiscwidgets_la_LIBADD = $(top_builddir)/e-util/libeutil.la \ $(top_builddir)/a11y/widgets/libevolution-widgets-a11y.la \ $(SOURCE_SEL_LIBS) @@ -83,6 +91,7 @@ noinst_PROGRAMS = \ test-calendar \ test-dateedit \ test-dropdown-button \ + test-error \ test-multi-config-dialog \ test-source-option-menu \ test-source-selector \ @@ -135,7 +144,6 @@ test_title_bar_LDADD = \ ./libemiscwidgets.la \ $(GNOME_FULL_LIBS) - # test-source-selector test_source_selector_SOURCES = \ @@ -157,11 +165,19 @@ test_source_option_menu_LDADD = \ ./libemiscwidgets.la \ $(SOURCE_SEL_LIBS) +test_error_SOURCES = \ + test-error.c + +test_error_LDADD = \ + ./libemiscwidgets.la \ + $(GNOME_FULL_LIBS) + -BUILT_SOURCES = $(MARSHAL_GENERATED) +BUILT_SOURCES = $(MARSHAL_GENERATED) $(error_DATA) CLEANFILES = $(BUILT_SOURCES) EXTRA_DIST = \ + $(error_in_files) \ e-util-marshal.list \ ChangeLog.pre-1-4 diff --git a/widgets/misc/e-error.c b/widgets/misc/e-error.c index f7cc9ee7bf..d60d301cab 100644 --- a/widgets/misc/e-error.c +++ b/widgets/misc/e-error.c @@ -214,10 +214,15 @@ ee_load(const char *path) return; } - table = g_malloc0(sizeof(*table)); - table->domain = g_strdup(tmp); + table = g_hash_table_lookup(error_table, tmp); + if (table == NULL) { + table = g_malloc0(sizeof(*table)); + table->domain = g_strdup(tmp); + table->errors = g_hash_table_new(g_str_hash, g_str_equal); + g_hash_table_insert(error_table, table->domain, table); + } else + g_warning("Error file '%s', domain '%s' already used, merging", path, tmp); g_free(tmp); - table->errors = g_hash_table_new(g_str_hash, g_str_equal); for (error = root->children;error;error = error->next) { if (!strcmp(error->name, "error")) { @@ -304,8 +309,6 @@ ee_load(const char *path) } xmlFreeDoc(doc); - - g_hash_table_insert(error_table, table->domain, table); } static void @@ -324,7 +327,7 @@ ee_load_tables(void) /* setup system error types */ table = g_malloc0(sizeof(*table)); - table->domain = "system"; + table->domain = "builtin"; table->errors = g_hash_table_new(g_str_hash, g_str_equal); for (i=0;ierrors, default_errors[i].id, &default_errors[i]); diff --git a/widgets/misc/e-error.h b/widgets/misc/e-error.h index 9da24e6004..2b0bded9bc 100644 --- a/widgets/misc/e-error.h +++ b/widgets/misc/e-error.h @@ -26,11 +26,26 @@ struct _GtkWindow; -#define E_ERROR_WARNING "system:warning" -#define E_ERROR_WARNING_PRIMARY "system:warning-primary" -#define E_ERROR_ERROR "system:error" -#define E_ERROR_ERROR_PRIMARY "system:error-primary" +/* + * Some standard errors, if these are altered or added to, + * update devel-docs/misc/errors.txt + * + * Several more basic ones are needed. + */ + +#define E_ERROR_WARNING "builtin:warning" +#define E_ERROR_WARNING_PRIMARY "builtin:warning-primary" +#define E_ERROR_ERROR "builtin:error" +#define E_ERROR_ERROR_PRIMARY "builtin:error-primary" + +/* takes filename, returns OK if yes */ +#define E_ERROR_ASK_FILE_EXISTS_OVERWRITE "system:ask-save-file-exists-overwrite" +/* takes filename, reason */ +#define E_ERROR_NO_SAVE_FILE "system:no-save-file" +/* takes filename, reason */ +#define E_ERROR_NO_LOAD_FILE "system:no-save-file" +/* Note that all errors returned are standard GtkDialoge's */ struct _GtkWidget *e_error_new(struct _GtkWindow *parent, const char *tag, const char *arg0, ...); struct _GtkWidget *e_error_newv(struct _GtkWindow *parent, const char *tag, const char *arg0, va_list ap); diff --git a/widgets/misc/e-system-errors.xml.in b/widgets/misc/e-system-errors.xml.in new file mode 100644 index 0000000000..00175f91f1 --- /dev/null +++ b/widgets/misc/e-system-errors.xml.in @@ -0,0 +1,22 @@ + + + + + <_title>Overwrite file? + <_primary>File exists "{0}". + <_secondary>Do you wish to overwrite it? +