diff --git a/legacy/edje/doc/edje.dox.in b/legacy/edje/doc/edje.dox.in index 739a5130e8..e69de29bb2 100644 --- a/legacy/edje/doc/edje.dox.in +++ b/legacy/edje/doc/edje.dox.in @@ -1,519 +0,0 @@ -/** -@file edje.dox -@brief Edje Graphical Design Library - -These routines are used for Edje. -*/ - -/** - -@mainpage Edje Library Documentation -@image html e.png -@version @PACKAGE_VERSION@ -@author Carsten Haitzler -@author Tilman Sauerbeck (tilman at code-monkey de) -@author ZigsMcKenzie -@author Cedric BAIL -@author Brian Mattern -@author Mathieu Taillefumier -@author Tristan -@author Gustavo Lima Chaves -@author Bruno Dilly -@author Fabiano Fidêncio -@author Jihoon Kim -@author Tiago Falcão -@author Davide Andreoli -@author Sebastian Dransfeld -@author Tom Hacohen -@author Aharon Hillel -@date 2003-2011 - - - - - - - - - - -@section intro What is Edje? - -Edje is a complex graphical design & layout library. - -It doesn't pretend to do containing and regular layout like a widget -set, but it is the base for such components. Based on the requirements -of Enlightenment 0.17, Edje should serve all the purposes of creating -visual elements (borders of windows, buttons, scrollbars, etc.) and -allow the designer the ability to animate, layout and control the look -and feel of any program using Edje as its basic GUI constructor. This -library allows for multiple collections of Layouts in one file, -sharing the same image and font database and thus allowing a whole -theme to be conveniently packaged into 1 file and shipped around. - -Edje separates the layout and behavior logic. Edje files ship with an -image and font database, used by all the parts in all the collections -to source graphical data. It has a directory of logical part names -pointing to the part collection entry ID in the file (thus allowing -for multiple logical names to point to the same part collection, -allowing for the sharing of data between display elements). Each part -collection consists of a list of visual parts, as well as a list of -programs. A program is a conditionally run program that if a -particular event occurs (a button is pressed, a mouse enters or leaves -a part) will trigger an action that may affect other parts. In this -way a part collection can be "programmed" via its file as to hilight -buttons when the mouse passes over them or show hidden parts when a -button is clicked somewhere etc. The actions performed in changing -from one state to another are also allowed to transition over a period -of time, allowing animation. Programs and animations can be run in -"parallel". - -This separation and simplistic event driven style of programming can produce -almost any look and feel one could want for basic visual elements. Anything -more complex is likely the domain of an application or widget set that may -use Edje as a convenient way of being able to configure parts of the display. - -For details of Edje's history, see the \ref history section. - - - - - - - - -@section requirements What does Edje require? - -Edje requires fairly little on your system. to use the Edje runtime library -you need: - - - Evas (library) - - Ecore (library) - - Eet (library) - - Embryo (library) - - Eina (library) - -Evas needs to be build with the JPEG, PNG and EET image loaders enabled at a -minimum. Edje uses X for the test program, so you will need the SOFTWARE_X11 -engine built into Evas as well. A suggested configure list is below in the -"cheat sheet" for Evas. - -Ecore needs the ECORE, ECORE_EVAS and ECORE_X modules built at a minimum. -It's suggested to build all the Ecore modules, but the ECORE_FB modules is -definitely optional. - -Eina, Eet and Embryo have no interesting options so just build and -install them. - -It is suggested right now that you get the latest SVN versions of the -required libraries. You also need to build them in the right order and make -sure the right options are enabled in the required libraries. Here is a -quick "cheat sheet" on how to get started. - -@verbatim -1. You need Eina from the trunk svn branch. - - svn co http://svn.enlightenment.org/svn/e/trunk/eina/ - cd eina - ./autogen.sh - ./configure - make - sudo make install - cd - -2. You need Eet from the trunk svn branch. - - svn co http://svn.enlightenment.org/svn/e/trunk/eet/ - cd eet - ./autogen.sh - ./configure - make - sudo make install - cd - -3. You need Evas from the trunk svn branch built with eet, png and jpeg loader support. - - svn co http://svn.enlightenment.org/svn/e/trunk/evas/ - cd evas - ./autogen.sh - ./configure --enable-image-loader-eet --enable-font-loader-eet --enable-image-loader-jpeg --enable-image-loader-png --enable-buffer - make - sudo make install - cd - -4. You need Ecore from the trunk svn branch built with ecore-x and ecore-evas. - - svn co http://svn.enlightenment.org/svn/e/trunk/ecore/ - cd ecore - ./autogen.sh - ./configure --enable-ecore-x --enable-ecore-evas --enable-ecore-evas-software-buffer --enable-ecore-evas-software-x11 --enable-ecore-evas-software-buffer - make - sudo make install - cd - -5. You need embryo from the trunk svn branch - - svn co http://svn.enlightenment.org/svn/e/trunk/embryo/ - cd embryo - ./autogen.sh - ./configure - make - sudo make install - cd - -@endverbatim - - - - - - - - - -@section compiling How to compile and test Edje - -Now you need to compile and install Edje. - -@verbatim - ./configure - make - sudo make install -@endverbatim - -You now have it installed and ready to go, but you need input -data. There are lots of examples in SVN, the best one is -Enlightenment's own theme file. - -You may use different tools to edit and view the generated ".edj" -files, for instance: - - - editje (http://trac.enlightenment.org/e/wiki/Editje) - - edje_viewer (http://trac.enlightenment.org/e/wiki/Edje_Viewer) - - - - - - - - - - -@section details So how does this all work? - -Edje internally holds a geometry state machine and state graph of what is -visible, not, where, at what size, with what colors etc. This is described -to Edje from an Edje .edj file containing this information. These files can -be produced by using edje_cc to take a text file (a .edc file) and "compile" -an output .edj file that contains this information, images and any other -data needed. - -The application using Edje will then create an object in its Evas -canvas and set the bundle file to use, specifying the @b group name to -use. Edje will load such information and create all the required -children objects with the specified properties as defined in each @b -part of the given group. See the following annotated example: - -@code -/* - * edje_example.c: - * - * Creates a window using Ecore_Evas and inside it an object with - * the edje group "my_group" from file "edje_example.edj". - * - * Requires edje_example.edj in the current folder. - * - * Compile: - * gcc -o edje_example edje_example.c `pkg-config --cflags --libs eina evas ecore ecore-evas edje` - */ - -#include -#include -#include -#include -#include - -#define WIDTH 320 -#define HEIGHT 240 - -static Evas_Object *create_my_group(Evas *canvas, const char *text) -{ - Evas_Object *edje; - - /* create the edje object where we'll load our file */ - edje = edje_object_add(canvas); - if (!edje) - { - EINA_LOG_CRIT("could not create edje object!"); - return NULL; - } - - /* load our desired file */ - if (!edje_object_file_set(edje, "edje_example.edj", "my_group")) - { - int err = edje_object_load_error_get(edje); - const char *errmsg = edje_load_error_str(err); - EINA_LOG_ERR("could not load 'my_group' from edje_example.edj: %s", - errmsg); - - evas_object_del(edje); - return NULL; - } - - if (text) - { - /* this is will replace the string used by "text" part in "my_group" */ - if (!edje_object_part_text_set(edje, "text", text)) - { - EINA_LOG_WARN("could not set the text. " - "Maybe part 'text' does not exist?"); - } - } - - /* operate on edje as any other object */ - evas_object_move(edje, 0, 0); - evas_object_resize(edje, WIDTH, HEIGHT); - evas_object_show(edje); - return edje; -} - -int main(int argc, char *argv[]) -{ - Ecore_Evas *window; - Evas *canvas; - Evas_Object *edje; - const char *text; - - eina_init(); - evas_init(); - ecore_init(); - ecore_evas_init(); - edje_init(); - - window = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); - if (!window) - { - EINA_LOG_CRIT("could not create window."); - return -1; - } - canvas = ecore_evas_get(window); - - text = (argc > 1) ? argv[1] : NULL; - - edje = create_my_group(canvas, text); - if (!edje) - return -2; - - ecore_evas_show(window); - ecore_main_loop_begin(); - - evas_object_del(edje); - ecore_evas_free(window); - - return 0; -} -@endcode - -It requires the following source Edje file: -@code -// compile: edje_cc edje_example.edc -collections { - group { - name: "my_group"; // must be the same as in edje_example.c - - parts { - part { - name: "background"; - type: RECT; // plain boring rectangle - mouse_events: 0; // we don't need any mouse event on the background - - // just one state "default" - description { - state: "default" 0.0; // must always exist - color: 255 255 255 255; // white - - // define part coordinates: - - rel1 { // top-left point at (0, 0) [WIDTH * 0 + 0, HEIGHT * 0 + 0] - relative: 0.0 0.0; - offset: 0 0; - } - rel2 { // bottom-right point at (WIDTH * 1.0 - 1, HEIGHT * 1.0 - 1) - relative: 1.0 1.0; - offset: -1 -1; - } - } - } - - part { - name: "text"; - type: TEXT; - mouse_events: 1; // we want to change the color on mouse-over - - // 2 states, one "default" and another "over" to be used - // on mouse over effect - - description { - state: "default" 0.0; - color: 255 0 0 255; // red - - // define part coordinates: - - rel1 { // top-left at (WIDTH * 0.1 + 5, HEIGHT * 0.2 + 10) - relative: 0.1 0.2; - offset: 5 10; - } - rel2 { // bottom-right at (WIDTH * 0.9 - 6, HEIGHT * 0.8 - 11) - relative: 0.9 0.8; - offset: -6 -11; - } - - // define text specific state details - text { - font: "Sans"; /* using fontconfig name! */ - size: 10; - text: "hello world"; - } - } - - description { - state: "over" 0.0; - inherit: "default" 0.0; // copy everything from "default" at this point - - color: 0 255 0 255; // override color, now it is green - } - } - - // do programs to change color on text mouse in/out (over) - programs { - program { - // what triggers this program: - signal: "mouse,in"; - source: "text"; - - // what this program does: - action: STATE_SET "over" 0.0; - target: "text"; - - // do the state-set in a nice interpolation animation - // using linear time in 0.1 second - transition: LINEAR 0.1; - } - - program { - // what triggers this program: - signal: "mouse,out"; - source: "text"; - - // what this program does: - action: STATE_SET "default" 0.0; - target: "text"; - - // do the state-set in a nice interpolation animation - // using linear time in 0.1 second - transition: LINEAR 0.1; - } - } - } - } -} -@endcode - - -One should save these files as edje_example.c and edje_example.edc then: -@verbatim -gcc -o edje_example edje_example.c `pkg-config --cflags --libs eina evas ecore ecore-evas edje` -edje_cc edje_example.edc - -./edje_example "some text" -@endverbatim - -Although simple, this example illustrates that animations and state -changes can be done from the Edje file itself without any requirement -in the C application. - -Before digging into changing or creating your own Edje source (edc) -files, read the \ref edcref. - - - -@section history Edje History - -It's a sequel to "Ebits" which has serviced the needs of Enlightenment -development for early version 0.17. The original design parameters under -which Ebits came about were a lot more restricted than the resulting -use of them, thus Edje was born. - -Edje is a more complex layout engine compared to Ebits. It doesn't -pretend to do containing and regular layout like a widget set. It -still inherits the more simplistic layout ideas behind Ebits, but it -now does them a lot more cleanly, allowing for easy expansion, and the -ability to cover much more ground than Ebits ever could. For the -purposes of Enlightenment 0.17, Edje was conceived to serve all the -purposes of creating visual elements (borders of windows, buttons, -scrollbars, etc.) and allow the designer the ability to animate, -layout and control the look and feel of any program using Edje as its -basic GUI constructor. - -Unlike Ebits, Edje separates the layout and behavior logic. - - - - - - - - - -@todo Complete documentation of API -@todo Bytecode language for extending programs... but what/how? - -*/ - - -/** - -@example embryo_custom_state.edc -This example show how to create a custom state from embryo. Clicking on the -3 labels will rotate the object in the given direction. - -@example embryo_pong.edc -Super-simple Pong implementation in pure embryo. - -@example embryo_run_program.edc -This example show how to run an edje program from embryo code. - -@example embryo_set_state.edc -This example show how to change the state of a part from embryo code. - -@example embryo_set_text.edc -This example show how to set the text in TEXT part from embryo code. - -@example embryo_timer.edc -This example show the usage of timers in embryo. - -@example external_elm_anchorblock.edc -This example use an elementary anchorblock and a button to animate the text. - -@example external_elm_button.edc -This example create some elementary buttons and do some actions on user click. - -@example external_elm_check.edc -This example show EXTERNAL checkbox in action. - -@example external_elm_panes.edc -This example show EXTERNAL elementary panes in action. - -@example external_emotion_elm.edc -Super-concise video player example using Edje/Emotion/Elementary. - -@example lua_script.edc -This example show the usage of lua scripting to create and animate some -objects in the canvas. - -@example toggle_using_filter.edc -This example show how to toggle the state of a part using the 'filter' -param in edje programs - -*/ diff --git a/legacy/edje/src/lib/Edje.h b/legacy/edje/src/lib/Edje.h index b880df2eca..9094eed5e1 100644 --- a/legacy/edje/src/lib/Edje.h +++ b/legacy/edje/src/lib/Edje.h @@ -1,3 +1,520 @@ +/** +@brief Edje Graphical Design Library + +These routines are used for Edje. + +@mainpage Edje Library Documentation +@image html e.png +@version 1.0.0 +@author Carsten Haitzler +@author Tilman Sauerbeck (tilman at code-monkey de) +@author ZigsMcKenzie +@author Cedric BAIL +@author Brian Mattern +@author Mathieu Taillefumier +@author Tristan +@author Gustavo Lima Chaves +@author Bruno Dilly +@author Fabiano Fidêncio +@author Jihoon Kim +@author Tiago Falcão +@author Davide Andreoli +@author Sebastian Dransfeld +@author Tom Hacohen +@author Aharon Hillel +@date 2003-2011 + + + + + + + + + + +@section intro What is Edje? + +Edje is a complex graphical design & layout library. + +It doesn't pretend to do containing and regular layout like a widget +set, but it is the base for such components. Based on the requirements +of Enlightenment 0.17, Edje should serve all the purposes of creating +visual elements (borders of windows, buttons, scrollbars, etc.) and +allow the designer the ability to animate, layout and control the look +and feel of any program using Edje as its basic GUI constructor. This +library allows for multiple collections of Layouts in one file, +sharing the same image and font database and thus allowing a whole +theme to be conveniently packaged into 1 file and shipped around. + +Edje separates the layout and behavior logic. Edje files ship with an +image and font database, used by all the parts in all the collections +to source graphical data. It has a directory of logical part names +pointing to the part collection entry ID in the file (thus allowing +for multiple logical names to point to the same part collection, +allowing for the sharing of data between display elements). Each part +collection consists of a list of visual parts, as well as a list of +programs. A program is a conditionally run program that if a +particular event occurs (a button is pressed, a mouse enters or leaves +a part) will trigger an action that may affect other parts. In this +way a part collection can be "programmed" via its file as to hilight +buttons when the mouse passes over them or show hidden parts when a +button is clicked somewhere etc. The actions performed in changing +from one state to another are also allowed to transition over a period +of time, allowing animation. Programs and animations can be run in +"parallel". + +This separation and simplistic event driven style of programming can produce +almost any look and feel one could want for basic visual elements. Anything +more complex is likely the domain of an application or widget set that may +use Edje as a convenient way of being able to configure parts of the display. + +For details of Edje's history, see the \ref history section. + + + + + + + + +@section requirements What does Edje require? + +Edje requires fairly little on your system. to use the Edje runtime library +you need: + + - Evas (library) + - Ecore (library) + - Eet (library) + - Embryo (library) + - Eina (library) + +Evas needs to be build with the JPEG, PNG and EET image loaders enabled at a +minimum. Edje uses X for the test program, so you will need the SOFTWARE_X11 +engine built into Evas as well. A suggested configure list is below in the +"cheat sheet" for Evas. + +Ecore needs the ECORE, ECORE_EVAS and ECORE_X modules built at a minimum. +It's suggested to build all the Ecore modules, but the ECORE_FB modules is +definitely optional. + +Eina, Eet and Embryo have no interesting options so just build and +install them. + +It is suggested right now that you get the latest SVN versions of the +required libraries. You also need to build them in the right order and make +sure the right options are enabled in the required libraries. Here is a +quick "cheat sheet" on how to get started. + +@verbatim +1. You need Eina from the trunk svn branch. + + svn co http://svn.enlightenment.org/svn/e/trunk/eina/ + cd eina + ./autogen.sh + ./configure + make + sudo make install + cd + +2. You need Eet from the trunk svn branch. + + svn co http://svn.enlightenment.org/svn/e/trunk/eet/ + cd eet + ./autogen.sh + ./configure + make + sudo make install + cd + +3. You need Evas from the trunk svn branch built with eet, png and jpeg loader support. + + svn co http://svn.enlightenment.org/svn/e/trunk/evas/ + cd evas + ./autogen.sh + ./configure --enable-image-loader-eet --enable-font-loader-eet --enable-image-loader-jpeg --enable-image-loader-png --enable-buffer + make + sudo make install + cd + +4. You need Ecore from the trunk svn branch built with ecore-x and ecore-evas. + + svn co http://svn.enlightenment.org/svn/e/trunk/ecore/ + cd ecore + ./autogen.sh + ./configure --enable-ecore-x --enable-ecore-evas --enable-ecore-evas-software-buffer --enable-ecore-evas-software-x11 --enable-ecore-evas-software-buffer + make + sudo make install + cd + +5. You need embryo from the trunk svn branch + + svn co http://svn.enlightenment.org/svn/e/trunk/embryo/ + cd embryo + ./autogen.sh + ./configure + make + sudo make install + cd + +@endverbatim + + + + + + + + + +@section compiling How to compile and test Edje + +Now you need to compile and install Edje. + +@verbatim + ./configure + make + sudo make install +@endverbatim + +You now have it installed and ready to go, but you need input +data. There are lots of examples in SVN, the best one is +Enlightenment's own theme file. + +You may use different tools to edit and view the generated ".edj" +files, for instance: + + - editje (http://trac.enlightenment.org/e/wiki/Editje) + - edje_viewer (http://trac.enlightenment.org/e/wiki/Edje_Viewer) + + + + + + + + + + +@section details So how does this all work? + +Edje internally holds a geometry state machine and state graph of what is +visible, not, where, at what size, with what colors etc. This is described +to Edje from an Edje .edj file containing this information. These files can +be produced by using edje_cc to take a text file (a .edc file) and "compile" +an output .edj file that contains this information, images and any other +data needed. + +The application using Edje will then create an object in its Evas +canvas and set the bundle file to use, specifying the @b group name to +use. Edje will load such information and create all the required +children objects with the specified properties as defined in each @b +part of the given group. See the following annotated example: + +@code + +#include +#include +#include +#include +#include + +#define WIDTH 320 +#define HEIGHT 240 + +static Evas_Object *create_my_group(Evas *canvas, const char *text) +{ + Evas_Object *edje; + + edje = edje_object_add(canvas); + if (!edje) + { + EINA_LOG_CRIT("could not create edje object!"); + return NULL; + } + + if (!edje_object_file_set(edje, "edje_example.edj", "my_group")) + { + int err = edje_object_load_error_get(edje); + const char *errmsg = edje_load_error_str(err); + EINA_LOG_ERR("could not load 'my_group' from edje_example.edj: %s", + errmsg); + + evas_object_del(edje); + return NULL; + } + + if (text) + { + if (!edje_object_part_text_set(edje, "text", text)) + { + EINA_LOG_WARN("could not set the text. " + "Maybe part 'text' does not exist?"); + } + } + + evas_object_move(edje, 0, 0); + evas_object_resize(edje, WIDTH, HEIGHT); + evas_object_show(edje); + return edje; +} + +int main(int argc, char *argv[]) +{ + Ecore_Evas *window; + Evas *canvas; + Evas_Object *edje; + const char *text; + + eina_init(); + evas_init(); + ecore_init(); + ecore_evas_init(); + edje_init(); + + window = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); + if (!window) + { + EINA_LOG_CRIT("could not create window."); + return -1; + } + canvas = ecore_evas_get(window); + + text = (argc > 1) ? argv[1] : NULL; + + edje = create_my_group(canvas, text); + if (!edje) + return -2; + + ecore_evas_show(window); + ecore_main_loop_begin(); + + evas_object_del(edje); + ecore_evas_free(window); + + return 0; +} +@endcode + +It requires the following source Edje file: +@code +// compile: edje_cc edje_example.edc +collections { + group { + name: "my_group"; // must be the same as in edje_example.c + + parts { + part { + name: "background"; + type: RECT; // plain boring rectangle + mouse_events: 0; // we don't need any mouse event on the background + + // just one state "default" + description { + state: "default" 0.0; // must always exist + color: 255 255 255 255; // white + + // define part coordinates: + + rel1 { // top-left point at (0, 0) [WIDTH * 0 + 0, HEIGHT * 0 + 0] + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { // bottom-right point at (WIDTH * 1.0 - 1, HEIGHT * 1.0 - 1) + relative: 1.0 1.0; + offset: -1 -1; + } + } + } + + part { + name: "text"; + type: TEXT; + mouse_events: 1; // we want to change the color on mouse-over + + // 2 states, one "default" and another "over" to be used + // on mouse over effect + + description { + state: "default" 0.0; + color: 255 0 0 255; // red + + // define part coordinates: + + rel1 { // top-left at (WIDTH * 0.1 + 5, HEIGHT * 0.2 + 10) + relative: 0.1 0.2; + offset: 5 10; + } + rel2 { // bottom-right at (WIDTH * 0.9 - 6, HEIGHT * 0.8 - 11) + relative: 0.9 0.8; + offset: -6 -11; + } + + // define text specific state details + text { + font: "Sans"; // using fontconfig name! + size: 10; + text: "hello world"; + } + } + + description { + state: "over" 0.0; + inherit: "default" 0.0; // copy everything from "default" at this point + + color: 0 255 0 255; // override color, now it is green + } + } + + // do programs to change color on text mouse in/out (over) + programs { + program { + // what triggers this program: + signal: "mouse,in"; + source: "text"; + + // what this program does: + action: STATE_SET "over" 0.0; + target: "text"; + + // do the state-set in a nice interpolation animation + // using linear time in 0.1 second + transition: LINEAR 0.1; + } + + program { + // what triggers this program: + signal: "mouse,out"; + source: "text"; + + // what this program does: + action: STATE_SET "default" 0.0; + target: "text"; + + // do the state-set in a nice interpolation animation + // using linear time in 0.1 second + transition: LINEAR 0.1; + } + } + } + } +} +@endcode + + +One should save these files as edje_example.c and edje_example.edc then: +@verbatim +gcc -o edje_example edje_example.c `pkg-config --cflags --libs eina evas ecore ecore-evas edje` +edje_cc edje_example.edc + +./edje_example "some text" +@endverbatim + +Although simple, this example illustrates that animations and state +changes can be done from the Edje file itself without any requirement +in the C application. + +Before digging into changing or creating your own Edje source (edc) +files, read the \ref edcref. + + + +@section history Edje History + +It's a sequel to "Ebits" which has serviced the needs of Enlightenment +development for early version 0.17. The original design parameters under +which Ebits came about were a lot more restricted than the resulting +use of them, thus Edje was born. + +Edje is a more complex layout engine compared to Ebits. It doesn't +pretend to do containing and regular layout like a widget set. It +still inherits the more simplistic layout ideas behind Ebits, but it +now does them a lot more cleanly, allowing for easy expansion, and the +ability to cover much more ground than Ebits ever could. For the +purposes of Enlightenment 0.17, Edje was conceived to serve all the +purposes of creating visual elements (borders of windows, buttons, +scrollbars, etc.) and allow the designer the ability to animate, +layout and control the look and feel of any program using Edje as its +basic GUI constructor. + +Unlike Ebits, Edje separates the layout and behavior logic. + + + + + + + + + +@todo Complete documentation of API +@todo Bytecode language for extending programs... but what/how? + +*/ + + +/** + +@example embryo_custom_state.edc +This example show how to create a custom state from embryo. Clicking on the +3 labels will rotate the object in the given direction. + +@example embryo_pong.edc +Super-simple Pong implementation in pure embryo. + +@example embryo_run_program.edc +This example show how to run an edje program from embryo code. + +@example embryo_set_state.edc +This example show how to change the state of a part from embryo code. + +@example embryo_set_text.edc +This example show how to set the text in TEXT part from embryo code. + +@example embryo_timer.edc +This example show the usage of timers in embryo. + +@example external_elm_anchorblock.edc +This example use an elementary anchorblock and a button to animate the text. + +@example external_elm_button.edc +This example create some elementary buttons and do some actions on user click. + +@example external_elm_check.edc +This example show EXTERNAL checkbox in action. + +@example external_elm_panes.edc +This example show EXTERNAL elementary panes in action. + +@example external_emotion_elm.edc +Super-concise video player example using Edje/Emotion/Elementary. + +@example lua_script.edc +This example show the usage of lua scripting to create and animate some +objects in the canvas. + +@example toggle_using_filter.edc +This example show how to toggle the state of a part using the 'filter' +param in edje programs + +*/ + +/** + * @page luaref Edje Lua scripting + * + * @section intro Introduction + * + * Lua is intended for script-only objects at this point (with embryo left + * for augmenting standard programs). Since script-only objects effectively + * define objects entirely via Lua script (resize handling, event handling + * etc. etc.) this places many more demands on them, and thus a more powerful + * language is in order. Lua is that language. + * + * To get you started, here's an example: + * @include lua_script.edc + * + */ + #ifndef _EDJE_H #define _EDJE_H @@ -312,6 +829,15 @@ typedef enum _Edje_External_Param_Flags EDJE_EXTERNAL_PARAM_FLAGS_STATE) } Edje_External_Param_Flags; + +/** + * @brief Converts type identifier to string nicer representation. + * + * This may be used to debug or other informational purposes. + * + * @param type the identifier to convert. + * @return the string with the string representation, or @c "(unknown)". + */ EAPI const char *edje_external_param_type_str(Edje_External_Param_Type type) EINA_PURE; struct _Edje_External_Param @@ -487,195 +1013,2166 @@ typedef void (*Edje_Text_Filter_Cb) (void *data, Evas_Object *obj, c typedef Evas_Object *(*Edje_Item_Provider_Cb) (void *data, Evas_Object *obj, const char *part, const char *item); /* edje_main.c */ - EAPI int edje_init (void); - EAPI int edje_shutdown (void); + +/** + * @brief Initialize the edje library. + * + * @return The new init count. The initial value is zero. + * + * This function initializes the ejde library, making the propers + * calls to initialization functions. It makes calls to functions + * eina_init(), ecore_init(), embryo_init() and eet_init() so + * there is no need to call those functions again in your code. To + * shutdown edje there is a function edje_shutdown(). + * + * @see edje_shutdown() + * @see eina_init() + * @see ecore_init() + * @see embryo_init() + * @see eet_init() + * + */ +EAPI int edje_init (void); + +/** + * @brief Shutdown the edje library. + * + * @return The number of times the library has been initialised without being + * shutdown. + * + * This function shuts down the edje library. It calls the functions + * eina_shutdown(), ecore_shutdown(), embryo_shutdown() and + * eet_shutdown(), so there is no need to call these functions again + * in your code. + * + * @see edje_init() + * @see eina_shutdown() + * @see ecore_shutdown() + * @see embryo_shutdown() + * @see eet_shutdown() + * + */ +EAPI int edje_shutdown (void); /* edje_program.c */ - EAPI void edje_frametime_set (double t); - EAPI double edje_frametime_get (void); + +/** + * @brief Set edje trasitions' frame time. + * + * @param t The frame time, in seconds. Default value is 1/30. + * + * This function sets the edje built-in animations' frame time (thus, + * affecting their resolution) by calling + * ecore_animator_frametime_set(). This frame time can be retrieved + * with edje_frametime_get(). + * + * @see edje_frametime_get() + * + */ +EAPI void edje_frametime_set (double t); + +/** + * @brief Get edje trasitions' frame time. + * + * @return The frame time, in seconds. + * + * This function returns the edje frame time set by + * edje_frametime_set(). + * + * @see edje_frametime_set() + * + */ +EAPI double edje_frametime_get (void); /* edje_util.c */ - EAPI void edje_freeze (void); - EAPI void edje_thaw (void); - EAPI void edje_fontset_append_set (const char *fonts); - EAPI const char *edje_fontset_append_get (void); - EAPI void edje_scale_set (double scale); - EAPI double edje_scale_get (void); - EAPI Eina_Bool edje_object_scale_set (Evas_Object *obj, double scale); - EAPI double edje_object_scale_get (const Evas_Object *obj); - EAPI void edje_object_mirrored_set (Evas_Object *obj, Eina_Bool rtl); - EAPI Eina_Bool edje_object_mirrored_get (const Evas_Object *obj); + +/** + * @brief Freeze Edje objects. + * + * This function freezes every edje objects in the current process. + * + * See edje_object_freeze(). + * + */ +EAPI void edje_freeze (void); + +/** + * @brief Thaw edje objects. + * + * This function thaw all edje object in the current process. + * + * See edje_object_thaw(). + * + */ +EAPI void edje_thaw (void); + +/** + * @brief Set the edje append fontset. + * + * @param fonts The fontset to append. + * + * This function sets the edje append fontset. + * + */ +EAPI void edje_fontset_append_set (const char *fonts); + +/** + * @brief Get the edje append fontset. + * + * @return The edje append fontset. + * + * This function returns the edje append fontset set by + * edje_fontset_append_set() function. + * + * @see edje_fontset_append_set(). + * + */ +EAPI const char *edje_fontset_append_get (void); + +/** + * @brief Set edje's global scaling factor. + * + * @param scale The edje (global) scale factor. The defaul is 1.0. + * + * Edje allows one to build scalable interfaces. Scale factors, which + * are set to neutral values by default (no scaling, actual sizes), + * are of two types: global and individual. Edje's global scaling + * factor will affect all its objects which hadn't their individual + * scaling factors altered from the default value. If they had it set + * differently, that factor will override the global one. + * + * Scaling affects the values of min/max object sizes, which are + * multiplied by it. Font sizes are scaled, too. + * + * This property can be retrieved with edje_scale_get(). + * + * @see edje_scale_get(). + * + */ +EAPI void edje_scale_set (double scale); + +/** + * @brief Get edje's global scaling factor. + * + * @return The edje (global) scale factor. The defaul is 1.0. + * + * This function returns edje's global scale factor, which can be set + * by edje_scale_set(). + * + * @see edje_scale_set(). + * + */ +EAPI double edje_scale_get (void); + +/** + * @brief Set the edje object's scaling factor. + * + * @param obj The edje object's reference. + * @param scale The edje object scale factor. The defaul is 1.0. + * + * This function sets the individual scale factor of the @a obj edje + * object. This property (or edje's global scale factor, when + * applicable), will affect this object's parts. However, only parts + * which, at the EDC language level, were declared which the "scale" + * attribute set to 1 (default is zero) will be affected. + * + * This scale factor can be retrieved with edje_object_scale_get(). + * @see edje_object_scale_get(). + * + */ +EAPI Eina_Bool edje_object_scale_set (Evas_Object *obj, double scale); + +/** + * @brief Get the edje object's scaling factor. + * + * @param obj The edje object's reference. + * + * This function returns the individual scale factor of the @a obj + * edje object, which can be set by edje_object_scale_set(). + * + * @see edje_object_scale_set(). + * + */ +EAPI double edje_object_scale_get (const Evas_Object *obj); + +/** + * Set the RTL orientation for this object. + * + * @param obj the smart object + * @rtl new value of flag EINA_TRUE/EINA_FALSE + * @since 1.1.0 + */ +EAPI void edje_object_mirrored_set (Evas_Object *obj, Eina_Bool rtl); + +/** + * Get the RTL orientation for this object. + * + * You can RTL orientation explicitly with edje_object_mirrored_set. + * + * @param obj the smart object + * @return if flag is set or not. + * @since 1.1.0 + */ +EAPI Eina_Bool edje_object_mirrored_get (const Evas_Object *obj); /* edje_load.c */ - EAPI Eina_List *edje_file_collection_list (const char *file); - EAPI void edje_file_collection_list_free (Eina_List *lst); - EAPI Eina_Bool edje_file_group_exists (const char *file, const char *glob); - EAPI char *edje_file_data_get (const char *file, const char *key); - EAPI void edje_file_cache_set (int count); - EAPI int edje_file_cache_get (void); - EAPI void edje_file_cache_flush (void); - EAPI void edje_collection_cache_set (int count); - EAPI int edje_collection_cache_get (void); - EAPI void edje_collection_cache_flush (void); + +/** + * Get a list of groups in an edje file + * @param file The path to the edje file + * + * @return The Eina_List of group names (char *) + * + * Note: the list must be freed using edje_file_collection_list_free() + * when you are done with it. + */ +EAPI Eina_List *edje_file_collection_list (const char *file); + +/** + * Free file collection list + * @param lst The Eina_List of groups + * + * Frees the list returned by edje_file_collection_list(). + */ +EAPI void edje_file_collection_list_free (Eina_List *lst); + +/** + * Determine whether a group matching glob exists in an edje file. + * @param file The file path + * @param glob A glob to match on + * + * @return 1 if a match is found, 0 otherwise + */ +EAPI Eina_Bool edje_file_group_exists (const char *file, const char *glob); + +/** + * Get data from the file level data block of an edje file + * @param file The path to the .edj file + * @param key The data key + * @return The string value of the data + * + * If an edje file is built from the following edc: + * + * data { + * item: "key1" "value1"; + * item: "key2" "value2"; + * } + * collections { ... } + * + * Then, edje_file_data_get("key1") will return "value1" + */ +EAPI char *edje_file_data_get (const char *file, const char *key); + /* edje_cache.c */ + /** + * @addtogroup Edje_cache_Group Cache + * + * @brief These functions provide an abstraction layer between the + * application code and the interface, while allowing extremely + * flexible dynamic layouts and animations. + * + * @{ + */ + +/** + * @brief Set the file cache size. + * + * @param count The file cache size in edje file units. Default is 16. + * + * This function sets the file cache size. Edje keeps this cache in + * order to prevent duplicates of edje file entries in memory. The + * file cache size can be retrieved with edje_file_cache_get(). + * + * @see edje_file_cache_get() + * @see edje_file_cache_flush() + * + */ +EAPI void edje_file_cache_set (int count); + +/** + * @brief Return the file cache size. + * + * @return The file cache size in edje file units. Default is 16. + * + * This function returns the file cache size set by + * edje_file_cache_set(). + * + * @see edje_file_cache_set() + * @see edje_file_cache_flush() + * + */ +EAPI int edje_file_cache_get (void); + +/** + * @brief Clean the file cache. + * + * This function cleans the file cache entries, but keeps this cache's + * size to the last value set. + * + * @see edje_file_cache_set() + * @see edje_file_cache_get() + * + */ +EAPI void edje_file_cache_flush (void); + +/** + * @brief Set the collection cache size. + * + * @param count The collection cache size, in edje object units. Default is 16. + * + * This function sets the collection cache size. Edje keeps this cache + * in order to prevent duplicates of edje {collection,group,part} + * entries in memory. The collection cache size can be retrieved with + * edje_collection_cache_get(). + * + * @see edje_collection_cache_get() + * @see edje_collection_cache_flush() + * + */ +EAPI void edje_collection_cache_set (int count); + +/** + * @brief Return the collection cache size. + * + * @return The collection cache size, in edje object units. Default is 16. + * + * This function returns the collection cache size set by + * edje_collection_cache_set(). + * + * @see edje_collection_cache_set() + * @see edje_collection_cache_flush() + * + */ +EAPI int edje_collection_cache_get (void); + +/** + * @brief Clean the collection cache. + * + * This function cleans the collection cache, but keeps this cache's + * size to the last value set. + * + * @see edje_collection_cache_set() + * @see edje_collection_cache_get() + * + */ +EAPI void edje_collection_cache_flush (void); + /** + * @} + */ + /* edje_util.c */ - EAPI Eina_Bool edje_color_class_set (const char *color_class, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3); - EAPI Eina_Bool edje_color_class_get (const char *color_class, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3); + +/** + * @brief Set Edje color class. + * + * @param color_class + * @param r Object Red value + * @param g Object Green value + * @param b Object Blue value + * @param a Object Alpha value + * @param r2 Outline Red value + * @param g2 Outline Green value + * @param b2 Outline Blue value + * @param a2 Outline Alpha value + * @param r3 Shadow Red value + * @param g3 Shadow Green value + * @param b3 Shadow Blue value + * @param a3 Shadow Alpha value + * + * This function sets the color values for a process level color + * class. This will cause all edje parts in the current process that + * have the specified color class to have their colors multiplied by + * these values. (Object level color classes set by + * edje_object_color_class_set() will override the values set by this + * function). + * + * The first color is the object, the second is the text outline, and + * the third is the text shadow. (Note that the second two only apply + * to text parts). + * + * Setting color emits a signal "color_class,set" with source being + * the given color class in all objects. + * + * @see edje_color_class_set(). + * + * @note unlike Evas, Edje colors are @b not pre-multiplied. That is, + * half-transparent white is 255 255 255 128. + */ +EAPI Eina_Bool edje_color_class_set (const char *color_class, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3); + +/** + * @brief Get Edje color class. + * + * @param color_class + * @param r Object Red value + * @param g Object Green value + * @param b Object Blue value + * @param a Object Alpha value + * @param r2 Outline Red value + * @param g2 Outline Green value + * @param b2 Outline Blue value + * @param a2 Outline Alpha value + * @param r3 Shadow Red value + * @param g3 Shadow Green value + * @param b3 Shadow Blue value + * @param a3 Shadow Alpha value + * + * @return EINA_TRUE if found or EINA_FALSE if not found and all + * values are zeroed. + * + * This function gets the color values for a process level color + * class. This value is the globally set and not per-object, that is, + * the value that would be used by objects if they did not override with + * edje_object_color_class_set(). + * + * The first color is the object, the second is the text outline, and + * the third is the text shadow. (Note that the second two only apply + * to text parts). + * + * @see edje_color_class_set(). + * + * @note unlike Evas, Edje colors are @b not pre-multiplied. That is, + * half-transparent white is 255 255 255 128. + */ +EAPI Eina_Bool edje_color_class_get (const char *color_class, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3); EAPI void edje_color_class_del (const char *color_class); EAPI Eina_List *edje_color_class_list (void); - EAPI Eina_Bool edje_text_class_set (const char *text_class, const char *font, Evas_Font_Size size); + +/** + * @brief Set the Edje text class. + * + * @param text_class The text class name + * @param font The font name + * @param size The font size + * + * This function sets updates all edje members which belong to this + * text class with the new font attributes. + * + * @see edje_text_class_get(). + * + */ + +/** + * @brief Delete the object color class. + * + * @param obj The edje object's reference. + * @param color_class The color class to be deleted. + * + * This function deletes any values at the object level for the + * specified object and color class. + * + * Deleting color emits a signal "color_class,del" with source being + * the given color. + */ +EAPI Eina_Bool edje_text_class_set (const char *text_class, const char *font, Evas_Font_Size size); EAPI void edje_text_class_del (const char *text_class); EAPI Eina_List *edje_text_class_list (void); - EAPI void edje_extern_object_min_size_set (Evas_Object *obj, Evas_Coord minw, Evas_Coord minh); - EAPI void edje_extern_object_max_size_set (Evas_Object *obj, Evas_Coord maxw, Evas_Coord maxh); - EAPI void edje_extern_object_aspect_set (Evas_Object *obj, Edje_Aspect_Control aspect, Evas_Coord aw, Evas_Coord ah); - EAPI void edje_box_layout_register (const char *name, Evas_Object_Box_Layout func, void *(*layout_data_get)(void *), void (*layout_data_free)(void *), void (*free_data)(void *), void *data); + +/** + * @brief Set the object minimum size. + * + * @param obj A valid Evas_Object handle + * @param minw The minimum width + * @param minh The minimum height + * + * This sets the minimum size restriction for the object. + */ +EAPI void edje_extern_object_min_size_set (Evas_Object *obj, Evas_Coord minw, Evas_Coord minh); + +/** + * @brief Set the object maximum size. + * + * @param obj A valid Evas_Object handle + * @param maxw The maximum width + * @param maxh The maximum height + * + * This sets the maximum size restriction for the object. + */ +EAPI void edje_extern_object_max_size_set (Evas_Object *obj, Evas_Coord maxw, Evas_Coord maxh); + +/** + * @brief Set the object aspect size. + * + * @param obj A valid Evas_Object handle + * @param aspect The aspect control axes + * @param aw The aspect radio width + * @param ah The aspect ratio height + * + * This sets the desired aspect ratio to keep an object that will be + * swallowed by Edje. The width and height define a preferred size + * ASPECT and the object may be scaled to be larger or smaller, but + * retaining the relative scale of both aspect width and height. + */ +EAPI void edje_extern_object_aspect_set (Evas_Object *obj, Edje_Aspect_Control aspect, Evas_Coord aw, Evas_Coord ah); + +/** + * @brief Registers a custom layout to be used in edje boxes. + * + * @param name The name of the layout + * @param func The function defining the layout + * @param layout_data_get This function gets the custom data pointer + * for func + * @param layout_data_free Passed to func to free its private data + * when needed + * @param free_data Frees data + * @param data Private pointer passed to layout_data_get + * + * This function registers custom layouts that can be referred from + * themes by the registered name. The Evas_Object_Box_Layout + * functions receive two pointers for internal use, one being private + * data, and the other the function to free that data when it's not + * longer needed. From Edje, this private data will be retrieved by + * calling layout_data_get, and layout_data_free will be the free + * function passed to func. layout_data_get will be called with data + * as its parameter, and this one will be freed by free_data whenever + * the layout is unregistered from Edje. + */ +EAPI void edje_box_layout_register (const char *name, Evas_Object_Box_Layout func, void *(*layout_data_get)(void *), void (*layout_data_free)(void *), void (*free_data)(void *), void *data); /* edje_smart.c */ - EAPI Evas_Object *edje_object_add (Evas *evas); + +/** + * Constructs the Edje object + * @param evas A valid Evas handle + * @return The Evas_Object pointer. + * + * Creates the Edje smart object, returning the Evas_Object handle. + */ +EAPI Evas_Object *edje_object_add (Evas *evas); /* edje_util.c */ - EAPI const char *edje_object_data_get (const Evas_Object *obj, const char *key); + +/** + * @brief Get Edje object data. + * + * @param obj A valid Evas_Object handle + * @param key The data key + * @return The data string + * + * This function fetches data specified at the object level. + * + * In EDC this comes from a data block within the group block that @a + * obj was loaded from. E.g. + * + * @code + * collections { + * group { + * name: "a_group"; + * data { + * item: "key1" "value1"; + * item: "key2" "value2"; + * } + * } + * } + * @endcode + */ +EAPI const char *edje_object_data_get (const Evas_Object *obj, const char *key); /* edje_load.c */ - EAPI Eina_Bool edje_object_file_set (Evas_Object *obj, const char *file, const char *group); - EAPI void edje_object_file_get (const Evas_Object *obj, const char **file, const char **group); - EAPI Edje_Load_Error edje_object_load_error_get (const Evas_Object *obj); + +/** + * Sets the EET file and group to load @a obj from + * @param obj A valid Evas_Object handle + * @param file The path to the EET file + * @param group The group name in the Edje + * @return 0 on Error\n + * 1 on Success and sets EDJE_LOAD_ERROR_NONE + * + * Edje uses EET files, conventionally ending in .edj, to store object + * descriptions. A single file contains multiple named groups. This function + * specifies the file and group name to load @a obj from. + */ +EAPI Eina_Bool edje_object_file_set (Evas_Object *obj, const char *file, const char *group); + +/** + * Get the file and group name that @a obj was loaded from + * @param obj A valid Evas_Object handle + * @param file A pointer to store a pointer to the filename in + * @param group A pointer to store a pointer to the group name in + * + * This gets the EET file location and group for the given Evas_Object. + * If @a obj is either not an edje file, or has not had its file/group set + * using edje_object_file_set(), then both @a file and @a group will be set + * to NULL. + * + * It is valid to pass in NULL for either @a file or @a group if you are not + * interested in one of the values. + */ +EAPI void edje_object_file_get (const Evas_Object *obj, const char **file, const char **group); + +/** + * Gets the Edje load error + * @param obj A valid Evas_Object handle + * + * @return The Edje load error:\n + * EDJE_LOAD_ERROR_NONE: No Error\n + * EDJE_LOAD_ERROR_GENERIC: Generic Error\n + * EDJE_LOAD_ERROR_DOES_NOT_EXIST: Does not Exist\n + * EDJE_LOAD_ERROR_PERMISSION_DENIED: Permission Denied\n + * EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED: Resource Allocation Failed\n + * EDJE_LOAD_ERROR_CORRUPT_FILE: Corrupt File\n + * EDJE_LOAD_ERROR_UNKNOWN_FORMAT: Unknown Format\n + * EDJE_LOAD_ERROR_INCOMPATIBLE_FILE: Incompatible File\n + * EDJE_LOAD_ERROR_UNKNOWN_COLLECTION: Unknown Collection\n + * EDJE_LOAD_ERROR_RECURSIVE_REFERENCE: Recursive Reference\n + */ +EAPI Edje_Load_Error edje_object_load_error_get (const Evas_Object *obj); EAPI const char *edje_load_error_str (Edje_Load_Error error); /* edje_util.c */ EAPI Eina_Bool edje_object_preload (Evas_Object *obj, Eina_Bool cancel); /* edje_program.c */ - EAPI void edje_object_signal_callback_add (Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data); - EAPI void *edje_object_signal_callback_del (Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func); - EAPI void *edje_object_signal_callback_del_full(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data); - EAPI void edje_object_signal_emit (Evas_Object *obj, const char *emission, const char *source); - EAPI void edje_object_play_set (Evas_Object *obj, Eina_Bool play); - EAPI Eina_Bool edje_object_play_get (const Evas_Object *obj); - EAPI void edje_object_animation_set (Evas_Object *obj, Eina_Bool on); - EAPI Eina_Bool edje_object_animation_get (const Evas_Object *obj); + +/** + * @brief Add a callback for a signal emitted by @a obj. + * + * @param obj A valid Evas_Object handle. + * @param emission The signal's name. + * @param source The signal's source. + * @param func The callback function to be executed when the signal is + * emitted. + * @param data A pointer to data to pass in to the callback function. + * + * Connects a callback function to a signal emitted by @a obj. + * In EDC, a program can emit a signal as follows: + * + * @code + * program { + * name: "emit_example"; + * action: SIGNAL_EMIT "a_signal" "a_source"; + * } + * @endcode + * + * Assuming a function with the following declaration is definded: + * + * @code + * void cb_signal(void *data, Evas_Object *o, const char *emission, const char *source); + * @endcode + * + * a callback is attached using: + * + * @code + * edje_object_signal_callback_add(obj, "a_signal", "a_source", cb_signal, data); + * @endcode + * + * Here, @a data is an arbitrary pointer to be used as desired. Note + * that @a emission and @a source correspond respectively to the first + * and the second parameters at the SIGNAL_EMIT action. + * + * Internal edje signals can also be attached to, and globs can occur + * in either the emission or source name, e.g. + * + * @code + * edje_object_signal_callback_add(obj, "mouse,down,*", "button.*", NULL); + * @endcode + * + * Here, any mouse down events on an edje part whose name begins with + * "button." will trigger the callback. The actual signal and source + * names will be passed in to the @a emission and @a source parameters + * of the callback function (e.g. "mouse,down,2" and "button.close"). + */ +EAPI void edje_object_signal_callback_add (Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data); + +/** + * @brief Remove a signal-triggered callback from an object. + * + * @param obj A valid Evas_Object handle. + * @param emission The emission string. + * @param source The source string. + * @param func The callback function. + * @return The data pointer + * + * This function removes a callback, previously attached to the + * emittion of a signal, from the object @a obj. The parameters @a + * emission, @a source and @a func must match exactly those passed to + * a previous call to edje_object_signal_callback_add(). The data + * pointer that was passed to this call will be returned. + * + * @see edje_object_signal_callback_add(). + * @see edje_object_signal_callback_del_full(). + * + */ +EAPI void *edje_object_signal_callback_del (Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func); + +/** + * @brief Remove a signal-triggered callback from an object. + * + * @param obj A valid Evas_Object handle. + * @param emission The emission string. + * @param source The source string. + * @param func The callback function. + * @param data The user data passed to the callback. + * @return The data pointer + * + * This function removes a callback, previously attached to the + * emittion of a signal, from the object @a obj. The parameters @a + * emission, @a sourcei, @a func and @a data must match exactly those + * passed to a previous call to edje_object_signal_callback_add(). The data + * pointer that was passed to this call will be returned. + * + * @see edje_object_signal_callback_add(). + * @see edje_object_signal_callback_del(). + * + */ +EAPI void *edje_object_signal_callback_del_full(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data); + +/** + * @brief Send a signal to an edje object. + * + * @param obj A valid Evas_Object handle. + * @param emission The signal's name. + * @param source The signal's source. + * + * This function sends a signal to the object @a obj. An edje program + * can respond to a signal by specifying matching 'signal' and + * 'source' fields. + * + * @code + * edje_object_signal_emit(obj, "a_signal", ""); + * @endcode + * + * will trigger a program whose EDC block is: + * + * @code + * program { + * name: "a_program"; + * signal: "a_signal"; + * source: ""; + * action: ... + * } + * @endcode + * + * FIXME: should this signal be sent to children also? + */ +EAPI void edje_object_signal_emit (Evas_Object *obj, const char *emission, const char *source); + +/** + * @brief Set the edje object to playing or paused states. + * + * @param obj A valid Evas_Object handle. + * @param play Object state (1 to playing, 0 to pauseed). + * + * This function sets the edje object @a obj to playing or paused + * states, depending on the parameter @a play. This has no effect if + * the object was already at that state. + * + * @see edje_object_play_get(). + * + */ +EAPI void edje_object_play_set (Evas_Object *obj, Eina_Bool play); + +/** + * @brief Get the edje object's play/pause state. + * + * @param obj A valid Evas_Object handle. + * @return @c EINA_FALSE if the object is not connected, its @c delete_me flag + * is set, or it is at paused state; @c EINA_TRUE if the object is at playing + * state. + * + * This function tells if an edje object is playing or not. This state + * is set by edje_object_play_set(). + * + * @see edje_object_play_set(). + * + */ +EAPI Eina_Bool edje_object_play_get (const Evas_Object *obj); + +/** + * @brief Set the object's animation state. + * + * @param obj A valid Evas_Object handle. + * @param on Animation State. + * + * This function starts or stops an edje object's animation. The + * information if it's runnig can be retrieved by + * edje_object_animation_get(). + * + * @see edje_object_animation_get() + * + */ +EAPI void edje_object_animation_set (Evas_Object *obj, Eina_Bool on); + +/** + * @brief Get the edje object's animation state. + * + * @param obj A valid Evas_Object handle. + * @return @c EINA_FALSE on error or if object is not animated; + * @c EINA_TRUE if animated. + * + * This function returns if the animation is playing or not. The + * animation state is set by edje_object_play_set(). + * + * @see edje_object_animation_set(). + * + */ +EAPI Eina_Bool edje_object_animation_get (const Evas_Object *obj); /* edje_util.c */ - EAPI int edje_object_freeze (Evas_Object *obj); - EAPI int edje_object_thaw (Evas_Object *obj); - EAPI Eina_Bool edje_object_color_class_set (Evas_Object *obj, const char *color_class, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3); - EAPI Eina_Bool edje_object_color_class_get (const Evas_Object *o, const char *color_class, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3); + +/** + * @brief Freeze object. + * + * @param obj A valid Evas_Object handle + * @return The frozen state or 0 on Error + * + * This function puts all changes on hold. Successive freezes will + * nest, requiring an equal number of thaws. + * + */ +EAPI int edje_object_freeze (Evas_Object *obj); + +/** + * @brief Thaw object. + * + * @param obj A valid Evas_Object handle + * @return The frozen state or 0 on Error + * + * This allows frozen changes to occur. + * + */ +EAPI int edje_object_thaw (Evas_Object *obj); + +/** + * @brief Sets the object color class. + * + * @param obj A valid Evas_Object handle + * @param color_class + * @param r Object Red value + * @param g Object Green value + * @param b Object Blue value + * @param a Object Alpha value + * @param r2 Outline Red value + * @param g2 Outline Green value + * @param b2 Outline Blue value + * @param a2 Outline Alpha value + * @param r3 Shadow Red value + * @param g3 Shadow Green value + * @param b3 Shadow Blue value + * @param a3 Shadow Alpha value + * + * This function sets the color values for an object level color + * class. This will cause all edje parts in the specified object that + * have the specified color class to have their colors multiplied by + * these values. + * + * The first color is the object, the second is the text outline, and + * the third is the text shadow. (Note that the second two only apply + * to text parts). + * + * Setting color emits a signal "color_class,set" with source being + * the given color. + * + * @note unlike Evas, Edje colors are @b not pre-multiplied. That is, + * half-transparent white is 255 255 255 128. + */ + +/** + * @brief Lists color classes. + * + * @return A list of color class names (strings). These strings and + * the list must be free()'d by the caller. + * + * This function lists all color classes known about by the current + * process. + * + */ + +/** + * @brief Delete edje color class. + * + * @param color_class + * + * This function deletes any values at the process level for the + * specified color class. + * + * Deleting color emits a signal "color_class,del" with source being + * the given color class in all objects. + */ +EAPI Eina_Bool edje_object_color_class_set (Evas_Object *obj, const char *color_class, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3); + +/** + * @brief Gets the object color class. + * + * @param obj A valid Evas_Object handle + * @param color_class + * @param r Object Red value + * @param g Object Green value + * @param b Object Blue value + * @param a Object Alpha value + * @param r2 Outline Red value + * @param g2 Outline Green value + * @param b2 Outline Blue value + * @param a2 Outline Alpha value + * @param r3 Shadow Red value + * @param g3 Shadow Green value + * @param b3 Shadow Blue value + * @param a3 Shadow Alpha value + * + * @return EINA_TRUE if found or EINA_FALSE if not found and all + * values are zeroed. + * + * This function gets the color values for an object level color + * class. If no explicit object color is set, then global values will + * be used. + * + * The first color is the object, the second is the text outline, and + * the third is the text shadow. (Note that the second two only apply + * to text parts). + * + * @note unlike Evas, Edje colors are @b not pre-multiplied. That is, + * half-transparent white is 255 255 255 128. + */ +EAPI Eina_Bool edje_object_color_class_get (const Evas_Object *o, const char *color_class, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3); EAPI void edje_object_color_class_del (Evas_Object *obj, const char *color_class); - EAPI Eina_Bool edje_object_text_class_set (Evas_Object *obj, const char *text_class, const char *font, Evas_Font_Size size); - EAPI void edje_object_size_min_get (const Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh); - EAPI void edje_object_size_max_get (const Evas_Object *obj, Evas_Coord *maxw, Evas_Coord *maxh); - EAPI void edje_object_calc_force (Evas_Object *obj); - EAPI void edje_object_size_min_calc (Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh); + +/** + * @brief Sets Edje text class. + * + * @param obj A valid Evas_Object handle + * @param text_class The text class name + * @param font Font name + * @param size Font Size + * + * This function sets the text class for the Edje. + * + */ + +/** + * @brief List text classes. + * + * @return A list of text class names (strings). These strings are + * stringshares and the list must be free()'d by the caller. + * + * This function lists all text classes known about by the current + * process. + * + */ + +/** + * @brief Delete the text class. + * + * @param text_class The text class name string + * + * This function deletes any values at the process level for the + * specified text class. + * + */ +EAPI Eina_Bool edje_object_text_class_set (Evas_Object *obj, const char *text_class, const char *font, Evas_Font_Size size); + +/** + * @brief Get the minimum size for an object. + * + * @param obj A valid Evas_Object handle + * @param minw Minimum width pointer + * @param minh Minimum height pointer + * + * Gets the object's minimum size values from the Edje. These are set + * to zero if no Edje is connected to the Evas Object. + */ +EAPI void edje_object_size_min_get (const Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh); + +/** + * @brief Get the maximum size for an object. + * + * @param obj A valid Evas_Object handle + * @param maxw Maximum width pointer + * @param maxh Maximum height pointer + * + * Gets the object's maximum size values from the Edje. These are set + * to zero if no Edje is connected to the Evas Object. + */ +EAPI void edje_object_size_max_get (const Evas_Object *obj, Evas_Coord *maxw, Evas_Coord *maxh); + +/** + * @brief Force a Size/Geometry calculation. + * + * @param obj A valid Evas_Object handle + * + * Forces the object @p obj to recalculation layout regardless of + * freeze/thaw. + */ +EAPI void edje_object_calc_force (Evas_Object *obj); + +/** + * @brief Calculate minimum size. + * + * @param obj A valid Evas_Object handle + * @param minw Minimum width pointer + * @param minh Minimum height pointer + * + * Calculates the object's minimum size ?! + */ +EAPI void edje_object_size_min_calc (Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh); EAPI Eina_Bool edje_object_parts_extends_calc (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h); EAPI void edje_object_size_min_restricted_calc(Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh, Evas_Coord restrictedw, Evas_Coord restrictedh); - EAPI Eina_Bool edje_object_part_exists (const Evas_Object *obj, const char *part); - EAPI const Evas_Object *edje_object_part_object_get (const Evas_Object *obj, const char *part); - EAPI Eina_Bool edje_object_part_geometry_get (const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h); + +/** + * @brief Check if Edje part exists. + * + * @param obj A valid Evas_Object handle + * @param part The part name to check + * + * @return 0 on Error, 1 if Edje part exists. + * + * This function returns if a part exists in the edje. + * + */ +EAPI Eina_Bool edje_object_part_exists (const Evas_Object *obj, const char *part); + +/** + * @brief Gets the evas object from a part. + * + * @param obj A valid Evas_Object handle + * @param part The Edje part + * @return Returns the Evas_Object corresponding to the given part, or + * NULL on failure (if the part doesn't exist) + * + * This functio gets the Evas_Object corresponding to a given part. + * + * You should never modify the state of the returned object (with + * evas_object_move() or evas_object_hide() for example), but you can + * safely query info about its current state (with + * evas_object_visible_get() or evas_object_color_get() for example) + * + **/ +EAPI const Evas_Object *edje_object_part_object_get (const Evas_Object *obj, const char *part); + +/** + * @brief Get the geometry of an Edje part. + * + * @param obj A valid Evas_Object handle + * @param part The Edje part + * @param x The x coordinate pointer + * @param y The y coordinate pointer + * @param w The width pointer + * @param h The height pointer + * + * This function gets the geometry of an Edje part. + * + * It is valid to pass NULL as any of @a x, @a y, @a w or @a h, whose + * values you are uninterested in. + */ +EAPI Eina_Bool edje_object_part_geometry_get (const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h); - EAPI void edje_object_item_provider_set (Evas_Object *obj, Edje_Item_Provider_Cb func, void *data); + +/** + * @brief Set the function that provides item objects for named items in an edje entry text + * + * @param obj A valid Evas Object handle + * @param func The function to call (or NULL to disable) to get item objects + * @param data The data pointer to pass to the @p func callback + * + * Item objects may be deleted any time by Edje, and will be deleted when the + * Edje object is deleted (or file is set to a new file). + */ +EAPI void edje_object_item_provider_set (Evas_Object *obj, Edje_Item_Provider_Cb func, void *data); - EAPI void edje_object_text_change_cb_set (Evas_Object *obj, Edje_Text_Change_Cb func, void *data); + +/** + * @brief Set the object text callback. + * + * @param obj A valid Evas_Object handle + * @param func The callback function to handle the text change + * @param data The data associated to the callback function. + * + * This function gets the geometry of an Edje part + * + * It is valid to pass NULL as any of @a x, @a y, @a w or @a h, whose + * values you are uninterested in. + * + */ +EAPI void edje_object_text_change_cb_set (Evas_Object *obj, Edje_Text_Change_Cb func, void *data); EAPI Eina_Bool edje_object_part_text_set (Evas_Object *obj, const char *part, const char *text); - EAPI const char *edje_object_part_text_get (const Evas_Object *obj, const char *part); - EAPI Eina_Bool edje_object_part_text_unescaped_set (Evas_Object *obj, const char *part, const char *text_to_escape); - EAPI char *edje_object_part_text_unescaped_get (const Evas_Object *obj, const char *part); + +/** + * @brief Return the text of the object part. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * + * @return The text string + * + * This function returns the text associated to the object part. + * + */ +EAPI const char *edje_object_part_text_get (const Evas_Object *obj, const char *part); + +/** + * @brief Sets the raw (non escaped) text for an object part. + * + * @param obj A valid Evas Object handle + * @param part The part name + * @param text_to_escape The text string + * + * This funciton will do escape for you if it is a TEXTBLOCK part, + * that is, if text contain tags, these tags will not be + * interpreted/parsed by TEXTBLOCK. + * + * @see edje_object_part_text_unescaped_get(). + * + */ +EAPI Eina_Bool edje_object_part_text_unescaped_set (Evas_Object *obj, const char *part, const char *text_to_escape); + +/** + * @brief Returns the text of the object part, without escaping. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @return The @b allocated text string without escaping, or NULL on + * problems. + * + * This function is the counterpart of + * edje_object_part_text_unescaped_set(). Please notice that the + * result is newly allocated memory and should be released with free() + * when done. + * + * @see edje_object_part_text_unescaped_set(). + * + */ +EAPI char *edje_object_part_text_unescaped_get (const Evas_Object *obj, const char *part); - EAPI const char *edje_object_part_text_selection_get (const Evas_Object *obj, const char *part); - EAPI void edje_object_part_text_select_none (const Evas_Object *obj, const char *part); - EAPI void edje_object_part_text_select_all (const Evas_Object *obj, const char *part); - EAPI void edje_object_part_text_insert (Evas_Object *obj, const char *part, const char *text); - EAPI const Eina_List *edje_object_part_text_anchor_list_get (const Evas_Object *obj, const char *part); - EAPI const Eina_List *edje_object_part_text_anchor_geometry_get (const Evas_Object *obj, const char *part, const char *anchor); - EAPI const Eina_List *edje_object_part_text_item_list_get (const Evas_Object *obj, const char *part); - EAPI Eina_Bool edje_object_part_text_item_geometry_get (const Evas_Object *obj, const char *part, const char *item, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch); - EAPI void edje_object_part_text_cursor_geometry_get (const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h); - EAPI void edje_object_part_text_select_allow_set (const Evas_Object *obj, const char *part, Eina_Bool allow); - EAPI void edje_object_part_text_select_abort (const Evas_Object *obj, const char *part); - EAPI void edje_object_part_text_select_begin (const Evas_Object *obj, const char *part); - EAPI void edje_object_part_text_select_extend (const Evas_Object *obj, const char *part); + +/** + * @brief Return the selection text of the object part. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @return The text string + * + * This function returns selection text of the object part. + * + */ +EAPI const char *edje_object_part_text_selection_get (const Evas_Object *obj, const char *part); + +/** + * @brief Set the selection to be none. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * + * This function sets the selection text to be none. + * + */ +EAPI void edje_object_part_text_select_none (const Evas_Object *obj, const char *part); + +/** + * @brief Set the selection to be everything. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * + * This function selects all text of the object of the part. + * + */ +EAPI void edje_object_part_text_select_all (const Evas_Object *obj, const char *part); + +/** + * @brief Insert text for an object part. + * + * @param obj A valid Evas Object handle + * @param part The part name + * @param text The text string + * + * This function inserts the text for an object part just before the + * cursor position. + * + */ +EAPI void edje_object_part_text_insert (Evas_Object *obj, const char *part, const char *text); + +/** + * @brief Return a list of char anchor names. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * + * @return The list of anchors (const char *), do not modify! + * + * This function returns a list of char anchor names. + * + */ +EAPI const Eina_List *edje_object_part_text_anchor_list_get (const Evas_Object *obj, const char *part); + +/** + * @brief Return a list of Evas_Textblock_Rectangle anchor rectangles. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param anchor The anchor name + * + * @return The list of anchor rects (const Evas_Textblock_Rectangle + * *), do not modify! Geometry is relative to entry part. + * + * This function return a list of Evas_Textblock_Rectangle anchor + * rectangles. + * + */ +EAPI const Eina_List *edje_object_part_text_anchor_geometry_get (const Evas_Object *obj, const char *part, const char *anchor); + +/** + * @brief Return a list of char item names. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * + * @return The list of items (const char *), do not modify! + * + * This function returns a list of char item names. + * + */ +EAPI const Eina_List *edje_object_part_text_item_list_get (const Evas_Object *obj, const char *part); + +/** + * @brief Return item geometry. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param item The item name + * @param cx Item x return (relative to entry part) + * @param cy Item y return (relative to entry part) + * @param cw Item width return + * @param ch Item height return + * + * @return 1 if item exists, 0 if not + * + * This function return a list of Evas_Textblock_Rectangle item + * rectangles. + * + */ +EAPI Eina_Bool edje_object_part_text_item_geometry_get (const Evas_Object *obj, const char *part, const char *item, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch); + +/** + * @brief Returns the cursor geometry of the part relative to the edje + * object. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param x Cursor X position + * @param y Cursor Y position + * @param w Cursor width + * @param h Cursor height + * + */ +EAPI void edje_object_part_text_cursor_geometry_get (const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h); + +/** + * @brief Enables selection if the entry is an EXPLICIT selection mode + * type. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param allow EINA_TRUE to enable, EINA_FALSE otherwise + */ +EAPI void edje_object_part_text_select_allow_set (const Evas_Object *obj, const char *part, Eina_Bool allow); + +/** + * @brief Aborts any selection action on a part. + * + * @param obj A valid Evas_Object handle + * @param part The part name + */ +EAPI void edje_object_part_text_select_abort (const Evas_Object *obj, const char *part); + +/** + * @brief Starts selecting at current cursor position + * + * @param obj A valid Evas_Object handle + * @param part The part name + */ +EAPI void edje_object_part_text_select_begin (const Evas_Object *obj, const char *part); + +/** + * @brief Extends the current selection to the current cursor position + * + * @param obj A valid Evas_Object handle + * @param part The part name + */ +EAPI void edje_object_part_text_select_extend (const Evas_Object *obj, const char *part); - EAPI Eina_Bool edje_object_part_text_cursor_next (Evas_Object *obj, const char *part, Edje_Cursor cur); - EAPI Eina_Bool edje_object_part_text_cursor_prev (Evas_Object *obj, const char *part, Edje_Cursor cur); - EAPI Eina_Bool edje_object_part_text_cursor_up (Evas_Object *obj, const char *part, Edje_Cursor cur); - EAPI Eina_Bool edje_object_part_text_cursor_down (Evas_Object *obj, const char *part, Edje_Cursor cur); - EAPI void edje_object_part_text_cursor_begin_set (Evas_Object *obj, const char *part, Edje_Cursor cur); - EAPI void edje_object_part_text_cursor_end_set (Evas_Object *obj, const char *part, Edje_Cursor cur); - EAPI void edje_object_part_text_cursor_copy (Evas_Object *obj, const char *part, Edje_Cursor src, Edje_Cursor dst); - EAPI void edje_object_part_text_cursor_line_begin_set (Evas_Object *obj, const char *part, Edje_Cursor cur); - EAPI void edje_object_part_text_cursor_line_end_set (Evas_Object *obj, const char *part, Edje_Cursor cur); - EAPI Eina_Bool edje_object_part_text_cursor_coord_set (Evas_Object *obj, const char *part, Edje_Cursor cur, Evas_Coord x, Evas_Coord y); - EAPI Eina_Bool edje_object_part_text_cursor_is_format_get (const Evas_Object *obj, const char *part, Edje_Cursor cur); - EAPI Eina_Bool edje_object_part_text_cursor_is_visible_format_get(const Evas_Object *obj, const char *part, Edje_Cursor cur); - EAPI const char *edje_object_part_text_cursor_content_get (const Evas_Object *obj, const char *part, Edje_Cursor cur); - EAPI void edje_object_part_text_cursor_pos_set (Evas_Object *obj, const char *part, Edje_Cursor cur, int pos); - EAPI int edje_object_part_text_cursor_pos_get (const Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * @brief Advances the cursor to the next cursor position. + * @see evas_textblock_cursor_char_next + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur The edje cursor to advance + */ +EAPI Eina_Bool edje_object_part_text_cursor_next (Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * @brief Moves the cursor to the previous char + * @see evas_textblock_cursor_char_prev + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur the edje cursor to work on + */ +EAPI Eina_Bool edje_object_part_text_cursor_prev (Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * @brief Move the cursor to the char above the current cursor position. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur the edje cursor to work on + */ +EAPI Eina_Bool edje_object_part_text_cursor_up (Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * @brief Moves the cursor to the char below the current cursor position. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur the edje cursor to work on + */ +EAPI Eina_Bool edje_object_part_text_cursor_down (Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * @brief Moves the cursor to the beginning of the text part + * @see evas_textblock_cursor_paragraph_first + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur the edje cursor to work on + */ +EAPI void edje_object_part_text_cursor_begin_set (Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * @brief Moves the cursor to the end of the text part. + * @see evas_textblock_cursor_paragraph_last + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur the edje cursor to work on + */ +EAPI void edje_object_part_text_cursor_end_set (Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * @brief Copy the cursor to another cursor. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param sry the cursor to copy from + * @param dst the cursor to copy to + */ +EAPI void edje_object_part_text_cursor_copy (Evas_Object *obj, const char *part, Edje_Cursor src, Edje_Cursor dst); + +/** + * @brief Move the cursor to the beginning of the line. + * @see evas_textblock_cursor_line_char_first + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur the edje cursor to work on + */ +EAPI void edje_object_part_text_cursor_line_begin_set (Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * @brief Move the cursor to the end of the line. + * @see evas_textblock_cursor_line_char_last + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur the edje cursor to work on + */ +EAPI void edje_object_part_text_cursor_line_end_set (Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * Position the given cursor to a X,Y position. + * + * This is frequently used with the user cursor. + * + * @param obj An Edje object. + * @param part The part containing the object. + * @param cur The cursor to adjust. + * @param x X Coordinate. + * @param y Y Coordinate. + * @return True on success, false on error. + */ +EAPI Eina_Bool edje_object_part_text_cursor_coord_set (Evas_Object *obj, const char *part, Edje_Cursor cur, Evas_Coord x, Evas_Coord y); + +/** + * @brief Returns whether the cursor points to a format. + * @see evas_textblock_cursor_is_format + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur The cursor to adjust. + * @return EINA_TRUE if it's true, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_object_part_text_cursor_is_format_get (const Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * @brief Return true if the cursor points to a visible format + * For example \t, \n, item and etc. + * @see evas_textblock_cursor_format_is_visible_get + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur The cursor to adjust. + */ +EAPI Eina_Bool edje_object_part_text_cursor_is_visible_format_get(const Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * @brief Returns the content (char) at the cursor position. + * @see evas_textblock_cursor_content_get + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur The cursor to use + */ +EAPI const char *edje_object_part_text_cursor_content_get (const Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * @brief Sets the cursor position to the given value + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur The cursor to move + * @param pos the position of the cursor + * @since 1.1.0 + */ +EAPI void edje_object_part_text_cursor_pos_set (Evas_Object *obj, const char *part, Edje_Cursor cur, int pos); + +/** + * @brief Retrieves the current position of the cursor + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur The cursor to get the position + * @return The cursor position + * @since 1.1.0 + */ +EAPI int edje_object_part_text_cursor_pos_get (const Evas_Object *obj, const char *part, Edje_Cursor cur); - EAPI void edje_object_text_insert_filter_callback_add (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data); - EAPI void *edje_object_text_insert_filter_callback_del (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func); - EAPI void *edje_object_text_insert_filter_callback_del_full (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data); + +/** + * Add a filter function for newly inserted text. + * + * Whenever text is inserted (not the same as set) into the given @p part, + * the list of filter functions will be called to decide if and how the new + * text will be accepted. + * There are three types of filters, EDJE_TEXT_FILTER_TEXT, + * EDJE_TEXT_FILTER_FORMAT and EDJE_TEXT_FILTER_MARKUP. + * The text parameter in the @p func filter can be modified by the user and + * it's up to him to free the one passed if he's to change the pointer. If + * doing so, the newly set text should be malloc'ed, as once all the filters + * are called Edje will free it. + * If the text is to be rejected, freeing it and setting the pointer to NULL + * will make Edje break out of the filter cycle and reject the inserted + * text. + * + * @see edje_object_text_insert_filter_callback_del + * @see edje_object_text_insert_filter_callback_del_full + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param func The callback function that will act as filter + * @param data User provided data to pass to the filter function + */ +EAPI void edje_object_text_insert_filter_callback_add (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data); + +/** + * Delete a function from the filter list. + * + * Delete the given @p func filter from the list in @p part. Returns + * the user data pointer given when added. + * + * @see edje_object_text_insert_filter_callback_add + * @see edje_object_text_insert_filter_callback_del_full + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param func The function callback to remove + * + * @return The user data pointer if succesful, or NULL otherwise + */ +EAPI void *edje_object_text_insert_filter_callback_del (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func); + +/** + * Delete a function and matching user data from the filter list. + * + * Delete the given @p func filter and @p data user data from the list + * in @p part. + * Returns the user data pointer given when added. + * + * @see edje_object_text_insert_filter_callback_add + * @see edje_object_text_insert_filter_callback_del + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param func The function callback to remove + * @param data The data passed to the callback function + * + * @return The same data pointer if succesful, or NULL otherwise + */ +EAPI void *edje_object_text_insert_filter_callback_del_full (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data); - EAPI Eina_Bool edje_object_part_swallow (Evas_Object *obj, const char *part, Evas_Object *obj_swallow); - EAPI void edje_object_part_unswallow (Evas_Object *obj, Evas_Object *obj_swallow); - EAPI Evas_Object *edje_object_part_swallow_get (const Evas_Object *obj, const char *part); - EAPI const char *edje_object_part_state_get (const Evas_Object *obj, const char *part, double *val_ret); - EAPI Edje_Drag_Dir edje_object_part_drag_dir_get (const Evas_Object *obj, const char *part); - EAPI Eina_Bool edje_object_part_drag_value_set (Evas_Object *obj, const char *part, double dx, double dy); - EAPI Eina_Bool edje_object_part_drag_value_get (const Evas_Object *obj, const char *part, double *dx, double *dy); - EAPI Eina_Bool edje_object_part_drag_size_set (Evas_Object *obj, const char *part, double dw, double dh); - EAPI Eina_Bool edje_object_part_drag_size_get (const Evas_Object *obj, const char *part, double *dw, double *dh); - EAPI Eina_Bool edje_object_part_drag_step_set (Evas_Object *obj, const char *part, double dx, double dy); - EAPI Eina_Bool edje_object_part_drag_step_get (const Evas_Object *obj, const char *part, double *dx, double *dy); - EAPI Eina_Bool edje_object_part_drag_page_set (Evas_Object *obj, const char *part, double dx, double dy); - EAPI Eina_Bool edje_object_part_drag_page_get (const Evas_Object *obj, const char *part, double *dx, double *dy); - EAPI Eina_Bool edje_object_part_drag_step (Evas_Object *obj, const char *part, double dx, double dy); - EAPI Eina_Bool edje_object_part_drag_page (Evas_Object *obj, const char *part, double dx, double dy); + +/** + * @brief Swallows an object into the edje. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param obj_swallow The object to swallow + * + * Swallows the object into the edje part so that all geometry changes + * for the part affect the swallowed object. (e.g. resize, move, show, + * raise/lower, etc.). + * + * If an object has already been swallowed into this part, then it + * will first be unswallowed before the new object is swallowed. + */ +EAPI Eina_Bool edje_object_part_swallow (Evas_Object *obj, const char *part, Evas_Object *obj_swallow); + +/** + * @brief Unswallow an object. + * + * @param obj A valid Evas_Object handle + * @param obj_swallow The swallowed object + * + * Causes the edje to regurgitate a previously swallowed object. :) + */ +EAPI void edje_object_part_unswallow (Evas_Object *obj, Evas_Object *obj_swallow); + +/** + * @brief Get the object currently swallowed by a part. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @return The swallowed object, or NULL if there is none. + */ +EAPI Evas_Object *edje_object_part_swallow_get (const Evas_Object *obj, const char *part); + +/** + * @brief Returns the state of the Edje part. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param val_ret + * + * @return The part state:\n + * "default" for the default state\n + * "" for other states + */ +EAPI const char *edje_object_part_state_get (const Evas_Object *obj, const char *part, double *val_ret); + +/** + * @brief Determine dragable directions. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * + * @return 0: Not dragable\n + * 1: Dragable in X direction\n + * 2: Dragable in Y direction\n + * 3: Dragable in X & Y directions + */ +EAPI Edje_Drag_Dir edje_object_part_drag_dir_get (const Evas_Object *obj, const char *part); + +/** + * @brief Set the dragable object location. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param dx The x value + * @param dy The y value + * + * Places the dragable object at the given location. + */ +EAPI Eina_Bool edje_object_part_drag_value_set (Evas_Object *obj, const char *part, double dx, double dy); + +/** + * @brief Get the dragable object location. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param dx The X value pointer + * @param dy The Y value pointer + * + * Gets the drag location values. + */ +EAPI Eina_Bool edje_object_part_drag_value_get (const Evas_Object *obj, const char *part, double *dx, double *dy); + +/** + * @brief Set the dragable object size. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param dw The drag width + * @param dh The drag height + * + * Sets the size of the dragable object. + */ +EAPI Eina_Bool edje_object_part_drag_size_set (Evas_Object *obj, const char *part, double dw, double dh); + +/** + * @brief Get the dragable object size. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param dw The drag width pointer + * @param dh The drag height pointer + * + * Gets the dragable object size. + */ +EAPI Eina_Bool edje_object_part_drag_size_get (const Evas_Object *obj, const char *part, double *dw, double *dh); + +/** + * @brief Sets the drag step increment. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param dx The x step amount + * @param dy The y step amount + * + * Sets the x,y step increments for a dragable object. + */ +EAPI Eina_Bool edje_object_part_drag_step_set (Evas_Object *obj, const char *part, double dx, double dy); + +/** + * @brief Gets the drag step increment values. + * + * @param obj A valid Evas_Object handle + * @param part The part + * @param dx The x step increment pointer + * @param dy The y step increment pointer + * + * Gets the x and y step increments for the dragable object. + */ +EAPI Eina_Bool edje_object_part_drag_step_get (const Evas_Object *obj, const char *part, double *dx, double *dy); + +/** + * @brief Sets the page step increments. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param dx The x page step increment + * @param dy The y page step increment + * + * Sets the x,y page step increment values. + */ +EAPI Eina_Bool edje_object_part_drag_page_set (Evas_Object *obj, const char *part, double dx, double dy); + +/** + * @brief Gets the page step increments. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param dx The dx page increment pointer + * @param dy The dy page increment pointer + * + * Gets the x,y page step increments for the dragable object. + */ +EAPI Eina_Bool edje_object_part_drag_page_get (const Evas_Object *obj, const char *part, double *dx, double *dy); + +/** + * @brief Steps the dragable x,y steps. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param dx The x step + * @param dy The y step + * + * Steps x,y where the step increment is the amount set by + * edje_object_part_drag_step_set. + */ +EAPI Eina_Bool edje_object_part_drag_step (Evas_Object *obj, const char *part, double dx, double dy); + +/** + * @brief Pages x,y steps. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param dx The x step + * @param dy The y step + * + * Pages x,y where the increment is defined by + * edje_object_part_drag_page_set.\n WARNING: Paging is bugged! + */ +EAPI Eina_Bool edje_object_part_drag_page (Evas_Object *obj, const char *part, double dx, double dy); - EAPI Evas_Object *edje_object_part_external_object_get (const Evas_Object *obj, const char *part); - EAPI Eina_Bool edje_object_part_external_param_set (Evas_Object *obj, const char *part, const Edje_External_Param *param); - EAPI Eina_Bool edje_object_part_external_param_get (const Evas_Object *obj, const char *part, Edje_External_Param *param); - EAPI Evas_Object *edje_object_part_external_content_get (const Evas_Object *obj, const char *part, const char *content); - EAPI Edje_External_Param_Type edje_object_part_external_param_type_get (const Evas_Object *obj, const char *part, const char *param); + +/** + * @brief Get the object created by this external part. + * + * Parts of type external creates the part object using information + * provided by external plugins. It's somehow like "swallow" + * (edje_object_part_swallow()), but it's all set automatically. + * + * This function returns the part created by such external plugins and + * being currently managed by this Edje. + * + * @note Almost all swallow rules apply: you should not move, resize, + * hide, show, set the color or clipper of such part. It's a bit + * more restrictive as one must @b never delete this object! + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @return The externally created object, or NULL if there is none or + * part is not an external. + */ +EAPI Evas_Object *edje_object_part_external_object_get (const Evas_Object *obj, const char *part); - EAPI Eina_Bool edje_object_part_box_append (Evas_Object *obj, const char *part, Evas_Object *child); - EAPI Eina_Bool edje_object_part_box_prepend (Evas_Object *obj, const char *part, Evas_Object *child); - EAPI Eina_Bool edje_object_part_box_insert_before (Evas_Object *obj, const char *part, Evas_Object *child, const Evas_Object *reference); - EAPI Eina_Bool edje_object_part_box_insert_at (Evas_Object *obj, const char *part, Evas_Object *child, unsigned int pos); - EAPI Evas_Object *edje_object_part_box_remove (Evas_Object *obj, const char *part, Evas_Object *child); - EAPI Evas_Object *edje_object_part_box_remove_at (Evas_Object *obj, const char *part, unsigned int pos); - EAPI Eina_Bool edje_object_part_box_remove_all (Evas_Object *obj, const char *part, Eina_Bool clear); - EAPI Evas_Object *edje_object_part_table_child_get (Evas_Object *obj, const char *part, unsigned int col, unsigned int row); - EAPI Eina_Bool edje_object_part_table_pack (Evas_Object *obj, const char *part, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan); - EAPI Eina_Bool edje_object_part_table_unpack (Evas_Object *obj, const char *part, Evas_Object *child_obj); - EAPI Eina_Bool edje_object_part_table_col_row_size_get (const Evas_Object *obj, const char *part, int *cols, int *rows); - EAPI Eina_Bool edje_object_part_table_clear (Evas_Object *obj, const char *part, Eina_Bool clear); +/** + * @brief Set the parameter for the external part. + * + * Parts of type external may carry extra properties that have + * meanings defined by the external plugin. For instance, it may be a + * string that defines a button label and setting this property will + * change that label on the fly. + * + * @note external parts have parameters set when they change + * states. Those parameters will never be changed by this + * function. The interpretation of how state_set parameters and + * param_set will interact is up to the external plugin. + * + * @note this function will not check if parameter value is valid + * using #Edje_External_Param_Info minimum, maximum, valid + * choices and others. However these should be checked by the + * underlying implementation provided by the external + * plugin. This is done for performance reasons. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param param the parameter details, including its name, type and + * actual value. This pointer should be valid, and the + * parameter must exist in + * #Edje_External_Type::parameters_info, with the exact type, + * otherwise the operation will fail and @c EINA_FALSE will be + * returned. + * + * @return @c EINA_TRUE if everything went fine, @c EINA_FALSE on errors. + */ +EAPI Eina_Bool edje_object_part_external_param_set (Evas_Object *obj, const char *part, const Edje_External_Param *param); + +/** + * @brief Get the parameter for the external part. + * + * Parts of type external may carry extra properties that have + * meanings defined by the external plugin. For instance, it may be a + * string that defines a button label. This property can be modifed by + * state parameters, by explicit calls to + * edje_object_part_external_param_set() or getting the actual object + * with edje_object_part_external_object_get() and calling native + * functions. + * + * This function asks the external plugin what is the current value, + * independent on how it was set. + * + * @param obj A valid Evas_Object handle + * @param part The part name + + * @param param the parameter details. It is used as both input and + * output variable. This pointer should be valid, and the + * parameter must exist in + * #Edje_External_Type::parameters_info, with the exact type, + * otherwise the operation will fail and @c EINA_FALSE will be + * returned. + * + * @return @c EINA_TRUE if everything went fine and @p param members + * are filled with information, @c EINA_FALSE on errors and @p + * param member values are not set or valid. + */ +EAPI Eina_Bool edje_object_part_external_param_get (const Evas_Object *obj, const char *part, Edje_External_Param *param); + +EAPI Evas_Object *edje_object_part_external_content_get (const Evas_Object *obj, const char *part, const char *content); + +/** + * Facility to query the type of the given parameter of the given part. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param param the parameter name to use. + * + * @return @c EDJE_EXTERNAL_PARAM_TYPE_MAX on errors, or another value + * from #Edje_External_Param_Type on success. + */ +EAPI Edje_External_Param_Type edje_object_part_external_param_type_get (const Evas_Object *obj, const char *part, const char *param); + + +/** + * @brief Appends an object to the box. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param child The object to append + * + * @return 1: Successfully added.\n + * 0: An error occurred. + * + * Appends child to the box indicated by part. + */ +EAPI Eina_Bool edje_object_part_box_append (Evas_Object *obj, const char *part, Evas_Object *child); + +/** + * @brief Prepends an object to the box. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param child The object to prepend + * + * @return 1: Successfully added.\n + * 0: An error occurred. + * + * Prepends child to the box indicated by part. + */ +EAPI Eina_Bool edje_object_part_box_prepend (Evas_Object *obj, const char *part, Evas_Object *child); + +/** + * @brief Adds an object to the box. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param child The object to insert + * @param reference The object to be used as reference + * + * @return 1: Successfully added.\n + * 0: An error occurred. + * + * Inserts child in the box given by part, in the position marked by + * reference. + */ +EAPI Eina_Bool edje_object_part_box_insert_before (Evas_Object *obj, const char *part, Evas_Object *child, const Evas_Object *reference); + +/** + * @brief Inserts an object to the box. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param child The object to insert + * @param pos The position where to insert child + * + * @return 1: Successfully added.\n + * 0: An error occurred. + * + * Adds child to the box indicated by part, in the position given by + * pos. + */ +EAPI Eina_Bool edje_object_part_box_insert_at (Evas_Object *obj, const char *part, Evas_Object *child, unsigned int pos); + +/** + * @brief Removes an object from the box. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param child The object to remove + * + * @return Pointer to the object removed, or NULL. + * + * Removes child from the box indicated by part. + */ +EAPI Evas_Object *edje_object_part_box_remove (Evas_Object *obj, const char *part, Evas_Object *child); + +/** + * @brief Removes an object from the box. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param pos + * + * @return Pointer to the object removed, or NULL. + * + * Removes from the box indicated by part, the object in the position + * pos. + */ +EAPI Evas_Object *edje_object_part_box_remove_at (Evas_Object *obj, const char *part, unsigned int pos); + +/** + * @brief Removes all elements from the box. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param clear Delete objects on removal + * + * @return 1: Successfully cleared.\n + * 0: An error occurred. + * + * Removes all the external objects from the box indicated by part. + * Elements created from the theme will not be removed. + */ +EAPI Eina_Bool edje_object_part_box_remove_all (Evas_Object *obj, const char *part, Eina_Bool clear); + +/** + * @brief Retrieve a child from a table + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param col The column of the child to get + * @param row The row of the child to get + * @return The child Evas_Object + */ +EAPI Evas_Object *edje_object_part_table_child_get (Evas_Object *obj, const char *part, unsigned int col, unsigned int row); + +/** + * @brief Packs an object into the table. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param child_obj The object to pack in + * @param col The column to place it in + * @param row The row to place it in + * @param colspan Columns the child will take + * @param rowspan Rows the child will take + * + * @return 1: Successfully added.\n + * 0: An error occurred. + * + * Packs an object into the table indicated by part. + */ +EAPI Eina_Bool edje_object_part_table_pack (Evas_Object *obj, const char *part, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan); + +/** + * @brief Removes an object from the table. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param child_obj The object to pack in + * + * @return 1: Successfully removed.\n + * 0: An error occurred. + * + * Removes an object from the table indicated by part. + */ +EAPI Eina_Bool edje_object_part_table_unpack (Evas_Object *obj, const char *part, Evas_Object *child_obj); + +/** + * @brief Gets the number of columns and rows the table has. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cols Pointer where to store number of columns (can be NULL) + * @param rows Pointer where to store number of rows (can be NULL) + * + * @return 1: Successfully get some data.\n + * 0: An error occurred. + * + * Retrieves the size of the table in number of columns and rows. + */ +EAPI Eina_Bool edje_object_part_table_col_row_size_get (const Evas_Object *obj, const char *part, int *cols, int *rows); + +/** + * @brief Removes all object from the table. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param clear If set, will delete subobjs on remove + * + * @return 1: Successfully clear table.\n + * 0: An error occurred. + * + * Removes all object from the table indicated by part, except the + * internal ones set from the theme. + */ +EAPI Eina_Bool edje_object_part_table_clear (Evas_Object *obj, const char *part, Eina_Bool clear); /* edje_message_queue.c */ - EAPI void edje_object_message_send (Evas_Object *obj, Edje_Message_Type type, int id, void *msg); - EAPI void edje_object_message_handler_set (Evas_Object *obj, Edje_Message_Handler_Cb func, void *data); - EAPI void edje_object_message_signal_process (Evas_Object *obj); + +/** + * @brief Send message to object. + * + * @param obj The edje object reference. + * @param type The type of message to send. + * @param id A identification number for the message. + * @param msg The message to be send. + * + * + * This function sends messages to this object and to all of its child + * objects, if applicable. The function that handles messages arriving + * at this edje object is is set with + * edje_object_message_handler_set(). + * + * @see edje_object_message_handler_set() + * + */ +EAPI void edje_object_message_send (Evas_Object *obj, Edje_Message_Type type, int id, void *msg); + +/** + * @brief Set the message handler function for this an object. + * + * @param obj The edje object reference. + * @param func The function to handle messages. + * @param data The data to be associated to the message handler. + * + * + * This function associates a message handler function and data to the + * edje object. + * + */ +EAPI void edje_object_message_handler_set (Evas_Object *obj, Edje_Message_Handler_Cb func, void *data); + +/** + * @brief Process an object's message queue. + * + * @param obj The edje object reference. + * + * This function goes through the object message queue processing the + * pending messages for *this* specific edje object. Normally they'd + * be processed only at idle time. + * + */ +EAPI void edje_object_message_signal_process (Evas_Object *obj); - EAPI void edje_message_signal_process (void); + +/** + * @brief Process all queued up edje messages. + * + * This function triggers the processing of messages addressed to any + * (alive) edje objects. + * + */ +EAPI void edje_message_signal_process (void); /* edje_external.c */ - EAPI Eina_Bool edje_external_type_register (const char *type_name, const Edje_External_Type *type_info); - EAPI Eina_Bool edje_external_type_unregister (const char *type_name); + +/** + * Register given type name to return the given information. + * + * @param type_name name to register and be known by edje's "source:" + * parameter of "type: EXTERNAL" parts. + * @param type_info meta-information describing how to interact with it. + * + * @return @c EINA_TRUE on success, @c EINA_FALSE on failure (like + * type already registered). + * + * @see edje_external_type_array_register() + */ +EAPI Eina_Bool edje_external_type_register (const char *type_name, const Edje_External_Type *type_info); + +/** + * Unregister given type name previously registered. + * + * @param type_name name to unregister. It should be registered with + * edje_external_type_register() before. + * + * @return @c EINA_TRUE on success, @c EINA_FALSE on failure (like + * type_name did not exist). + * + * @see edje_external_type_array_unregister() + */ +EAPI Eina_Bool edje_external_type_unregister (const char *type_name); - EAPI void edje_external_type_array_register (const Edje_External_Type_Info *array); - EAPI void edje_external_type_array_unregister (const Edje_External_Type_Info *array); + +/** + * Register a batch of types and their information. + * + * This is the recommended function to add information as it's faster + * than the single version edje_external_type_register(). + * + * @note the given array is not modified, but the type name strings + * are @b not duplicated! That is, all type names must be @b + * live until they are unregistered! This was chosen to save + * some memory and most people will just define the array as a + * global static const type anyway. + * + * @param array @c NULL terminated array with type name and + * information. Note that type name or information are not + * modified by are @b referenced, so they must keep alive after + * this function returns! + * + * @return @c EINA_TRUE on success, @c EINA_FALSE on failure (like + * type already registered). + * + * @see edje_external_type_register() + */ +EAPI void edje_external_type_array_register (const Edje_External_Type_Info *array); + +/** + * Unregister a batch of given external type previously registered. + * + * @param array @c NULL terminated array, should be the same as the + * one used to register with edje_external_type_array_register() + * + * @see edje_external_type_unregister() + */ +EAPI void edje_external_type_array_unregister (const Edje_External_Type_Info *array); - EAPI unsigned int edje_external_type_abi_version_get (void) EINA_CONST; + +/** + * Return the current ABI version for Edje_External_Type structure. + * + * Always check this number before accessing Edje_External_Type in + * your own software. If the number is not the same, your software may + * access invalid memory and crash, or just get garbage values. + * + * @warning @b NEVER, EVER define your own Edje_External_Type using the + * return of this function as it will change as Edje library + * (libedje.so) changes, but your type definition will + * not. Instead, use #EDJE_EXTERNAL_TYPE_ABI_VERSION. + * + * Summary: + * - use edje_external_type_abi_version_get() to check. + * - use #EDJE_EXTERNAL_TYPE_ABI_VERSION to define/declare. + * + * @return version this edje library was compiled. + */ +EAPI unsigned int edje_external_type_abi_version_get (void) EINA_CONST; - EAPI Eina_Iterator *edje_external_iterator_get (void); + +/** + * Returns an iterator that emits Eina_Hash_Tuple pointers with key + * being the name and data being the Edje_External_Type pointer. + * + * @code + * const Eina_Hash_Tuple *tuple; + * Eina_Iterator *itr; + * const Eina_List *l, *modules; + * const char *s; + * + * modules = edje_available_modules_get(); + * EINA_LIST_FOREACH(modules, l, s) + * { + * if (!edje_module_load(s)) + * printf("Error loading edje module: %s\n", s); + * } + * + * itr = edje_external_iterator_get(); + * EINA_ITERATOR_FOREACH(itr, tuple) + * { + * const char *name = tuple->key; + * const Edje_External_Type *type = tuple->data; + * + * if ((!type) || + * (type->abi_version != edje_external_type_abi_version_get())) + * { + * printf("Error: invalid type %p (abi: %d, expected: %d)\n", + * type, type ? type->abi_version : 0, + * edje_external_type_abi_version_get()); + * continue; + * } + * + * printf("%s: %s (%s) label='%s' desc='%s'\n", + * name, type->module, type->module_name, + * type->label_get ? type->label_get(type->data) : "", + * type->description_get ? type->description_get(type->data) : ""); + * } + * + * @endcode + */ +EAPI Eina_Iterator *edje_external_iterator_get (void); EAPI Edje_External_Param *edje_external_param_find (const Eina_List *params, const char *key); EAPI Eina_Bool edje_external_param_int_get (const Eina_List *params, const char *key, int *ret); EAPI Eina_Bool edje_external_param_double_get (const Eina_List *params, const char *key, double *ret); EAPI Eina_Bool edje_external_param_string_get (const Eina_List *params, const char *key, const char **ret); EAPI Eina_Bool edje_external_param_bool_get (const Eina_List *params, const char *key, Eina_Bool *ret); EAPI Eina_Bool edje_external_param_choice_get (const Eina_List *params, const char *key, const char **ret); - EAPI const Edje_External_Param_Info *edje_external_param_info_get (const char *type_name); + +/** + * Get the array of parameters information about a type given its name. + * + * @note the type names and other strings are static, that means they + * @b NOT translated. One must use + * Edje_External_Type::translate() to translate those. + * + * @return the NULL terminated array, or @c NULL if type is unknown or + * it does not have any parameter information. + * + * @see edje_external_type_get() + */ +EAPI const Edje_External_Param_Info *edje_external_param_info_get (const char *type_name); EAPI const Edje_External_Type *edje_external_type_get (const char *type_name); /* edje_module.c */ diff --git a/legacy/edje/src/lib/Edje_Edit.h b/legacy/edje/src/lib/Edje_Edit.h index 35c2ec6698..935d6615bf 100644 --- a/legacy/edje/src/lib/Edje_Edit.h +++ b/legacy/edje/src/lib/Edje_Edit.h @@ -191,6 +191,24 @@ EAPI void edje_edit_print_internal_status(Evas_Object *obj); * @return EINA_TRUE if successfully added the group, EINA_FALSE if an error * occurred or if a group with the same name exists. */ + +/** + * @brief Add an edje (empty) group to an edje object's group set. + * + * @param obj The pointer to edje object. + * @param name The name of the group. + * + * @return 1 If it could allocate memory to the part group added + * or zero if not. + * + * This function adds, at run time, one more group, which will reside + * in memory, to the group set found in the .edj file which @a obj was + * loaded with. This group can be manipulated by other API functions, + * like @c edje_edit_part_add(), for example. If desired, the new + * group can be actually committed the respective .edj by use of @c + * edje_edit_save(). + * + */ EAPI Eina_Bool edje_edit_group_add(Evas_Object *obj, const char *name); /** Delete the specified group from the given edje. @@ -204,6 +222,21 @@ EAPI Eina_Bool edje_edit_group_add(Evas_Object *obj, const char *name); * * @return EINA_TRUE if successful, EINA_FALSE otherwise. */ + +/** + * @brief Delete the specified group from the edje file. + * + * @param obj The pointer to the edje object. + * @param group_name Group to delete. + * + * @return @c EINA_TRUE on success, @c EINA_FALSE on failure. + * + * This function deletes the given group from the file @a obj is set to. This + * operation can't be undone as all references to the group are removed from + * the file. + * This function may fail if the group to be deleted is currently in use. + * + */ EAPI Eina_Bool edje_edit_group_del(Evas_Object *obj, const char *group_name); /** Check if a group with the given name exist in the edje. @@ -2027,6 +2060,18 @@ EAPI Eina_Bool edje_edit_state_external_param_choice_get(Evas_Object *obj, const * * @return EINA_TRUE if it was set, EINA_FALSE otherwise. */ + +/** + * Arguments should have proper sized values matching their types: + * - EDJE_EXTERNAL_PARAM_TYPE_INT: int + * - EDJE_EXTERNAL_PARAM_TYPE_BOOL: int + * - EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: double + * - EDJE_EXTERNAL_PARAM_TYPE_STRING: char* + * - EDJE_EXTERNAL_PARAM_TYPE_CHOICE: char* + * + * @note: The validation of the parameter will occur only if the part + * is in the same state as the one being modified. + */ EAPI Eina_Bool edje_edit_state_external_param_set(Evas_Object *obj, const char *part, const char *state, double value, const char *param, Edje_External_Param_Type type, ...); /** Set external parameter of type INT. diff --git a/legacy/edje/src/lib/edje_cache.c b/legacy/edje/src/lib/edje_cache.c index 3d1d78921b..a8b355fc65 100644 --- a/legacy/edje/src/lib/edje_cache.c +++ b/legacy/edje/src/lib/edje_cache.c @@ -504,29 +504,6 @@ _edje_file_cache_shutdown(void) * API * *============================================================================*/ -/** - * @addtogroup Edje_cache_Group Cache - * - * @brief These functions provide an abstraction layer between the - * application code and the interface, while allowing extremely - * flexible dynamic layouts and animations. - * - * @{ - */ - -/** - * @brief Set the file cache size. - * - * @param count The file cache size in edje file units. Default is 16. - * - * This function sets the file cache size. Edje keeps this cache in - * order to prevent duplicates of edje file entries in memory. The - * file cache size can be retrieved with edje_file_cache_get(). - * - * @see edje_file_cache_get() - * @see edje_file_cache_flush() - * - */ EAPI void edje_file_cache_set(int count) @@ -536,18 +513,6 @@ edje_file_cache_set(int count) _edje_cache_file_clean(); } -/** - * @brief Return the file cache size. - * - * @return The file cache size in edje file units. Default is 16. - * - * This function returns the file cache size set by - * edje_file_cache_set(). - * - * @see edje_file_cache_set() - * @see edje_file_cache_flush() - * - */ EAPI int edje_file_cache_get(void) @@ -555,16 +520,6 @@ edje_file_cache_get(void) return _edje_file_cache_size; } -/** - * @brief Clean the file cache. - * - * This function cleans the file cache entries, but keeps this cache's - * size to the last value set. - * - * @see edje_file_cache_set() - * @see edje_file_cache_get() - * - */ EAPI void edje_file_cache_flush(void) @@ -577,20 +532,6 @@ edje_file_cache_flush(void) _edje_file_cache_size = ps; } -/** - * @brief Set the collection cache size. - * - * @param count The collection cache size, in edje object units. Default is 16. - * - * This function sets the collection cache size. Edje keeps this cache - * in order to prevent duplicates of edje {collection,group,part} - * entries in memory. The collection cache size can be retrieved with - * edje_collection_cache_get(). - * - * @see edje_collection_cache_get() - * @see edje_collection_cache_flush() - * - */ EAPI void edje_collection_cache_set(int count) @@ -605,18 +546,6 @@ edje_collection_cache_set(int count) /* FIXME: freach in file hash too! */ } -/** - * @brief Return the collection cache size. - * - * @return The collection cache size, in edje object units. Default is 16. - * - * This function returns the collection cache size set by - * edje_collection_cache_set(). - * - * @see edje_collection_cache_set() - * @see edje_collection_cache_flush() - * - */ EAPI int edje_collection_cache_get(void) @@ -624,16 +553,6 @@ edje_collection_cache_get(void) return _edje_collection_cache_size; } -/** - * @brief Clean the collection cache. - * - * This function cleans the collection cache, but keeps this cache's - * size to the last value set. - * - * @see edje_collection_cache_set() - * @see edje_collection_cache_get() - * - */ EAPI void edje_collection_cache_flush(void) @@ -649,8 +568,3 @@ edje_collection_cache_flush(void) /* FIXME: freach in file hash too! */ _edje_collection_cache_size = ps; } - -/** - * - * @} - */ diff --git a/legacy/edje/src/lib/edje_edit.c b/legacy/edje/src/lib/edje_edit.c index a4be7d23a1..9204f53c2e 100644 --- a/legacy/edje/src/lib/edje_edit.c +++ b/legacy/edje/src/lib/edje_edit.c @@ -955,23 +955,6 @@ edje_edit_compiler_get(Evas_Object *obj) /* GROUPS API */ /****************/ -/** - * @brief Add an edje (empty) group to an edje object's group set. - * - * @param obj The pointer to edje object. - * @param name The name of the group. - * - * @return 1 If it could allocate memory to the part group added - * or zero if not. - * - * This function adds, at run time, one more group, which will reside - * in memory, to the group set found in the .edj file which @a obj was - * loaded with. This group can be manipulated by other API functions, - * like @c edje_edit_part_add(), for example. If desired, the new - * group can be actually committed the respective .edj by use of @c - * edje_edit_save(). - * - */ EAPI Eina_Bool edje_edit_group_add(Evas_Object *obj, const char *name) { @@ -1066,20 +1049,6 @@ edje_edit_group_add(Evas_Object *obj, const char *name) return EINA_TRUE; } -/** - * @brief Delete the specified group from the edje file. - * - * @param obj The pointer to the edje object. - * @param group_name Group to delete. - * - * @return @c EINA_TRUE on success, @c EINA_FALSE on failure. - * - * This function deletes the given group from the file @a obj is set to. This - * operation can't be undone as all references to the group are removed from - * the file. - * This function may fail if the group to be deleted is currently in use. - * - */ EAPI Eina_Bool edje_edit_group_del(Evas_Object *obj, const char *group_name) { @@ -4067,17 +4036,6 @@ edje_edit_state_external_param_choice_get(Evas_Object *obj, const char *part, co return EINA_FALSE; } -/** - * Arguments should have proper sized values matching their types: - * - EDJE_EXTERNAL_PARAM_TYPE_INT: int - * - EDJE_EXTERNAL_PARAM_TYPE_BOOL: int - * - EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: double - * - EDJE_EXTERNAL_PARAM_TYPE_STRING: char* - * - EDJE_EXTERNAL_PARAM_TYPE_CHOICE: char* - * - * @note: The validation of the parameter will occur only if the part - * is in the same state as the one being modified. - */ EAPI Eina_Bool edje_edit_state_external_param_set(Evas_Object *obj, const char *part, const char *state, double value, const char *param, Edje_External_Param_Type type, ...) { diff --git a/legacy/edje/src/lib/edje_external.c b/legacy/edje/src/lib/edje_external.c index 2ad2867f8e..8bf6256777 100644 --- a/legacy/edje/src/lib/edje_external.c +++ b/legacy/edje/src/lib/edje_external.c @@ -3,14 +3,6 @@ static Eina_Hash *type_registry = NULL; static int init_count = 0; -/** - * @brief Converts type identifier to string nicer representation. - * - * This may be used to debug or other informational purposes. - * - * @param type the identifier to convert. - * @return the string with the string representation, or @c "(unknown)". - */ EAPI const char * edje_external_param_type_str(Edje_External_Param_Type type) { @@ -31,25 +23,6 @@ edje_external_param_type_str(Edje_External_Param_Type type) } } -/** - * @brief Get the object created by this external part. - * - * Parts of type external creates the part object using information - * provided by external plugins. It's somehow like "swallow" - * (edje_object_part_swallow()), but it's all set automatically. - * - * This function returns the part created by such external plugins and - * being currently managed by this Edje. - * - * @note Almost all swallow rules apply: you should not move, resize, - * hide, show, set the color or clipper of such part. It's a bit - * more restrictive as one must @b never delete this object! - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @return The externally created object, or NULL if there is none or - * part is not an external. - */ EAPI Evas_Object * edje_object_part_external_object_get(const Evas_Object *obj, const char *part) { @@ -77,36 +50,6 @@ edje_object_part_external_object_get(const Evas_Object *obj, const char *part) return rp->swallowed_object; } -/** - * @brief Set the parameter for the external part. - * - * Parts of type external may carry extra properties that have - * meanings defined by the external plugin. For instance, it may be a - * string that defines a button label and setting this property will - * change that label on the fly. - * - * @note external parts have parameters set when they change - * states. Those parameters will never be changed by this - * function. The interpretation of how state_set parameters and - * param_set will interact is up to the external plugin. - * - * @note this function will not check if parameter value is valid - * using #Edje_External_Param_Info minimum, maximum, valid - * choices and others. However these should be checked by the - * underlying implementation provided by the external - * plugin. This is done for performance reasons. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param param the parameter details, including its name, type and - * actual value. This pointer should be valid, and the - * parameter must exist in - * #Edje_External_Type::parameters_info, with the exact type, - * otherwise the operation will fail and @c EINA_FALSE will be - * returned. - * - * @return @c EINA_TRUE if everything went fine, @c EINA_FALSE on errors. - */ EAPI Eina_Bool edje_object_part_external_param_set(Evas_Object *obj, const char *part, const Edje_External_Param *param) { @@ -128,34 +71,6 @@ edje_object_part_external_param_set(Evas_Object *obj, const char *part, const Ed return _edje_external_param_set(obj, rp, param); } -/** - * @brief Get the parameter for the external part. - * - * Parts of type external may carry extra properties that have - * meanings defined by the external plugin. For instance, it may be a - * string that defines a button label. This property can be modifed by - * state parameters, by explicit calls to - * edje_object_part_external_param_set() or getting the actual object - * with edje_object_part_external_object_get() and calling native - * functions. - * - * This function asks the external plugin what is the current value, - * independent on how it was set. - * - * @param obj A valid Evas_Object handle - * @param part The part name - - * @param param the parameter details. It is used as both input and - * output variable. This pointer should be valid, and the - * parameter must exist in - * #Edje_External_Type::parameters_info, with the exact type, - * otherwise the operation will fail and @c EINA_FALSE will be - * returned. - * - * @return @c EINA_TRUE if everything went fine and @p param members - * are filled with information, @c EINA_FALSE on errors and @p - * param member values are not set or valid. - */ EAPI Eina_Bool edje_object_part_external_param_get(const Evas_Object *obj, const char *part, Edje_External_Param *param) { @@ -179,7 +94,7 @@ edje_object_part_external_param_get(const Evas_Object *obj, const char *part, Ed -EAPI Evas_Object* +EAPI Evas_Object * edje_object_part_external_content_get(const Evas_Object *obj, const char *part, const char *content) { Edje *ed; @@ -200,16 +115,6 @@ edje_object_part_external_content_get(const Evas_Object *obj, const char *part, return _edje_external_content_get(rp->swallowed_object, content); } -/** - * Facility to query the type of the given parameter of the given part. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param param the parameter name to use. - * - * @return @c EDJE_EXTERNAL_PARAM_TYPE_MAX on errors, or another value - * from #Edje_External_Param_Type on success. - */ EAPI Edje_External_Param_Type edje_object_part_external_param_type_get(const Evas_Object *obj, const char *part, const char *param) { @@ -248,18 +153,6 @@ edje_object_part_external_param_type_get(const Evas_Object *obj, const char *par } -/** - * Register given type name to return the given information. - * - * @param type_name name to register and be known by edje's "source:" - * parameter of "type: EXTERNAL" parts. - * @param type_info meta-information describing how to interact with it. - * - * @return @c EINA_TRUE on success, @c EINA_FALSE on failure (like - * type already registered). - * - * @see edje_external_type_array_register() - */ EAPI Eina_Bool edje_external_type_register(const char *type_name, const Edje_External_Type *type_info) { @@ -285,17 +178,6 @@ edje_external_type_register(const char *type_name, const Edje_External_Type *typ return eina_hash_add(type_registry, type_name, type_info); } -/** - * Unregister given type name previously registered. - * - * @param type_name name to unregister. It should be registered with - * edje_external_type_register() before. - * - * @return @c EINA_TRUE on success, @c EINA_FALSE on failure (like - * type_name did not exist). - * - * @see edje_external_type_array_unregister() - */ EAPI Eina_Bool edje_external_type_unregister(const char *type_name) { @@ -304,28 +186,6 @@ edje_external_type_unregister(const char *type_name) return eina_hash_del_by_key(type_registry, type_name); } -/** - * Register a batch of types and their information. - * - * This is the recommended function to add information as it's faster - * than the single version edje_external_type_register(). - * - * @note the given array is not modified, but the type name strings - * are @b not duplicated! That is, all type names must be @b - * live until they are unregistered! This was chosen to save - * some memory and most people will just define the array as a - * global static const type anyway. - * - * @param array @c NULL terminated array with type name and - * information. Note that type name or information are not - * modified by are @b referenced, so they must keep alive after - * this function returns! - * - * @return @c EINA_TRUE on success, @c EINA_FALSE on failure (like - * type already registered). - * - * @see edje_external_type_register() - */ EAPI void edje_external_type_array_register(const Edje_External_Type_Info *array) { @@ -349,14 +209,6 @@ edje_external_type_array_register(const Edje_External_Type_Info *array) } } -/** - * Unregister a batch of given external type previously registered. - * - * @param array @c NULL terminated array, should be the same as the - * one used to register with edje_external_type_array_register() - * - * @see edje_external_type_unregister() - */ EAPI void edje_external_type_array_unregister(const Edje_External_Type_Info *array) { @@ -369,70 +221,12 @@ edje_external_type_array_unregister(const Edje_External_Type_Info *array) eina_hash_del(type_registry, itr->name, itr->info); } -/** - * Return the current ABI version for Edje_External_Type structure. - * - * Always check this number before accessing Edje_External_Type in - * your own software. If the number is not the same, your software may - * access invalid memory and crash, or just get garbage values. - * - * @warning @b NEVER, EVER define your own Edje_External_Type using the - * return of this function as it will change as Edje library - * (libedje.so) changes, but your type definition will - * not. Instead, use #EDJE_EXTERNAL_TYPE_ABI_VERSION. - * - * Summary: - * - use edje_external_type_abi_version_get() to check. - * - use #EDJE_EXTERNAL_TYPE_ABI_VERSION to define/declare. - * - * @return version this edje library was compiled. - */ EAPI unsigned int edje_external_type_abi_version_get(void) { return EDJE_EXTERNAL_TYPE_ABI_VERSION; } -/** - * Returns an iterator that emits Eina_Hash_Tuple pointers with key - * being the name and data being the Edje_External_Type pointer. - * - * @code - * const Eina_Hash_Tuple *tuple; - * Eina_Iterator *itr; - * const Eina_List *l, *modules; - * const char *s; - * - * modules = edje_available_modules_get(); - * EINA_LIST_FOREACH(modules, l, s) - * { - * if (!edje_module_load(s)) - * printf("Error loading edje module: %s\n", s); - * } - * - * itr = edje_external_iterator_get(); - * EINA_ITERATOR_FOREACH(itr, tuple) - * { - * const char *name = tuple->key; - * const Edje_External_Type *type = tuple->data; - * - * if ((!type) || - * (type->abi_version != edje_external_type_abi_version_get())) - * { - * printf("Error: invalid type %p (abi: %d, expected: %d)\n", - * type, type ? type->abi_version : 0, - * edje_external_type_abi_version_get()); - * continue; - * } - * - * printf("%s: %s (%s) label='%s' desc='%s'\n", - * name, type->module, type->module_name, - * type->label_get ? type->label_get(type->data) : "", - * type->description_get ? type->description_get(type->data) : ""); - * } - * - * @endcode - */ EAPI Eina_Iterator * edje_external_iterator_get(void) { @@ -536,18 +330,6 @@ edje_external_param_choice_get(const Eina_List *params, const char *key, const c return EINA_FALSE; } -/** - * Get the array of parameters information about a type given its name. - * - * @note the type names and other strings are static, that means they - * @b NOT translated. One must use - * Edje_External_Type::translate() to translate those. - * - * @return the NULL terminated array, or @c NULL if type is unknown or - * it does not have any parameter information. - * - * @see edje_external_type_get() - */ EAPI const Edje_External_Param_Info * edje_external_param_info_get(const char *type_name) { diff --git a/legacy/edje/src/lib/edje_load.c b/legacy/edje/src/lib/edje_load.c index e3052df926..68f4a29022 100644 --- a/legacy/edje/src/lib/edje_load.c +++ b/legacy/edje/src/lib/edje_load.c @@ -10,18 +10,6 @@ static Eina_List *_edje_swallows_collect(Edje *ed); /************************** API Routines **************************/ -/* FIXDOC: Verify/expand doc */ -/** Sets the EET file and group to load @a obj from - * @param obj A valid Evas_Object handle - * @param file The path to the EET file - * @param group The group name in the Edje - * @return 0 on Error\n - * 1 on Success and sets EDJE_LOAD_ERROR_NONE - * - * Edje uses EET files, conventionally ending in .edj, to store object - * descriptions. A single file contains multiple named groups. This function - * specifies the file and group name to load @a obj from. - */ EAPI Eina_Bool edje_object_file_set(Evas_Object *obj, const char *file, const char *group) { @@ -36,20 +24,6 @@ edje_object_file_set(Evas_Object *obj, const char *file, const char *group) return ret; } -/* FIXDOC: Verify/expand doc. */ -/** Get the file and group name that @a obj was loaded from - * @param obj A valid Evas_Object handle - * @param file A pointer to store a pointer to the filename in - * @param group A pointer to store a pointer to the group name in - * - * This gets the EET file location and group for the given Evas_Object. - * If @a obj is either not an edje file, or has not had its file/group set - * using edje_object_file_set(), then both @a file and @a group will be set - * to NULL. - * - * It is valid to pass in NULL for either @a file or @a group if you are not - * interested in one of the values. - */ EAPI void edje_object_file_get(const Evas_Object *obj, const char **file, const char **group) { @@ -66,22 +40,6 @@ edje_object_file_get(const Evas_Object *obj, const char **file, const char **gro if (group) *group = ed->group; } -/* FIXDOC: Verify. return error? */ -/** Gets the Edje load error - * @param obj A valid Evas_Object handle - * - * @return The Edje load error:\n - * EDJE_LOAD_ERROR_NONE: No Error\n - * EDJE_LOAD_ERROR_GENERIC: Generic Error\n - * EDJE_LOAD_ERROR_DOES_NOT_EXIST: Does not Exist\n - * EDJE_LOAD_ERROR_PERMISSION_DENIED: Permission Denied\n - * EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED: Resource Allocation Failed\n - * EDJE_LOAD_ERROR_CORRUPT_FILE: Corrupt File\n - * EDJE_LOAD_ERROR_UNKNOWN_FORMAT: Unknown Format\n - * EDJE_LOAD_ERROR_INCOMPATIBLE_FILE: Incompatible File\n - * EDJE_LOAD_ERROR_UNKNOWN_COLLECTION: Unknown Collection\n - * EDJE_LOAD_ERROR_RECURSIVE_REFERENCE: Recursive Reference\n - */ EAPI Edje_Load_Error edje_object_load_error_get(const Evas_Object *obj) { @@ -123,14 +81,6 @@ edje_load_error_str(Edje_Load_Error error) } -/** Get a list of groups in an edje file - * @param file The path to the edje file - * - * @return The Eina_List of group names (char *) - * - * Note: the list must be freed using edje_file_collection_list_free() - * when you are done with it. - */ EAPI Eina_List * edje_file_collection_list(const char *file) { @@ -157,11 +107,6 @@ edje_file_collection_list(const char *file) return lst; } -/** Free file collection list - * @param lst The Eina_List of groups - * - * Frees the list returned by edje_file_collection_list(). - */ EAPI void edje_file_collection_list_free(Eina_List *lst) { @@ -172,12 +117,6 @@ edje_file_collection_list_free(Eina_List *lst) } } -/** Determine whether a group matching glob exists in an edje file. - * @param file The file path - * @param glob A glob to match on - * - * @return 1 if a match is found, 0 otherwise - */ EAPI Eina_Bool edje_file_group_exists(const char *file, const char *glob) { @@ -238,21 +177,6 @@ edje_file_group_exists(const char *file, const char *glob) } -/** Get data from the file level data block of an edje file - * @param file The path to the .edj file - * @param key The data key - * @return The string value of the data - * - * If an edje file is built from the following edc: - * - * data { - * item: "key1" "value1"; - * item: "key2" "value2"; - * } - * collections { ... } - * - * Then, edje_file_data_get("key1") will return "value1" - */ EAPI char * edje_file_data_get(const char *file, const char *key) { diff --git a/legacy/edje/src/lib/edje_lua2.c b/legacy/edje/src/lib/edje_lua2.c index e8ca5495d3..883bdb5de0 100644 --- a/legacy/edje/src/lib/edje_lua2.c +++ b/legacy/edje/src/lib/edje_lua2.c @@ -1,19 +1,3 @@ -/** - * @page luaref Edje Lua scripting - * - * @section intro Introduction - * - * Lua is intended for script-only objects at this point (with embryo left - * for augmenting standard programs). Since script-only objects effectively - * define objects entirely via Lua script (resize handling, event handling - * etc. etc.) this places many more demands on them, and thus a more powerful - * language is in order. Lua is that language. - * - * To get you started, here's an example: - * @include lua_script.edc - * - */ - #include "edje_private.h" //--------------------------------------------------------------------------// diff --git a/legacy/edje/src/lib/edje_main.c b/legacy/edje/src/lib/edje_main.c index f8413dcb10..2aebe07eb7 100644 --- a/legacy/edje/src/lib/edje_main.c +++ b/legacy/edje/src/lib/edje_main.c @@ -12,34 +12,6 @@ Eina_Mempool *_edje_real_part_state_mp = NULL; * API * *============================================================================*/ -/** - * @addtogroup Edje_main_Group Main - * - * @brief These functions provide an abstraction layer between the - * application code and the interface, while allowing extremely - * flexible dynamic layouts and animations. - * - * @{ - */ - -/** - * @brief Initialize the edje library. - * - * @return The new init count. The initial value is zero. - * - * This function initializes the ejde library, making the propers - * calls to initialization functions. It makes calls to functions - * eina_init(), ecore_init(), embryo_init() and eet_init() so - * there is no need to call those functions again in your code. To - * shutdown edje there is a function edje_shutdown(). - * - * @see edje_shutdown() - * @see eina_init() - * @see ecore_init() - * @see embryo_init() - * @see eet_init() - * - */ EAPI int edje_init(void) @@ -135,24 +107,6 @@ edje_init(void) return --_edje_init_count; } -/** - * @brief Shutdown the edje library. - * - * @return The number of times the library has been initialised without being - * shutdown. - * - * This function shuts down the edje library. It calls the functions - * eina_shutdown(), ecore_shutdown(), embryo_shutdown() and - * eet_shutdown(), so there is no need to call these functions again - * in your code. - * - * @see edje_init() - * @see eina_shutdown() - * @see ecore_shutdown() - * @see embryo_shutdown() - * @see eet_shutdown() - * - */ EAPI int edje_shutdown(void) @@ -292,8 +246,3 @@ _edje_unref(Edje *ed) ed->references--; if (ed->references == 0) _edje_del(ed); } - -/** - * - * @} - */ diff --git a/legacy/edje/src/lib/edje_message_queue.c b/legacy/edje/src/lib/edje_message_queue.c index 13387f78c4..07fd75febc 100644 --- a/legacy/edje/src/lib/edje_message_queue.c +++ b/legacy/edje/src/lib/edje_message_queue.c @@ -13,34 +13,6 @@ static int tmp_msgq_restart = 0; * API * *============================================================================*/ -/** - * @addtogroup Edje_message_queue_Group Message_Queue - * - * @brief These functions provide an abstraction layer between the - * application code and the interface, while allowing extremely - * flexible dynamic layouts and animations. - * - * @{ - */ - -/** - * @brief Send message to object. - * - * @param obj The edje object reference. - * @param type The type of message to send. - * @param id A identification number for the message. - * @param msg The message to be send. - * - * - * This function sends messages to this object and to all of its child - * objects, if applicable. The function that handles messages arriving - * at this edje object is is set with - * edje_object_message_handler_set(). - * - * @see edje_object_message_handler_set() - * - */ - EAPI void edje_object_message_send(Evas_Object *obj, Edje_Message_Type type, int id, void *msg) { @@ -59,18 +31,6 @@ edje_object_message_send(Evas_Object *obj, Edje_Message_Type type, int id, void } } -/** - * @brief Set the message handler function for this an object. - * - * @param obj The edje object reference. - * @param func The function to handle messages. - * @param data The data to be associated to the message handler. - * - * - * This function associates a message handler function and data to the - * edje object. - * - */ EAPI void edje_object_message_handler_set(Evas_Object *obj, Edje_Message_Handler_Cb func, void *data) @@ -82,16 +42,6 @@ edje_object_message_handler_set(Evas_Object *obj, Edje_Message_Handler_Cb func, _edje_message_cb_set(ed, func, data); } -/** - * @brief Process an object's message queue. - * - * @param obj The edje object reference. - * - * This function goes through the object message queue processing the - * pending messages for *this* specific edje object. Normally they'd - * be processed only at idle time. - * - */ EAPI void edje_object_message_signal_process(Evas_Object *obj) @@ -196,13 +146,6 @@ end: #endif } -/** - * @brief Process all queued up edje messages. - * - * This function triggers the processing of messages addressed to any - * (alive) edje objects. - * - */ EAPI void edje_message_signal_process(void) @@ -912,8 +855,3 @@ _edje_message_del(Edje *ed) if (ed->message.num <= 0) return; } } - -/** - * - * @} - */ diff --git a/legacy/edje/src/lib/edje_program.c b/legacy/edje/src/lib/edje_program.c index c21a248b4b..ba8b7e6e67 100644 --- a/legacy/edje/src/lib/edje_program.c +++ b/legacy/edje/src/lib/edje_program.c @@ -13,100 +13,18 @@ Eina_List *_edje_animators = NULL; * API * *============================================================================*/ -/** - * @addtogroup Edje_program_Group Program - * - * @brief These functions provide an abstraction layer between the - * application code and the interface, while allowing extremely - * flexible dynamic layouts and animations. - * - * @{ - */ - -/** - * @brief Set edje trasitions' frame time. - * - * @param t The frame time, in seconds. Default value is 1/30. - * - * This function sets the edje built-in animations' frame time (thus, - * affecting their resolution) by calling - * ecore_animator_frametime_set(). This frame time can be retrieved - * with edje_frametime_get(). - * - * @see edje_frametime_get() - * - */ EAPI void edje_frametime_set(double t) { ecore_animator_frametime_set(t); } -/** - * @brief Get edje trasitions' frame time. - * - * @return The frame time, in seconds. - * - * This function returns the edje frame time set by - * edje_frametime_set(). - * - * @see edje_frametime_set() - * - */ EAPI double edje_frametime_get(void) { return ecore_animator_frametime_get(); } -/** - * @brief Add a callback for a signal emitted by @a obj. - * - * @param obj A valid Evas_Object handle. - * @param emission The signal's name. - * @param source The signal's source. - * @param func The callback function to be executed when the signal is - * emitted. - * @param data A pointer to data to pass in to the callback function. - * - * Connects a callback function to a signal emitted by @a obj. - * In EDC, a program can emit a signal as follows: - * - * @code - * program { - * name: "emit_example"; - * action: SIGNAL_EMIT "a_signal" "a_source"; - * } - * @endcode - * - * Assuming a function with the following declaration is definded: - * - * @code - * void cb_signal(void *data, Evas_Object *o, const char *emission, const char *source); - * @endcode - * - * a callback is attached using: - * - * @code - * edje_object_signal_callback_add(obj, "a_signal", "a_source", cb_signal, data); - * @endcode - * - * Here, @a data is an arbitrary pointer to be used as desired. Note - * that @a emission and @a source correspond respectively to the first - * and the second parameters at the SIGNAL_EMIT action. - * - * Internal edje signals can also be attached to, and globs can occur - * in either the emission or source name, e.g. - * - * @code - * edje_object_signal_callback_add(obj, "mouse,down,*", "button.*", NULL); - * @endcode - * - * Here, any mouse down events on an edje part whose name begins with - * "button." will trigger the callback. The actual signal and source - * names will be passed in to the @a emission and @a source parameters - * of the callback function (e.g. "mouse,down,2" and "button.close"). - */ EAPI void edje_object_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) { @@ -134,25 +52,6 @@ edje_object_signal_callback_add(Evas_Object *obj, const char *emission, const ch _edje_callbacks_patterns_clean(ed); } -/** - * @brief Remove a signal-triggered callback from an object. - * - * @param obj A valid Evas_Object handle. - * @param emission The emission string. - * @param source The source string. - * @param func The callback function. - * @return The data pointer - * - * This function removes a callback, previously attached to the - * emittion of a signal, from the object @a obj. The parameters @a - * emission, @a source and @a func must match exactly those passed to - * a previous call to edje_object_signal_callback_add(). The data - * pointer that was passed to this call will be returned. - * - * @see edje_object_signal_callback_add(). - * @see edje_object_signal_callback_del_full(). - * - */ EAPI void * edje_object_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source)) { @@ -195,26 +94,6 @@ edje_object_signal_callback_del(Evas_Object *obj, const char *emission, const ch return NULL; } -/** - * @brief Remove a signal-triggered callback from an object. - * - * @param obj A valid Evas_Object handle. - * @param emission The emission string. - * @param source The source string. - * @param func The callback function. - * @param data The user data passed to the callback. - * @return The data pointer - * - * This function removes a callback, previously attached to the - * emittion of a signal, from the object @a obj. The parameters @a - * emission, @a sourcei, @a func and @a data must match exactly those - * passed to a previous call to edje_object_signal_callback_add(). The data - * pointer that was passed to this call will be returned. - * - * @see edje_object_signal_callback_add(). - * @see edje_object_signal_callback_del(). - * - */ EAPI void * edje_object_signal_callback_del_full(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data) { @@ -257,34 +136,6 @@ edje_object_signal_callback_del_full(Evas_Object *obj, const char *emission, con return NULL; } -/** - * @brief Send a signal to an edje object. - * - * @param obj A valid Evas_Object handle. - * @param emission The signal's name. - * @param source The signal's source. - * - * This function sends a signal to the object @a obj. An edje program - * can respond to a signal by specifying matching 'signal' and - * 'source' fields. - * - * @code - * edje_object_signal_emit(obj, "a_signal", ""); - * @endcode - * - * will trigger a program whose EDC block is: - * - * @code - * program { - * name: "a_program"; - * signal: "a_signal"; - * source: ""; - * action: ... - * } - * @endcode - * - * FIXME: should this signal be sent to children also? - */ EAPI void edje_object_signal_emit(Evas_Object *obj, const char *emission, const char *source) { @@ -298,19 +149,6 @@ edje_object_signal_emit(Evas_Object *obj, const char *emission, const char *sour } /* FIXDOC: Verify/Expand */ -/** - * @brief Set the edje object to playing or paused states. - * - * @param obj A valid Evas_Object handle. - * @param play Object state (1 to playing, 0 to pauseed). - * - * This function sets the edje object @a obj to playing or paused - * states, depending on the parameter @a play. This has no effect if - * the object was already at that state. - * - * @see edje_object_play_get(). - * - */ EAPI void edje_object_play_set(Evas_Object *obj, Eina_Bool play) { @@ -347,20 +185,6 @@ edje_object_play_set(Evas_Object *obj, Eina_Bool play) } } -/** - * @brief Get the edje object's play/pause state. - * - * @param obj A valid Evas_Object handle. - * @return @c EINA_FALSE if the object is not connected, its @c delete_me flag - * is set, or it is at paused state; @c EINA_TRUE if the object is at playing - * state. - * - * This function tells if an edje object is playing or not. This state - * is set by edje_object_play_set(). - * - * @see edje_object_play_set(). - * - */ EAPI Eina_Bool edje_object_play_get(const Evas_Object *obj) { @@ -374,19 +198,6 @@ edje_object_play_get(const Evas_Object *obj) } /* FIXDOC: Verify/Expand */ -/** - * @brief Set the object's animation state. - * - * @param obj A valid Evas_Object handle. - * @param on Animation State. - * - * This function starts or stops an edje object's animation. The - * information if it's runnig can be retrieved by - * edje_object_animation_get(). - * - * @see edje_object_animation_get() - * - */ EAPI void edje_object_animation_set(Evas_Object *obj, Eina_Bool on) { @@ -444,19 +255,6 @@ edje_object_animation_set(Evas_Object *obj, Eina_Bool on) _edje_unblock(ed); } -/** - * @brief Get the edje object's animation state. - * - * @param obj A valid Evas_Object handle. - * @return @c EINA_FALSE on error or if object is not animated; - * @c EINA_TRUE if animated. - * - * This function returns if the animation is playing or not. The - * animation state is set by edje_object_play_set(). - * - * @see edje_object_animation_set(). - * - */ EAPI Eina_Bool edje_object_animation_get(const Evas_Object *obj) @@ -2160,8 +1958,3 @@ _edje_param_set(Edje_Real_Part *part, const char *param, const char *value) } } } - -/** - * - * @} - */ diff --git a/legacy/edje/src/lib/edje_smart.c b/legacy/edje/src/lib/edje_smart.c index 3340b624e0..e6382781c4 100644 --- a/legacy/edje/src/lib/edje_smart.c +++ b/legacy/edje/src/lib/edje_smart.c @@ -18,13 +18,6 @@ Eina_List *_edje_edjes = NULL; /************************** API Routines **************************/ -/* FIXDOC: Verify/Expand */ -/** Constructs the Edje object - * @param evas A valid Evas handle - * @return The Evas_Object pointer. - * - * Creates the Edje smart object, returning the Evas_Object handle. - */ EAPI Evas_Object * edje_object_add(Evas *evas) { diff --git a/legacy/edje/src/lib/edje_util.c b/legacy/edje/src/lib/edje_util.c index c61a68cf1d..cfbc43d652 100644 --- a/legacy/edje/src/lib/edje_util.c +++ b/legacy/edje/src/lib/edje_util.c @@ -43,14 +43,6 @@ Edje_Real_Part *_edje_real_part_recursive_get_helper(const Edje *ed, char **path #define FASTFREEZE 1 -/** - * @brief Freeze Edje objects. - * - * This function freezes every edje objects in the current process. - * - * See edje_object_freeze(). - * - */ EAPI void edje_freeze(void) { @@ -91,14 +83,6 @@ _edje_thaw_edje(Edje *ed) } #endif -/** - * @brief Thaw edje objects. - * - * This function thaw all edje object in the current process. - * - * See edje_object_thaw(). - * - */ EAPI void edje_thaw(void) { @@ -128,14 +112,6 @@ edje_thaw(void) #endif } -/** - * @brief Set the edje append fontset. - * - * @param fonts The fontset to append. - * - * This function sets the edje append fontset. - * - */ EAPI void edje_fontset_append_set(const char *fonts) { @@ -144,43 +120,12 @@ edje_fontset_append_set(const char *fonts) _edje_fontset_append = fonts ? strdup(fonts) : NULL; } -/** - * @brief Get the edje append fontset. - * - * @return The edje append fontset. - * - * This function returns the edje append fontset set by - * edje_fontset_append_set() function. - * - * @see edje_fontset_append_set(). - * - */ EAPI const char * edje_fontset_append_get(void) { return _edje_fontset_append; } -/** - * @brief Set edje's global scaling factor. - * - * @param scale The edje (global) scale factor. The defaul is 1.0. - * - * Edje allows one to build scalable interfaces. Scale factors, which - * are set to neutral values by default (no scaling, actual sizes), - * are of two types: global and individual. Edje's global scaling - * factor will affect all its objects which hadn't their individual - * scaling factors altered from the default value. If they had it set - * differently, that factor will override the global one. - * - * Scaling affects the values of min/max object sizes, which are - * multiplied by it. Font sizes are scaled, too. - * - * This property can be retrieved with edje_scale_get(). - * - * @see edje_scale_get(). - * - */ EAPI void edje_scale_set(double scale) { @@ -193,39 +138,12 @@ edje_scale_set(double scale) edje_object_calc_force(data); } -/** - * @brief Get edje's global scaling factor. - * - * @return The edje (global) scale factor. The defaul is 1.0. - * - * This function returns edje's global scale factor, which can be set - * by edje_scale_set(). - * - * @see edje_scale_set(). - * - */ EAPI double edje_scale_get(void) { return TO_DOUBLE(_edje_scale); } -/** - * @brief Set the edje object's scaling factor. - * - * @param obj The edje object's reference. - * @param scale The edje object scale factor. The defaul is 1.0. - * - * This function sets the individual scale factor of the @a obj edje - * object. This property (or edje's global scale factor, when - * applicable), will affect this object's parts. However, only parts - * which, at the EDC language level, were declared which the "scale" - * attribute set to 1 (default is zero) will be affected. - * - * This scale factor can be retrieved with edje_object_scale_get(). - * @see edje_object_scale_get(). - * - */ EAPI Eina_Bool edje_object_scale_set(Evas_Object *obj, double scale) { @@ -239,17 +157,6 @@ edje_object_scale_set(Evas_Object *obj, double scale) return EINA_TRUE; } -/** - * @brief Get the edje object's scaling factor. - * - * @param obj The edje object's reference. - * - * This function returns the individual scale factor of the @a obj - * edje object, which can be set by edje_object_scale_set(). - * - * @see edje_object_scale_set(). - * - */ EAPI double edje_object_scale_get(const Evas_Object *obj) { @@ -260,15 +167,6 @@ edje_object_scale_get(const Evas_Object *obj) return TO_DOUBLE(ed->scale); } -/** - * Get the RTL orientation for this object. - * - * You can RTL orientation explicitly with edje_object_mirrored_set. - * - * @param obj the smart object - * @return if flag is set or not. - * @since 1.1.0 - */ EAPI Eina_Bool edje_object_mirrored_get(const Evas_Object *obj) { @@ -289,13 +187,6 @@ _edje_object_orientation_inform(Evas_Object *obj) edje_object_signal_emit(obj, "edje,state,ltr", "edje"); } -/** - * Set the RTL orientation for this object. - * - * @param obj the smart object - * @rtl new value of flag EINA_TRUE/EINA_FALSE - * @since 1.1.0 - */ EAPI void edje_object_mirrored_set(Evas_Object *obj, Eina_Bool rtl) { @@ -327,30 +218,6 @@ edje_object_mirrored_set(Evas_Object *obj, Eina_Bool rtl) return; } -/** - * @brief Get Edje object data. - * - * @param obj A valid Evas_Object handle - * @param key The data key - * @return The data string - * - * This function fetches data specified at the object level. - * - * In EDC this comes from a data block within the group block that @a - * obj was loaded from. E.g. - * - * @code - * collections { - * group { - * name: "a_group"; - * data { - * item: "key1" "value1"; - * item: "key2" "value2"; - * } - * } - * } - * @endcode - */ EAPI const char * edje_object_data_get(const Evas_Object *obj, const char *key) { @@ -364,16 +231,6 @@ edje_object_data_get(const Evas_Object *obj, const char *key) return edje_string_get(eina_hash_find(ed->collection->data, key)); } -/** - * @brief Freeze object. - * - * @param obj A valid Evas_Object handle - * @return The frozen state or 0 on Error - * - * This function puts all changes on hold. Successive freezes will - * nest, requiring an equal number of thaws. - * - */ EAPI int edje_object_freeze(Evas_Object *obj) { @@ -392,15 +249,6 @@ edje_object_freeze(Evas_Object *obj) return _edje_freeze(ed); } -/** - * @brief Thaw object. - * - * @param obj A valid Evas_Object handle - * @return The frozen state or 0 on Error - * - * This allows frozen changes to occur. - * - */ EAPI int edje_object_thaw(Evas_Object *obj) { @@ -420,42 +268,6 @@ edje_object_thaw(Evas_Object *obj) return _edje_thaw(ed); } -/** - * @brief Set Edje color class. - * - * @param color_class - * @param r Object Red value - * @param g Object Green value - * @param b Object Blue value - * @param a Object Alpha value - * @param r2 Outline Red value - * @param g2 Outline Green value - * @param b2 Outline Blue value - * @param a2 Outline Alpha value - * @param r3 Shadow Red value - * @param g3 Shadow Green value - * @param b3 Shadow Blue value - * @param a3 Shadow Alpha value - * - * This function sets the color values for a process level color - * class. This will cause all edje parts in the current process that - * have the specified color class to have their colors multiplied by - * these values. (Object level color classes set by - * edje_object_color_class_set() will override the values set by this - * function). - * - * The first color is the object, the second is the text outline, and - * the third is the text shadow. (Note that the second two only apply - * to text parts). - * - * Setting color emits a signal "color_class,set" with source being - * the given color class in all objects. - * - * @see edje_color_class_set(). - * - * @note unlike Evas, Edje colors are @b not pre-multiplied. That is, - * half-transparent white is 255 255 255 128. - */ EAPI Eina_Bool edje_color_class_set(const char *color_class, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3) { @@ -525,40 +337,6 @@ edje_color_class_set(const char *color_class, int r, int g, int b, int a, int r2 return EINA_TRUE; } -/** - * @brief Get Edje color class. - * - * @param color_class - * @param r Object Red value - * @param g Object Green value - * @param b Object Blue value - * @param a Object Alpha value - * @param r2 Outline Red value - * @param g2 Outline Green value - * @param b2 Outline Blue value - * @param a2 Outline Alpha value - * @param r3 Shadow Red value - * @param g3 Shadow Green value - * @param b3 Shadow Blue value - * @param a3 Shadow Alpha value - * - * @return EINA_TRUE if found or EINA_FALSE if not found and all - * values are zeroed. - * - * This function gets the color values for a process level color - * class. This value is the globally set and not per-object, that is, - * the value that would be used by objects if they did not override with - * edje_object_color_class_set(). - * - * The first color is the object, the second is the text outline, and - * the third is the text shadow. (Note that the second two only apply - * to text parts). - * - * @see edje_color_class_set(). - * - * @note unlike Evas, Edje colors are @b not pre-multiplied. That is, - * half-transparent white is 255 255 255 128. - */ EAPI Eina_Bool edje_color_class_get(const char *color_class, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3) { @@ -593,17 +371,6 @@ edje_color_class_get(const char *color_class, int *r, int *g, int *b, int *a, in } } -/** - * @brief Delete edje color class. - * - * @param color_class - * - * This function deletes any values at the process level for the - * specified color class. - * - * Deleting color emits a signal "color_class,del" with source being - * the given color class in all objects. - */ void edje_color_class_del(const char *color_class) { @@ -635,16 +402,6 @@ edje_color_class_del(const char *color_class) } } -/** - * @brief Lists color classes. - * - * @return A list of color class names (strings). These strings and - * the list must be free()'d by the caller. - * - * This function lists all color classes known about by the current - * process. - * - */ Eina_List * edje_color_class_list(void) { @@ -667,39 +424,6 @@ _edje_color_class_list_foreach(const Eina_Hash *hash __UNUSED__, const void *key return EINA_TRUE; } -/** - * @brief Sets the object color class. - * - * @param obj A valid Evas_Object handle - * @param color_class - * @param r Object Red value - * @param g Object Green value - * @param b Object Blue value - * @param a Object Alpha value - * @param r2 Outline Red value - * @param g2 Outline Green value - * @param b2 Outline Blue value - * @param a2 Outline Alpha value - * @param r3 Shadow Red value - * @param g3 Shadow Green value - * @param b3 Shadow Blue value - * @param a3 Shadow Alpha value - * - * This function sets the color values for an object level color - * class. This will cause all edje parts in the specified object that - * have the specified color class to have their colors multiplied by - * these values. - * - * The first color is the object, the second is the text outline, and - * the third is the text shadow. (Note that the second two only apply - * to text parts). - * - * Setting color emits a signal "color_class,set" with source being - * the given color. - * - * @note unlike Evas, Edje colors are @b not pre-multiplied. That is, - * half-transparent white is 255 255 255 128. - */ EAPI Eina_Bool edje_object_color_class_set(Evas_Object *obj, const char *color_class, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3) { @@ -794,38 +518,6 @@ edje_object_color_class_set(Evas_Object *obj, const char *color_class, int r, in return EINA_TRUE; } -/** - * @brief Gets the object color class. - * - * @param obj A valid Evas_Object handle - * @param color_class - * @param r Object Red value - * @param g Object Green value - * @param b Object Blue value - * @param a Object Alpha value - * @param r2 Outline Red value - * @param g2 Outline Green value - * @param b2 Outline Blue value - * @param a2 Outline Alpha value - * @param r3 Shadow Red value - * @param g3 Shadow Green value - * @param b3 Shadow Blue value - * @param a3 Shadow Alpha value - * - * @return EINA_TRUE if found or EINA_FALSE if not found and all - * values are zeroed. - * - * This function gets the color values for an object level color - * class. If no explicit object color is set, then global values will - * be used. - * - * The first color is the object, the second is the text outline, and - * the third is the text shadow. (Note that the second two only apply - * to text parts). - * - * @note unlike Evas, Edje colors are @b not pre-multiplied. That is, - * half-transparent white is 255 255 255 128. - */ EAPI Eina_Bool edje_object_color_class_get(const Evas_Object *obj, const char *color_class, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3) { @@ -856,18 +548,6 @@ edje_object_color_class_get(const Evas_Object *obj, const char *color_class, int } } -/** - * @brief Delete the object color class. - * - * @param obj The edje object's reference. - * @param color_class The color class to be deleted. - * - * This function deletes any values at the object level for the - * specified object and color class. - * - * Deleting color emits a signal "color_class,del" with source being - * the given color. - */ void edje_object_color_class_del(Evas_Object *obj, const char *color_class) { @@ -907,19 +587,6 @@ edje_object_color_class_del(Evas_Object *obj, const char *color_class) _edje_emit(ed, "color_class,del", color_class); } -/** - * @brief Set the Edje text class. - * - * @param text_class The text class name - * @param font The font name - * @param size The font size - * - * This function sets updates all edje members which belong to this - * text class with the new font attributes. - * - * @see edje_text_class_get(). - * - */ EAPI Eina_Bool edje_text_class_set(const char *text_class, const char *font, Evas_Font_Size size) { @@ -982,15 +649,6 @@ edje_text_class_set(const char *text_class, const char *font, Evas_Font_Size siz return EINA_TRUE; } -/** - * @brief Delete the text class. - * - * @param text_class The text class name string - * - * This function deletes any values at the process level for the - * specified text class. - * - */ void edje_text_class_del(const char *text_class) { @@ -1023,16 +681,6 @@ edje_text_class_del(const char *text_class) } } -/** - * @brief List text classes. - * - * @return A list of text class names (strings). These strings are - * stringshares and the list must be free()'d by the caller. - * - * This function lists all text classes known about by the current - * process. - * - */ Eina_List * edje_text_class_list(void) { @@ -1054,17 +702,6 @@ _edje_text_class_list_foreach(const Eina_Hash *hash __UNUSED__, const void *key, return EINA_TRUE; } -/** - * @brief Sets Edje text class. - * - * @param obj A valid Evas_Object handle - * @param text_class The text class name - * @param font Font name - * @param size Font Size - * - * This function sets the text class for the Edje. - * - */ EAPI Eina_Bool edje_object_text_class_set(Evas_Object *obj, const char *text_class, const char *font, Evas_Font_Size size) { @@ -1139,17 +776,6 @@ edje_object_text_class_set(Evas_Object *obj, const char *text_class, const char return EINA_TRUE; } -/** - * @brief Check if Edje part exists. - * - * @param obj A valid Evas_Object handle - * @param part The part name to check - * - * @return 0 on Error, 1 if Edje part exists. - * - * This function returns if a part exists in the edje. - * - */ EAPI Eina_Bool edje_object_part_exists(const Evas_Object *obj, const char *part) { @@ -1163,22 +789,6 @@ edje_object_part_exists(const Evas_Object *obj, const char *part) return EINA_TRUE; } -/** - * @brief Gets the evas object from a part. - * - * @param obj A valid Evas_Object handle - * @param part The Edje part - * @return Returns the Evas_Object corresponding to the given part, or - * NULL on failure (if the part doesn't exist) - * - * This functio gets the Evas_Object corresponding to a given part. - * - * You should never modify the state of the returned object (with - * evas_object_move() or evas_object_hide() for example), but you can - * safely query info about its current state (with - * evas_object_visible_get() or evas_object_color_get() for example) - * - **/ EAPI const Evas_Object * edje_object_part_object_get(const Evas_Object *obj, const char *part) { @@ -1196,21 +806,6 @@ edje_object_part_object_get(const Evas_Object *obj, const char *part) return rp->object; } -/** - * @brief Get the geometry of an Edje part. - * - * @param obj A valid Evas_Object handle - * @param part The Edje part - * @param x The x coordinate pointer - * @param y The y coordinate pointer - * @param w The width pointer - * @param h The height pointer - * - * This function gets the geometry of an Edje part. - * - * It is valid to pass NULL as any of @a x, @a y, @a w or @a h, whose - * values you are uninterested in. - */ EAPI Eina_Bool edje_object_part_geometry_get(const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h ) { @@ -1246,16 +841,6 @@ edje_object_part_geometry_get(const Evas_Object *obj, const char *part, Evas_Coo return EINA_TRUE; } -/** - * @brief Set the function that provides item objects for named items in an edje entry text - * - * @param obj A valid Evas Object handle - * @param func The function to call (or NULL to disable) to get item objects - * @param data The data pointer to pass to the @p func callback - * - * Item objects may be deleted any time by Edje, and will be deleted when the - * Edje object is deleted (or file is set to a new file). - */ EAPI void edje_object_item_provider_set(Evas_Object *obj, Edje_Item_Provider_Cb func, void *data) { @@ -1268,19 +853,6 @@ edje_object_item_provider_set(Evas_Object *obj, Edje_Item_Provider_Cb func, void } /* FIXDOC: New Function */ -/** - * @brief Set the object text callback. - * - * @param obj A valid Evas_Object handle - * @param func The callback function to handle the text change - * @param data The data associated to the callback function. - * - * This function gets the geometry of an Edje part - * - * It is valid to pass NULL as any of @a x, @a y, @a w or @a h, whose - * values you are uninterested in. - * - */ EAPI void edje_object_text_change_cb_set(Evas_Object *obj, Edje_Text_Change_Cb func, void *data) { @@ -1349,17 +921,6 @@ edje_object_part_text_set(Evas_Object *obj, const char *part, const char *text) return _edje_object_part_text_raw_set(obj, rp, part, text); } -/** - * @brief Return the text of the object part. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * - * @return The text string - * - * This function returns the text associated to the object part. - * - */ EAPI const char * edje_object_part_text_get(const Evas_Object *obj, const char *part) { @@ -1493,20 +1054,6 @@ _edje_text_unescape(const char *text) return ret; } -/** - * @brief Sets the raw (non escaped) text for an object part. - * - * @param obj A valid Evas Object handle - * @param part The part name - * @param text_to_escape The text string - * - * This funciton will do escape for you if it is a TEXTBLOCK part, - * that is, if text contain tags, these tags will not be - * interpreted/parsed by TEXTBLOCK. - * - * @see edje_object_part_text_unescaped_get(). - * - */ EAPI Eina_Bool edje_object_part_text_unescaped_set(Evas_Object *obj, const char *part, const char *text_to_escape) { @@ -1530,22 +1077,6 @@ edje_object_part_text_unescaped_set(Evas_Object *obj, const char *part, const ch return ret; } -/** - * @brief Returns the text of the object part, without escaping. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @return The @b allocated text string without escaping, or NULL on - * problems. - * - * This function is the counterpart of - * edje_object_part_text_unescaped_set(). Please notice that the - * result is newly allocated memory and should be released with free() - * when done. - * - * @see edje_object_part_text_unescaped_set(). - * - */ EAPI char * edje_object_part_text_unescaped_get(const Evas_Object *obj, const char *part) { @@ -1577,16 +1108,6 @@ edje_object_part_text_unescaped_get(const Evas_Object *obj, const char *part) return NULL; } -/** - * @brief Return the selection text of the object part. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @return The text string - * - * This function returns selection text of the object part. - * - */ EAPI const char * edje_object_part_text_selection_get(const Evas_Object *obj, const char *part) { @@ -1602,15 +1123,6 @@ edje_object_part_text_selection_get(const Evas_Object *obj, const char *part) return NULL; } -/** - * @brief Set the selection to be none. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * - * This function sets the selection text to be none. - * - */ EAPI void edje_object_part_text_select_none(const Evas_Object *obj, const char *part) { @@ -1625,15 +1137,6 @@ edje_object_part_text_select_none(const Evas_Object *obj, const char *part) _edje_entry_select_none(rp); } -/** - * @brief Set the selection to be everything. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * - * This function selects all text of the object of the part. - * - */ EAPI void edje_object_part_text_select_all(const Evas_Object *obj, const char *part) { @@ -1648,17 +1151,6 @@ edje_object_part_text_select_all(const Evas_Object *obj, const char *part) _edje_entry_select_all(rp); } -/** - * @brief Insert text for an object part. - * - * @param obj A valid Evas Object handle - * @param part The part name - * @param text The text string - * - * This function inserts the text for an object part just before the - * cursor position. - * - */ EAPI void edje_object_part_text_insert(Evas_Object *obj, const char *part, const char *text) { @@ -1681,17 +1173,6 @@ edje_object_part_text_insert(Evas_Object *obj, const char *part, const char *tex rp->edje->text_change.func(rp->edje->text_change.data, obj, part); } -/** - * @brief Return a list of char anchor names. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * - * @return The list of anchors (const char *), do not modify! - * - * This function returns a list of char anchor names. - * - */ EAPI const Eina_List * edje_object_part_text_anchor_list_get(const Evas_Object *obj, const char *part) { @@ -1707,20 +1188,6 @@ edje_object_part_text_anchor_list_get(const Evas_Object *obj, const char *part) return NULL; } -/** - * @brief Return a list of Evas_Textblock_Rectangle anchor rectangles. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param anchor The anchor name - * - * @return The list of anchor rects (const Evas_Textblock_Rectangle - * *), do not modify! Geometry is relative to entry part. - * - * This function return a list of Evas_Textblock_Rectangle anchor - * rectangles. - * - */ EAPI const Eina_List * edje_object_part_text_anchor_geometry_get(const Evas_Object *obj, const char *part, const char *anchor) { @@ -1736,17 +1203,6 @@ edje_object_part_text_anchor_geometry_get(const Evas_Object *obj, const char *pa return NULL; } -/** - * @brief Return a list of char item names. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * - * @return The list of items (const char *), do not modify! - * - * This function returns a list of char item names. - * - */ EAPI const Eina_List * edje_object_part_text_item_list_get(const Evas_Object *obj, const char *part) { @@ -1762,23 +1218,6 @@ edje_object_part_text_item_list_get(const Evas_Object *obj, const char *part) return NULL; } -/** - * @brief Return item geometry. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param item The item name - * @param cx Item x return (relative to entry part) - * @param cy Item y return (relative to entry part) - * @param cw Item width return - * @param ch Item height return - * - * @return 1 if item exists, 0 if not - * - * This function return a list of Evas_Textblock_Rectangle item - * rectangles. - * - */ EAPI Eina_Bool edje_object_part_text_item_geometry_get(const Evas_Object *obj, const char *part, const char *item, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) { @@ -1794,18 +1233,6 @@ edje_object_part_text_item_geometry_get(const Evas_Object *obj, const char *part return EINA_FALSE; } -/** - * @brief Returns the cursor geometry of the part relative to the edje - * object. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param x Cursor X position - * @param y Cursor Y position - * @param w Cursor width - * @param h Cursor height - * - */ EAPI void edje_object_part_text_cursor_geometry_get(const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) { @@ -1829,14 +1256,6 @@ edje_object_part_text_cursor_geometry_get(const Evas_Object *obj, const char *pa return; } -/** - * @brief Enables selection if the entry is an EXPLICIT selection mode - * type. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param allow EINA_TRUE to enable, EINA_FALSE otherwise - */ EAPI void edje_object_part_text_select_allow_set(const Evas_Object *obj, const char *part, Eina_Bool allow) { @@ -1851,12 +1270,6 @@ edje_object_part_text_select_allow_set(const Evas_Object *obj, const char *part, _edje_entry_select_allow_set(rp, allow); } -/** - * @brief Aborts any selection action on a part. - * - * @param obj A valid Evas_Object handle - * @param part The part name - */ EAPI void edje_object_part_text_select_abort(const Evas_Object *obj, const char *part) { @@ -1871,12 +1284,6 @@ edje_object_part_text_select_abort(const Evas_Object *obj, const char *part) _edje_entry_select_abort(rp); } -/** - * @brief Starts selecting at current cursor position - * - * @param obj A valid Evas_Object handle - * @param part The part name - */ EAPI void edje_object_part_text_select_begin(const Evas_Object *obj, const char *part) { @@ -1891,12 +1298,6 @@ edje_object_part_text_select_begin(const Evas_Object *obj, const char *part) _edje_entry_select_begin(rp); } -/** - * @brief Extends the current selection to the current cursor position - * - * @param obj A valid Evas_Object handle - * @param part The part name - */ EAPI void edje_object_part_text_select_extend(const Evas_Object *obj, const char *part) { @@ -1911,14 +1312,6 @@ edje_object_part_text_select_extend(const Evas_Object *obj, const char *part) _edje_entry_select_extend(rp); } -/** - * @brief Advances the cursor to the next cursor position. - * @see evas_textblock_cursor_char_next - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param cur The edje cursor to advance - */ EAPI Eina_Bool edje_object_part_text_cursor_next(Evas_Object *obj, const char *part, Edje_Cursor cur) { @@ -1936,14 +1329,6 @@ edje_object_part_text_cursor_next(Evas_Object *obj, const char *part, Edje_Curso return EINA_FALSE; } -/** - * @brief Moves the cursor to the previous char - * @see evas_textblock_cursor_char_prev - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param cur the edje cursor to work on - */ EAPI Eina_Bool edje_object_part_text_cursor_prev(Evas_Object *obj, const char *part, Edje_Cursor cur) { @@ -1961,13 +1346,6 @@ edje_object_part_text_cursor_prev(Evas_Object *obj, const char *part, Edje_Curso return EINA_FALSE; } -/** - * @brief Move the cursor to the char above the current cursor position. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param cur the edje cursor to work on - */ EAPI Eina_Bool edje_object_part_text_cursor_up(Evas_Object *obj, const char *part, Edje_Cursor cur) { @@ -1985,13 +1363,6 @@ edje_object_part_text_cursor_up(Evas_Object *obj, const char *part, Edje_Cursor return EINA_FALSE; } -/** - * @brief Moves the cursor to the char below the current cursor position. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param cur the edje cursor to work on - */ EAPI Eina_Bool edje_object_part_text_cursor_down(Evas_Object *obj, const char *part, Edje_Cursor cur) { @@ -2009,14 +1380,6 @@ edje_object_part_text_cursor_down(Evas_Object *obj, const char *part, Edje_Curso return EINA_FALSE; } -/** - * @brief Moves the cursor to the beginning of the text part - * @see evas_textblock_cursor_paragraph_first - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param cur the edje cursor to work on - */ EAPI void edje_object_part_text_cursor_begin_set(Evas_Object *obj, const char *part, Edje_Cursor cur) { @@ -2033,14 +1396,6 @@ edje_object_part_text_cursor_begin_set(Evas_Object *obj, const char *part, Edje_ } } -/** - * @brief Moves the cursor to the end of the text part. - * @see evas_textblock_cursor_paragraph_last - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param cur the edje cursor to work on - */ EAPI void edje_object_part_text_cursor_end_set(Evas_Object *obj, const char *part, Edje_Cursor cur) { @@ -2057,14 +1412,6 @@ edje_object_part_text_cursor_end_set(Evas_Object *obj, const char *part, Edje_Cu } } -/** - * @brief Copy the cursor to another cursor. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param sry the cursor to copy from - * @param dst the cursor to copy to - */ EAPI void edje_object_part_text_cursor_copy(Evas_Object *obj, const char *part, Edje_Cursor src, Edje_Cursor dst) { @@ -2081,14 +1428,6 @@ edje_object_part_text_cursor_copy(Evas_Object *obj, const char *part, Edje_Curso } } -/** - * @brief Move the cursor to the beginning of the line. - * @see evas_textblock_cursor_line_char_first - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param cur the edje cursor to work on - */ EAPI void edje_object_part_text_cursor_line_begin_set(Evas_Object *obj, const char *part, Edje_Cursor cur) { @@ -2105,14 +1444,6 @@ edje_object_part_text_cursor_line_begin_set(Evas_Object *obj, const char *part, } } -/** - * @brief Move the cursor to the end of the line. - * @see evas_textblock_cursor_line_char_last - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param cur the edje cursor to work on - */ EAPI void edje_object_part_text_cursor_line_end_set(Evas_Object *obj, const char *part, Edje_Cursor cur) { @@ -2129,18 +1460,6 @@ edje_object_part_text_cursor_line_end_set(Evas_Object *obj, const char *part, Ed } } -/** - * Position the given cursor to a X,Y position. - * - * This is frequently used with the user cursor. - * - * @param obj An Edje object. - * @param part The part containing the object. - * @param cur The cursor to adjust. - * @param x X Coordinate. - * @param y Y Coordinate. - * @return True on success, false on error. - */ EAPI Eina_Bool edje_object_part_text_cursor_coord_set(Evas_Object *obj, const char *part, Edje_Cursor cur, Evas_Coord x, Evas_Coord y) @@ -2159,15 +1478,6 @@ edje_object_part_text_cursor_coord_set(Evas_Object *obj, const char *part, return EINA_FALSE; } -/** - * @brief Returns whether the cursor points to a format. - * @see evas_textblock_cursor_is_format - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param cur The cursor to adjust. - * @return EINA_TRUE if it's true, EINA_FALSE otherwise. - */ EAPI Eina_Bool edje_object_part_text_cursor_is_format_get(const Evas_Object *obj, const char *part, Edje_Cursor cur) { @@ -2185,15 +1495,6 @@ edje_object_part_text_cursor_is_format_get(const Evas_Object *obj, const char *p return EINA_FALSE; } -/** - * @brief Return true if the cursor points to a visible format - * For example \t, \n, item and etc. - * @see evas_textblock_cursor_format_is_visible_get - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param cur The cursor to adjust. - */ EAPI Eina_Bool edje_object_part_text_cursor_is_visible_format_get(const Evas_Object *obj, const char *part, Edje_Cursor cur) { @@ -2211,14 +1512,6 @@ edje_object_part_text_cursor_is_visible_format_get(const Evas_Object *obj, const return 0; } -/** - * @brief Returns the content (char) at the cursor position. - * @see evas_textblock_cursor_content_get - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param cur The cursor to use - */ EAPI const char * edje_object_part_text_cursor_content_get(const Evas_Object *obj, const char *part, Edje_Cursor cur) { @@ -2236,15 +1529,6 @@ edje_object_part_text_cursor_content_get(const Evas_Object *obj, const char *par return NULL; } -/** - * @brief Sets the cursor position to the given value - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param cur The cursor to move - * @param pos the position of the cursor - * @since 1.1.0 - */ EAPI void edje_object_part_text_cursor_pos_set(Evas_Object *obj, const char *part, Edje_Cursor cur, int pos) { @@ -2261,15 +1545,6 @@ edje_object_part_text_cursor_pos_set(Evas_Object *obj, const char *part, Edje_Cu } } -/** - * @brief Retrieves the current position of the cursor - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param cur The cursor to get the position - * @return The cursor position - * @since 1.1.0 - */ EAPI int edje_object_part_text_cursor_pos_get(const Evas_Object *obj, const char *part, Edje_Cursor cur) { @@ -2287,30 +1562,6 @@ edje_object_part_text_cursor_pos_get(const Evas_Object *obj, const char *part, E return 0; } -/** - * Add a filter function for newly inserted text. - * - * Whenever text is inserted (not the same as set) into the given @p part, - * the list of filter functions will be called to decide if and how the new - * text will be accepted. - * There are three types of filters, EDJE_TEXT_FILTER_TEXT, - * EDJE_TEXT_FILTER_FORMAT and EDJE_TEXT_FILTER_MARKUP. - * The text parameter in the @p func filter can be modified by the user and - * it's up to him to free the one passed if he's to change the pointer. If - * doing so, the newly set text should be malloc'ed, as once all the filters - * are called Edje will free it. - * If the text is to be rejected, freeing it and setting the pointer to NULL - * will make Edje break out of the filter cycle and reject the inserted - * text. - * - * @see edje_object_text_insert_filter_callback_del - * @see edje_object_text_insert_filter_callback_del_full - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param func The callback function that will act as filter - * @param data User provided data to pass to the filter function - */ EAPI void edje_object_text_insert_filter_callback_add(Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data) { @@ -2327,21 +1578,6 @@ edje_object_text_insert_filter_callback_add(Evas_Object *obj, const char *part, eina_list_append(ed->text_insert_filter_callbacks, cb); } -/** - * Delete a function from the filter list. - * - * Delete the given @p func filter from the list in @p part. Returns - * the user data pointer given when added. - * - * @see edje_object_text_insert_filter_callback_add - * @see edje_object_text_insert_filter_callback_del_full - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param func The function callback to remove - * - * @return The user data pointer if succesful, or NULL otherwise - */ EAPI void * edje_object_text_insert_filter_callback_del(Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func) { @@ -2366,23 +1602,6 @@ edje_object_text_insert_filter_callback_del(Evas_Object *obj, const char *part, return NULL; } -/** - * Delete a function and matching user data from the filter list. - * - * Delete the given @p func filter and @p data user data from the list - * in @p part. - * Returns the user data pointer given when added. - * - * @see edje_object_text_insert_filter_callback_add - * @see edje_object_text_insert_filter_callback_del - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param func The function callback to remove - * @param data The data passed to the callback function - * - * @return The same data pointer if succesful, or NULL otherwise - */ EAPI void * edje_object_text_insert_filter_callback_del_full(Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data) { @@ -2408,20 +1627,6 @@ edje_object_text_insert_filter_callback_del_full(Evas_Object *obj, const char *p return NULL; } -/** - * @brief Swallows an object into the edje. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param obj_swallow The object to swallow - * - * Swallows the object into the edje part so that all geometry changes - * for the part affect the swallowed object. (e.g. resize, move, show, - * raise/lower, etc.). - * - * If an object has already been swallowed into this part, then it - * will first be unswallowed before the new object is swallowed. - */ EAPI Eina_Bool edje_object_part_swallow(Evas_Object *obj, const char *part, Evas_Object *obj_swallow) { @@ -2465,15 +1670,6 @@ _recalc_extern_parent(Evas_Object *obj) _edje_recalc(ed); } -/** - * @brief Set the object minimum size. - * - * @param obj A valid Evas_Object handle - * @param minw The minimum width - * @param minh The minimum height - * - * This sets the minimum size restriction for the object. - */ EAPI void edje_extern_object_min_size_set(Evas_Object *obj, Evas_Coord minw, Evas_Coord minh) { @@ -2490,15 +1686,6 @@ edje_extern_object_min_size_set(Evas_Object *obj, Evas_Coord minw, Evas_Coord mi } } -/** - * @brief Set the object maximum size. - * - * @param obj A valid Evas_Object handle - * @param maxw The maximum width - * @param maxh The maximum height - * - * This sets the maximum size restriction for the object. - */ EAPI void edje_extern_object_max_size_set(Evas_Object *obj, Evas_Coord maxw, Evas_Coord maxh) { @@ -2515,19 +1702,6 @@ edje_extern_object_max_size_set(Evas_Object *obj, Evas_Coord maxw, Evas_Coord ma } } -/** - * @brief Set the object aspect size. - * - * @param obj A valid Evas_Object handle - * @param aspect The aspect control axes - * @param aw The aspect radio width - * @param ah The aspect ratio height - * - * This sets the desired aspect ratio to keep an object that will be - * swallowed by Edje. The width and height define a preferred size - * ASPECT and the object may be scaled to be larger or smaller, but - * retaining the relative scale of both aspect width and height. - */ EAPI void edje_extern_object_aspect_set(Evas_Object *obj, Edje_Aspect_Control aspect, Evas_Coord aw, Evas_Coord ah) { @@ -2691,28 +1865,6 @@ _edje_box_layout_external_new(const char *name, Evas_Object_Box_Layout func, voi return l; } -/** - * @brief Registers a custom layout to be used in edje boxes. - * - * @param name The name of the layout - * @param func The function defining the layout - * @param layout_data_get This function gets the custom data pointer - * for func - * @param layout_data_free Passed to func to free its private data - * when needed - * @param free_data Frees data - * @param data Private pointer passed to layout_data_get - * - * This function registers custom layouts that can be referred from - * themes by the registered name. The Evas_Object_Box_Layout - * functions receive two pointers for internal use, one being private - * data, and the other the function to free that data when it's not - * longer needed. From Edje, this private data will be retrieved by - * calling layout_data_get, and layout_data_free will be the free - * function passed to func. layout_data_get will be called with data - * as its parameter, and this one will be freed by free_data whenever - * the layout is unregistered from Edje. - */ EAPI void edje_box_layout_register(const char *name, Evas_Object_Box_Layout func, void *(*layout_data_get)(void *), void (*layout_data_free)(void *), void (*free_data)(void *), void *data) { @@ -2771,14 +1923,6 @@ edje_box_layout_register(const char *name, Evas_Object_Box_Layout func, void *(* } } -/** - * @brief Unswallow an object. - * - * @param obj A valid Evas_Object handle - * @param obj_swallow The swallowed object - * - * Causes the edje to regurgitate a previously swallowed object. :) - */ EAPI void edje_object_part_unswallow(Evas_Object *obj __UNUSED__, Evas_Object *obj_swallow) { @@ -2826,13 +1970,6 @@ edje_object_part_unswallow(Evas_Object *obj __UNUSED__, Evas_Object *obj_swallow } } -/** - * @brief Get the object currently swallowed by a part. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @return The swallowed object, or NULL if there is none. - */ EAPI Evas_Object * edje_object_part_swallow_get(const Evas_Object *obj, const char *part) { @@ -2850,16 +1987,6 @@ edje_object_part_swallow_get(const Evas_Object *obj, const char *part) return rp->swallowed_object; } -/** - * @brief Get the minimum size for an object. - * - * @param obj A valid Evas_Object handle - * @param minw Minimum width pointer - * @param minh Minimum height pointer - * - * Gets the object's minimum size values from the Edje. These are set - * to zero if no Edje is connected to the Evas Object. - */ EAPI void edje_object_size_min_get(const Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh) { @@ -2876,16 +2003,6 @@ edje_object_size_min_get(const Evas_Object *obj, Evas_Coord *minw, Evas_Coord *m if (minh) *minh = ed->collection->prop.min.h; } -/** - * @brief Get the maximum size for an object. - * - * @param obj A valid Evas_Object handle - * @param maxw Maximum width pointer - * @param maxh Maximum height pointer - * - * Gets the object's maximum size values from the Edje. These are set - * to zero if no Edje is connected to the Evas Object. - */ EAPI void edje_object_size_max_get(const Evas_Object *obj, Evas_Coord *maxw, Evas_Coord *maxh) { @@ -2922,14 +2039,6 @@ edje_object_size_max_get(const Evas_Object *obj, Evas_Coord *maxw, Evas_Coord *m } } -/** - * @brief Force a Size/Geometry calculation. - * - * @param obj A valid Evas_Object handle - * - * Forces the object @p obj to recalculation layout regardless of - * freeze/thaw. - */ EAPI void edje_object_calc_force(Evas_Object *obj) { @@ -2955,15 +2064,6 @@ edje_object_calc_force(Evas_Object *obj) _edje_freeze_val = pf2; } -/** - * @brief Calculate minimum size. - * - * @param obj A valid Evas_Object handle - * @param minw Minimum width pointer - * @param minh Minimum height pointer - * - * Calculates the object's minimum size ?! - */ EAPI void edje_object_size_min_calc(Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh) { @@ -3170,17 +2270,6 @@ edje_object_size_min_restricted_calc(Evas_Object *obj, Evas_Coord *minw, Evas_Co ed->calc_only = 0; } -/** - * @brief Returns the state of the Edje part. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param val_ret - * - * @return The part state:\n - * "default" for the default state\n - * "" for other states - */ /* FIXME: Correctly return other states */ EAPI const char * edje_object_part_state_get(const Evas_Object *obj, const char *part, double *val_ret) @@ -3226,17 +2315,6 @@ edje_object_part_state_get(const Evas_Object *obj, const char *part, double *val return ""; } -/** - * @brief Determine dragable directions. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * - * @return 0: Not dragable\n - * 1: Dragable in X direction\n - * 2: Dragable in Y direction\n - * 3: Dragable in X & Y directions - */ EAPI Edje_Drag_Dir edje_object_part_drag_dir_get(const Evas_Object *obj, const char *part) { @@ -3257,16 +2335,6 @@ edje_object_part_drag_dir_get(const Evas_Object *obj, const char *part) return EDJE_DRAG_DIR_NONE; } -/** - * @brief Set the dragable object location. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param dx The x value - * @param dy The y value - * - * Places the dragable object at the given location. - */ EAPI Eina_Bool edje_object_part_drag_value_set(Evas_Object *obj, const char *part, double dx, double dy) { @@ -3297,16 +2365,6 @@ edje_object_part_drag_value_set(Evas_Object *obj, const char *part, double dx, d return EINA_TRUE; } -/** - * @brief Get the dragable object location. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param dx The X value pointer - * @param dy The Y value pointer - * - * Gets the drag location values. - */ /* FIXME: Should this be x and y instead of dx/dy? */ EAPI Eina_Bool edje_object_part_drag_value_get(const Evas_Object *obj, const char *part, double *dx, double *dy) @@ -3342,16 +2400,6 @@ edje_object_part_drag_value_get(const Evas_Object *obj, const char *part, double return EINA_TRUE; } -/** - * @brief Set the dragable object size. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param dw The drag width - * @param dh The drag height - * - * Sets the size of the dragable object. - */ EAPI Eina_Bool edje_object_part_drag_size_set(Evas_Object *obj, const char *part, double dw, double dh) { @@ -3378,16 +2426,6 @@ edje_object_part_drag_size_set(Evas_Object *obj, const char *part, double dw, do return EINA_TRUE; } -/** - * @brief Get the dragable object size. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param dw The drag width pointer - * @param dh The drag height pointer - * - * Gets the dragable object size. - */ EAPI Eina_Bool edje_object_part_drag_size_get(const Evas_Object *obj, const char *part, double *dw, double *dh) { @@ -3417,16 +2455,6 @@ edje_object_part_drag_size_get(const Evas_Object *obj, const char *part, double return EINA_TRUE; } -/** - * @brief Sets the drag step increment. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param dx The x step amount - * @param dy The y step amount - * - * Sets the x,y step increments for a dragable object. - */ EAPI Eina_Bool edje_object_part_drag_step_set(Evas_Object *obj, const char *part, double dx, double dy) { @@ -3450,16 +2478,6 @@ edje_object_part_drag_step_set(Evas_Object *obj, const char *part, double dx, do return EINA_TRUE; } -/** - * @brief Gets the drag step increment values. - * - * @param obj A valid Evas_Object handle - * @param part The part - * @param dx The x step increment pointer - * @param dy The y step increment pointer - * - * Gets the x and y step increments for the dragable object. - */ EAPI Eina_Bool edje_object_part_drag_step_get(const Evas_Object *obj, const char *part, double *dx, double *dy) { @@ -3489,16 +2507,6 @@ edje_object_part_drag_step_get(const Evas_Object *obj, const char *part, double return EINA_TRUE; } -/** - * @brief Sets the page step increments. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param dx The x page step increment - * @param dy The y page step increment - * - * Sets the x,y page step increment values. - */ EAPI Eina_Bool edje_object_part_drag_page_set(Evas_Object *obj, const char *part, double dx, double dy) { @@ -3522,16 +2530,6 @@ edje_object_part_drag_page_set(Evas_Object *obj, const char *part, double dx, do return EINA_TRUE; } -/** - * @brief Gets the page step increments. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param dx The dx page increment pointer - * @param dy The dy page increment pointer - * - * Gets the x,y page step increments for the dragable object. - */ EAPI Eina_Bool edje_object_part_drag_page_get(const Evas_Object *obj, const char *part, double *dx, double *dy) { @@ -3561,17 +2559,6 @@ edje_object_part_drag_page_get(const Evas_Object *obj, const char *part, double return EINA_TRUE; } -/** - * @brief Steps the dragable x,y steps. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param dx The x step - * @param dy The y step - * - * Steps x,y where the step increment is the amount set by - * edje_object_part_drag_step_set. - */ EAPI Eina_Bool edje_object_part_drag_step(Evas_Object *obj, const char *part, double dx, double dy) { @@ -3602,17 +2589,6 @@ edje_object_part_drag_step(Evas_Object *obj, const char *part, double dx, double return EINA_TRUE; } -/** - * @brief Pages x,y steps. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param dx The x step - * @param dy The y step - * - * Pages x,y where the increment is defined by - * edje_object_part_drag_page_set.\n WARNING: Paging is bugged! - */ EAPI Eina_Bool edje_object_part_drag_page(Evas_Object *obj, const char *part, double dx, double dy) { @@ -3658,18 +2634,6 @@ _edje_box_shutdown(void) _edje_box_layout_registry = NULL; } -/** - * @brief Appends an object to the box. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param child The object to append - * - * @return 1: Successfully added.\n - * 0: An error occurred. - * - * Appends child to the box indicated by part. - */ EAPI Eina_Bool edje_object_part_box_append(Evas_Object *obj, const char *part, Evas_Object *child) { @@ -3686,18 +2650,6 @@ edje_object_part_box_append(Evas_Object *obj, const char *part, Evas_Object *chi return _edje_real_part_box_append(rp, child); } -/** - * @brief Prepends an object to the box. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param child The object to prepend - * - * @return 1: Successfully added.\n - * 0: An error occurred. - * - * Prepends child to the box indicated by part. - */ EAPI Eina_Bool edje_object_part_box_prepend(Evas_Object *obj, const char *part, Evas_Object *child) { @@ -3714,20 +2666,6 @@ edje_object_part_box_prepend(Evas_Object *obj, const char *part, Evas_Object *ch return _edje_real_part_box_prepend(rp, child); } -/** - * @brief Adds an object to the box. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param child The object to insert - * @param reference The object to be used as reference - * - * @return 1: Successfully added.\n - * 0: An error occurred. - * - * Inserts child in the box given by part, in the position marked by - * reference. - */ EAPI Eina_Bool edje_object_part_box_insert_before(Evas_Object *obj, const char *part, Evas_Object *child, const Evas_Object *reference) { @@ -3744,20 +2682,6 @@ edje_object_part_box_insert_before(Evas_Object *obj, const char *part, Evas_Obje return _edje_real_part_box_insert_before(rp, child, reference); } -/** - * @brief Inserts an object to the box. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param child The object to insert - * @param pos The position where to insert child - * - * @return 1: Successfully added.\n - * 0: An error occurred. - * - * Adds child to the box indicated by part, in the position given by - * pos. - */ EAPI Eina_Bool edje_object_part_box_insert_at(Evas_Object *obj, const char *part, Evas_Object *child, unsigned int pos) { @@ -3774,17 +2698,6 @@ edje_object_part_box_insert_at(Evas_Object *obj, const char *part, Evas_Object * return _edje_real_part_box_insert_at(rp, child, pos); } -/** - * @brief Removes an object from the box. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param child The object to remove - * - * @return Pointer to the object removed, or NULL. - * - * Removes child from the box indicated by part. - */ EAPI Evas_Object * edje_object_part_box_remove(Evas_Object *obj, const char *part, Evas_Object *child) { @@ -3801,18 +2714,6 @@ edje_object_part_box_remove(Evas_Object *obj, const char *part, Evas_Object *chi return _edje_real_part_box_remove(rp, child); } -/** - * @brief Removes an object from the box. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param pos - * - * @return Pointer to the object removed, or NULL. - * - * Removes from the box indicated by part, the object in the position - * pos. - */ EAPI Evas_Object * edje_object_part_box_remove_at(Evas_Object *obj, const char *part, unsigned int pos) { @@ -3829,19 +2730,6 @@ edje_object_part_box_remove_at(Evas_Object *obj, const char *part, unsigned int return _edje_real_part_box_remove_at(rp, pos); } -/** - * @brief Removes all elements from the box. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param clear Delete objects on removal - * - * @return 1: Successfully cleared.\n - * 0: An error occurred. - * - * Removes all the external objects from the box indicated by part. - * Elements created from the theme will not be removed. - */ EAPI Eina_Bool edje_object_part_box_remove_all(Evas_Object *obj, const char *part, Eina_Bool clear) { @@ -4065,15 +2953,6 @@ _edje_table_child_remove(Edje_Real_Part *rp, Evas_Object *child) _edje_recalc(rp->edje); } -/** - * @brief Retrieve a child from a table - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param col The column of the child to get - * @param row The row of the child to get - * @return The child Evas_Object - */ EAPI Evas_Object * edje_object_part_table_child_get(Evas_Object *obj, const char *part, unsigned int col, unsigned int row) { @@ -4090,22 +2969,6 @@ edje_object_part_table_child_get(Evas_Object *obj, const char *part, unsigned in return evas_object_table_child_get(rp->object, col, row); } -/** - * @brief Packs an object into the table. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param child_obj The object to pack in - * @param col The column to place it in - * @param row The row to place it in - * @param colspan Columns the child will take - * @param rowspan Rows the child will take - * - * @return 1: Successfully added.\n - * 0: An error occurred. - * - * Packs an object into the table indicated by part. - */ EAPI Eina_Bool edje_object_part_table_pack(Evas_Object *obj, const char *part, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan) { @@ -4122,18 +2985,6 @@ edje_object_part_table_pack(Evas_Object *obj, const char *part, Evas_Object *chi return _edje_real_part_table_pack(rp, child_obj, col, row, colspan, rowspan); } -/** - * @brief Removes an object from the table. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param child_obj The object to pack in - * - * @return 1: Successfully removed.\n - * 0: An error occurred. - * - * Removes an object from the table indicated by part. - */ EAPI Eina_Bool edje_object_part_table_unpack(Evas_Object *obj, const char *part, Evas_Object *child_obj) { @@ -4150,19 +3001,6 @@ edje_object_part_table_unpack(Evas_Object *obj, const char *part, Evas_Object *c return _edje_real_part_table_unpack(rp, child_obj); } -/** - * @brief Gets the number of columns and rows the table has. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param cols Pointer where to store number of columns (can be NULL) - * @param rows Pointer where to store number of rows (can be NULL) - * - * @return 1: Successfully get some data.\n - * 0: An error occurred. - * - * Retrieves the size of the table in number of columns and rows. - */ EAPI Eina_Bool edje_object_part_table_col_row_size_get(const Evas_Object *obj, const char *part, int *cols, int *rows) { @@ -4180,19 +3018,6 @@ edje_object_part_table_col_row_size_get(const Evas_Object *obj, const char *part return EINA_TRUE; } -/** - * @brief Removes all object from the table. - * - * @param obj A valid Evas_Object handle - * @param part The part name - * @param clear If set, will delete subobjs on remove - * - * @return 1: Successfully clear table.\n - * 0: An error occurred. - * - * Removes all object from the table indicated by part, except the - * internal ones set from the theme. - */ EAPI Eina_Bool edje_object_part_table_clear(Evas_Object *obj, const char *part, Eina_Bool clear) { @@ -5135,6 +3960,11 @@ _edje_object_signal_preload_cb(void *data, Evas_Object *obj, __UNUSED__ const ch _edje_object_preload(ed); } +/** + * @internal + * + * for edje_cc + */ EAPI void _edje_program_remove(Edje_Part_Collection *edc, Edje_Program *p) { @@ -5180,6 +4010,11 @@ _edje_program_remove(Edje_Part_Collection *edc, Edje_Program *p) } } +/** + * @internal + * + * for edje_cc + */ EAPI void _edje_program_insert(Edje_Part_Collection *edc, Edje_Program *p) {