Carsten Haitzler (The Rasterman) ha scritto:
> On Wed, 28 Nov 2007 08:08:56 +0100 Dave <[EMAIL PROTECTED]> babbled:
>
>
>> Hi all
>> I'm working hard on the edje_editor in the last day, and my opinion now
>> is that
>> engrave can't render as edje does, and probablly will never. As
>> reproducing the edje
>> calculation is really hard. and also stupid to do the same thing 2 times.
>>
>> So I started to play with edje to modify it directly.
>> The result is super !!
>> Now the editor can load perfectly the default theme, browse trought all
>> the part and state.
>> The display is now perfect as the edje is a real edje (also all the
>> script/program/signal stuff
>> work inside the editor). I can also change the position of the various
>> part from the spinner
>> or dragging the red and blue dot.
>>
>> Nothing more for now as this require some addition to the edje library
>> and first I want
>> to hear the voice of the mantiners:
>> This is the first stub I have done of the new api
>>
>> + EAPI Evas_List *edje_edit_parts_list_get (Evas_Object
>> *obj);
>> + EAPI Evas_List *edje_edit_part_states_get (Evas_Object
>> *obj, const char *part);
>> + EAPI unsigned char edje_edit_part_type_get (Evas_Object
>> *obj, const char *part);
>> + EAPI void edje_edit_part_real_coord_get (Evas_Object
>> *obj, const char *part, int *x, int *y, int *w, int *h);
>> +
>> + EAPI double edje_edit_state_rel1_relative_x_get(Evas_Object
>> *obj, const char *part, const char *state);
>> + EAPI double edje_edit_state_rel1_relative_y_get(Evas_Object
>> *obj, const char *part, const char *state);
>> + EAPI void edje_edit_state_rel1_relative_x_set(Evas_Object
>> *obj, const char *part, const char *state, double x);
>> + EAPI void edje_edit_state_rel1_relative_y_set(Evas_Object
>> *obj, const char *part, const char *state, double y);
>> +
>> + EAPI double edje_edit_state_rel2_relative_x_get(Evas_Object
>> *obj, const char *part, const char *state);
>> + EAPI double edje_edit_state_rel2_relative_y_get(Evas_Object
>> *obj, const char *part, const char *state);
>> + EAPI void edje_edit_state_rel2_relative_x_set(Evas_Object
>> *obj, const char *part, const char *state, double x);
>> + EAPI void edje_edit_state_rel2_relative_y_set(Evas_Object
>> *obj, const char *part, const char *state, double y);
>>
>>
>> I have filed a patch to bgzilla with this first implementation. bug#294
>>
>> If you want to try it simply patch edje and set
>> #define TEST_DIRECT_EDJE 1
>> in edje_editor/src/bin/main.h on line 15
>>
>> then open the editor with a file to open:
>> edje_editor /path.to/default.edj
>>
>> But remember that you can't do nothing more than the browsing and change
>> size (all the other stuff will segv!)
>>
>> Please let me know what do you think about.
>>
>
> hmmm ok- this opens a can of worms. there is a LOOOOOOOOT of stuff in edje
> that
> you will need to provide access too, add/del description states, all the other
> properties etc. perhaps this would make more sense with a more compact (though
> less efficient api like:
>
> EAPI int edje_edit_val_int_get(Evas_Object *obj, const char *item);
> EAPI void edje_edit_val_int_set(Evas_Object Obj, const char *item, int val);
>
> i.e.
>
> rel1_x = edje_edit_val_int_get(obj,
> "parts/part/my.part.name/description/default/0.0/rel1.offset.x");
>
> we will need to escape "/" in names of items. i.e.
> "parts/part/my\\/part\\/name/..."
>
Just tried...the first test I have done was done using this system but I
get
into trouble (better to say complexity) because of the different behavior of
the various values. For example about the different limit a value can have:
color range from 0 to 255, rel1.offset.x from -maxint to +maxint and
text.size
from 0 to +maxint. And also while seaching the object to set the value
to: can be
a program, a state, a part...
You will fall on a function so done
edje_edit_val_int_get(obj,"parts/part/my.part.name/description/default/0.0/rel1.offset.x");
{
switch(type_of_value_to_get)
case rel1.offset.x:
...do the stuff
case color:
...do the stuff
and so on...
}
that is not so different to
edje_edit_rel1_offset_x_get(obj,char* part, char *part)
{
...do the stuff
}
edje_edit_color_get(obj,char* part, char *part)
{
...do the stuff
}
I prefer to add 2 functions (usually get and set) every time edje
change, without have to touch the general code. I'm for making this
api as simple as possible.
> for example. this would allow for expansion over time with minimal api changes
> - edje will grow over time and get big. this might be the best way to go?
> since
> this api doesn't need to be speedy and realtime for runtime use (just for
> editing) i think this might be ok and simplify things. what do you think? (of
> course have one to get int, double, bool string etc.). then add calls to
> add/delete and list nodes at tree depths. i.e. edje_edit_node_add(obj,
> "parts/part/my.part.name/description/new_desc/0.0"); then u can set keys under
> that node. if it already exists an error can be returned, and setting a value
> under a nodes that doesn't exist can also be an error - add calls to list
> nodes
> (only useful at certain depths in the tree) etc.
>
> ?
>
>
This seems to be an unnecessary major complexity, both in the editor and
the
edit_api ... I have to parse the 'long' string first in edje and then
in the editor.
...
Instead I need some help about a way to save the modified edje? I didn't
know
well eet and for now I haven't find a way to rewrite to file :(
Can you give me some direction on this?
Thanks.
Dave
-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services
for just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel