On 25/06/10 10:29, Abderrahim Kitouni wrote:
> Hi,
> 
> 2010/6/25 Andrew <[email protected]>:
>> On 25/06/10 09:00, Abderrahim Kitouni wrote:
>>> Hi,
>>>
>>> 2010/6/25 Andrew <[email protected]>:
>>>> Thankyou for your help.
>>>>
>>>> I tried the first method but it didn't work (it is a Gtk object and so I
>>>> doubted it would due to what you said above). I then tried to do the
>>>> second method but I didn't really understand what to do.
>>>>
>>>> Could you do an example with this
>>>> http://people.canonical.com/~ted/libappindicator/current/AppIndicator.html#app-indicator-new
>>>> ?
>>>
>>> Take a look at the properties section [1], the "construct only"
>>> properties cannot be changed afterwards and so need to be passed to
>>> Object(...) if you don't want the default value. The other is
>>> icon-name (which becomes icon_name in Vala/Genie).
>>>
>>> What we notice here is that the "usually" part in my past message
>>> doesn't work : category is passed to the creation method as an enum
>>> but is stored in the property as a string. I'm not sure how to do the
>>> mapping, you may need to look at the source of app_indicator_new
>>>
>>> HTH,
>>> Abderrahim
>>>
>>> [1] 
>>> http://people.canonical.com/~ted/libappindicator/current/AppIndicator.html#AppIndicator.properties
>>
>> Sorry maybe I didn't explain, I am using Genie for the VERY FIRST time
>> and so what you are saying doesn't really mean anything to me.
>>
>> Could you give me an example that I could learn off of?
> 
> I assumed you knew a bit of C and GObject to look at the source [1],
> you need to do something similar to this function in your construct
> 
> (be careful to reindent correctly when copy-pasting)
> 
> construct (id: string, icon: string, category: AppIndicatorCategory)
>   Object(id: id, icon_name: icon, category: category_from_enum(category))
> 
> def category_from_enum (category: AppIndicatorCategory): string
>   var categ_cls = (EnumClass) typeof(AppIndicatorCategory).class_ref()
>   return categ_class.get_value(category).value_nick
> 
> I didn't test this code but it should work.
> It's not always that difficult with Genie/Vala (Object(id: id,
> icon_name: icon, category: category) should be enough), it's just that
> this library is a bit weird (the value is an enum in the constructor
> and internally, but is exposed as a string to gobject). I think you
> should report this.
> 
> HTH,
> Abderrahim
> 
> [1] 
> http://bazaar.launchpad.net/~indicator-applet-developers/indicator-application/trunk/annotate/head:/src/app-indicator.c#L1009


Thankyou very much :-) That seemed to work and hopefully I shall try
less ambitious things next time :-)

However now I get this error, is this a bug in the library (this is
without invoking a new instance of the subclass, just compiling the
definition of the subclass)?

/home/andrew/Software/Projects/wasiliana/src/indicator.vala.c: In
function ‘wapp_indicator_category_from_enum’:
/home/andrew/Software/Projects/wasiliana/src/indicator.vala.c:82: error:
‘APP_INDICATOR_TYPE_CATEGORY’ undeclared (first use in this function)
/home/andrew/Software/Projects/wasiliana/src/indicator.vala.c:82: error:
(Each undeclared identifier is reported only once
/home/andrew/Software/Projects/wasiliana/src/indicator.vala.c:82: error:
for each function it appears in.)
/home/andrew/Software/Projects/wasiliana/src/indicator.vala.c: In
function ‘wapp_indicator_get_type’:
/home/andrew/Software/Projects/wasiliana/src/indicator.vala.c:160:
error: ‘APP_INDICATOR_TYPE_INDICATOR’ undeclared (first use in this
function)
error: cc exited with status 256

-- 
Andrew
_______________________________________________
vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to