Mercurial > pidgin.yaz
annotate src/gtkdebug.c @ 9480:91856b52a391
[gaim-migrate @ 10305]
Make the debug window's save button use the gtk 2.4 file chooser.
I'll ChangeLog this when I'm done with all the dialogs.
The code isn't the prettiest thing in the world... but I don't
see a better way.
And I'm about to test this on a gtk less than 2.4, once I commit it.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Thu, 08 Jul 2004 01:24:48 +0000 |
parents | 0277908e367d |
children | b917acdc982f |
rev | line source |
---|---|
5212 | 1 /** |
2 * @file gtkdebug.c GTK+ Debug API | |
3 * @ingroup gtkui | |
4 * | |
5 * gaim | |
6 * | |
8046 | 7 * Gaim is the legal property of its developers, whose names are too numerous |
8 * to list here. Please refer to the COPYRIGHT file distributed with this | |
9 * source distribution. | |
7152
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
10 * |
5212 | 11 * This program is free software; you can redistribute it and/or modify |
12 * it under the terms of the GNU General Public License as published by | |
13 * the Free Software Foundation; either version 2 of the License, or | |
14 * (at your option) any later version. | |
15 * | |
16 * This program is distributed in the hope that it will be useful, | |
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 * GNU General Public License for more details. | |
20 * | |
21 * You should have received a copy of the GNU General Public License | |
22 * along with this program; if not, write to the Free Software | |
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
24 */ | |
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6280
diff
changeset
|
25 #include "gtkinternal.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5818
diff
changeset
|
26 |
9480 | 27 #include "notify.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5818
diff
changeset
|
28 #include "prefs.h" |
8953 | 29 #include "request.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5818
diff
changeset
|
30 #include "util.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5818
diff
changeset
|
31 |
5212 | 32 #include "gtkdebug.h" |
33 #include "gtkimhtml.h" | |
8953 | 34 #include "gtkutils.h" |
6009
5cd7a10c6ade
[gaim-migrate @ 6457]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
35 #include "stock.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5818
diff
changeset
|
36 |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5818
diff
changeset
|
37 #include "ui.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5818
diff
changeset
|
38 |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5818
diff
changeset
|
39 extern int opt_debug; |
5212 | 40 |
41 typedef struct | |
42 { | |
43 GtkWidget *window; | |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
44 GtkWidget *text; |
8953 | 45 GtkWidget *find; |
9480 | 46 GtkWidget *save; |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
47 |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
48 gboolean timestamps; |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
49 gboolean paused; |
5212 | 50 |
5704
aa8dbb7e0a4d
[gaim-migrate @ 6125]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
51 guint timestamps_handle; |
aa8dbb7e0a4d
[gaim-migrate @ 6125]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
52 |
5212 | 53 } DebugWindow; |
54 | |
55 static char debug_fg_colors[][8] = { | |
56 "#000000", /**< All debug levels. */ | |
7150 | 57 "#666666", /**< Misc. */ |
5212 | 58 "#000000", /**< Information. */ |
59 "#660000", /**< Warnings. */ | |
60 "#FF0000", /**< Errors. */ | |
61 "#FF0000", /**< Fatal errors. */ | |
62 }; | |
63 | |
64 static DebugWindow *debug_win = NULL; | |
65 | |
8953 | 66 struct _find { |
67 DebugWindow *window; | |
68 GtkWidget *entry; | |
69 }; | |
70 | |
5212 | 71 static gint |
72 debug_window_destroy(GtkWidget *w, GdkEvent *event, void *unused) | |
73 { | |
5704
aa8dbb7e0a4d
[gaim-migrate @ 6125]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
74 if (debug_win->timestamps_handle != 0) |
aa8dbb7e0a4d
[gaim-migrate @ 6125]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
75 gaim_prefs_disconnect_callback(debug_win->timestamps_handle); |
9480 | 76 if (debug_win->save != NULL) |
77 gtk_widget_destroy(debug_win->save); | |
5704
aa8dbb7e0a4d
[gaim-migrate @ 6125]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
78 |
5212 | 79 g_free(debug_win); |
80 debug_win = NULL; | |
81 | |
9480 | 82 gaim_prefs_set_bool("/gaim/gtk/debug/enabled", FALSE); |
83 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
84 return FALSE; |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
85 } |
5212 | 86 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
87 static gboolean |
5794
5e93fc46d1af
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5738
diff
changeset
|
88 configure_cb(GtkWidget *w, GdkEventConfigure *event, DebugWindow *win) |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
89 { |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
90 if (GTK_WIDGET_VISIBLE(w)) { |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
91 gaim_prefs_set_int("/gaim/gtk/debug/width", event->width); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
92 gaim_prefs_set_int("/gaim/gtk/debug/height", event->height); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
93 } |
5212 | 94 |
95 return FALSE; | |
96 } | |
97 | |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
98 static void |
8953 | 99 do_find_cb(GtkWidget *widget, gint resp, struct _find *f) |
100 { | |
101 switch (resp) { | |
102 case GTK_RESPONSE_OK: | |
103 gtk_imhtml_search_find(GTK_IMHTML(f->window->text), | |
104 gtk_entry_get_text(GTK_ENTRY(f->entry))); | |
105 break; | |
106 | |
107 case GTK_RESPONSE_DELETE_EVENT: | |
108 case GTK_RESPONSE_CLOSE: | |
109 gtk_imhtml_search_clear(GTK_IMHTML(f->window->text)); | |
110 gtk_widget_destroy(f->window->find); | |
111 f->window->find = NULL; | |
112 g_free(f); | |
113 break; | |
114 } | |
115 } | |
116 | |
117 static void | |
118 find_cb(GtkWidget *w, DebugWindow *win) | |
119 { | |
120 GtkWidget *hbox, *img, *label; | |
121 struct _find *f; | |
122 | |
123 if(win->find) | |
124 { | |
125 gtk_window_present(GTK_WINDOW(win->find)); | |
126 return; | |
127 } | |
128 | |
129 f = g_malloc(sizeof(struct _find)); | |
130 f->window = win; | |
131 win->find = gtk_dialog_new_with_buttons(_("Find"), | |
132 GTK_WINDOW(win->window), GTK_DIALOG_DESTROY_WITH_PARENT, | |
133 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, | |
134 GTK_STOCK_FIND, GTK_RESPONSE_OK, NULL); | |
135 gtk_dialog_set_default_response(GTK_DIALOG(win->find), | |
136 GTK_RESPONSE_OK); | |
137 g_signal_connect(G_OBJECT(win->find), "response", | |
138 G_CALLBACK(do_find_cb), f); | |
139 | |
140 gtk_container_set_border_width(GTK_CONTAINER(win->find), 6); | |
141 gtk_window_set_resizable(GTK_WINDOW(win->find), FALSE); | |
142 gtk_dialog_set_has_separator(GTK_DIALOG(win->find), FALSE); | |
143 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(win->find)->vbox), 12); | |
144 gtk_container_set_border_width( | |
145 GTK_CONTAINER(GTK_DIALOG(win->find)->vbox), 6); | |
146 | |
147 hbox = gtk_hbox_new(FALSE, 12); | |
148 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(win->find)->vbox), | |
149 hbox); | |
150 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, | |
151 GTK_ICON_SIZE_DIALOG); | |
152 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
153 | |
154 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | |
155 gtk_dialog_set_response_sensitive(GTK_DIALOG(win->find), | |
156 GTK_RESPONSE_OK, FALSE); | |
157 | |
158 label = gtk_label_new(NULL); | |
159 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Search for:")); | |
160 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
161 | |
162 f->entry = gtk_entry_new(); | |
163 gtk_entry_set_activates_default(GTK_ENTRY(f->entry), TRUE); | |
164 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(f->entry)); | |
165 g_signal_connect(G_OBJECT(f->entry), "changed", | |
166 G_CALLBACK(gaim_gtk_set_sensitive_if_input), | |
167 win->find); | |
168 gtk_box_pack_start(GTK_BOX(hbox), f->entry, FALSE, FALSE, 0); | |
169 | |
170 gtk_widget_show_all(win->find); | |
171 gtk_widget_grab_focus(f->entry); | |
172 } | |
173 | |
174 static void | |
9480 | 175 do_save_cb(GtkWidget *widget) |
8953 | 176 { |
177 const char *filename; | |
178 char *tmp; | |
179 FILE *fp; | |
180 | |
9480 | 181 g_return_if_fail(debug_win != NULL); |
8953 | 182 |
9480 | 183 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ |
184 filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(debug_win->save)); | |
185 #else /* FILECHOOSER */ | |
186 filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(debug_win->save)); | |
187 #endif /* FILECHOOSER */ | |
8953 | 188 |
9480 | 189 if (filename == NULL) { |
190 gaim_notify_error(NULL, NULL, _("Invalid file name."), NULL); | |
8953 | 191 return; |
9480 | 192 } |
8953 | 193 |
9480 | 194 if ((fp = fopen(filename, "w+")) == NULL) { |
195 gaim_notify_error(NULL, NULL, _("Unable to open file."), NULL); | |
8953 | 196 return; |
9480 | 197 } |
8953 | 198 |
9480 | 199 tmp = gtk_imhtml_get_text(GTK_IMHTML(debug_win->text), NULL, NULL); |
8953 | 200 fprintf(fp, "Gaim Debug log : %s\n", gaim_date_full()); |
201 fprintf(fp, "%s", tmp); | |
202 g_free(tmp); | |
203 | |
204 fclose(fp); | |
9480 | 205 |
206 gtk_widget_destroy(debug_win->save); | |
207 debug_win->save = NULL; | |
8953 | 208 } |
209 | |
9480 | 210 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ |
8953 | 211 static void |
9480 | 212 do_check_save_cb(GtkWidget *widget, gint response, gpointer data) |
213 { | |
214 DebugWindow *win = (DebugWindow *)data; | |
215 const char *filename; | |
216 | |
217 if (response != GTK_RESPONSE_ACCEPT) { | |
218 if (response == GTK_RESPONSE_CANCEL) | |
219 gtk_widget_destroy(win->save); | |
220 win->save = NULL; | |
221 return; | |
222 } | |
223 | |
224 filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(win->save)); | |
225 #else /* FILECHOOSER */ | |
226 static void | |
227 do_check_save_cb(GtkWidget *widget, DebugWindow *win) | |
8953 | 228 { |
229 const char *filename; | |
230 | |
9480 | 231 filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(win->save)); |
232 if (gaim_gtk_check_if_dir(filename, GTK_FILE_SELECTION(win->save))) { | |
233 /* Descend into directory? */ | |
8953 | 234 return; |
9480 | 235 } |
236 #endif /* FILECHOOSER */ | |
8953 | 237 |
238 if (g_file_test(filename, G_FILE_TEST_EXISTS)) | |
239 { | |
240 gaim_request_yes_no(NULL, NULL, _("That file already exists"), | |
9480 | 241 _("Would you like to overwrite it?"), 1, |
242 win->save, G_CALLBACK(do_save_cb), NULL); | |
8953 | 243 } |
244 else | |
9480 | 245 do_save_cb(win->save); |
8953 | 246 } |
247 | |
9480 | 248 #if !GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ |
249 static void | |
250 cancel_save_cb(GtkWidget *widget, DebugWindow *win) | |
251 { | |
252 if (win->save != NULL) | |
253 gtk_widget_destroy(win->save); | |
254 | |
255 win->save = NULL; | |
256 } | |
257 #endif | |
258 | |
8953 | 259 static void |
260 save_cb(GtkWidget *w, DebugWindow *win) | |
261 { | |
9480 | 262 if (win->save != NULL) { |
263 gtk_widget_show(win->save); | |
264 gdk_window_raise(win->save->window); | |
265 return; | |
266 } | |
8953 | 267 |
9480 | 268 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ |
269 win->save = gtk_file_chooser_dialog_new(_("Save Conversation"), | |
270 GTK_WINDOW(win->window), | |
271 GTK_FILE_CHOOSER_ACTION_SAVE, | |
272 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, | |
273 GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, | |
274 NULL); | |
275 gtk_dialog_set_default_response(GTK_DIALOG(win->save), GTK_RESPONSE_ACCEPT); | |
276 gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(win->save), | |
277 "gaim-debug.log"); | |
278 g_signal_connect(G_OBJECT(win->save), | |
279 "response", G_CALLBACK(do_check_save_cb), win->save); | |
280 #else /* FILECHOOSER */ | |
281 gchar *buf; | |
8953 | 282 |
9480 | 283 win->save = gtk_file_selection_new(_("Save Debug Log")); |
284 buf = g_strdup_printf("%s" G_DIR_SEPARATOR_S "gaim-debug.log", | |
285 gaim_home_dir()); | |
286 gtk_file_selection_set_filename(GTK_FILE_SELECTION(win->save), buf); | |
287 g_free(buf); | |
288 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(win->save)->ok_button), | |
289 "clicked", G_CALLBACK(do_check_save_cb), win); | |
290 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(win->save)->cancel_button), | |
291 "clicked", G_CALLBACK(cancel_save_cb), win); | |
292 g_signal_connect(G_OBJECT(win->save), | |
293 "destroy", G_CALLBACK(cancel_save_cb), win); | |
294 #endif /* FILECHOOSER */ | |
295 | |
296 gtk_widget_show(win->save); | |
8953 | 297 } |
298 | |
299 static void | |
5794
5e93fc46d1af
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5738
diff
changeset
|
300 clear_cb(GtkWidget *w, DebugWindow *win) |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
301 { |
6280
d330afe3ccf0
[gaim-migrate @ 6779]
Christian Hammond <chipx86@chipx86.com>
parents:
6094
diff
changeset
|
302 gtk_imhtml_clear(GTK_IMHTML(win->text)); |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
303 } |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
304 |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
305 static void |
5794
5e93fc46d1af
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5738
diff
changeset
|
306 pause_cb(GtkWidget *w, DebugWindow *win) |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
307 { |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
308 win->paused = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w)); |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
309 } |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
310 |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
311 static void |
5794
5e93fc46d1af
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5738
diff
changeset
|
312 timestamps_cb(GtkWidget *w, DebugWindow *win) |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
313 { |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
314 win->timestamps = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w)); |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
315 |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
316 gaim_prefs_set_bool("/gaim/gtk/debug/timestamps", win->timestamps); |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
317 } |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
318 |
5704
aa8dbb7e0a4d
[gaim-migrate @ 6125]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
319 static void |
aa8dbb7e0a4d
[gaim-migrate @ 6125]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
320 timestamps_pref_cb(const char *name, GaimPrefType type, gpointer value, |
aa8dbb7e0a4d
[gaim-migrate @ 6125]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
321 gpointer data) |
aa8dbb7e0a4d
[gaim-migrate @ 6125]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
322 { |
6478
338147ea6896
[gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
323 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data), GPOINTER_TO_INT(value)); |
5704
aa8dbb7e0a4d
[gaim-migrate @ 6125]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
324 } |
aa8dbb7e0a4d
[gaim-migrate @ 6125]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
325 |
5212 | 326 static DebugWindow * |
327 debug_window_new(void) | |
328 { | |
329 DebugWindow *win; | |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
330 GtkWidget *vbox; |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
331 GtkWidget *toolbar; |
5212 | 332 GtkWidget *sw; |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
333 GtkWidget *button; |
6094
538c522e36e1
[gaim-migrate @ 6553]
Christian Hammond <chipx86@chipx86.com>
parents:
6009
diff
changeset
|
334 GtkWidget *image; |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
335 int width, height; |
5212 | 336 |
337 win = g_new0(DebugWindow, 1); | |
338 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
339 width = gaim_prefs_get_int("/gaim/gtk/debug/width"); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
340 height = gaim_prefs_get_int("/gaim/gtk/debug/height"); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
341 |
5212 | 342 GAIM_DIALOG(win->window); |
5642
1693a3027dc8
[gaim-migrate @ 6056]
Christian Hammond <chipx86@chipx86.com>
parents:
5636
diff
changeset
|
343 gaim_debug(GAIM_DEBUG_INFO, "gtkdebug", "Setting dimensions to %d, %d\n", |
1693a3027dc8
[gaim-migrate @ 6056]
Christian Hammond <chipx86@chipx86.com>
parents:
5636
diff
changeset
|
344 width, height); |
1693a3027dc8
[gaim-migrate @ 6056]
Christian Hammond <chipx86@chipx86.com>
parents:
5636
diff
changeset
|
345 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
346 gtk_window_set_default_size(GTK_WINDOW(win->window), width, height); |
5212 | 347 gtk_window_set_role(GTK_WINDOW(win->window), "debug"); |
348 gtk_window_set_title(GTK_WINDOW(win->window), _("Debug Window")); | |
349 | |
350 g_signal_connect(G_OBJECT(win->window), "delete_event", | |
351 G_CALLBACK(debug_window_destroy), NULL); | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
352 g_signal_connect(G_OBJECT(win->window), "configure_event", |
5794
5e93fc46d1af
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5738
diff
changeset
|
353 G_CALLBACK(configure_cb), win); |
5212 | 354 |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
355 /* Setup the vbox */ |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
356 vbox = gtk_vbox_new(FALSE, 0); |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
357 gtk_container_add(GTK_CONTAINER(win->window), vbox); |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
358 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
359 if (gaim_prefs_get_bool("/gaim/gtk/debug/toolbar")) { |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
360 /* Setup our top button bar thingie. */ |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
361 toolbar = gtk_toolbar_new(); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
362 gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_BOTH_HORIZ); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
363 gtk_toolbar_set_icon_size(GTK_TOOLBAR(toolbar), |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
364 GTK_ICON_SIZE_SMALL_TOOLBAR); |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
365 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
366 gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0); |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
367 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
368 /* Find button */ |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
369 gtk_toolbar_insert_stock(GTK_TOOLBAR(toolbar), GTK_STOCK_FIND, |
8953 | 370 NULL, NULL, G_CALLBACK(find_cb), win, -1); |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
371 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
372 /* Save */ |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
373 gtk_toolbar_insert_stock(GTK_TOOLBAR(toolbar), GTK_STOCK_SAVE, |
8953 | 374 NULL, NULL, G_CALLBACK(save_cb), win, -1); |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
375 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
376 /* Clear button */ |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
377 gtk_toolbar_insert_stock(GTK_TOOLBAR(toolbar), GTK_STOCK_CLEAR, |
5794
5e93fc46d1af
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5738
diff
changeset
|
378 NULL, NULL, G_CALLBACK(clear_cb), win, -1); |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
379 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
380 gtk_toolbar_insert_space(GTK_TOOLBAR(toolbar), -1); |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
381 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
382 /* Pause */ |
6094
538c522e36e1
[gaim-migrate @ 6553]
Christian Hammond <chipx86@chipx86.com>
parents:
6009
diff
changeset
|
383 image = gtk_image_new_from_stock(GAIM_STOCK_PAUSE, GTK_ICON_SIZE_MENU); |
538c522e36e1
[gaim-migrate @ 6553]
Christian Hammond <chipx86@chipx86.com>
parents:
6009
diff
changeset
|
384 button = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), |
538c522e36e1
[gaim-migrate @ 6553]
Christian Hammond <chipx86@chipx86.com>
parents:
6009
diff
changeset
|
385 GTK_TOOLBAR_CHILD_TOGGLEBUTTON, |
538c522e36e1
[gaim-migrate @ 6553]
Christian Hammond <chipx86@chipx86.com>
parents:
6009
diff
changeset
|
386 NULL, _("Pause"), NULL, NULL, |
538c522e36e1
[gaim-migrate @ 6553]
Christian Hammond <chipx86@chipx86.com>
parents:
6009
diff
changeset
|
387 image, G_CALLBACK(pause_cb), win); |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
388 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
389 /* Timestamps */ |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
390 button = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
391 GTK_TOOLBAR_CHILD_TOGGLEBUTTON, |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
392 NULL, _("Timestamps"), NULL, NULL, |
5794
5e93fc46d1af
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5738
diff
changeset
|
393 NULL, G_CALLBACK(timestamps_cb), |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
394 win); |
8953 | 395 |
396 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), | |
8002
c94f2dad3b73
[gaim-migrate @ 8679]
Christian Hammond <chipx86@chipx86.com>
parents:
7229
diff
changeset
|
397 gaim_prefs_get_bool("/gaim/gtk/debug/timestamps")); |
8953 | 398 |
5704
aa8dbb7e0a4d
[gaim-migrate @ 6125]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
399 win->timestamps_handle = |
aa8dbb7e0a4d
[gaim-migrate @ 6125]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
400 gaim_prefs_connect_callback("/gaim/gtk/debug/timestamps", |
aa8dbb7e0a4d
[gaim-migrate @ 6125]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
401 timestamps_pref_cb, button); |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
402 } |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
403 |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
404 /* Now our scrolled window... */ |
5212 | 405 sw = gtk_scrolled_window_new(NULL, NULL); |
406 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
407 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
408 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
409 GTK_SHADOW_IN); |
5212 | 410 |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
411 /* ... which has a gtkimhtml in it. */ |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
412 win->text = gtk_imhtml_new(NULL, NULL); |
5212 | 413 |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
414 gtk_container_add(GTK_CONTAINER(sw), win->text); |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
415 |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
416 /* Pack it in... Not like that, sicko. */ |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
417 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
418 |
5212 | 419 gtk_widget_show_all(win->window); |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
420 |
5212 | 421 return win; |
422 } | |
423 | |
5625
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
424 static void |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
425 debug_enabled_cb(const char *name, GaimPrefType type, gpointer value, |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
426 gpointer data) |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
427 { |
5636 | 428 if (value) |
5625
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
429 gaim_gtk_debug_window_show(); |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
430 else |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
431 gaim_gtk_debug_window_hide(); |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
432 } |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
433 |
7150 | 434 static void |
435 gaim_glib_log_handler(const gchar *domain, GLogLevelFlags flags, | |
436 const gchar *msg, gpointer user_data) | |
437 { | |
438 GaimDebugLevel level; | |
439 char *new_msg = NULL; | |
440 char *new_domain = NULL; | |
441 | |
7152
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
442 if ((flags & G_LOG_LEVEL_ERROR) == G_LOG_LEVEL_ERROR) |
7150 | 443 level = GAIM_DEBUG_ERROR; |
7152
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
444 else if ((flags & G_LOG_LEVEL_CRITICAL) == G_LOG_LEVEL_CRITICAL) |
7150 | 445 level = GAIM_DEBUG_FATAL; |
7152
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
446 else if ((flags & G_LOG_LEVEL_WARNING) == G_LOG_LEVEL_WARNING) |
7150 | 447 level = GAIM_DEBUG_WARNING; |
7152
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
448 else if ((flags & G_LOG_LEVEL_MESSAGE) == G_LOG_LEVEL_MESSAGE) |
7150 | 449 level = GAIM_DEBUG_INFO; |
7152
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
450 else if ((flags & G_LOG_LEVEL_INFO) == G_LOG_LEVEL_INFO) |
7150 | 451 level = GAIM_DEBUG_INFO; |
7152
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
452 else if ((flags & G_LOG_LEVEL_DEBUG) == G_LOG_LEVEL_DEBUG) |
7150 | 453 level = GAIM_DEBUG_MISC; |
7152
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
454 else |
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
455 { |
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
456 gaim_debug_warning("gtkdebug", |
7150 | 457 "Unknown glib logging level in %d\n", flags); |
458 | |
459 level = GAIM_DEBUG_MISC; /* This will never happen. */ | |
460 } | |
461 | |
462 if (msg != NULL) | |
463 new_msg = gaim_utf8_try_convert(msg); | |
464 | |
465 if (domain != NULL) | |
466 new_domain = gaim_utf8_try_convert(domain); | |
467 | |
7152
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
468 if (new_msg != NULL) |
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
469 { |
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
470 gaim_debug(level, (new_domain != NULL ? new_domain : "g_log"), |
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
471 "%s\n", new_msg); |
7150 | 472 |
473 g_free(new_msg); | |
474 } | |
475 | |
476 if (new_domain != NULL) | |
477 g_free(new_domain); | |
478 } | |
479 | |
480 #ifdef _WIN32 | |
481 static void | |
482 gaim_glib_dummy_print_handler(const gchar *string) | |
483 { | |
484 } | |
485 #endif | |
486 | |
5625
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
487 void |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
488 gaim_gtk_debug_init(void) |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
489 { |
5684 | 490 /* Debug window preferences. */ |
491 /* | |
492 * NOTE: This must be set before prefs are loaded, and the callbacks | |
493 * set after they are loaded, since prefs sets the enabled | |
494 * preference here and that loads the window, which calls the | |
8735
92cbf9713795
[gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
495 * configure event, which overrides the width and height! :P |
5684 | 496 */ |
497 | |
498 gaim_prefs_add_none("/gaim/gtk/debug"); | |
499 gaim_prefs_add_bool("/gaim/gtk/debug/enabled", FALSE); | |
500 gaim_prefs_add_bool("/gaim/gtk/debug/timestamps", FALSE); | |
501 gaim_prefs_add_bool("/gaim/gtk/debug/toolbar", TRUE); | |
502 gaim_prefs_add_int("/gaim/gtk/debug/width", 450); | |
503 gaim_prefs_add_int("/gaim/gtk/debug/height", 250); | |
504 | |
5625
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
505 gaim_prefs_connect_callback("/gaim/gtk/debug/enabled", |
5794
5e93fc46d1af
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5738
diff
changeset
|
506 debug_enabled_cb, NULL); |
7150 | 507 |
508 #define REGISTER_G_LOG_HANDLER(name) \ | |
509 g_log_set_handler((name), G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL \ | |
510 | G_LOG_FLAG_RECURSION, \ | |
511 gaim_glib_log_handler, NULL) | |
512 | |
513 /* Register the glib/gtk log handlers. */ | |
514 REGISTER_G_LOG_HANDLER(NULL); | |
515 REGISTER_G_LOG_HANDLER("Gdk"); | |
516 REGISTER_G_LOG_HANDLER("Gtk"); | |
7229
26fe5055e0b0
[gaim-migrate @ 7799]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7152
diff
changeset
|
517 REGISTER_G_LOG_HANDLER("GdkPixbuf"); |
7150 | 518 REGISTER_G_LOG_HANDLER("GLib"); |
519 REGISTER_G_LOG_HANDLER("GModule"); | |
520 REGISTER_G_LOG_HANDLER("GLib-GObject"); | |
521 REGISTER_G_LOG_HANDLER("GThread"); | |
522 | |
523 #ifdef _WIN32 | |
524 if (!opt_debug) | |
525 g_set_print_handler(gaim_glib_dummy_print_handler); | |
526 #endif | |
5625
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
527 } |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
528 |
5212 | 529 void |
530 gaim_gtk_debug_window_show(void) | |
531 { | |
532 if (debug_win == NULL) | |
533 debug_win = debug_window_new(); | |
534 | |
535 gtk_widget_show(debug_win->window); | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
536 |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
537 gaim_prefs_set_bool("/gaim/gtk/debug/enabled", TRUE); |
5212 | 538 } |
539 | |
540 void | |
541 gaim_gtk_debug_window_hide(void) | |
542 { | |
543 if (debug_win != NULL) { | |
544 gtk_widget_destroy(debug_win->window); | |
545 debug_window_destroy(NULL, NULL, NULL); | |
546 } | |
547 } | |
548 | |
549 static void | |
550 gaim_gtk_debug_print(GaimDebugLevel level, const char *category, | |
551 const char *format, va_list args) | |
552 { | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
553 gchar *arg_s, *ts_s; |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
554 gboolean timestamps; |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
555 |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
556 timestamps = gaim_prefs_get_bool("/gaim/gtk/debug/timestamps"); |
5212 | 557 |
558 arg_s = g_strdup_vprintf(format, args); | |
559 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
560 if (category == NULL) { |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
561 ts_s = g_strdup(""); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
562 } |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
563 else { |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
564 /* |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
565 * If the category is not NULL, then do timestamps. |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
566 * This IS right. :) |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
567 */ |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
568 if (timestamps) { |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
569 gchar mdate[64]; |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
570 time_t mtime = time(NULL); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
571 |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
572 strftime(mdate, sizeof(mdate), "%H:%M:%S", localtime(&mtime)); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
573 |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
574 ts_s = g_strdup_printf("(%s) ", mdate); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
575 } |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
576 else |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
577 ts_s = g_strdup(""); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
578 } |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
579 |
5535 | 580 if (gaim_prefs_get_bool("/gaim/gtk/debug/enabled") && |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
581 debug_win != NULL && !debug_win->paused) { |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
582 |
5738
ec032cb2f9ec
[gaim-migrate @ 6162]
Christian Hammond <chipx86@chipx86.com>
parents:
5704
diff
changeset
|
583 gchar *esc_s, *cat_s, *utf8_s, *s; |
5212 | 584 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
585 if (category == NULL) |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
586 cat_s = g_strdup(""); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
587 else |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
588 cat_s = g_strdup_printf("<b>%s:</b> ", category); |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
589 |
5212 | 590 esc_s = g_markup_escape_text(arg_s, -1); |
591 | |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
592 s = g_strdup_printf("<font color=\"%s\">%s%s%s</font>", |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
593 debug_fg_colors[level], ts_s, cat_s, esc_s); |
5212 | 594 |
595 g_free(esc_s); | |
596 | |
7108
6faeeecab0dc
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
597 utf8_s = gaim_utf8_try_convert(s); |
5738
ec032cb2f9ec
[gaim-migrate @ 6162]
Christian Hammond <chipx86@chipx86.com>
parents:
5704
diff
changeset
|
598 g_free(s); |
ec032cb2f9ec
[gaim-migrate @ 6162]
Christian Hammond <chipx86@chipx86.com>
parents:
5704
diff
changeset
|
599 s = utf8_s; |
ec032cb2f9ec
[gaim-migrate @ 6162]
Christian Hammond <chipx86@chipx86.com>
parents:
5704
diff
changeset
|
600 |
5212 | 601 if (level == GAIM_DEBUG_FATAL) { |
602 gchar *temp = s; | |
603 | |
604 s = g_strdup_printf("<b>%s</b>", temp); | |
605 g_free(temp); | |
606 } | |
607 | |
608 g_free(cat_s); | |
609 | |
6982 | 610 gtk_imhtml_append_text(GTK_IMHTML(debug_win->text), s, 0); |
5212 | 611 |
612 g_free(s); | |
613 } | |
614 | |
5214
7ea282e1f615
[gaim-migrate @ 5584]
Christian Hammond <chipx86@chipx86.com>
parents:
5212
diff
changeset
|
615 if (opt_debug) { |
7ea282e1f615
[gaim-migrate @ 5584]
Christian Hammond <chipx86@chipx86.com>
parents:
5212
diff
changeset
|
616 if (category == NULL) |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
617 g_print("%s%s", ts_s, arg_s); |
5214
7ea282e1f615
[gaim-migrate @ 5584]
Christian Hammond <chipx86@chipx86.com>
parents:
5212
diff
changeset
|
618 else |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
619 g_print("%s%s: %s", ts_s, category, arg_s); |
5214
7ea282e1f615
[gaim-migrate @ 5584]
Christian Hammond <chipx86@chipx86.com>
parents:
5212
diff
changeset
|
620 } |
5212 | 621 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
622 g_free(ts_s); |
5212 | 623 g_free(arg_s); |
624 } | |
625 | |
626 static GaimDebugUiOps ops = | |
627 { | |
628 gaim_gtk_debug_print | |
629 }; | |
630 | |
631 GaimDebugUiOps * | |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
632 gaim_gtk_debug_get_ui_ops(void) |
5212 | 633 { |
634 return &ops; | |
635 } |