Mercurial > pidgin
annotate src/gtkdebug.c @ 10581:59a2807e10bb
[gaim-migrate @ 11981]
I'm not sure when using --class broke (though it was probably when we added -c) but this fixes it for me and is arguable more correct anyway since according to the gtk docs gtk_init (and gtk_init_check) "will initialize everything needed to operate the toolkit and parses some standard command line options. argc and argv are adjusted accordingly so your own code will never see those standard arguments."
committer: Tailor Script <tailor@pidgin.im>
author | Etan Reisner <pidgin@unreliablesource.net> |
---|---|
date | Tue, 08 Feb 2005 04:59:35 +0000 |
parents | 6a20307ef8dc |
children | 0f7452b1f777 |
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 */ | |
9791 | 25 #include "internal.h" |
26 #include "gtkgaim.h" | |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5818
diff
changeset
|
27 |
9480 | 28 #include "notify.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5818
diff
changeset
|
29 #include "prefs.h" |
8953 | 30 #include "request.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5818
diff
changeset
|
31 #include "util.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5818
diff
changeset
|
32 |
5212 | 33 #include "gtkdebug.h" |
9709 | 34 #include "gtkdialogs.h" |
5212 | 35 #include "gtkimhtml.h" |
8953 | 36 #include "gtkutils.h" |
10297
ec140184437b
[gaim-migrate @ 11480]
Luke Schierer <lschiere@pidgin.im>
parents:
10175
diff
changeset
|
37 #include "gtkstock.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5818
diff
changeset
|
38 |
5212 | 39 typedef struct |
40 { | |
41 GtkWidget *window; | |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
42 GtkWidget *text; |
8953 | 43 GtkWidget *find; |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
44 |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
45 gboolean timestamps; |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
46 gboolean paused; |
5212 | 47 |
48 } DebugWindow; | |
49 | |
50 static char debug_fg_colors[][8] = { | |
51 "#000000", /**< All debug levels. */ | |
7150 | 52 "#666666", /**< Misc. */ |
5212 | 53 "#000000", /**< Information. */ |
54 "#660000", /**< Warnings. */ | |
55 "#FF0000", /**< Errors. */ | |
56 "#FF0000", /**< Fatal errors. */ | |
57 }; | |
58 | |
59 static DebugWindow *debug_win = NULL; | |
60 | |
8953 | 61 struct _find { |
62 DebugWindow *window; | |
63 GtkWidget *entry; | |
64 }; | |
65 | |
5212 | 66 static gint |
67 debug_window_destroy(GtkWidget *w, GdkEvent *event, void *unused) | |
68 { | |
10087 | 69 gaim_prefs_disconnect_by_handle(gaim_gtk_debug_get_handle()); |
9502 | 70 |
71 /* If the "Save Log" dialog is open then close it */ | |
72 gaim_request_close_with_handle(debug_win); | |
5704
aa8dbb7e0a4d
[gaim-migrate @ 6125]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
73 |
5212 | 74 g_free(debug_win); |
75 debug_win = NULL; | |
76 | |
9480 | 77 gaim_prefs_set_bool("/gaim/gtk/debug/enabled", FALSE); |
78 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
79 return FALSE; |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
80 } |
5212 | 81 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
82 static gboolean |
5794
5e93fc46d1af
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5738
diff
changeset
|
83 configure_cb(GtkWidget *w, GdkEventConfigure *event, DebugWindow *win) |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
84 { |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
85 if (GTK_WIDGET_VISIBLE(w)) { |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
86 gaim_prefs_set_int("/gaim/gtk/debug/width", event->width); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
87 gaim_prefs_set_int("/gaim/gtk/debug/height", event->height); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
88 } |
5212 | 89 |
90 return FALSE; | |
91 } | |
92 | |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
93 static void |
9482 | 94 do_find_cb(GtkWidget *widget, gint response, struct _find *f) |
8953 | 95 { |
9482 | 96 switch (response) { |
8953 | 97 case GTK_RESPONSE_OK: |
98 gtk_imhtml_search_find(GTK_IMHTML(f->window->text), | |
99 gtk_entry_get_text(GTK_ENTRY(f->entry))); | |
100 break; | |
101 | |
102 case GTK_RESPONSE_DELETE_EVENT: | |
103 case GTK_RESPONSE_CLOSE: | |
104 gtk_imhtml_search_clear(GTK_IMHTML(f->window->text)); | |
105 gtk_widget_destroy(f->window->find); | |
106 f->window->find = NULL; | |
107 g_free(f); | |
108 break; | |
109 } | |
110 } | |
111 | |
112 static void | |
113 find_cb(GtkWidget *w, DebugWindow *win) | |
114 { | |
115 GtkWidget *hbox, *img, *label; | |
116 struct _find *f; | |
117 | |
118 if(win->find) | |
119 { | |
120 gtk_window_present(GTK_WINDOW(win->find)); | |
121 return; | |
122 } | |
123 | |
124 f = g_malloc(sizeof(struct _find)); | |
125 f->window = win; | |
126 win->find = gtk_dialog_new_with_buttons(_("Find"), | |
127 GTK_WINDOW(win->window), GTK_DIALOG_DESTROY_WITH_PARENT, | |
128 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, | |
129 GTK_STOCK_FIND, GTK_RESPONSE_OK, NULL); | |
130 gtk_dialog_set_default_response(GTK_DIALOG(win->find), | |
131 GTK_RESPONSE_OK); | |
132 g_signal_connect(G_OBJECT(win->find), "response", | |
133 G_CALLBACK(do_find_cb), f); | |
134 | |
135 gtk_container_set_border_width(GTK_CONTAINER(win->find), 6); | |
136 gtk_window_set_resizable(GTK_WINDOW(win->find), FALSE); | |
137 gtk_dialog_set_has_separator(GTK_DIALOG(win->find), FALSE); | |
138 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(win->find)->vbox), 12); | |
139 gtk_container_set_border_width( | |
140 GTK_CONTAINER(GTK_DIALOG(win->find)->vbox), 6); | |
141 | |
142 hbox = gtk_hbox_new(FALSE, 12); | |
143 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(win->find)->vbox), | |
144 hbox); | |
145 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, | |
146 GTK_ICON_SIZE_DIALOG); | |
147 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
148 | |
149 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | |
150 gtk_dialog_set_response_sensitive(GTK_DIALOG(win->find), | |
151 GTK_RESPONSE_OK, FALSE); | |
152 | |
153 label = gtk_label_new(NULL); | |
154 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Search for:")); | |
155 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
156 | |
157 f->entry = gtk_entry_new(); | |
158 gtk_entry_set_activates_default(GTK_ENTRY(f->entry), TRUE); | |
159 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(f->entry)); | |
160 g_signal_connect(G_OBJECT(f->entry), "changed", | |
161 G_CALLBACK(gaim_gtk_set_sensitive_if_input), | |
162 win->find); | |
163 gtk_box_pack_start(GTK_BOX(hbox), f->entry, FALSE, FALSE, 0); | |
164 | |
165 gtk_widget_show_all(win->find); | |
166 gtk_widget_grab_focus(f->entry); | |
167 } | |
168 | |
169 static void | |
9502 | 170 save_writefile_cb(void *user_data, const char *filename) |
8953 | 171 { |
9502 | 172 DebugWindow *win = (DebugWindow *)user_data; |
9489 | 173 FILE *fp; |
8953 | 174 char *tmp; |
175 | |
9480 | 176 if ((fp = fopen(filename, "w+")) == NULL) { |
9502 | 177 gaim_notify_error(win, NULL, _("Unable to open file."), NULL); |
8953 | 178 return; |
9480 | 179 } |
8953 | 180 |
9489 | 181 tmp = gtk_imhtml_get_text(GTK_IMHTML(win->text), NULL, NULL); |
8953 | 182 fprintf(fp, "Gaim Debug log : %s\n", gaim_date_full()); |
183 fprintf(fp, "%s", tmp); | |
184 g_free(tmp); | |
185 | |
186 fclose(fp); | |
187 } | |
188 | |
189 static void | |
190 save_cb(GtkWidget *w, DebugWindow *win) | |
191 { | |
9502 | 192 gaim_request_file(win, _("Save Debug Log"), "gaim-debug.log", TRUE, |
193 G_CALLBACK(save_writefile_cb), NULL, win); | |
8953 | 194 } |
195 | |
196 static void | |
5794
5e93fc46d1af
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5738
diff
changeset
|
197 clear_cb(GtkWidget *w, DebugWindow *win) |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
198 { |
6280
d330afe3ccf0
[gaim-migrate @ 6779]
Christian Hammond <chipx86@chipx86.com>
parents:
6094
diff
changeset
|
199 gtk_imhtml_clear(GTK_IMHTML(win->text)); |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
200 } |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
201 |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
202 static void |
5794
5e93fc46d1af
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5738
diff
changeset
|
203 pause_cb(GtkWidget *w, DebugWindow *win) |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
204 { |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
205 win->paused = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w)); |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
206 } |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
207 |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
208 static void |
5794
5e93fc46d1af
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5738
diff
changeset
|
209 timestamps_cb(GtkWidget *w, DebugWindow *win) |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
210 { |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
211 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
|
212 |
10307 | 213 gaim_prefs_set_bool("/core/debug/timestamps", win->timestamps); |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
214 } |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
215 |
5704
aa8dbb7e0a4d
[gaim-migrate @ 6125]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
216 static void |
aa8dbb7e0a4d
[gaim-migrate @ 6125]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
217 timestamps_pref_cb(const char *name, GaimPrefType type, gpointer value, |
aa8dbb7e0a4d
[gaim-migrate @ 6125]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
218 gpointer data) |
aa8dbb7e0a4d
[gaim-migrate @ 6125]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
219 { |
6478
338147ea6896
[gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
220 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
|
221 } |
aa8dbb7e0a4d
[gaim-migrate @ 6125]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
222 |
5212 | 223 static DebugWindow * |
224 debug_window_new(void) | |
225 { | |
226 DebugWindow *win; | |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
227 GtkWidget *vbox; |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
228 GtkWidget *toolbar; |
10175 | 229 GtkWidget *frame; |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
230 GtkWidget *button; |
6094
538c522e36e1
[gaim-migrate @ 6553]
Christian Hammond <chipx86@chipx86.com>
parents:
6009
diff
changeset
|
231 GtkWidget *image; |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
232 int width, height; |
5212 | 233 |
234 win = g_new0(DebugWindow, 1); | |
235 | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
236 width = gaim_prefs_get_int("/gaim/gtk/debug/width"); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
237 height = gaim_prefs_get_int("/gaim/gtk/debug/height"); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
238 |
5212 | 239 GAIM_DIALOG(win->window); |
10309 | 240 gaim_debug_info("gtkdebug", "Setting dimensions to %d, %d\n", |
5642
1693a3027dc8
[gaim-migrate @ 6056]
Christian Hammond <chipx86@chipx86.com>
parents:
5636
diff
changeset
|
241 width, height); |
1693a3027dc8
[gaim-migrate @ 6056]
Christian Hammond <chipx86@chipx86.com>
parents:
5636
diff
changeset
|
242 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
243 gtk_window_set_default_size(GTK_WINDOW(win->window), width, height); |
5212 | 244 gtk_window_set_role(GTK_WINDOW(win->window), "debug"); |
245 gtk_window_set_title(GTK_WINDOW(win->window), _("Debug Window")); | |
246 | |
247 g_signal_connect(G_OBJECT(win->window), "delete_event", | |
248 G_CALLBACK(debug_window_destroy), NULL); | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
249 g_signal_connect(G_OBJECT(win->window), "configure_event", |
5794
5e93fc46d1af
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5738
diff
changeset
|
250 G_CALLBACK(configure_cb), win); |
5212 | 251 |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
252 /* Setup the vbox */ |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
253 vbox = gtk_vbox_new(FALSE, 0); |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
254 gtk_container_add(GTK_CONTAINER(win->window), vbox); |
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
255 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
256 if (gaim_prefs_get_bool("/gaim/gtk/debug/toolbar")) { |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
257 /* Setup our top button bar thingie. */ |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
258 toolbar = gtk_toolbar_new(); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
259 gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_BOTH_HORIZ); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
260 gtk_toolbar_set_icon_size(GTK_TOOLBAR(toolbar), |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
261 GTK_ICON_SIZE_SMALL_TOOLBAR); |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
262 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
263 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
|
264 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
265 /* Find button */ |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
266 gtk_toolbar_insert_stock(GTK_TOOLBAR(toolbar), GTK_STOCK_FIND, |
8953 | 267 NULL, NULL, G_CALLBACK(find_cb), win, -1); |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
268 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
269 /* Save */ |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
270 gtk_toolbar_insert_stock(GTK_TOOLBAR(toolbar), GTK_STOCK_SAVE, |
8953 | 271 NULL, NULL, G_CALLBACK(save_cb), win, -1); |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
272 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
273 /* Clear button */ |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
274 gtk_toolbar_insert_stock(GTK_TOOLBAR(toolbar), GTK_STOCK_CLEAR, |
5794
5e93fc46d1af
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5738
diff
changeset
|
275 NULL, NULL, G_CALLBACK(clear_cb), win, -1); |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
276 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
277 gtk_toolbar_insert_space(GTK_TOOLBAR(toolbar), -1); |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
278 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
279 /* Pause */ |
6094
538c522e36e1
[gaim-migrate @ 6553]
Christian Hammond <chipx86@chipx86.com>
parents:
6009
diff
changeset
|
280 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
|
281 button = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), |
538c522e36e1
[gaim-migrate @ 6553]
Christian Hammond <chipx86@chipx86.com>
parents:
6009
diff
changeset
|
282 GTK_TOOLBAR_CHILD_TOGGLEBUTTON, |
538c522e36e1
[gaim-migrate @ 6553]
Christian Hammond <chipx86@chipx86.com>
parents:
6009
diff
changeset
|
283 NULL, _("Pause"), NULL, NULL, |
538c522e36e1
[gaim-migrate @ 6553]
Christian Hammond <chipx86@chipx86.com>
parents:
6009
diff
changeset
|
284 image, G_CALLBACK(pause_cb), win); |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
285 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
286 /* Timestamps */ |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
287 button = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
288 GTK_TOOLBAR_CHILD_TOGGLEBUTTON, |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
289 NULL, _("Timestamps"), NULL, NULL, |
5794
5e93fc46d1af
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5738
diff
changeset
|
290 NULL, G_CALLBACK(timestamps_cb), |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
291 win); |
8953 | 292 |
293 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), | |
10307 | 294 gaim_prefs_get_bool("/core/debug/timestamps")); |
8953 | 295 |
10307 | 296 gaim_prefs_connect_callback(gaim_gtk_debug_get_handle(), "/core/debug/timestamps", |
10087 | 297 timestamps_pref_cb, button); |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
298 } |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
299 |
10175 | 300 /* Add the gtkimhtml */ |
301 frame = gaim_gtk_create_imhtml(FALSE, &win->text, NULL); | |
302 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); | |
303 gtk_widget_show(frame); | |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
304 |
5212 | 305 gtk_widget_show_all(win->window); |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
306 |
5212 | 307 return win; |
308 } | |
309 | |
5625
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
310 static void |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
311 debug_enabled_cb(const char *name, GaimPrefType type, gpointer value, |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
312 gpointer data) |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
313 { |
5636 | 314 if (value) |
5625
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
315 gaim_gtk_debug_window_show(); |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
316 else |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
317 gaim_gtk_debug_window_hide(); |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
318 } |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
319 |
7150 | 320 static void |
321 gaim_glib_log_handler(const gchar *domain, GLogLevelFlags flags, | |
322 const gchar *msg, gpointer user_data) | |
323 { | |
324 GaimDebugLevel level; | |
325 char *new_msg = NULL; | |
326 char *new_domain = NULL; | |
327 | |
7152
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
328 if ((flags & G_LOG_LEVEL_ERROR) == G_LOG_LEVEL_ERROR) |
7150 | 329 level = GAIM_DEBUG_ERROR; |
7152
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
330 else if ((flags & G_LOG_LEVEL_CRITICAL) == G_LOG_LEVEL_CRITICAL) |
7150 | 331 level = GAIM_DEBUG_FATAL; |
7152
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
332 else if ((flags & G_LOG_LEVEL_WARNING) == G_LOG_LEVEL_WARNING) |
7150 | 333 level = GAIM_DEBUG_WARNING; |
7152
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
334 else if ((flags & G_LOG_LEVEL_MESSAGE) == G_LOG_LEVEL_MESSAGE) |
7150 | 335 level = GAIM_DEBUG_INFO; |
7152
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
336 else if ((flags & G_LOG_LEVEL_INFO) == G_LOG_LEVEL_INFO) |
7150 | 337 level = GAIM_DEBUG_INFO; |
7152
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
338 else if ((flags & G_LOG_LEVEL_DEBUG) == G_LOG_LEVEL_DEBUG) |
7150 | 339 level = GAIM_DEBUG_MISC; |
7152
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
340 else |
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
341 { |
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
342 gaim_debug_warning("gtkdebug", |
7150 | 343 "Unknown glib logging level in %d\n", flags); |
344 | |
345 level = GAIM_DEBUG_MISC; /* This will never happen. */ | |
346 } | |
347 | |
348 if (msg != NULL) | |
349 new_msg = gaim_utf8_try_convert(msg); | |
350 | |
351 if (domain != NULL) | |
352 new_domain = gaim_utf8_try_convert(domain); | |
353 | |
7152
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
354 if (new_msg != NULL) |
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
355 { |
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
356 gaim_debug(level, (new_domain != NULL ? new_domain : "g_log"), |
cada5ddc21f5
[gaim-migrate @ 7719]
Christian Hammond <chipx86@chipx86.com>
parents:
7150
diff
changeset
|
357 "%s\n", new_msg); |
7150 | 358 |
359 g_free(new_msg); | |
360 } | |
361 | |
362 if (new_domain != NULL) | |
363 g_free(new_domain); | |
364 } | |
365 | |
366 #ifdef _WIN32 | |
367 static void | |
368 gaim_glib_dummy_print_handler(const gchar *string) | |
369 { | |
370 } | |
371 #endif | |
372 | |
5625
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
373 void |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
374 gaim_gtk_debug_init(void) |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
375 { |
5684 | 376 /* Debug window preferences. */ |
377 /* | |
378 * NOTE: This must be set before prefs are loaded, and the callbacks | |
379 * set after they are loaded, since prefs sets the enabled | |
380 * preference here and that loads the window, which calls the | |
8735
92cbf9713795
[gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
381 * configure event, which overrides the width and height! :P |
5684 | 382 */ |
383 | |
384 gaim_prefs_add_none("/gaim/gtk/debug"); | |
10307 | 385 |
386 /* Controls printing to the debug window */ | |
5684 | 387 gaim_prefs_add_bool("/gaim/gtk/debug/enabled", FALSE); |
10307 | 388 |
5684 | 389 gaim_prefs_add_bool("/gaim/gtk/debug/toolbar", TRUE); |
390 gaim_prefs_add_int("/gaim/gtk/debug/width", 450); | |
391 gaim_prefs_add_int("/gaim/gtk/debug/height", 250); | |
392 | |
10087 | 393 gaim_prefs_connect_callback(NULL, "/gaim/gtk/debug/enabled", |
5794
5e93fc46d1af
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5738
diff
changeset
|
394 debug_enabled_cb, NULL); |
7150 | 395 |
396 #define REGISTER_G_LOG_HANDLER(name) \ | |
397 g_log_set_handler((name), G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL \ | |
398 | G_LOG_FLAG_RECURSION, \ | |
399 gaim_glib_log_handler, NULL) | |
400 | |
401 /* Register the glib/gtk log handlers. */ | |
402 REGISTER_G_LOG_HANDLER(NULL); | |
403 REGISTER_G_LOG_HANDLER("Gdk"); | |
404 REGISTER_G_LOG_HANDLER("Gtk"); | |
7229
26fe5055e0b0
[gaim-migrate @ 7799]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7152
diff
changeset
|
405 REGISTER_G_LOG_HANDLER("GdkPixbuf"); |
7150 | 406 REGISTER_G_LOG_HANDLER("GLib"); |
407 REGISTER_G_LOG_HANDLER("GModule"); | |
408 REGISTER_G_LOG_HANDLER("GLib-GObject"); | |
409 REGISTER_G_LOG_HANDLER("GThread"); | |
410 | |
411 #ifdef _WIN32 | |
10314 | 412 if (!gaim_debug_is_enabled()) |
7150 | 413 g_set_print_handler(gaim_glib_dummy_print_handler); |
414 #endif | |
5625
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
415 } |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5535
diff
changeset
|
416 |
5212 | 417 void |
418 gaim_gtk_debug_window_show(void) | |
419 { | |
420 if (debug_win == NULL) | |
421 debug_win = debug_window_new(); | |
422 | |
423 gtk_widget_show(debug_win->window); | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
424 |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
425 gaim_prefs_set_bool("/gaim/gtk/debug/enabled", TRUE); |
5212 | 426 } |
427 | |
428 void | |
429 gaim_gtk_debug_window_hide(void) | |
430 { | |
431 if (debug_win != NULL) { | |
432 gtk_widget_destroy(debug_win->window); | |
433 debug_window_destroy(NULL, NULL, NULL); | |
434 } | |
435 } | |
436 | |
437 static void | |
438 gaim_gtk_debug_print(GaimDebugLevel level, const char *category, | |
439 const char *format, va_list args) | |
440 { | |
10307 | 441 gboolean timestamps; |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
442 gchar *arg_s, *ts_s; |
10307 | 443 gchar *esc_s, *cat_s, *tmp, *s; |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
444 |
10307 | 445 if (!gaim_prefs_get_bool("/gaim/gtk/debug/enabled") || |
446 (debug_win == NULL) || debug_win->paused) { | |
447 return; | |
448 } | |
449 | |
450 timestamps = gaim_prefs_get_bool("/core/debug/timestamps"); | |
5212 | 451 |
452 arg_s = g_strdup_vprintf(format, args); | |
453 | |
10307 | 454 /* |
455 * For some reason we only print the timestamp if category is | |
456 * not NULL. Why the hell do we do that? --Mark | |
457 */ | |
458 if ((category != NULL) && (timestamps)) { | |
459 gchar mdate[64]; | |
460 | |
461 time_t mtime = time(NULL); | |
462 strftime(mdate, sizeof(mdate), "%H:%M:%S", localtime(&mtime)); | |
463 ts_s = g_strdup_printf("(%s) ", mdate); | |
464 } else { | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
465 ts_s = g_strdup(""); |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
466 } |
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5430
diff
changeset
|
467 |
10307 | 468 if (category == NULL) |
469 cat_s = g_strdup(""); | |
470 else | |
471 cat_s = g_strdup_printf("<b>%s:</b> ", category); | |
5212 | 472 |
10307 | 473 esc_s = g_markup_escape_text(arg_s, -1); |
5428
96bde36bb76b
[gaim-migrate @ 5808]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
474 |
10307 | 475 g_free(arg_s); |
5212 | 476 |
10307 | 477 s = g_strdup_printf("<font color=\"%s\">%s%s%s</font>", |
478 debug_fg_colors[level], ts_s, cat_s, esc_s); | |
5212 | 479 |
10307 | 480 g_free(ts_s); |
481 g_free(cat_s); | |
482 g_free(esc_s); | |
5212 | 483 |
10307 | 484 tmp = gaim_utf8_try_convert(s); |
485 g_free(s); | |
486 s = tmp; | |
5212 | 487 |
10307 | 488 if (level == GAIM_DEBUG_FATAL) { |
489 tmp = g_strdup_printf("<b>%s</b>", s); | |
5212 | 490 g_free(s); |
10307 | 491 s = tmp; |
5212 | 492 } |
493 | |
10307 | 494 gtk_imhtml_append_text(GTK_IMHTML(debug_win->text), s, 0); |
5212 | 495 |
10307 | 496 g_free(s); |
5212 | 497 } |
498 | |
499 static GaimDebugUiOps ops = | |
500 { | |
501 gaim_gtk_debug_print | |
502 }; | |
503 | |
504 GaimDebugUiOps * | |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
505 gaim_gtk_debug_get_ui_ops(void) |
5212 | 506 { |
507 return &ops; | |
508 } | |
10087 | 509 |
510 void * | |
511 gaim_gtk_debug_get_handle() { | |
512 static int handle; | |
513 | |
514 return &handle; | |
515 } |