aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--trace-dialog.c21
-rw-r--r--trace-gui.h1
2 files changed, 22 insertions, 0 deletions
diff --git a/trace-dialog.c b/trace-dialog.c
index c220a52..3f5e1ea 100644
--- a/trace-dialog.c
+++ b/trace-dialog.c
@@ -38,6 +38,8 @@ static GString *statusstr;
38 38
39static GtkWidget *parent_window; 39static GtkWidget *parent_window;
40 40
41static void (*alt_warning)(const char *fmt, va_list ap);
42
41void pr_stat(char *fmt, ...) 43void pr_stat(char *fmt, ...)
42{ 44{
43 GString *str; 45 GString *str;
@@ -79,11 +81,30 @@ void trace_dialog_register_window(GtkWidget *window)
79 parent_window = window; 81 parent_window = window;
80} 82}
81 83
84/**
85 * trace_dialog_register_alt_warning - register an alternate function for warning()
86 * @alt: the function to be called instead of warning.
87 *
88 * Add an alternate warning function to be called instead of a popup.
89 * To go back to the popup, simply call this again with NULL.
90 */
91void trace_dialog_register_alt_warning(void (*alt)(const char *fmt, va_list ap))
92{
93 alt_warning = alt;
94}
95
82void warning(char *fmt, ...) 96void warning(char *fmt, ...)
83{ 97{
84 GString *str; 98 GString *str;
85 va_list ap; 99 va_list ap;
86 100
101 if (alt_warning) {
102 va_start(ap, fmt);
103 alt_warning(fmt, ap);
104 va_end(ap);
105 return;
106 }
107
87 if (!parent_window) { 108 if (!parent_window) {
88 va_start(ap, fmt); 109 va_start(ap, fmt);
89 __vwarning(fmt, ap); 110 __vwarning(fmt, ap);
diff --git a/trace-gui.h b/trace-gui.h
index a2d261f..bcf8737 100644
--- a/trace-gui.h
+++ b/trace-gui.h
@@ -32,6 +32,7 @@ enum trace_dialog_type {
32GtkWidget *trace_status_bar_new(void); 32GtkWidget *trace_status_bar_new(void);
33 33
34void trace_dialog_register_window(GtkWidget *window); 34void trace_dialog_register_window(GtkWidget *window);
35void trace_dialog_register_alt_warning(void (*alt)(const char *fmt, va_list ap));
35 36
36void trace_show_help(GtkWidget *window, const gchar *link, GError **error); 37void trace_show_help(GtkWidget *window, const gchar *link, GError **error);
37 38