Mercurial > geeqie
diff src/search.c @ 138:71e1ebee420e
replaced gchar* path with FileData *fd
author | nadvornik |
---|---|
date | Tue, 11 Sep 2007 20:06:29 +0000 |
parents | 9d5c75b5ec28 |
children | 0584cb78aa14 |
line wrap: on
line diff
--- a/src/search.c Thu Aug 23 20:45:59 2007 +0000 +++ b/src/search.c Tue Sep 11 20:06:29 2007 +0000 @@ -183,7 +183,7 @@ typedef struct _MatchFileData MatchFileData; struct _MatchFileData { - FileData fd; + FileData *fd; gint width; gint height; gint rank; @@ -333,11 +333,11 @@ valid = gtk_tree_model_get_iter_first(store, iter); while (valid) { - FileData *fd_n; + MatchFileData *mfd; n++; - gtk_tree_model_get(store, iter, SEARCH_COLUMN_POINTER, &fd_n, -1); - if (fd_n == fd) return n; + gtk_tree_model_get(store, iter, SEARCH_COLUMN_POINTER, &mfd, -1); + if (mfd->fd == fd) return n; valid = gtk_tree_model_iter_next(store, iter); } @@ -358,12 +358,12 @@ while (!found && work) { GtkTreePath *tpath = work->data; - FileData *fd_n; + MatchFileData *mfd_n; GtkTreeIter iter; gtk_tree_model_get_iter(store, &iter, tpath); - gtk_tree_model_get(store, &iter, SEARCH_COLUMN_POINTER, &fd_n, -1); - if (fd_n == fd) found = TRUE; + gtk_tree_model_get(store, &iter, SEARCH_COLUMN_POINTER, &mfd_n, -1); + if (mfd_n->fd == fd) found = TRUE; work = work->next; } g_list_foreach(slist, (GFunc)gtk_tree_path_free, NULL); @@ -393,14 +393,14 @@ if (bytes || list) { GtkTreePath *tpath = work->data; - FileData *fd; + MatchFileData *mfd; GtkTreeIter iter; gtk_tree_model_get_iter(store, &iter, tpath); - gtk_tree_model_get(store, &iter, SEARCH_COLUMN_POINTER, &fd, -1); - total += fd->size; - - if (list) plist = g_list_prepend(plist, g_strdup(fd->path)); + gtk_tree_model_get(store, &iter, SEARCH_COLUMN_POINTER, &mfd, -1); + total += mfd->fd->size; + + if (list) plist = g_list_prepend(plist, file_data_ref(mfd->fd)); } work = work->next; @@ -444,12 +444,12 @@ n++; if (bytes || list) { - FileData *fd; - - gtk_tree_model_get(store, &iter, SEARCH_COLUMN_POINTER, &fd, -1); - total += fd->size; - - if (list) plist = g_list_prepend(plist, g_strdup(fd->path)); + MatchFileData *mfd; + + gtk_tree_model_get(store, &iter, SEARCH_COLUMN_POINTER, &mfd, -1); + total += mfd->fd->size; + + if (list) plist = g_list_prepend(plist, file_data_ref(mfd->fd)); } valid = gtk_tree_model_iter_next(store, &iter); } @@ -460,7 +460,7 @@ return n; } -static GList *search_result_get_path_list(SearchData *sd) +static GList *search_result_get_filelist(SearchData *sd) { GList *list = NULL; @@ -481,7 +481,7 @@ gchar *text_size; gchar *text_dim = NULL; - fd = (FileData *)mfd; + fd = mfd->fd; if (!fd) return; @@ -491,7 +491,7 @@ store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(sd->result_view))); gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, - SEARCH_COLUMN_POINTER, fd, + SEARCH_COLUMN_POINTER, mfd, SEARCH_COLUMN_RANK, mfd->rank, SEARCH_COLUMN_THUMB, fd->pixbuf, SEARCH_COLUMN_NAME, fd->name, @@ -517,10 +517,10 @@ valid = gtk_tree_model_get_iter_first(store, &iter); while (valid) { - FileData *fd; - - gtk_tree_model_get(store, &iter, SEARCH_COLUMN_POINTER, &fd, -1); - list = g_list_prepend(list, fd); + MatchFileData *mfd; + + gtk_tree_model_get(store, &iter, SEARCH_COLUMN_POINTER, &mfd, -1); + list = g_list_prepend(list, mfd->fd); valid = gtk_tree_model_iter_next(store, &iter); } @@ -534,10 +534,11 @@ static gboolean search_result_free_node(GtkTreeModel *store, GtkTreePath *tpath, GtkTreeIter *iter, gpointer data) { - FileData *fd; - - gtk_tree_model_get(store, iter, SEARCH_COLUMN_POINTER, &fd, -1); - file_data_free(fd); + MatchFileData *mfd; + + gtk_tree_model_get(store, iter, SEARCH_COLUMN_POINTER, &mfd, -1); + file_data_unref(mfd->fd); + g_free(mfd); return FALSE; } @@ -560,20 +561,21 @@ search_status_update(sd); } -static void search_result_remove_item(SearchData *sd, FileData *fd, GtkTreeIter *iter) +static void search_result_remove_item(SearchData *sd, MatchFileData *mfd, GtkTreeIter *iter) { GtkTreeModel *store; - if (!fd || !iter) return; + if (!mfd || !iter) return; store = gtk_tree_view_get_model(GTK_TREE_VIEW(sd->result_view)); tree_view_move_cursor_away(GTK_TREE_VIEW(sd->result_view), iter, TRUE); gtk_list_store_remove(GTK_LIST_STORE(store), iter); - if (sd->click_fd == fd) sd->click_fd = NULL; - if (sd->thumb_fd == fd) sd->thumb_fd = NULL; - file_data_free(fd); + if (sd->click_fd == mfd->fd) sd->click_fd = NULL; + if (sd->thumb_fd == mfd->fd) sd->thumb_fd = NULL; + file_data_unref(mfd->fd); + g_free(mfd); } static void search_result_remove(SearchData *sd, FileData *fd) @@ -586,12 +588,12 @@ valid = gtk_tree_model_get_iter_first(store, &iter); while (valid) { - FileData *fd_n; - - gtk_tree_model_get(store, &iter, SEARCH_COLUMN_POINTER, &fd_n, -1); - if (fd_n == fd) + MatchFileData *mfd; + + gtk_tree_model_get(store, &iter, SEARCH_COLUMN_POINTER, &mfd, -1); + if (mfd->fd == fd) { - search_result_remove_item(sd, fd_n, &iter); + search_result_remove_item(sd, mfd, &iter); return; } @@ -614,11 +616,11 @@ { GtkTreePath *tpath = work->data; GtkTreeIter iter; - FileData *fd; + MatchFileData *mfd; gtk_tree_model_get_iter(store, &iter, tpath); - gtk_tree_model_get(store, &iter, SEARCH_COLUMN_POINTER, &fd, -1); - flist = g_list_prepend(flist, fd); + gtk_tree_model_get(store, &iter, SEARCH_COLUMN_POINTER, &mfd, -1); + flist = g_list_prepend(flist, mfd->fd); work = work->next; } g_list_foreach(slist, (GFunc)gtk_tree_path_free, NULL); @@ -642,8 +644,8 @@ GList *list; list = search_result_selection_list(sd); - start_editor_from_path_list(n, list); - path_list_free(list); + start_editor_from_filelist(n, list); + filelist_free(list); } static void search_result_collection_from_selection(SearchData *sd) @@ -653,8 +655,8 @@ list = search_result_selection_list(sd); w = collection_window_new(NULL); - collection_table_add_path_list(w->table, list); - path_list_free(list); + collection_table_add_filelist(w->table, list); + filelist_free(list); } static gint search_result_update_idle_cb(gpointer data) @@ -734,7 +736,7 @@ { GtkTreeModel *store; GtkTreeIter iter; - FileData *fd = NULL; + MatchFileData *mfd = NULL; gint valid; gint row = 0; gint length = 0; @@ -744,17 +746,17 @@ store = gtk_tree_view_get_model(GTK_TREE_VIEW(sd->result_view)); valid = gtk_tree_model_get_iter_first(store, &iter); - while (!fd && valid) + while (!mfd && valid) { GdkPixbuf *pixbuf; length++; - gtk_tree_model_get(store, &iter, SEARCH_COLUMN_POINTER, &fd, SEARCH_COLUMN_THUMB, &pixbuf, -1); - if (pixbuf || fd->pixbuf) + gtk_tree_model_get(store, &iter, SEARCH_COLUMN_POINTER, &mfd, SEARCH_COLUMN_THUMB, &pixbuf, -1); + if (pixbuf || mfd->fd->pixbuf) { - if (!pixbuf) gtk_list_store_set(GTK_LIST_STORE(store), &iter, SEARCH_COLUMN_THUMB, fd->pixbuf, -1); + if (!pixbuf) gtk_list_store_set(GTK_LIST_STORE(store), &iter, SEARCH_COLUMN_THUMB, mfd->fd->pixbuf, -1); row++; - fd = NULL; + mfd = NULL; } valid = gtk_tree_model_iter_next(store, &iter); } @@ -763,7 +765,7 @@ while (gtk_tree_model_iter_next(store, &iter)) length++; } - if (!fd) + if (!mfd) { sd->thumb_fd = NULL; thumb_loader_free(sd->thumb_loader); @@ -775,7 +777,7 @@ search_progress_update(sd, FALSE, (gdouble)row/length); - sd->thumb_fd = fd; + sd->thumb_fd = mfd->fd; thumb_loader_free(sd->thumb_loader); sd->thumb_loader = thumb_loader_new(thumb_max_width, thumb_max_height); @@ -784,7 +786,7 @@ search_result_thumb_done_cb, NULL, sd); - if (!thumb_loader_start(sd->thumb_loader, fd->path)) + if (!thumb_loader_start(sd->thumb_loader, mfd->fd->path)) { search_result_thumb_do(sd); search_result_thumb_step(sd); @@ -850,7 +852,7 @@ { SearchData *sd = data; - if (sd->click_fd) layout_image_set_path(NULL, sd->click_fd->path); + if (sd->click_fd) layout_image_set_fd(NULL, sd->click_fd); } static void sr_menu_viewnew_cb(GtkWidget *widget, gpointer data) @@ -860,7 +862,7 @@ list = search_result_selection_list(sd); view_window_new_from_list(list); - path_list_free(list); + filelist_free(list); } static void sr_menu_select_all_cb(GtkWidget *widget, gpointer data) @@ -910,12 +912,10 @@ static void sr_menu_print_cb(GtkWidget *widget, gpointer data) { SearchData *sd = data; - const gchar *path; - - path = (sd->click_fd) ? sd->click_fd->path : NULL; - - print_window_new(path, search_result_selection_list(sd), - search_result_get_path_list(sd), sd->window); + FileData *fd; + + print_window_new(sd->click_fd, search_result_selection_list(sd), + search_result_get_filelist(sd), sd->window); } static void sr_menu_copy_cb(GtkWidget *widget, gpointer data) @@ -1032,7 +1032,7 @@ GtkTreeModel *store; GtkTreePath *tpath; GtkTreeIter iter; - FileData *fd = NULL; + MatchFileData *mfd = NULL; store = gtk_tree_view_get_model(GTK_TREE_VIEW(widget)); @@ -1040,32 +1040,32 @@ &tpath, NULL, NULL, NULL)) { gtk_tree_model_get_iter(store, &iter, tpath); - gtk_tree_model_get(store, &iter, SEARCH_COLUMN_POINTER, &fd, -1); + gtk_tree_model_get(store, &iter, SEARCH_COLUMN_POINTER, &mfd, -1); gtk_tree_path_free(tpath); } - sd->click_fd = fd; + sd->click_fd = mfd ? mfd->fd : NULL; if (bevent->button == 3) { GtkWidget *menu; - menu = search_result_menu(sd, (fd != NULL), (search_result_count(sd, NULL) == 0)); + menu = search_result_menu(sd, (mfd != NULL), (search_result_count(sd, NULL) == 0)); gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, bevent->button, bevent->time); } - if (!fd) return FALSE; + if (!mfd) return FALSE; if (bevent->button == 1 && bevent->type == GDK_2BUTTON_PRESS) { - layout_image_set_path(NULL, fd->path); + layout_image_set_fd(NULL, mfd->fd); } if (bevent->button == 2) return TRUE; if (bevent->button == 3) { - if (!search_result_row_selected(sd, fd)) + if (!search_result_row_selected(sd, mfd->fd)) { GtkTreeSelection *selection; @@ -1083,7 +1083,7 @@ if (bevent->button == 1 && bevent->type == GDK_BUTTON_PRESS && !(bevent->state & GDK_SHIFT_MASK ) && !(bevent->state & GDK_CONTROL_MASK ) && - search_result_row_selected(sd, fd)) + search_result_row_selected(sd, mfd->fd)) { /* this selection handled on release_cb */ gtk_widget_grab_focus(widget); @@ -1100,7 +1100,7 @@ GtkTreePath *tpath; GtkTreeIter iter; - FileData *fd = NULL; + MatchFileData *mfd = NULL; if (bevent->button != 1 && bevent->button != 2) return TRUE; @@ -1111,18 +1111,18 @@ &tpath, NULL, NULL, NULL)) { gtk_tree_model_get_iter(store, &iter, tpath); - gtk_tree_model_get(store, &iter, SEARCH_COLUMN_POINTER, &fd, -1); + gtk_tree_model_get(store, &iter, SEARCH_COLUMN_POINTER, &mfd, -1); gtk_tree_path_free(tpath); } if (bevent->button == 2) { - if (fd && sd->click_fd == fd) + if (mfd && sd->click_fd == mfd->fd) { GtkTreeSelection *selection; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget)); - if (search_result_row_selected(sd, fd)) + if (search_result_row_selected(sd, mfd->fd)) { gtk_tree_selection_unselect_iter(selection, &iter); } @@ -1134,10 +1134,10 @@ return TRUE; } - if (fd && sd->click_fd == fd && + if (mfd && sd->click_fd == mfd->fd && !(bevent->state & GDK_SHIFT_MASK ) && !(bevent->state & GDK_CONTROL_MASK ) && - search_result_row_selected(sd, fd)) + search_result_row_selected(sd, mfd->fd)) { GtkTreeSelection *selection; @@ -1162,7 +1162,7 @@ GtkTreeModel *store; GtkTreeSelection *selection; GList *slist; - FileData *fd = NULL; + MatchFileData *mfd = NULL; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(sd->result_view)); slist = gtk_tree_selection_get_selected_rows(selection, &store); @@ -1177,7 +1177,7 @@ /* last is newest selected file */ gtk_tree_model_get_iter(store, &iter, tpath); - gtk_tree_model_get(store, &iter, SEARCH_COLUMN_POINTER, &fd, -1); + gtk_tree_model_get(store, &iter, SEARCH_COLUMN_POINTER, &mfd, -1); } g_list_foreach(slist, (GFunc)gtk_tree_path_free, NULL); g_list_free(slist); @@ -1263,7 +1263,7 @@ switch (event->keyval) { case GDK_Return: case GDK_KP_Enter: - if (fd) layout_image_set_path(NULL, fd->path); + if (mfd) layout_image_set_fd(NULL, mfd->fd); break; case 'V': case 'v': { @@ -1271,7 +1271,7 @@ list = search_result_selection_list(sd); view_window_new_from_list(list); - path_list_free(list); + filelist_free(list); } break; case GDK_Delete: case GDK_KP_Delete: @@ -1285,8 +1285,8 @@ { GtkWidget *menu; - sd->click_fd = fd; - menu = search_result_menu(sd, (fd != NULL), (search_result_count(sd, NULL) > 0)); + sd->click_fd = mfd->fd; + menu = search_result_menu(sd, (mfd != NULL), (search_result_count(sd, NULL) > 0)); gtk_menu_popup(GTK_MENU(menu), NULL, NULL, search_result_menu_pos_cb, sd, 0, GDK_CURRENT_TIME); } @@ -1353,8 +1353,8 @@ case TARGET_TEXT_PLAIN: list = search_result_selection_list(sd); if (!list) return; - uri_text = uri_text_from_list(list, &length, (info == TARGET_TEXT_PLAIN)); - path_list_free(list); + uri_text = uri_text_from_filelist(list, &length, (info == TARGET_TEXT_PLAIN)); + filelist_free(list); break; default: uri_text = NULL; @@ -1502,13 +1502,13 @@ } if (enable_thumb_caching && - sd->img_loader && sd->img_loader->path) + sd->img_loader && sd->img_loader->fd) { gchar *base; const gchar *path; mode_t mode = 0755; - path = sd->img_loader->path; + path = sd->img_loader->fd->path; base = cache_get_location(CACHE_TYPE_SIM, path, FALSE, &mode); if (cache_ensure_dir_exists(base, mode)) { @@ -1516,7 +1516,7 @@ cd->path = cache_get_location(CACHE_TYPE_SIM, path, TRUE, NULL); if (cache_sim_data_save(cd)) { - filetime_set(cd->path, filetime(sd->img_loader->path)); + filetime_set(cd->path, filetime(sd->img_loader->fd->path)); } } g_free(base); @@ -1566,7 +1566,7 @@ if ((sd->match_dimensions_enable && !sd->img_cd->dimensions) || (sd->match_similarity_enable && !sd->img_cd->similarity)) { - sd->img_loader = image_loader_new(fd->path); + sd->img_loader = image_loader_new(fd); image_loader_set_error_func(sd->img_loader, search_file_load_done_cb, sd); if (image_loader_start(sd->img_loader, search_file_load_done_cb, sd)) { @@ -1772,7 +1772,7 @@ tested = TRUE; match = FALSE; - if (comment_cache_read(fd->path, &list, NULL)) + if (comment_cache_read(fd, &list, NULL)) { GList *needle; GList *haystack; @@ -1835,7 +1835,7 @@ match = !found; } - path_list_free(list); + string_list_free(list); } else { @@ -1862,8 +1862,7 @@ MatchFileData *mfd; mfd = g_new(MatchFileData, 1); - memcpy(mfd, fd, sizeof(FileData)); - g_free(fd); + mfd->fd = fd; mfd->width = width; mfd->height = height; @@ -1876,7 +1875,7 @@ } else { - file_data_free(fd); + file_data_unref(fd); sd->search_buffer_count += SEARCH_BUFFER_MATCH_MISS; } @@ -1956,7 +1955,7 @@ if (!meta_path) { list = g_list_delete_link(list, link); - file_data_free(fdp); + file_data_unref(fdp); } g_free(meta_path); } @@ -1983,7 +1982,7 @@ { sd->search_folder_list = g_list_remove(sd->search_folder_list, fd); sd->search_done_list = g_list_remove(sd->search_done_list, fd); - file_data_free(fd); + file_data_unref(fd); } return TRUE; @@ -2043,7 +2042,7 @@ sd->search_similarity_cd = cache_sim_data_new(); } - sd->img_loader = image_loader_new(sd->search_similarity_path); + sd->img_loader = image_loader_new(file_data_new_simple(sd->search_similarity_path)); image_loader_set_error_func(sd->img_loader, search_similarity_load_done_cb, sd); if (image_loader_start(sd->img_loader, search_similarity_load_done_cb, sd)) { @@ -2089,7 +2088,7 @@ tab_completion_append_to_history(sd->entry_similarity, sd->search_similarity_path); } - path_list_free(sd->search_keyword_list); + string_list_free(sd->search_keyword_list); sd->search_keyword_list = keyword_list_pull(sd->entry_keywords); date_selection_get(sd->date_sel, &sd->search_date_d, &sd->search_date_m, &sd->search_date_y); @@ -2194,8 +2193,8 @@ static gint search_result_sort_cb(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer data) { gint n = GPOINTER_TO_INT(data); - FileData *fda; - FileData *fdb; + MatchFileData *fda; + MatchFileData *fdb; gtk_tree_model_get(model, a, SEARCH_COLUMN_POINTER, &fda, -1); gtk_tree_model_get(model, b, SEARCH_COLUMN_POINTER, &fdb, -1); @@ -2205,28 +2204,28 @@ switch (n) { case SEARCH_COLUMN_RANK: - if (((MatchFileData *)fda)->rank > ((MatchFileData *)fdb)->rank) return 1; - if (((MatchFileData *)fda)->rank < ((MatchFileData *)fdb)->rank) return -1; + if (((MatchFileData *)fda)->rank > (fdb)->rank) return 1; + if (((MatchFileData *)fda)->rank < (fdb)->rank) return -1; return 0; break; case SEARCH_COLUMN_NAME: - return CASE_SORT(fda->name, fdb->name); + return CASE_SORT(fda->fd->name, fdb->fd->name); break; case SEARCH_COLUMN_SIZE: - if (fda->size > fdb->size) return 1; - if (fda->size < fdb->size) return -1; + if (fda->fd->size > fdb->fd->size) return 1; + if (fda->fd->size < fdb->fd->size) return -1; return 0; break; case SEARCH_COLUMN_DATE: - if (fda->date > fdb->date) return 1; - if (fda->date < fdb->date) return -1; + if (fda->fd->date > fdb->fd->date) return 1; + if (fda->fd->date < fdb->fd->date) return -1; return 0; break; case SEARCH_COLUMN_DIMENSIONS: - return sort_matchdata_dimensions((MatchFileData *)fda, (MatchFileData *)fdb); + return sort_matchdata_dimensions(fda, fdb); break; case SEARCH_COLUMN_PATH: - return CASE_SORT(fda->path, fdb->path); + return CASE_SORT(fda->fd->path, fdb->fd->path); break; default: break; @@ -2500,7 +2499,7 @@ g_free(sd->search_path); g_free(sd->search_name); g_free(sd->search_similarity_path); - path_list_free(sd->search_keyword_list); + string_list_free(sd->search_keyword_list); g_free(sd); } @@ -2801,7 +2800,7 @@ *------------------------------------------------------------------- */ -static void search_result_change_path(SearchData *sd, const gchar *path, const gchar *newpath) +static void search_result_change_path(SearchData *sd, FileData *fd) { GtkTreeModel *store; GtkTreeIter iter; @@ -2812,33 +2811,29 @@ while (valid) { GtkTreeIter current; - FileData *fd; + MatchFileData *mfd; current = iter; valid = gtk_tree_model_iter_next(store, &iter); - gtk_tree_model_get(store, ¤t, SEARCH_COLUMN_POINTER, &fd, -1); - if (strcmp(fd->path, path) == 0) + gtk_tree_model_get(store, ¤t, SEARCH_COLUMN_POINTER, &mfd, -1); + if (mfd->fd == fd) { - if (newpath) + if (fd->change && fd->change->dest) { - g_free(fd->path); - fd->path = g_strdup(newpath); - fd->name = filename_from_path(fd->path); - gtk_list_store_set(GTK_LIST_STORE(store), ¤t, - SEARCH_COLUMN_NAME, fd->name, - SEARCH_COLUMN_PATH, fd->path, -1); + SEARCH_COLUMN_NAME, mfd->fd->name, + SEARCH_COLUMN_PATH, mfd->fd->path, -1); } else { - search_result_remove_item(sd, fd, ¤t); + search_result_remove_item(sd, mfd, ¤t); } } } } -void search_maint_renamed(const gchar *source, const gchar *dest) +void search_maint_renamed(FileData *fd) { GList *work; @@ -2848,12 +2843,12 @@ SearchData *sd = work->data; work = work->next; - search_result_change_path(sd, source, dest); + search_result_change_path(sd, fd); } } -void search_maint_removed(const gchar *path) +void search_maint_removed(FileData *fd) { - search_maint_renamed(path, NULL); + search_maint_renamed(fd); }