From: Lutz M. <lu...@us...> - 2004-10-17 15:33:12
|
Update of /cvsroot/libexif/libexif-gtk/libexif-gtk In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18459/libexif-gtk Modified Files: gtk-exif-entry-option.c gtk-exif-entry-resolution.c gtk-exif-entry-user-comment.c gtk-exif-entry-version.c Log Message: 2004-10-17 Lutz Mueller <lu...@us...> * libexif-gtk/gtk-exif-entry-version.c and others: Adapt to new gtk API Index: gtk-exif-entry-option.c =================================================================== RCS file: /cvsroot/libexif/libexif-gtk/libexif-gtk/gtk-exif-entry-option.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- gtk-exif-entry-option.c 17 Oct 2004 13:54:23 -0000 1.8 +++ gtk-exif-entry-option.c 17 Oct 2004 15:32:47 -0000 1.9 @@ -33,6 +33,8 @@ #include <gtk/gtkcombobox.h> #include <gtk/gtkmenuitem.h> #include <gtk/gtkmenu.h> +#include <gtk/gtkcellrenderertext.h> +#include <gtk/gtkcelllayout.h> #include <gtk/gtkhbox.h> #include <libexif/exif-utils.h> @@ -122,8 +124,8 @@ o = exif_data_get_byte_order (entry->priv->entry->parent->parent); value = exif_get_short (entry->priv->entry->data, o); tm = gtk_combo_box_get_model (entry->priv->menu); - gtk_tree_model_get_iter_from_option (tm, value, &iter); - gtk_combo_box_set_active_iter (entry->priv->menu, &iter); + if (gtk_tree_model_get_iter_from_option (tm, value, &iter)) + gtk_combo_box_set_active_iter (entry->priv->menu, &iter); } static void @@ -225,6 +227,7 @@ GtkWidget *hbox, *label, *menu; GtkOptions *options; const gchar *title; + GtkCellRenderer *cell; g_return_val_if_fail (e != NULL, NULL); g_return_val_if_fail (e->format == EXIF_FORMAT_SHORT, NULL); @@ -287,6 +290,10 @@ gtk_widget_show (menu); gtk_box_pack_start (GTK_BOX (hbox), menu, FALSE, FALSE, 0); entry->priv->menu = GTK_COMBO_BOX (menu); + cell = gtk_cell_renderer_text_new (); + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (menu), cell, TRUE); + gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (menu), cell, + "text", GTK_OPTIONS_NAME_COLUMN, NULL); g_signal_connect (G_OBJECT (menu), "changed", G_CALLBACK (on_changed), entry); Index: gtk-exif-entry-version.c =================================================================== RCS file: /cvsroot/libexif/libexif-gtk/libexif-gtk/gtk-exif-entry-version.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- gtk-exif-entry-version.c 15 Dec 2002 11:41:29 -0000 1.7 +++ gtk-exif-entry-version.c 17 Oct 2004 15:32:47 -0000 1.8 @@ -30,7 +30,9 @@ #include <gtk/gtkframe.h> #include <gtk/gtklabel.h> #include <gtk/gtkentry.h> -#include <gtk/gtkoptionmenu.h> +#include <gtk/gtkcombobox.h> +#include <gtk/gtkcellrenderertext.h> +#include <gtk/gtkcelllayout.h> #include <gtk/gtkmenuitem.h> #include <gtk/gtkmenu.h> #include <gtk/gtkhbox.h> @@ -56,7 +58,6 @@ # define N_(String) (String) #endif -#include "gtk-extensions/gtk-option-menu-option.h" #include "gtk-extensions/gtk-options.h" #include <string.h> @@ -64,7 +65,7 @@ struct _GtkExifEntryVersionPrivate { ExifEntry *entry; - GtkOptionMenuOption *menu; + GtkComboBox *menu; }; #define PARENT_TYPE GTK_EXIF_TYPE_ENTRY @@ -114,7 +115,8 @@ enum _ExifVersion { EXIF_VERSION_2_0, EXIF_VERSION_2_1, - EXIF_VERSION_2_2 + EXIF_VERSION_2_2, + EXIF_VERSION_2_21 }; typedef enum _FlashPixVersion FlashPixVersion; @@ -123,9 +125,10 @@ }; static GtkOptions exif_list[] = { - {EXIF_VERSION_2_0, N_("Exif Format Version 2.0")}, - {EXIF_VERSION_2_1, N_("Exif Format Version 2.1")}, - {EXIF_VERSION_2_2, N_("Exif Format Version 2.2")}, + {EXIF_VERSION_2_0 , N_("Exif Format Version 2.0")}, + {EXIF_VERSION_2_1 , N_("Exif Format Version 2.1")}, + {EXIF_VERSION_2_2 , N_("Exif Format Version 2.2")}, + {EXIF_VERSION_2_21, N_("Exif Format Version 2.21")}, {0, NULL} }; @@ -138,9 +141,10 @@ ExifVersion version; const guchar *data; } exif_versions[] = { - {EXIF_VERSION_2_0, "0200"}, - {EXIF_VERSION_2_1, "0210"}, - {EXIF_VERSION_2_2, "0220"}, + {EXIF_VERSION_2_0 , "0200"}, + {EXIF_VERSION_2_1 , "0210"}, + {EXIF_VERSION_2_2 , "0220"}, + {EXIF_VERSION_2_21, "0221"}, {0, NULL} }; @@ -156,16 +160,20 @@ gtk_exif_entry_version_load (GtkExifEntryVersion *entry) { guint i; + GtkTreeIter iter; + GtkTreeModel *tm; g_return_if_fail (GTK_EXIF_IS_ENTRY_VERSION (entry)); + tm = gtk_combo_box_get_model (entry->priv->menu); switch (entry->priv->entry->tag) { case EXIF_TAG_EXIF_VERSION: for (i = 0; exif_versions[i].data; i++) if (!memcmp (exif_versions[i].data, entry->priv->entry->data, 4)) { - gtk_option_menu_option_set (entry->priv->menu, - exif_versions[i].version); + if (!gtk_tree_model_get_iter_from_option (tm, + exif_versions[i].version, &iter)) + return; break; } break; @@ -173,26 +181,34 @@ for (i = 0; flash_pix_versions[i].data; i++) if (!memcmp (flash_pix_versions[i].data, entry->priv->entry->data, 4)) { - gtk_option_menu_option_set (entry->priv->menu, - flash_pix_versions[i].version); + if (!gtk_tree_model_get_iter_from_option (tm, + flash_pix_versions[i].version, &iter)) + return; break; } break; default: - break; + return; } + gtk_combo_box_set_active_iter (entry->priv->menu, &iter); } static void gtk_exif_entry_version_save (GtkExifEntryVersion *entry) { - guint option, i; + guint i; + GtkTreeIter iter; + GtkTreeModel *tm; + GValue v = {0,}; - option = gtk_option_menu_option_get (entry->priv->menu); + tm = gtk_combo_box_get_model (entry->priv->menu); + gtk_combo_box_get_active_iter (entry->priv->menu, &iter); + gtk_tree_model_get_value (tm, &iter, GTK_OPTIONS_OPTION_COLUMN, &v); switch (entry->priv->entry->tag) { case EXIF_TAG_EXIF_VERSION: for (i = 0; exif_versions[i].data; i++) - if (option == exif_versions[i].version) { + if (g_value_get_int (&v) == + exif_versions[i].version) { memcpy (entry->priv->entry->data, exif_versions[i].data, 4); break; @@ -200,7 +216,8 @@ break; case EXIF_TAG_FLASH_PIX_VERSION: for (i = 0; flash_pix_versions[i].data; i++) - if (option == flash_pix_versions[i].version) { + if (g_value_get_int (&v) == + flash_pix_versions[i].version) { memcpy (entry->priv->entry->data, flash_pix_versions[i].data, 4); break; @@ -213,7 +230,7 @@ } static void -on_option_selected (GtkOptions *options, guint option, GtkExifEntryVersion *entry) +on_changed (GtkComboBox *cb, GtkExifEntryVersion *entry) { gtk_exif_entry_version_save (entry); } @@ -223,6 +240,8 @@ { GtkExifEntryVersion *entry; GtkWidget *hbox, *label, *options; + GtkTreeModel *tm = NULL; + GtkCellRenderer *cell; g_return_val_if_fail (e != NULL, NULL); g_return_val_if_fail ((e->tag == EXIF_TAG_EXIF_VERSION) || @@ -246,18 +265,23 @@ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); switch (e->tag) { case EXIF_TAG_EXIF_VERSION: - options = gtk_option_menu_option_new (exif_list); + tm = gtk_tree_model_new_from_options (exif_list); break; case EXIF_TAG_FLASH_PIX_VERSION: default: - options = gtk_option_menu_option_new (flash_pix_list); + tm = gtk_tree_model_new_from_options (flash_pix_list); break; } + options = gtk_combo_box_new_with_model (tm); gtk_widget_show (options); gtk_box_pack_start (GTK_BOX (hbox), options, FALSE, FALSE, 0); - entry->priv->menu = GTK_OPTION_MENU_OPTION (options); - g_signal_connect (GTK_OBJECT (options), "option_selected", - G_CALLBACK (on_option_selected), entry); + entry->priv->menu = GTK_COMBO_BOX (options); + cell = gtk_cell_renderer_text_new (); + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (options), cell, TRUE); + gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (options), cell, + "text", GTK_OPTIONS_NAME_COLUMN, NULL); + g_signal_connect (G_OBJECT (options), "changed", + G_CALLBACK (on_changed), entry); gtk_exif_entry_version_load (entry); Index: gtk-exif-entry-user-comment.c =================================================================== RCS file: /cvsroot/libexif/libexif-gtk/libexif-gtk/gtk-exif-entry-user-comment.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- gtk-exif-entry-user-comment.c 15 Dec 2002 11:41:29 -0000 1.2 +++ gtk-exif-entry-user-comment.c 17 Oct 2004 15:32:47 -0000 1.3 @@ -12,10 +12,12 @@ #include <gtk/gtklabel.h> #include <gtk/gtkhbox.h> #include <gtk/gtkentry.h> +#include <gtk/gtkcellrenderertext.h> +#include <gtk/gtkcelllayout.h> +#include <gtk/gtkcombobox.h> #include "gtk-exif-util.h" -#include "gtk-extensions/gtk-option-menu-option.h" #include "gtk-extensions/gtk-options.h" #ifdef ENABLE_NLS @@ -40,7 +42,7 @@ struct _GtkExifEntryUserCommentPrivate { ExifEntry *entry; - GtkOptionMenuOption *menu; + GtkComboBox *menu; GtkEntry *entry_widget; }; @@ -111,25 +113,25 @@ { guint i; gchar *s; + GtkTreeIter iter; + GtkTreeModel *tm; g_return_if_fail (GTK_EXIF_IS_ENTRY_USER_COMMENT (entry)); - /* Make sure we have enough data to figure out the character code. */ - if (entry->priv->entry->size < 8) - return; - for (i = 0; character_codes[i].data; i++) - if (!memcmp (character_codes[i].data, - entry->priv->entry->data, 8)) { - gtk_option_menu_option_set (entry->priv->menu, - character_codes[i].code); - break; - } + tm = gtk_combo_box_get_model (entry->priv->menu); + if (entry->priv->entry->size < 8) return; + for (i = 0; character_codes[i].data && + memcmp (character_codes[i].data, + entry->priv->entry->data, 8); i++); + if (!memcmp (character_codes[i].data, entry->priv->entry->data, 8)) { + gtk_tree_model_get_iter_from_option (tm, + character_codes[i].code, &iter); + gtk_combo_box_set_active_iter (entry->priv->menu, &iter); + } - if (entry->priv->entry->size < 9) - return; + if (entry->priv->entry->size < 9) return; s = g_new0 (gchar, entry->priv->entry->size - 8 + 1); - if (!s) - return; + if (!s) return; memcpy (s, entry->priv->entry->data + 8, entry->priv->entry->size - 8); gtk_entry_set_text (entry->priv->entry_widget, s); g_free (s); @@ -138,31 +140,35 @@ static void gtk_exif_entry_user_comment_save (GtkExifEntryUserComment *entry) { - guint option, i; + guint i; char *d; unsigned int s; const gchar *t; + GtkTreeIter iter; + GtkTreeModel *tm; + GValue v = {0,}; - option = gtk_option_menu_option_get (entry->priv->menu); - for (i = 0; character_codes[i].data; i++) - if (option == character_codes[i].code) { + tm = gtk_combo_box_get_model (entry->priv->menu); + gtk_combo_box_get_active_iter (entry->priv->menu, &iter); + gtk_tree_model_get_value (tm, &iter, GTK_OPTIONS_OPTION_COLUMN, &v); + for (i = 0; character_codes[i].data && + (g_value_get_int (&v) != character_codes[i].code); i++); + if (g_value_get_int (&v) == character_codes[i].code) { - /* - * Make sure we have enough data left to save - * the character code. - */ - if (entry->priv->entry->size < 8) { - s = sizeof (char) * 8; - d = realloc (entry->priv->entry->data, s); - if (!d) - return; - entry->priv->entry->data = d; - entry->priv->entry->size = s; - } - memcpy (entry->priv->entry->data, - character_codes[i].data, 8); - break; + /* + * Make sure we have enough data left to save + * the character code. + */ + if (entry->priv->entry->size < 8) { + s = sizeof (char) * 8; + d = realloc (entry->priv->entry->data, s); + if (!d) return; + entry->priv->entry->data = d; + entry->priv->entry->size = s; } + memcpy (entry->priv->entry->data, + character_codes[i].data, 8); + } /* Save the actual comment. */ t = gtk_entry_get_text (entry->priv->entry_widget); @@ -182,8 +188,7 @@ } static void -on_option_selected (GtkOptions *options, guint option, - GtkExifEntryUserComment *entry) +on_character_code_changed (GtkComboBox *cb, GtkExifEntryUserComment *entry) { gtk_exif_entry_user_comment_save (entry); } @@ -207,6 +212,7 @@ { GtkExifEntryUserComment *entry; GtkWidget *hbox, *w; + GtkCellRenderer *cell; g_return_val_if_fail (e != NULL, NULL); g_return_val_if_fail (e->format == EXIF_FORMAT_UNDEFINED, NULL); @@ -225,12 +231,17 @@ w = gtk_label_new (_("Character Code:")); gtk_widget_show (w); gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 0); - w = gtk_option_menu_option_new (character_codes_list); + w = gtk_combo_box_new_with_model ( + gtk_tree_model_new_from_options (character_codes_list)); gtk_widget_show (w); gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 0); - entry->priv->menu = GTK_OPTION_MENU_OPTION (w); - g_signal_connect (w, "option_selected", G_CALLBACK (on_option_selected), - entry); + entry->priv->menu = GTK_COMBO_BOX (w); + cell = gtk_cell_renderer_text_new (); + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (w), cell, TRUE); + gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (w), cell, + "text", GTK_OPTIONS_NAME_COLUMN, NULL); + g_signal_connect (G_OBJECT (w), "changed", + G_CALLBACK (on_character_code_changed), entry); w = gtk_entry_new (); gtk_box_pack_start (GTK_BOX (entry), w, FALSE, FALSE, 5); gtk_widget_show (w); Index: gtk-exif-entry-resolution.c =================================================================== RCS file: /cvsroot/libexif/libexif-gtk/libexif-gtk/gtk-exif-entry-resolution.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- gtk-exif-entry-resolution.c 17 Oct 2004 13:54:23 -0000 1.11 +++ gtk-exif-entry-resolution.c 17 Oct 2004 15:32:47 -0000 1.12 @@ -27,13 +27,14 @@ #include <gtk/gtkradiobutton.h> #include <gtk/gtkvbox.h> #include <gtk/gtkhbox.h> +#include <gtk/gtkcellrenderertext.h> +#include <gtk/gtkcelllayout.h> #include <gtk/gtksignal.h> #include <gtk/gtkframe.h> #include <gtk/gtkcombobox.h> #include <gtk/gtkmenuitem.h> #include <gtk/gtkmenu.h> #include <gtk/gtklabel.h> -#include <gtk/gtktreestore.h> #include <libexif/exif-utils.h> @@ -231,10 +232,13 @@ case EXIF_FORMAT_SHORT: tm = gtk_combo_box_get_model (entry->priv->u.menu); gtk_tree_model_get_iter_first (tm, &iter); - gtk_tree_model_get_value (tm, &iter, UNIT_COLUMN, &v); - while ((g_value_get_int (&v) != exif_get_short (e->data, o)) && - gtk_tree_model_iter_next (tm, &iter)) + do { gtk_tree_model_get_value (tm, &iter, UNIT_COLUMN, &v); + if (g_value_get_int (&v) == + exif_get_short (e->data, o)) + break; + g_value_unset (&v); + } while (gtk_tree_model_iter_next (tm, &iter)); gtk_combo_box_set_active_iter (entry->priv->u.menu, &iter); break; default: @@ -374,6 +378,7 @@ ExifEntry *e; GtkTreeIter iter; GtkTreeModel *tm; + GtkCellRenderer *cell; g_return_val_if_fail (content != NULL, NULL); @@ -481,22 +486,27 @@ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (c), (e != NULL)); g_signal_connect (GTK_OBJECT (c), "toggled", G_CALLBACK (on_unit_toggled), entry); - tm = GTK_TREE_MODEL (gtk_list_store_new (N_COLUMNS, UNIT_COLUMN, - NAME_COLUMN)); + tm = GTK_TREE_MODEL (gtk_list_store_new (N_COLUMNS, G_TYPE_INT, + G_TYPE_STRING)); gtk_list_store_append (GTK_LIST_STORE (tm), &iter); - gtk_tree_store_set (GTK_TREE_STORE (tm), UNIT_COLUMN, UNIT_CENTIMETER, + gtk_list_store_set (GTK_LIST_STORE (tm), &iter, + UNIT_COLUMN, UNIT_CENTIMETER, NAME_COLUMN, _("Centimeter"), -1); gtk_list_store_append (GTK_LIST_STORE (tm), &iter); - gtk_tree_store_set (GTK_TREE_STORE (tm), UNIT_COLUMN, UNIT_INCH, + gtk_list_store_set (GTK_LIST_STORE (tm), &iter, + UNIT_COLUMN, UNIT_INCH, NAME_COLUMN, _("Inch"), -1); o = gtk_combo_box_new_with_model (tm); gtk_widget_show (o); gtk_box_pack_start (GTK_BOX (hbox), o, TRUE, TRUE, 0); + cell = gtk_cell_renderer_text_new (); + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (o), cell, TRUE); + gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (o), cell, + "text", NAME_COLUMN, NULL); g_signal_connect (G_OBJECT (o), "changed", G_CALLBACK (on_unit_changed), entry); entry->priv->u.menu = GTK_COMBO_BOX (o); - if (e) - gtk_exif_entry_resolution_load_unit (entry, e); + if (e) gtk_exif_entry_resolution_load_unit (entry, e); return (GTK_WIDGET (entry)); } |