Mercurial > pidgin.yaz
comparison src/gtkdebug.c @ 5428:96bde36bb76b
[gaim-migrate @ 5808]
Let's see what the others think about this.
I made some modifications to the debug window. There are now Clear, Pause,
and Timestamp buttons. I have Find and Save #if 0'd out in the code,
because I haven't written them, and I'm not sure when I will. For now,
I like this. Oh, and the Jabber stuff no longer makes the window really
wide. This was my fault. Fixed! :D Resize to your heart's content.
Timestamps don't save. I won't implement this until we get new prefs ;)
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Sun, 18 May 2003 09:08:42 +0000 |
parents | 1f901484599d |
children | 7d1a44cbd347 |
comparison
equal
deleted
inserted
replaced
5427:04e1e40b99b0 | 5428:96bde36bb76b |
---|---|
26 #include <gtk/gtk.h> | 26 #include <gtk/gtk.h> |
27 | 27 |
28 typedef struct | 28 typedef struct |
29 { | 29 { |
30 GtkWidget *window; | 30 GtkWidget *window; |
31 GtkWidget *entry; | 31 GtkWidget *text; |
32 | |
33 gboolean timestamps; | |
34 gboolean paused; | |
32 | 35 |
33 } DebugWindow; | 36 } DebugWindow; |
34 | 37 |
35 static char debug_fg_colors[][8] = { | 38 static char debug_fg_colors[][8] = { |
36 "#000000", /**< All debug levels. */ | 39 "#000000", /**< All debug levels. */ |
55 save_prefs(); | 58 save_prefs(); |
56 | 59 |
57 return FALSE; | 60 return FALSE; |
58 } | 61 } |
59 | 62 |
63 static void | |
64 __clear_cb(GtkWidget *w, DebugWindow *win) | |
65 { | |
66 gtk_imhtml_clear(GTK_IMHTML(win->text)); | |
67 } | |
68 | |
69 static void | |
70 __pause_cb(GtkWidget *w, DebugWindow *win) | |
71 { | |
72 win->paused = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w)); | |
73 } | |
74 | |
75 static void | |
76 __timestamps_cb(GtkWidget *w, DebugWindow *win) | |
77 { | |
78 win->timestamps = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w)); | |
79 } | |
80 | |
60 static DebugWindow * | 81 static DebugWindow * |
61 debug_window_new(void) | 82 debug_window_new(void) |
62 { | 83 { |
63 DebugWindow *win; | 84 DebugWindow *win; |
85 GtkWidget *vbox; | |
86 GtkWidget *toolbar; | |
64 GtkWidget *sw; | 87 GtkWidget *sw; |
65 | 88 |
66 win = g_new0(DebugWindow, 1); | 89 win = g_new0(DebugWindow, 1); |
67 | 90 |
68 GAIM_DIALOG(win->window); | 91 GAIM_DIALOG(win->window); |
71 gtk_window_set_title(GTK_WINDOW(win->window), _("Debug Window")); | 94 gtk_window_set_title(GTK_WINDOW(win->window), _("Debug Window")); |
72 | 95 |
73 g_signal_connect(G_OBJECT(win->window), "delete_event", | 96 g_signal_connect(G_OBJECT(win->window), "delete_event", |
74 G_CALLBACK(debug_window_destroy), NULL); | 97 G_CALLBACK(debug_window_destroy), NULL); |
75 | 98 |
99 /* Setup the vbox */ | |
100 vbox = gtk_vbox_new(FALSE, 0); | |
101 gtk_container_add(GTK_CONTAINER(win->window), vbox); | |
102 | |
103 /* Setup our top button bar thingie. */ | |
104 toolbar = gtk_toolbar_new(); | |
105 gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_TEXT); | |
106 | |
107 gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0); | |
108 | |
109 #if 0 | |
110 /* Find button */ | |
111 gtk_toolbar_insert_stock(GTK_TOOLBAR(toolbar), GTK_STOCK_FIND, | |
112 NULL, NULL, NULL, NULL, -1); | |
113 | |
114 /* Save */ | |
115 gtk_toolbar_insert_stock(GTK_TOOLBAR(toolbar), GTK_STOCK_SAVE, | |
116 NULL, NULL, NULL, NULL, -1); | |
117 #endif | |
118 | |
119 /* Clear button */ | |
120 gtk_toolbar_insert_stock(GTK_TOOLBAR(toolbar), GTK_STOCK_CLEAR, | |
121 NULL, NULL, G_CALLBACK(__clear_cb), win, -1); | |
122 | |
123 gtk_toolbar_insert_space(GTK_TOOLBAR(toolbar), -1); | |
124 | |
125 /* Pause */ | |
126 gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), | |
127 GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL, | |
128 _("Pause"), NULL, NULL, | |
129 NULL, G_CALLBACK(__pause_cb), win); | |
130 | |
131 /* Timestamps */ | |
132 gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), | |
133 GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL, | |
134 _("Timestamps"), NULL, NULL, | |
135 NULL, G_CALLBACK(__timestamps_cb), win); | |
136 | |
137 /* Now our scrolled window... */ | |
76 sw = gtk_scrolled_window_new(NULL, NULL); | 138 sw = gtk_scrolled_window_new(NULL, NULL); |
77 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | 139 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), |
78 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); | 140 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
79 | 141 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), |
80 win->entry = gtk_imhtml_new(NULL, NULL); | 142 GTK_SHADOW_IN); |
81 | 143 |
82 gtk_container_add(GTK_CONTAINER(sw), win->entry); | 144 /* ... which has a gtkimhtml in it. */ |
83 gtk_container_add(GTK_CONTAINER(win->window), sw); | 145 win->text = gtk_imhtml_new(NULL, NULL); |
146 | |
147 gtk_container_add(GTK_CONTAINER(sw), win->text); | |
148 | |
149 /* Pack it in... Not like that, sicko. */ | |
150 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); | |
151 | |
84 gtk_widget_show_all(win->window); | 152 gtk_widget_show_all(win->window); |
85 | 153 |
86 return win; | 154 return win; |
87 } | 155 } |
88 | 156 |
89 void | 157 void |
90 gaim_gtk_debug_window_show(void) | 158 gaim_gtk_debug_window_show(void) |
106 | 174 |
107 static void | 175 static void |
108 gaim_gtk_debug_print(GaimDebugLevel level, const char *category, | 176 gaim_gtk_debug_print(GaimDebugLevel level, const char *category, |
109 const char *format, va_list args) | 177 const char *format, va_list args) |
110 { | 178 { |
111 gchar *esc_s, *arg_s, *cat_s, *s; | 179 gchar *arg_s; |
112 | 180 |
113 arg_s = g_strdup_vprintf(format, args); | 181 arg_s = g_strdup_vprintf(format, args); |
114 | 182 |
115 if ((misc_options & OPT_MISC_DEBUG) && debug_win != NULL) { | 183 if ((misc_options & OPT_MISC_DEBUG) && |
184 debug_win != NULL && !debug_win->paused) { | |
185 | |
186 gchar *esc_s, *cat_s, *ts_s, *s; | |
187 | |
116 if (category == NULL) | 188 if (category == NULL) |
117 cat_s = g_strdup(""); | 189 cat_s = g_strdup(""); |
118 else | 190 else |
119 cat_s = g_strdup_printf("<b>%s:</b> ", category); | 191 cat_s = g_strdup_printf("<b>%s:</b> ", category); |
120 | 192 |
193 if (debug_win->timestamps) { | |
194 gchar mdate[64]; | |
195 time_t mtime = time(NULL); | |
196 | |
197 strftime(mdate, sizeof(mdate), "%H:%M:%S", localtime(&mtime)); | |
198 | |
199 ts_s = g_strdup_printf("(%s) ", mdate); | |
200 } | |
201 else | |
202 ts_s = g_strdup(""); | |
203 | |
121 esc_s = g_markup_escape_text(arg_s, -1); | 204 esc_s = g_markup_escape_text(arg_s, -1); |
122 | 205 |
123 s = g_strdup_printf("<font color=\"%s\">%s%s</font>", | 206 s = g_strdup_printf("<font color=\"%s\">%s%s%s</font>", |
124 debug_fg_colors[level], cat_s, esc_s); | 207 debug_fg_colors[level], ts_s, cat_s, esc_s); |
125 | 208 |
209 g_free(ts_s); | |
126 g_free(esc_s); | 210 g_free(esc_s); |
127 | 211 |
128 if (level == GAIM_DEBUG_FATAL) { | 212 if (level == GAIM_DEBUG_FATAL) { |
129 gchar *temp = s; | 213 gchar *temp = s; |
130 | 214 |
132 g_free(temp); | 216 g_free(temp); |
133 } | 217 } |
134 | 218 |
135 g_free(cat_s); | 219 g_free(cat_s); |
136 | 220 |
137 gtk_imhtml_append_text(GTK_IMHTML(debug_win->entry), s, -1, 0); | 221 gtk_imhtml_append_text(GTK_IMHTML(debug_win->text), s, -1, 0); |
138 | 222 |
139 g_free(s); | 223 g_free(s); |
140 } | 224 } |
141 | 225 |
142 if (opt_debug) { | 226 if (opt_debug) { |