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);