Re: Metadata-Browser and Widgets

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Sven,

thanks for your quick reply!

On Sun, Apr 18, 2010 at 10:35:33AM +0200, Sven Neumann wrote:
> On Sat, 2010-04-17 at 17:25 +1000, Roman Joost wrote:
> How much code does the TextView class actually borrow from the Entry
> class?
It would borrow the

    * get_text* (which returns a string if the XMPModel
      changed) and
    * set_text method (which sets the value in the XMPModel in case the
      user entered something in the widget).

I actually thought I would also be able to use some of the setup data
structures or object construction methods. This is almost the same for
the GtkEntry and the TextView and probably for any other widget. For
example:

static void   gimp_xmp_model_entry_set_property  (GObject      *object,
                                                  guint         property_id,
                                                  const GValue *value,
                                                  GParamSpec   *pspec);
static void   gimp_xmp_model_entry_get_property  (GObject      *object,
                                                  guint         property_id,
                                                  GValue       *value,
                                                  GParamSpec   *pspec);

the class_init, the constructor method need to be always re-declared?

> There are certainly ways to share most of
> this code, but probably not by inheritance. Some utility functions
> called from both classes might be sufficient, or you use composition and
> embed a common object in your TextView and Entry objects.
In the case of composition - correct me if I'm wrong - I could use some kind of
a general object in e.g. the private of my entry widget:

    typedef struct
    {
        GIMPXMPBinding *binding;
    } GimpXmpModelEntryPrivate;

and would be able to use all my methods through that binding object?

    typedef struct
    {
        const gchar *schema_uri;
        const gchar *property_name;
        XMPModel    *xmp_model;
    } GIMPXMPBinding;

Although I have to admit - currently there is not much to share (if it really
comes down to three functions). It would almost look like refactoring this code
into utility functions as the better solution.

Cheers,
-- 
Roman Joost
www: http://www.romanofski.de
email: romanofski@xxxxxxxx

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Gimp-developer mailing list
Gimp-developer@xxxxxxxxxxxxxxxxxxxxxx
https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer

[Index of Archives]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [GIMP for Windows]     [KDE]     [GEGL]     [Gimp's Home]     [Gimp on GUI]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux