Re: Properties on interfaces



On Fri, 2003-02-14 at 23:41, Owen Taylor wrote:
> On Fri, 2003-02-14 at 17:07, Matthias Clasen wrote:
> > n Fri, 2003-02-14 at 22:45, Owen Taylor wrote:
> > 
> > > > I guess I meant
> > > > 
> > > > g_object_class_install_property (file_chooser_dialog_class,
> > > >                                  PROP_FILENAME,
> > > >                                  g_param_spec_copy (
> > > >                                     g_param_spec_pool_lookup
> > (pspec_pool,
> > > >                                               "filename",
> > > >                                              
> > GTK_TYPE_FILE_CHOOSER)));
> > > > 
> > > > ie use the interface properties just a some kind of templates
for
> > > > ordinary properties.
> > > 
> > > But wouldn't you like a convenience function to do the above? 
> > > That's basically what I was proposing, though since nick/blurb
> > > strings can have significant size, a shallow copy of some sort
> > > may make sense.
> > > 
> > 
> > Ah, thats what you meant with "proxy" here. I agree a convenience
> > function would be needed. How do you forsee this to help with
overriding
> > defaults and min/max in derived classes ?
> 
> I don't really have an answer for that, but I do think it
> is a related issue.
> 
>  - To override defaults/min/max you need to be able to 
>    copy a param spec.
> 
>  - To override defaults/min/max you'd like to be able to
>    copy a param spec in a way that doesn't involve duplicating
>    the nick/blurb strings.
> 


One possibility to avoid duplicated docs would be to make
g_object_class_install_property a little more clever and let 

g_object_class_install_property (class, PROP, 
                                 g_param_spec_foo ("prop",
                                                    NULL,
                                                    NULL,
                                                    ...));

perform the equivalent of 

g_object_class_install_property (
    class, PROP, 
    g_param_spec_foo ("prop",  
                       g_param_spec_get_nick(    
                          g_object_class_find_property(class, "prop")
                                             ),
                       g_param_spec_get_blurb(
                          g_object_class_find_property(class, "prop")
                                              ),
                                        ...));

ie if nick/blurb are NULL, try to find inherited values. If using NULL
for this is considered to dangerous, we could use another invalid
pointer value, e.g.

#define INHERIT 0x1


Matthias






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