Hi folks,
I pimped an GtkEntry widget for the metadata editor - thanks to Sven for
his help.
the problem:
The XMP metadata is stored in a treemodel. The metadata browser has
currently two notebook panes where the user can enter data: the
description tab for title, author, description and the advanced tab
which is a view onto that treemodel.
If I type in the title in the description tab, the change is reflected
in the treemodel therefore also visible in the advanced tab. If I
change values in the advanced tab I was not able to e.g. update the
title entry widget.
my possible solution:
My GtkEntry is instantiated with the xmp_model (read treemodel), the
schema uri (e.g. http://purl.org/dc/elements/1.1/) and the property
name (e.g. "title"). I subscribe to the 'row-changed' signal of the
treemodel (now maybe that's my first mistake), as well as the entry
changed signal (maybe another mistake).
During initialisation nothing is written to the model and my entry
widget is not emitting any signals.
When I enter the first characters in the entry, the following happens:
1. the schema is set (row-changed signal is emitted)
2. the property *value* is set (another row-changed signal)
That raises actually to a big problem, because when I populate two
of my Entry widgets in the browser I get a pingpong going on between
the Entries. Funny, but not usable.
Is it possible to subscribe to a row-changed event by also using a
GtkTreePath as some kind of selector? The problem is, that on
instantiation time, I don't have a value set in the treestore, therefore
also no path :( Maybe using the treestore as a view (model) as well as a
data (model) is another problem here.
I also thought about changing the xmp-model to emit custom signals, like
a 'property changed' event, which uses the schema_uri and the property
as an identifier. I can't really see that solving my problem here
though.
Additionally, I've read the GtkEntry and GtkCellView source code for any
additional information. The GtkCellView is storing the model in a
private (need to read what this is about) and a it is using a reference
for the row. Maybe that's something I should try...
Any help or pointers to documentation or source code would be very much
appreciated!
Cheers,