From: Lutz M?l. <lu...@us...> - 2003-08-01 20:43:03
|
Update of /cvsroot/libexif/libexif-gtk/libexif-gtk In directory sc8-pr-cvs1:/tmp/cvs-serv8346/libexif-gtk Modified Files: gtk-exif-browser.c gtk-exif-content-list.c gtk-exif-content-list.h gtk-exif-entry-resolution.c Log Message: 2003-08-01 Lutz Mueller <lu...@us...> * libexif-gtk/gtk-exif-browser.c: Implement removal of entries. Index: gtk-exif-content-list.c =================================================================== RCS file: /cvsroot/libexif/libexif-gtk/libexif-gtk/gtk-exif-content-list.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- gtk-exif-content-list.c 15 Dec 2002 11:41:28 -0000 1.8 +++ gtk-exif-content-list.c 1 Aug 2003 20:43:00 -0000 1.9 @@ -363,31 +363,58 @@ } static gboolean -update_foreach_func (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, - void *data) +gtk_exif_content_list_get_iter (GtkExifContentList *list, ExifEntry *e, + GtkTreeIter *iter) { - ExifEntry *e = data; + GtkTreeModel *model; GValue value = {0}; + g_return_val_if_fail (GTK_EXIF_IS_CONTENT_LIST (list), FALSE); + g_return_val_if_fail (e != NULL, FALSE); + g_return_val_if_fail (iter != NULL, FALSE); + + model = GTK_TREE_MODEL (list->priv->store); + if (!gtk_tree_model_get_iter_first (model, iter)) return FALSE; gtk_tree_model_get_value (model, iter, ENTRY_COLUMN, &value); if (g_value_peek_pointer (&value) == e) { g_value_unset (&value); - gtk_list_store_set (GTK_LIST_STORE (model), iter, - VALUE_COLUMN, exif_entry_get_value (e), -1); - return (TRUE); + return TRUE; } g_value_unset (&value); - return (FALSE); + while (gtk_tree_model_iter_next (model, iter)) { + gtk_tree_model_get_value (model, iter, ENTRY_COLUMN, &value); + if (g_value_peek_pointer (&value) == e) { + g_value_unset (&value); + return TRUE; + } + g_value_unset (&value); + } + return FALSE; } void -gtk_exif_content_list_update_entry (GtkExifContentList *list, ExifEntry *entry) +gtk_exif_content_list_update_entry (GtkExifContentList *list, ExifEntry *e) { + GtkTreeIter iter; + + g_return_if_fail (GTK_EXIF_IS_CONTENT_LIST (list)); + g_return_if_fail (e != NULL); + + if (!gtk_exif_content_list_get_iter (list, e, &iter)) return; + gtk_list_store_set (list->priv->store, &iter, + VALUE_COLUMN, exif_entry_get_value (e), -1); +} + +void +gtk_exif_content_list_remove_entry (GtkExifContentList *list, ExifEntry *entry) +{ + GtkTreeIter iter; + g_return_if_fail (GTK_EXIF_IS_CONTENT_LIST (list)); g_return_if_fail (entry != NULL); - gtk_tree_model_foreach (GTK_TREE_MODEL (list->priv->store), - update_foreach_func, entry); + if (!gtk_exif_content_list_get_iter (list, entry, &iter)) return; + gtk_list_store_remove (list->priv->store, &iter); } void Index: gtk-exif-content-list.h =================================================================== RCS file: /cvsroot/libexif/libexif-gtk/libexif-gtk/gtk-exif-content-list.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- gtk-exif-content-list.h 15 Dec 2002 11:41:28 -0000 1.3 +++ gtk-exif-content-list.h 1 Aug 2003 20:43:00 -0000 1.4 @@ -60,6 +60,8 @@ ExifEntry *entry); void gtk_exif_content_list_update_entry (GtkExifContentList *, ExifEntry *); +void gtk_exif_content_list_remove_entry (GtkExifContentList *, + ExifEntry *); void gtk_exif_content_list_set_content (GtkExifContentList *, ExifContent *); Index: gtk-exif-browser.c =================================================================== RCS file: /cvsroot/libexif/libexif-gtk/libexif-gtk/gtk-exif-browser.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- gtk-exif-browser.c 13 Apr 2003 10:47:58 -0000 1.15 +++ gtk-exif-browser.c 1 Aug 2003 20:43:00 -0000 1.16 @@ -143,7 +143,7 @@ gtk_object_sink (GTK_OBJECT (browser->priv->tooltips)); /* Placeholder */ - browser->priv->empty = gtk_label_new (g_locale_to_utf8 (_("Nothing selected."), -1, NULL, NULL, NULL)); + browser->priv->empty = gtk_label_new (_("Nothing selected.")); gtk_widget_show (browser->priv->empty); g_object_ref (G_OBJECT (browser->priv->empty)); } @@ -157,18 +157,19 @@ GtkWidget *swin, *viewport; GtkExifContentList *list = NULL; + g_return_val_if_fail (GTK_EXIF_IS_BROWSER (b), NULL); + g_return_val_if_fail (entry != NULL, NULL); + n = g_list_length (b->priv->notebook->children); for (i = 0; i < n; i++) { swin = gtk_notebook_get_nth_page (b->priv->notebook, i); + if (!GTK_IS_SCROLLED_WINDOW (swin)) continue; viewport = GTK_BIN (swin)->child; list = GTK_EXIF_CONTENT_LIST (GTK_BIN (viewport)->child); if (list->content == entry->parent) break; } - if (i == n) - return NULL; - - return (list); + return (i == n) ? NULL : list; } static void @@ -177,6 +178,8 @@ if (browser->priv->current) gtk_container_remove (GTK_CONTAINER (browser->priv->info), browser->priv->current); + if (!w) return; + gtk_box_pack_start (GTK_BOX (browser->priv->info), w, TRUE, FALSE, 0); browser->priv->current = w; } @@ -210,6 +213,23 @@ static void on_entry_removed (GtkExifEntry *entry, ExifEntry *e, GtkExifBrowser *b) { + GtkExifContentList *list; + + list = gtk_exif_browser_get_content_list (b, e); + if (!list) return; + + switch (e->tag) { + case EXIF_TAG_RESOLUTION_UNIT: + case EXIF_TAG_X_RESOLUTION: + case EXIF_TAG_Y_RESOLUTION: + /* Do nothing. */ + break; + default: + gtk_exif_browser_set_widget (b, b->priv->empty); + break; + } + + gtk_exif_content_list_remove_entry (list, e); } static void @@ -224,6 +244,11 @@ { GtkWidget *w; + if (!entry) { + gtk_exif_browser_set_widget (browser, browser->priv->empty); + return; + } + switch (entry->tag) { case EXIF_TAG_EXIF_VERSION: case EXIF_TAG_FLASH_PIX_VERSION: @@ -368,7 +393,7 @@ } if (!b->priv->data->data) { - b->priv->thumb = gtk_label_new (g_locale_to_utf8 (_("No thumbnail available."), -1, NULL, NULL, NULL)); + b->priv->thumb = gtk_label_new (_("No thumbnail available.")); } else { GdkPixbufLoader *loader; GtkWidget *image; @@ -376,8 +401,8 @@ loader = gdk_pixbuf_loader_new (); if (!gdk_pixbuf_loader_write (loader, b->priv->data->data, b->priv->data->size, NULL)) { - b->priv->thumb = gtk_label_new (g_locale_to_utf8 (_("Could not parse " - "thumbnail data."), -1, NULL, NULL, NULL)); + b->priv->thumb = gtk_label_new (_("Could not parse " + "thumbnail data.")); } else { gdk_pixbuf_loader_close (loader, NULL); image = gtk_image_new_from_pixbuf ( @@ -391,7 +416,7 @@ GTK_SCROLLED_WINDOW (b->priv->thumb), image); } g_object_unref (G_OBJECT (loader)); - tip = g_strdup_printf (g_locale_to_utf8 (_("Size: %i byte(s)."), -1, NULL, NULL, NULL), + tip = g_strdup_printf (_("Size: %i byte(s)."), b->priv->data->size); gtk_tooltips_set_tip (b->priv->tooltips, b->priv->thumb, tip, NULL); @@ -460,7 +485,7 @@ { GtkWidget *fsel; - fsel = gtk_file_selection_new (g_locale_to_utf8 (_("Load..."), -1, NULL, NULL, NULL)); + fsel = gtk_file_selection_new (_("Load...")); gtk_widget_show (fsel); g_signal_connect (GTK_OBJECT (fsel), "delete_event", G_CALLBACK (gtk_object_destroy), NULL); @@ -500,7 +525,7 @@ { GtkWidget *fsel; - fsel = gtk_file_selection_new (g_locale_to_utf8 (_("Save As..."), -1, NULL, NULL, NULL)); + fsel = gtk_file_selection_new (_("Save As...")); gtk_widget_show (fsel); g_signal_connect (GTK_OBJECT (fsel), "delete_event", G_CALLBACK (gtk_object_destroy), NULL); @@ -550,7 +575,7 @@ /* Create the thumbnail page */ vbox = gtk_vbox_new (FALSE, 5); gtk_widget_show (vbox); - label = gtk_label_new (g_locale_to_utf8 (_("Thumbnail"), -1, NULL, NULL, NULL)); + label = gtk_label_new (_("Thumbnail")); gtk_widget_show (label); gtk_notebook_append_page (b->priv->notebook, vbox, label); @@ -567,17 +592,17 @@ gtk_container_set_border_width (GTK_CONTAINER (bbox), 5); gtk_box_set_spacing (GTK_BOX (bbox), 5); gtk_box_pack_end (GTK_BOX (vbox), bbox, FALSE, FALSE, 0); - button = gtk_button_new_with_label (g_locale_to_utf8 (_("Load"), -1, NULL, NULL, NULL)); + button = gtk_button_new_with_label (_("Load")); gtk_widget_show (button); gtk_container_add (GTK_CONTAINER (bbox), button); g_signal_connect (GTK_OBJECT (button), "clicked", G_CALLBACK (on_load_clicked), b); - button = gtk_button_new_with_label (g_locale_to_utf8 (_("Save"), -1, NULL, NULL, NULL)); + button = gtk_button_new_with_label (_("Save")); gtk_widget_show (button); gtk_container_add (GTK_CONTAINER (bbox), button); g_signal_connect (GTK_OBJECT (button), "clicked", G_CALLBACK (on_save_clicked), b); - button = gtk_button_new_with_label (g_locale_to_utf8 (_("Delete"), -1, NULL, NULL, NULL)); + button = gtk_button_new_with_label (_("Delete")); gtk_widget_show (button); gtk_container_add (GTK_CONTAINER (bbox), button); g_signal_connect (GTK_OBJECT (button), "clicked", Index: gtk-exif-entry-resolution.c =================================================================== RCS file: /cvsroot/libexif/libexif-gtk/libexif-gtk/gtk-exif-entry-resolution.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- gtk-exif-entry-resolution.c 1 Aug 2003 19:40:51 -0000 1.9 +++ gtk-exif-entry-resolution.c 1 Aug 2003 20:43:00 -0000 1.10 @@ -307,10 +307,10 @@ exif_entry_unref (e); gtk_exif_entry_added (GTK_EXIF_ENTRY (entry), e); } else if (!toggle->active && e) { - exif_entry_ref (e); - exif_content_remove_entry (entry->priv->content, e); + g_object_ref (entry); gtk_exif_entry_removed (GTK_EXIF_ENTRY (entry), e); - exif_entry_unref (e); + exif_content_remove_entry (entry->priv->content, e); + g_object_unref (entry); } } @@ -331,10 +331,10 @@ exif_entry_unref (e); gtk_exif_entry_added (GTK_EXIF_ENTRY (entry), e); } else if (!toggle->active && e) { - exif_entry_ref (e); - exif_content_remove_entry (entry->priv->content, e); + g_object_ref (entry); gtk_exif_entry_removed (GTK_EXIF_ENTRY (entry), e); - exif_entry_unref (e); + exif_content_remove_entry (entry->priv->content, e); + g_object_unref (entry); } } @@ -355,10 +355,10 @@ exif_entry_unref (e); gtk_exif_entry_added (GTK_EXIF_ENTRY (entry), e); } else if (!toggle->active && e) { - exif_entry_ref (e); - exif_content_remove_entry (entry->priv->content, e); + g_object_ref (entry); gtk_exif_entry_removed (GTK_EXIF_ENTRY (entry), e); - exif_entry_unref (e); + exif_content_remove_entry (entry->priv->content, e); + g_object_unref (entry); } } |