diff options
Diffstat (limited to 'trace-dialog.c')
-rw-r--r-- | trace-dialog.c | 21 |
1 files changed, 21 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 | ||
39 | static GtkWidget *parent_window; | 39 | static GtkWidget *parent_window; |
40 | 40 | ||
41 | static void (*alt_warning)(const char *fmt, va_list ap); | ||
42 | |||
41 | void pr_stat(char *fmt, ...) | 43 | void 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 | */ | ||
91 | void trace_dialog_register_alt_warning(void (*alt)(const char *fmt, va_list ap)) | ||
92 | { | ||
93 | alt_warning = alt; | ||
94 | } | ||
95 | |||
82 | void warning(char *fmt, ...) | 96 | void 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); |