Mercurial > pidgin
comparison src/gtksavedstatuses.c @ 10435:341d4932f89e
[gaim-migrate @ 11692]
Better CTRL+F searching for the saved statuses window
Use gtk2.6's ellipsizing for status messages
Escape & in status titles when deleting statuses
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Mon, 27 Dec 2004 19:35:21 +0000 |
parents | e0cf2f3f9929 |
children | 911530134bf8 |
comparison
equal
deleted
inserted
replaced
10434:6be6da69d603 | 10435:341d4932f89e |
---|---|
165 static void | 165 static void |
166 status_window_delete_foreach(GtkTreeModel *model, GtkTreePath *path, | 166 status_window_delete_foreach(GtkTreeModel *model, GtkTreePath *path, |
167 GtkTreeIter *iter, gpointer user_data) | 167 GtkTreeIter *iter, gpointer user_data) |
168 { | 168 { |
169 const char *title; | 169 const char *title; |
170 char *buf; | 170 char *title_escaped, *buf; |
171 | 171 |
172 gtk_tree_model_get(model, iter, STATUS_WINDOW_COLUMN_TITLE, &title, -1); | 172 gtk_tree_model_get(model, iter, STATUS_WINDOW_COLUMN_TITLE, &title, -1); |
173 | 173 |
174 buf = g_strdup_printf(_("Are you sure you want to delete %s?"), title); | 174 title_escaped = gaim_escape_html(title); |
175 buf = g_strdup_printf(_("Are you sure you want to delete %s?"), title_escaped); | |
176 free(title_escaped); | |
175 gaim_request_action(NULL, NULL, buf, NULL, 0, g_strdup(title), 2, | 177 gaim_request_action(NULL, NULL, buf, NULL, 0, g_strdup(title), 2, |
176 _("Delete"), status_window_delete_confirm_cb, | 178 _("Delete"), status_window_delete_confirm_cb, |
177 _("Cancel"), g_free); | 179 _("Cancel"), g_free); |
178 g_free(buf); | 180 g_free(buf); |
179 } | 181 } |
220 char *message; | 222 char *message; |
221 | 223 |
222 title = gaim_savedstatus_get_title(saved_status); | 224 title = gaim_savedstatus_get_title(saved_status); |
223 type = gaim_primitive_get_name_from_type(gaim_savedstatus_get_type(saved_status)); | 225 type = gaim_primitive_get_name_from_type(gaim_savedstatus_get_type(saved_status)); |
224 message = gaim_markup_strip_html(gaim_savedstatus_get_message(saved_status)); | 226 message = gaim_markup_strip_html(gaim_savedstatus_get_message(saved_status)); |
225 if (strlen(message) > 70) | |
226 strcpy(&message[68], "..."); | |
227 | 227 |
228 gtk_list_store_append(model, &iter); | 228 gtk_list_store_append(model, &iter); |
229 gtk_list_store_set(model, &iter, | 229 gtk_list_store_set(model, &iter, |
230 STATUS_WINDOW_COLUMN_TITLE, title, | 230 STATUS_WINDOW_COLUMN_TITLE, title, |
231 STATUS_WINDOW_COLUMN_TYPE, type, | 231 STATUS_WINDOW_COLUMN_TYPE, type, |
244 for (saved_statuses = gaim_savedstatuses_get_all(); saved_statuses != NULL; | 244 for (saved_statuses = gaim_savedstatuses_get_all(); saved_statuses != NULL; |
245 saved_statuses = g_list_next(saved_statuses)) | 245 saved_statuses = g_list_next(saved_statuses)) |
246 { | 246 { |
247 add_status_to_saved_status_list(dialog->model, saved_statuses->data); | 247 add_status_to_saved_status_list(dialog->model, saved_statuses->data); |
248 } | 248 } |
249 } | |
250 | |
251 static gboolean | |
252 search_func(GtkTreeModel *model, gint column, const gchar *key, GtkTreeIter *iter, gpointer search_data) | |
253 { | |
254 const char *haystack; | |
255 | |
256 gtk_tree_model_get(model, iter, column, &haystack, -1); | |
257 | |
258 return (gaim_strcasestr(haystack, key) == NULL); | |
249 } | 259 } |
250 | 260 |
251 static GtkWidget * | 261 static GtkWidget * |
252 create_saved_status_list(StatusWindow *dialog) | 262 create_saved_status_list(StatusWindow *dialog) |
253 { | 263 { |
316 gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); | 326 gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); |
317 renderer = gtk_cell_renderer_text_new(); | 327 renderer = gtk_cell_renderer_text_new(); |
318 gtk_tree_view_column_pack_start(column, renderer, TRUE); | 328 gtk_tree_view_column_pack_start(column, renderer, TRUE); |
319 gtk_tree_view_column_add_attribute(column, renderer, "text", | 329 gtk_tree_view_column_add_attribute(column, renderer, "text", |
320 STATUS_WINDOW_COLUMN_MESSAGE); | 330 STATUS_WINDOW_COLUMN_MESSAGE); |
331 #if GTK_CHECK_VERSION(2,6,0) | |
332 g_object_set(renderer, "ellipsize", PANGO_ELLIPSIZE_END); | |
333 #endif | |
334 | |
335 /* Enable CTRL+F searching */ | |
336 gtk_tree_view_set_search_column(GTK_TREE_VIEW(treeview), STATUS_WINDOW_COLUMN_TITLE); | |
337 gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(treeview), search_func, NULL, NULL); | |
321 | 338 |
322 /* Sort the title column by default */ | 339 /* Sort the title column by default */ |
323 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(dialog->model), | 340 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(dialog->model), |
324 STATUS_WINDOW_COLUMN_TITLE, | 341 STATUS_WINDOW_COLUMN_TITLE, |
325 GTK_SORT_ASCENDING); | 342 GTK_SORT_ASCENDING); |