aboutsummaryrefslogtreecommitdiffstats
path: root/e-util/e-alert-sink.h
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2010-09-30 09:11:44 +0800
committerMatthew Barnes <mbarnes@redhat.com>2010-09-30 09:11:44 +0800
commit0e4c54eddced72c9639001849148fe1813c5dc4e (patch)
tree3ba53e853901d3b7e733b6aed145c5eb54e6a2fc /e-util/e-alert-sink.h
parentd3b09614221d075452496a5198a3910d07eb2818 (diff)
downloadgsoc2013-evolution-0e4c54eddced72c9639001849148fe1813c5dc4e.tar
gsoc2013-evolution-0e4c54eddced72c9639001849148fe1813c5dc4e.tar.gz
gsoc2013-evolution-0e4c54eddced72c9639001849148fe1813c5dc4e.tar.bz2
gsoc2013-evolution-0e4c54eddced72c9639001849148fe1813c5dc4e.tar.lz
gsoc2013-evolution-0e4c54eddced72c9639001849148fe1813c5dc4e.tar.xz
gsoc2013-evolution-0e4c54eddced72c9639001849148fe1813c5dc4e.tar.zst
gsoc2013-evolution-0e4c54eddced72c9639001849148fe1813c5dc4e.zip
Messin around with EAlerts.
Trying out a new interface called EAlertSink. The idea is to centralize how errors are shown to the user. A GtkWindow subclass would implement the EAlertSink interface, which consists of a single method: void (*submit_alert) (EAlertSink *alert_sink, EAlert *alert); The subclass has complete control over what to do with the EAlert, although I imagine we'll wind up implementing various alert-handling policies as standalone widgets such as EAlertDialog. I'd like to try an EAlertInfoBar. Code that would otherwise display an error dialog itself would instead pass the EAlert to an appropriate EAlertSink and be done with it. Nothing is final yet. Still hacking on EAlert trying to find an API that feels right for these use cases.
Diffstat (limited to 'e-util/e-alert-sink.h')
-rw-r--r--e-util/e-alert-sink.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/e-util/e-alert-sink.h b/e-util/e-alert-sink.h
new file mode 100644
index 0000000000..35c56f95b1
--- /dev/null
+++ b/e-util/e-alert-sink.h
@@ -0,0 +1,62 @@
+/*
+ * e-alert-sink.h
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+#ifndef E_ALERT_SINK_H
+#define E_ALERT_SINK_H
+
+#include <gtk/gtk.h>
+#include <e-util/e-alert.h>
+
+/* Standard GObject macros */
+#define E_TYPE_ALERT_SINK \
+ (e_alert_sink_get_type ())
+#define E_ALERT_SINK(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), E_TYPE_ALERT_SINK, EAlertSink))
+#define E_ALERT_SINK_INTERFACE(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), E_TYPE_ALERT_SINK, EAlertSinkInterface))
+#define E_IS_ALERT_SINK(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), E_TYPE_ALERT_SINK))
+#define E_IS_ALERT_SINK_INTERFACE(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), E_TYPE_ALERT_SINK))
+#define E_ALERT_SINK_GET_INTERFACE(obj) \
+ (G_TYPE_INSTANCE_GET_INTERFACE \
+ ((obj), E_TYPE_ALERT_SINK, EAlertSinkInterface))
+
+G_BEGIN_DECLS
+
+typedef struct _EAlertSink EAlertSink;
+typedef struct _EAlertSinkInterface EAlertSinkInterface;
+
+struct _EAlertSinkInterface {
+ GTypeInterface parent_interface;
+
+ void (*submit_alert) (EAlertSink *alert_sink,
+ EAlert *alert);
+};
+
+GType e_alert_sink_get_type (void);
+void e_alert_sink_submit_alert (GtkWidget *widget,
+ EAlert *alert);
+
+G_END_DECLS
+
+#endif /* E_ALERT_SINK_H */