Commit Graph

115 Commits

Author SHA1 Message Date
Hanspeter Portner da75132793 From: "Hanspeter Portner" <ventosus@airpost.net>
This concerns Ticket #109: Add Lua support for Edje

It adds Lua as scripting facility to Edje, letting Embryo untouched.
It should be easier to use and be more flexible than Embryo, imho ;-)

---
The patch
---

Lua 5.1 is used in sandboxed mode. Lua byte code is not
platform/architecture independent, Lua code is saved as text in the Edje
container and parsed at load time, therefore.

The patch goes in two directions

1) Analogous to Embryo for scripting logic, messaging and custom states.
The same things are implemented as in Embryo:

    - messaging from and to C
        - manual creation of timers, animators, pollers for custom events /
            animations
                - manual manipulation of Edje parts by means of the public
                    edje_object_part_* and internal functions and custom states
                    
                        -> those routines are actually implemented as Lua
bindings to
    functions in Edje.h and Ecore.h
        -> the implementation is done in an object oriented way, so that the
            interface gives the feel of an object description language, pretty
                similar to EDC itself
                    -> combining custom states and custom animators allows
for fancy
    animations and transitions, e.g circular/spline translations or
        complex/conditional transitions, etc.
            -> this is just the same as Embryo does, but implemented in Lua, so
                nothing new here, actually
                
                2) Dynamic object creation and manipulation
                
                    - this interface stems from the 'script_only' objects in
Edje. Those
    objects are a kind of scriptable Edje counterparts to Evas_Smart
        objects. The infrastructure for Embryo is already there, but has
            never been used
                - I added this in Lua and added some first bindings to
experiment
    with
        - I thought it would be useful to allow for a limited dynamic
            creation of ui parts
                - We can create instances of groups from within the same Edje
                    container and use them just like the main Edje object as
stated in
    1)
        - And there are some stand-alone bindings to dynamically create
            Evas_Image, Evas_Table, Evas_Line, Evas_Polygon as examples
            
                -> this may be useful to decouple the program from the ui
even more,
    to be able to do things that have to be done in the program itself
        atm, but actually belong to the user interface, but need dynamic
            creation of objects or complex interactions
                -> those objects are manipulated manually with Lua bindings
to the
    corresponding edje_object_* and evas_object_* functions
    
    ---
    Discussion points
    ---
    
    Both stuff in 1) & 2) is functioning, but needs testing, feedback,
    improvements, ...
    
    Stuff in 1) can already fully replace Embryo scripting with Lua
    scripting. There still is space for improvements/additions, though.
    
    Of the stuff in 2), I think it may only make sense to add the dynamic
    creation of groups defined in the same Edje container.  Dynamic creation
    of other Evas_Objects makes not much sense, as most of them can already
    be used as Edje parts and be manipulated with custom states (apart from
    polygons and lines) and it would make the whole theming potentially more
    programing-like and much more susceptible for errors, etc.
    
    Would this be useful, or drop it all?
    
    The scripting should be there just for logic, conditionals, custom
    states and animations, not for a whole dynamic canvas, imho.
    
    There is a patch around with EXTERNAL Edje parts. Seems to be a better,
    faster, more secure way to extend Edje with custom objects.
    
    There would be the possibility of precompiling Lua code at compile time
    (edje_cc) for faster loading, but we would have to patch and run our own
    Lua version.
    The Lua parser is pretty fast, though, and using
    byte-converted/endianness-swapped byte-code does only pay off for Lua
    chunks of some kilo lines.
    Byte code also occupies much more space than text in the final Edje
    container, as it includes debug symbols.
    
    ---
    
    Cedric and Vincent told me, that the plan was to replace Embryo totally
    by Lua before the official release of Edje at the end of the year? So it
    would make sense to bring Lua to svn soon and look how it fits in, test,
    debug, adapt it further to the themers needs, decide on its final shape,
    GATHER SOME PEOPLE TO HELP ;-)
    
    ---
    
    The Lua enhanced Edje is in sync with svn and can be get directly here
       git clone git://repo.or.cz/edje_lua.git
          cd edje_lua
             git checkout -b lua_patch origin/lua_patch
             
             or apply the attached patch
             
             There are also some examples to show the usage of the things
mentioned
above
    - showcase.edj: shows usage of custom animators, custom states,
        messaging and the script_only object
            - test.edj: test cases of script usage and bindings (custom states,
                custom transitions, tween_states, animators, timers,
object_parts),
    but most of it are experimental script_only objects
    
    http://didgmo.sourceforge.net/showcase.edj
    http://didgmo.sourceforge.net/test.edj
    
    The source of showcase.edc is attached, too, to just have a glimpse at
    Lua inside of EDC
    
    ---
    
    So, what do you guys think?
    
    Thanks and sry for the looong mail, hehe ;-)



SVN revision: 41802
2009-08-16 02:34:02 +00:00
Cedric BAIL 7df190d264 * edje_calc: Major cleanup.
- Edje_Real_Part use less memory.
		- Edje_Real_Part and Edje_Real_Part_State now use a mempool.
		- When both param1 and param2 are the same, only recalc param1.
		- Don't compute Edje_Real_Part more than one time per edje_recalc_do.



SVN revision: 41771
2009-08-14 17:19:42 +00:00
Iván Briano 0ee4d07727 Edje Box in. Have fun with it.
SVN revision: 37783
2008-11-24 05:15:15 +00:00
Vincent Torri 0d8b00fdeb * move standard header files to source files
* remove gendoc


SVN revision: 37158
2008-10-26 17:18:19 +00:00
Cedric BAIL fa66dbf40a Remove Evas list from Edje and use Eina instead.
SVN revision: 36961
2008-10-22 11:34:42 +00:00
Cedric BAIL b489e1936b Switch evas_stringshare to eina_stringshare.
SVN revision: 36672
2008-10-15 14:11:11 +00:00
Cedric BAIL dec2f04734 Actually call eet_init/eet_shutdown and fix another potential memory leak.
SVN revision: 35615
2008-08-22 14:32:25 +00:00
Gustavo Sverzut Barbieri a85c8a5f2b Fix name incoherency: rename Edje->part to group.
It is very confusing to have "part" there and in the methods call,
because we want the group name, not part.


SVN revision: 35483
2008-08-14 18:04:43 +00:00
doursse c5623c01b3 reorganize header files inclusion. Fix some problems when compiling on Windows
SVN revision: 34768
2008-06-07 10:06:14 +00:00
doursse 8e386e3f73 remove trailing spaces
SVN revision: 34101
2008-03-24 08:22:01 +00:00
Gustavo Sverzut Barbieri 9abfa8f70a Cleanup of last patches and revert my patching mistakes.
Last 2 patches were swapped, I applied them in the wrong order and
missed the rejections, my bad.

I fixed it and also did some cleanup, looks better now.


SVN revision: 33855
2008-02-26 20:12:00 +00:00
Gustavo Sverzut Barbieri c48465c86a Fix a memory leak on edje destruction.
Patch by Cedric BAIL.


SVN revision: 33854
2008-02-26 19:06:33 +00:00
Gustavo Sverzut Barbieri 30b26c0937 Cleanup for possible memory leak.
Patch by Cedric BAIL.


SVN revision: 33853
2008-02-26 18:41:44 +00:00
Carsten Haitzler cf49928045 cedric's ecore_job_init/shtudown patches.
SVN revision: 31972
2007-10-05 05:12:38 +00:00
doursse 974152be16 remove trailingspaces
SVN revision: 31657
2007-09-08 18:31:56 +00:00
rephorm d4a055585b Add GROUP Parts to edje.
These can be used to automatically swallow in another group from the same file.

Parts within child groups can be referred to by a ':' separated 'full path' of
part names. Any API functions that take a part name will now accept a full path
also.

Signals emitted by child objects will be repeated up to the parents with the
source changed to be the path relative to the receiving object.  E.g in the
example below, a mouse moving over the lower light green rectangle would result
in the parent object recieving a "mouse,move" signal with source "bot:inner".

**** NEW RESTRICTION ****  part names should no longer include a ':' character.
This is not yet enforced by edje_cc, but will cause the part to be inaccessible
from the API.

Example EDC:

collections {
  group {
    name: "parent";
    parts {
      part {
        name: "top";
        type: GROUP;
        source: "child";
        description {
          state: "default" 0.0;
          rel2.relative: 1 0.5;
        }
      }
      part {
        name: "bot";
        type: GROUP;
        source: "child";
        description {
          state: "default" 0.0;
          rel1.relative: 0 0.5;
        }
      }
    }
  }
  group {
    name: "child";
    parts {
      part {
        name: "base";
        type: RECT;
        description {
          state: "default" 0.0;
          color: 160 208 8 255;
        }
      }
      part {
        name: "inner";
        type: RECT;
        description {
          state: "default" 0.0;
          rel1.offset: 10 10;
          rel2.offset: -11 -11;
          color: 210 228 76 255;
        }
      }
    }
  }
}


SVN revision: 30087
2007-05-27 05:28:07 +00:00
rbdpngn ea9bfd7103 Stringshare free fix from David Stevenson.
SVN revision: 19954
2006-01-21 22:38:01 +00:00
sebastid 002bc72042 Fix EAPI warnings.
SVN revision: 19595
2006-01-07 08:54:30 +00:00
Carsten Haitzler bd0c83af10 make more use of stringshare and eet alloc methods
SVN revision: 18732
2005-11-30 15:36:34 +00:00
Carsten Haitzler 430b2a1901 use stringshare! :)
SVN revision: 18728
2005-11-30 09:56:15 +00:00
Carsten Haitzler e5856869df no need to alloc path and part strings if its cached and thus shared
anyway... so detect and re-cycle :)


SVN revision: 18677
2005-11-28 09:54:06 +00:00
Carsten Haitzler 48f4db7762 be more paranoid... ?
SVN revision: 17094
2005-10-01 04:15:15 +00:00
Carsten Haitzler 3c16cf0327 ug callback that deletes the object that is bing walked for callbacks...
ouch.. fix.


SVN revision: 15932
2005-07-28 13:39:23 +00:00
Carsten Haitzler c3d08acb8b file and collection cache - this should remove a lot of file io... :)
SVN revision: 14081
2005-04-03 11:43:00 +00:00
Dan Sinclair 64fd36e92f - clean up the _edje_color_class_hash and _edje_text_class_hash on
edje_shutdown


SVN revision: 12943
2005-01-13 06:29:52 +00:00
tsauerbeck 1ba9deec38 initialize the random number generator
SVN revision: 12037
2004-10-26 19:01:17 +00:00
tsauerbeck 11b50e24ea it's called edje, not eet
SVN revision: 10728
2004-07-07 19:46:06 +00:00
Carsten Haitzler 5b506efe2c 1. fix a leak. i was naughty. spank spank
2. message queue is in - i am currently not surer if i shoudl go with this
varags api internally ot move to a more manual "build a list" thing... but the
message queue does work - i've moved signals to use it.


SVN revision: 10653
2004-07-01 03:46:05 +00:00
Carsten Haitzler 9fb09cae7a edje arlo patches
SVN revision: 10443
2004-06-06 04:42:17 +00:00
Carsten Haitzler 709fa0ba1f hmm - dont delete swallowed child objects... too much implicit stuff..
SVN revision: 10265
2004-05-18 04:21:22 +00:00
Carsten Haitzler 7cac3f55e7 well - we can go back to where we were before. type overflow issue
SVN revision: 9950
2004-04-28 01:53:30 +00:00
Carsten Haitzler b0f43ce516 make default clip smaller. we weem to be overflowing calculations to do with
the clip...


SVN revision: 9946
2004-04-28 00:43:56 +00:00
Carsten Haitzler f964491ae9 not evas_coord safe! fix. :)
SVN revision: 9921
2004-04-27 08:16:13 +00:00
Carsten Haitzler ed13e15913 some notes for myself...
SVN revision: 9519
2004-03-29 12:00:01 +00:00
Carsten Haitzler 92b6f79c2e fixed a leak... patches from trill... need to go thru my mail....
SVN revision: 9281
2004-03-08 02:43:48 +00:00
Carsten Haitzler b2102064ed cleanies
SVN revision: 8574
2004-01-20 01:04:16 +00:00
tsauerbeck a34bda3be4 call eet_init() and eet_shutdown()
SVN revision: 8526
2004-01-17 16:00:56 +00:00
tsauerbeck 7ebc004b74 more memory management cleanups. fixed some warnings.
SVN revision: 8357
2004-01-12 19:21:25 +00:00
tsauerbeck aa22ce4442 more memory management improvements. applications should call edje_shutdown() now.
SVN revision: 8355
2004-01-12 17:41:48 +00:00
rbdpngn 2042be6db7 Spelling cleanup, though it feels kinda dirty "correcting spelling" on a word
that doesn't exist.


SVN revision: 7767
2003-10-30 04:45:18 +00:00
Carsten Haitzler 107230b052 fix 1 memleak...
SVN revision: 7264
2003-07-30 02:58:22 +00:00
rephorm c388bc2a46 Make the edje clipper HUGE. Now edje's can go beyond their bounds. (i.e. relative, -.5, -.5)
SVN revision: 7227
2003-07-24 00:49:13 +00:00
Carsten Haitzler 395743c598 edje can now swallow other evas objects... including... other EDJES! :)
SVN revision: 7166
2003-07-13 06:19:09 +00:00
Carsten Haitzler a23287c9fe tect & colorclasses - in theory, work. must test!
SVN revision: 7164
2003-07-13 02:06:46 +00:00
Carsten Haitzler 1b587fd598 work has been done while i've been away. i just need to put this in cvs. many
fixem's have been fixed. text parts work fully now, ALONG with all their
respective effect modes, fits, alignments and "chopping". a few more api
calls have been added and cleaned up. you'll need to update eet too for this
to work.


SVN revision: 7113
2003-07-07 07:55:18 +00:00
Carsten Haitzler 9ab9ba283d went through some more of the fixme list and fixed 'em
SVN revision: 7098
2003-06-26 14:04:31 +00:00
Carsten Haitzler 969629dfb2 1 mega-file (edje_main.c) split up into saner-to-manage files.
SVN revision: 7070
2003-06-24 02:33:04 +00:00
Carsten Haitzler 6fec7571de I lied. 1 more commit for the weekend. don't segv if the edje part isn't
fully loaded. Also shadow is a little more subtle


SVN revision: 7065
2003-06-22 13:52:08 +00:00
Carsten Haitzler 965f0a2466 last commit for the weekend. some more fixmes.
SVN revision: 7064
2003-06-22 12:39:18 +00:00
Carsten Haitzler 5ca68b4894 freeze/thaw stuff in for more optimum recalculation
SVN revision: 7063
2003-06-22 08:37:28 +00:00
Carsten Haitzler 13bac758b5 fixed bug where instant changes didnt happen if no animation was happening.
forgot a call to recalc. also added "Ckiecked" signals... working thru the
todo list.


SVN revision: 7062
2003-06-22 07:58:54 +00:00
Carsten Haitzler 913f50562a demo app now does its own internal edje resizing/moving.. redying for
multiepl edjes in one test app


SVN revision: 7052
2003-06-21 04:54:15 +00:00
Carsten Haitzler e863599780 more fixme's added, more fixed up. external callbakcs are now in. calling
application can emit signals now too.


SVN revision: 7051
2003-06-21 02:51:01 +00:00
Carsten Haitzler 4521ca1f87 signal emit action added
SVN revision: 7050
2003-06-20 13:41:00 +00:00
Carsten Haitzler 943d63f6f2 stop action supported. parser/compiler is accurate there in not needing more
params. stop is immediate - always. edje test program now uses arguments to
determine what to look at


SVN revision: 7049
2003-06-20 10:44:36 +00:00
Carsten Haitzler 53f0296ad6 a fixme list added, and 1 segv removed! :)
SVN revision: 7048
2003-06-20 09:38:27 +00:00
Carsten Haitzler 27d69a4698 emissions now for the part collection soruce is now "". fixed a tinsy parser
bug for parsing "". emissions now wont recurse - but they may loop. hmm need
to limit that - easy to do this way though.


SVN revision: 7046
2003-06-19 23:56:27 +00:00
Carsten Haitzler 66bcb0fb57 1 copy & paste bug in edje_cc. fixed non animated programs
SVN revision: 7045
2003-06-19 15:02:21 +00:00
Carsten Haitzler 5427be918c Adding code to handle programs, signals, emissions, loops, animation, timers
and the whole lot. it WORKS! :) just re-run the e_logo.sh to rebuild an edje
.eet file that has animation built in... you'll see.


SVN revision: 7044
2003-06-19 14:43:49 +00:00
Carsten Haitzler 627991bf24 workin g on the code... looking cleaner. properly have shared data hashes.
started putting in infrastructure to do edje part programs.


SVN revision: 7043
2003-06-18 14:20:26 +00:00
Carsten Haitzler 8cb638f08f the edje test program displays an edje .eet file now! build it all then:
cd data
./e_logo.sh
cd ..
./src/bin/edje

you can resize the window to watch the edje "bit" resize. this is just held
togetehr with sitckytape right now... its not done right.. it's only a
bootstrap - but it works. it needs to be cleaned up. definitely. will be
working on that.


SVN revision: 7041
2003-06-17 08:15:06 +00:00
Carsten Haitzler 5d7c4d02e0 we parse.... MORE! :) order is now irrelevant of how you delcare images or
parts and what they are relative to/use. the lookups are put off until just
before write-out. order of parts still is the stacking order though.


SVN revision: 7020
2003-06-14 03:06:36 +00:00
Carsten Haitzler c2137f09bb more code & work on ejde. started on edje_cc.
SVN revision: 7001
2003-06-09 11:31:33 +00:00
Carsten Haitzler 3df3c11966 Added more geometry calculation code. This function is beginning to get
rather large, but then again so are the number of geometry parameters, so
it's only fair. This should cover calculating all parameters given a signle
descriptor and given rel_to_1, rel_to_2, confine_to objects. Only calculation
of text params is left. I think that will be as simpl as a "copy them across
from the description", but I may yet decided to complicate that a bit.


SVN revision: 6973
2003-06-03 14:00:52 +00:00
Carsten Haitzler 664d811ff9 in we go edje... no it doesnt do anything useful at the moment...
SVN revision: 6968
2003-06-02 23:49:56 +00:00