Set the correct icons if the entry changed a property in the XMPModel and use the new EntryWidget for the caption writer as well.

This commit is contained in:
Roman Joost 2009-09-26 19:12:25 +10:00 committed by Sven Neumann
parent 3705c85e1e
commit 9578088ce8
2 changed files with 42 additions and 5 deletions

View file

@ -19,7 +19,8 @@
#include <string.h>
#include <gtk/gtk.h>
#include <libgimp/gimp.h>
#include <libgimp/gimpui.h>
#include "xmp-schemas.h"
#include "xmp-model.h"
@ -37,6 +38,8 @@ static void entry_changed (GimpXMPModelEntry *widget);
const gchar* find_schema_prefix (const gchar *schema_uri);
static void set_property_edit_icon (GimpXMPModelEntry *entry,
GtkTreeIter *iter);
G_DEFINE_TYPE (GimpXMPModelEntry, gimp_xmp_model_entry, GTK_TYPE_ENTRY)
@ -109,14 +112,19 @@ gimp_entry_xmp_model_changed (XMPModel *xmp_model,
GimpXMPModelEntry *entry = GIMP_XMP_MODEL_ENTRY (user_data);
const gchar *tree_value;
const gchar *property_name;
GdkPixbuf *icon;
gtk_tree_model_get (GTK_TREE_MODEL (xmp_model), iter,
COL_XMP_NAME, &property_name,
COL_XMP_VALUE, &tree_value,
COL_XMP_EDIT_ICON, &icon,
-1);
if (! strcmp (entry->property_name, property_name))
gtk_entry_set_text (GTK_ENTRY (entry), tree_value);
if (icon == NULL)
set_property_edit_icon (entry, iter);
return;
}
@ -128,7 +136,6 @@ entry_changed (GimpXMPModelEntry *entry)
entry->schema_uri,
entry->property_name,
gtk_entry_get_text (GTK_ENTRY (entry)));
}
/* find the schema prefix for the given URI */
@ -144,3 +151,35 @@ find_schema_prefix (const gchar *schema_uri)
}
return NULL;
}
static void
set_property_edit_icon (GimpXMPModelEntry *entry,
GtkTreeIter *iter)
{
GdkPixbuf *icon;
gboolean editable;
gtk_tree_model_get (GTK_TREE_MODEL (entry->xmp_model), iter,
COL_XMP_EDITABLE, &editable,
COL_XMP_EDIT_ICON, &icon,
-1);
if (editable == XMP_AUTO_UPDATE)
{
icon = gtk_widget_render_icon (GTK_WIDGET (entry), GIMP_STOCK_WILBER,
GTK_ICON_SIZE_MENU, NULL);
gtk_tree_store_set (GTK_TREE_STORE (entry->xmp_model), iter,
COL_XMP_EDIT_ICON, icon,
-1);
}
else if (editable == TRUE)
{
icon = gtk_widget_render_icon (GTK_WIDGET (entry), GTK_STOCK_EDIT,
GTK_ICON_SIZE_MENU, NULL);
gtk_tree_store_set (GTK_TREE_STORE (entry->xmp_model), iter,
COL_XMP_EDIT_ICON, icon,
-1);
}
return;
}

View file

@ -285,7 +285,6 @@ add_description_tab (GtkWidget *notebook,
entry, 1, FALSE);
entry = gimp_xmp_model_entry_new (XMP_SCHEMA_DUBLIN_CORE, "creator", mgui->xmp_model);
//register_entry_xref (entry, XMP_SCHEMA_DUBLIN_CORE, "creator", mgui);
gimp_table_attach_aligned (GTK_TABLE (table), 0, 1,
_("_Author:"), 0.0, 0.5,
entry, 1, FALSE);
@ -309,8 +308,7 @@ add_description_tab (GtkWidget *notebook,
_("_Description:"), 0.0, 0.5,
scrolled_window, 1, FALSE);
entry = gtk_entry_new ();
register_entry_xref (entry, XMP_SCHEMA_PHOTOSHOP, "CaptionWriter", mgui);
entry = gimp_xmp_model_entry_new (XMP_SCHEMA_PHOTOSHOP, "CaptionWriter", mgui->xmp_model);
gimp_table_attach_aligned (GTK_TABLE (table), 0, 3,
_("Description _writer:"), 0.0, 0.5,
entry, 1, FALSE);