*
* vim:ts=8:sw=3:sts=3:expandtab:cino=>5n-3f0^-2{2(0W1st0
*/
+
+/**
+@file Elementary.h.in
+@brief Elementary Widget Library
+*/
+
+/**
+@mainpage Elementary
+@image html elementary.png
+@version @PACKAGE_VERSION@
+@author Carsten Haitzler <raster@@rasterman.com>
+@author Gustavo Sverzut Barbieri <barbieri@@profusion.mobi>
+@author Cedric Bail <cedric.bail@@free.fr>
+@author Vincent Torri <vtorri@@univ-evry.fr>
+@author Daniel Kolesa <quaker66@@gmail.com>
+@author Jaime Thomas <avi.thomas@@gmail.com>
+@author Swisscom - http://www.swisscom.ch/
+@author Christopher Michael <devilhorns@@comcast.net>
+@author Marco Trevisan (Treviño) <mail@@3v1n0.net>
+@author Michael Bouchaud <michael.bouchaud@@gmail.com>
+@author Jonathan Atton (Watchwolf) <jonathan.atton@@gmail.com>
+@author Brian Wang <brian.wang.0721@@gmail.com>
+@author Mike Blumenkrantz (zmike) <mike@@zentific.com>
+@author Samsung Electronics <tbd>
+@author Samsung SAIT <tbd>
+@author Brett Nash <nash@@nash.id.au>
+@author Bruno Dilly <bdilly@@profusion.mobi>
+@author Rafael Fonseca <rfonseca@@profusion.mobi>
+@author Chuneon Park <hermet@@hermet.pe.kr>
+@author Woohyun Jung <wh0705.jung@@samsung.com>
+@author Jaehwan Kim <jae.hwan.kim@@samsung.com>
+@author Wonguk Jeong <wonguk.jeong@@samsung.com>
+@author Leandro A. F. Pereira <leandro@@profusion.mobi>
+@author Helen Fornazier <helen.fornazier@@profusion.mobi>
+@author Gustavo Lima Chaves <glima@@profusion.mobi>
+@author Fabiano Fidêncio <fidencio@@profusion.mobi>
+@author Tiago Falcão <tiago@@profusion.mobi>
+@author Otavio Pontes <otavio@@profusion.mobi>
+@author Viktor Kojouharov <vkojouharov@@gmail.com>
+@author Daniel Juyung Seo (SeoZ) <juyung.seo@@samsung.com> <seojuyung2@@gmail.com>
+@author Sangho Park <sangho.g.park@@samsung.com> <gouache95@@gmail.com>
+@author Rajeev Ranjan (Rajeev) <rajeev.r@@samsung.com> <rajeev.jnnce@@gmail.com>
+@author Seunggyun Kim <sgyun.kim@@samsung.com> <tmdrbs@@gmail.com>
+@author Sohyun Kim <anna1014.kim@@samsung.com> <sohyun.anna@@gmail.com>
+@author Jihoon Kim <jihoon48.kim@@samsung.com>
+@author Jeonghyun Yun (arosis) <jh0506.yun@@samsung.com>
+@author Tom Hacohen <tom@@stosb.com>
+@author Aharon Hillel <a.hillel@@partner.samsung.com>
+@author Jonathan Atton (Watchwolf) <jonathan.atton@@gmail.com>
+@author Shinwoo Kim <kimcinoo@@gmail.com>
+@author Govindaraju SM <govi.sm@@samsung.com> <govism@@gmail.com>
+@author Prince Kumar Dubey <prince.dubey@@samsung.com> <prince.dubey@@gmail.com>
+@date 2008-2011
+
+@section intro What is Elementary?
+
+This is a VERY SIMPLE toolkit. It is not meant for writing extensive desktop
+applications (yet). Small simple ones with simple needs.
+
+It is meant to make the programmers work almost brainless but give them lots
+of flexibility.
+
+License: LGPL v2 (see COPYING in the base of Elementary's source). This
+applies to all files in the source here.
+
+Acknowledgements: There is a lot that goes into making a widget set, and
+they don't happen out of nothing. It's like trying to make everyone
+everywhere happy, regardless of age, gender, race or nationality - and
+that is really tough. So thanks to people and organisations behind this,
+aslisted in the Authors section above.
+
+@verbatim
+Pants
+@endverbatim
+*/
+
#ifndef ELEMENTARY_H
#define ELEMENTARY_H
@ELM_EDBUS_DEF@ ELM_EDBUS
@ELM_EFREET_DEF@ ELM_EFREET
@ELM_ETHUMB_DEF@ ELM_ETHUMB
+@ELM_EMAP_DEF@ ELM_EMAP
@ELM_DEBUG_DEF@ ELM_DEBUG
@ELM_ALLOCA_H_DEF@ ELM_ALLOCA_H
@ELM_LIBINTL_H_DEF@ ELM_LIBINTL_H
#include <Eina.h>
#include <Eet.h>
#include <Evas.h>
+#include <Evas_GL.h>
#include <Ecore.h>
#include <Ecore_Evas.h>
#include <Ecore_File.h>
#ifdef ELM_EDBUS
# include <E_DBus.h>
-# include <E_Hal.h>
#endif
#ifdef ELM_EFREET
# include <Ethumb_Client.h>
#endif
+#ifdef ELM_EMAP
+# include <EMap.h>
+#endif
+
#ifdef EAPI
# undef EAPI
#endif
#define ELM_RECTS_INTERSECT(x, y, w, h, xx, yy, ww, hh) (((x) < ((xx) + (ww))) && ((y) < ((yy) + (hh))) && (((x) + (w)) > (xx)) && (((y) + (h)) > (yy)))
#define ELM_PI 3.14159265358979323846
+ /**
+ * @defgroup General General
+ *
+ * @brief General Elementary API. Functions that don't relate to
+ * Elementary objects specifically.
+ *
+ * Here are documented functions which init/shutdown the library,
+ * that apply to generic Elementary objects, that deal with
+ * configuration, et cetera.
+ *
+ * @ref general_functions_example_page "This" example contemplates
+ * some of these functions.
+ */
+
+ /**
+ * @addtogroup General
+ * @{
+ */
+
/**
* Defines couple of standard Evas_Object layers to be used
* with evas_object_layer_set().
/**************************************************************************/
EAPI extern int ELM_ECORE_EVENT_ETHUMB_CONNECT;
- /* Objects */
/**
- * Emitted when policy value changed.
+ * Emitted when any Elementary's policy value is changed.
*/
EAPI extern int ELM_EVENT_POLICY_CHANGED;
- typedef struct _Elm_Event_Policy_Changed
- {
- unsigned int policy;
- int new_value;
- int old_value;
- } Elm_Event_Policy_Changed;
/**
- * Policy identifiers.
+ * @typedef Elm_Event_Policy_Changed
+ *
+ * Data on the event when an Elementary policy has changed
+ */
+ typedef struct _Elm_Event_Policy_Changed Elm_Event_Policy_Changed;
+
+ /**
+ * @struct _Elm_Event_Policy_Changed
*
- * @see elm_policy_set()
+ * Data on the event when an Elementary policy has changed
*/
- typedef enum _Elm_Policy
+ struct _Elm_Event_Policy_Changed
{
- ELM_POLICY_QUIT, /**< when should quit application automatically.
- * @see Elm_Policy_Quit.
+ unsigned int policy; /**< the policy identifier */
+ int new_value; /**< value the policy had before the change */
+ int old_value; /**< new value the policy got */
+ };
+
+ /**
+ * Policy identifiers.
+ */
+ typedef enum _Elm_Policy
+ {
+ ELM_POLICY_QUIT, /**< under which circunstances the application
+ * should quit automatically. @see
+ * Elm_Policy_Quit.
*/
ELM_POLICY_LAST
- } Elm_Policy;
+ } Elm_Policy; /**< Elementary policy identifiers/groups enumeration. @see elm_policy_set()
+ */
typedef enum _Elm_Policy_Quit
{
- ELM_POLICY_QUIT_NONE = 0, /**< never quit application automatically */
- ELM_POLICY_QUIT_LAST_WINDOW_CLOSED /**< quit when last window is closed */
- } Elm_Policy_Quit;
+ ELM_POLICY_QUIT_NONE = 0, /**< never quit the application
+ * automatically */
+ ELM_POLICY_QUIT_LAST_WINDOW_CLOSED /**< quit when the
+ * application's last
+ * window is closed */
+ } Elm_Policy_Quit; /**< Possible values for the #ELM_POLICY_QUIT policy */
typedef enum _Elm_Focus_Direction
{
} Elm_Text_Format;
/**
+ * Line wrapping types.
+ */
+ typedef enum _Elm_Wrap_Type
+ {
+ ELM_WRAP_NONE = 0, /**< No wrap - value is zero */
+ ELM_WRAP_CHAR, /**< Char wrap - wrap between graphmes */
+ ELM_WRAP_WORD, /**< Word wrap - wrap in allowed wrapping points (as defined in the unicode standard) */
+ ELM_WRAP_MIXED, /**< Mixed wrap - Word wrap, and if that fails, char wrap. */
+ ELM_WRAP_LAST
+ } Elm_Wrap_Type;
+
+
+ /**
+ * @typedef Elm_Object_Item
+ * An Elementary Object item handle.
+ * @ingroup General
+ */
+ typedef struct _Elm_Object_Item Elm_Object_Item;
+
+
+ /**
* Called back when a widget's tooltip is activated and needs content.
* @param data user-data given to elm_object_tooltip_content_cb_set()
* @param obj owner widget.
typedef Eina_Bool (*Elm_Event_Cb) (void *data, Evas_Object *obj, Evas_Object *src, Evas_Callback_Type type, void *event_info);
#ifndef ELM_LIB_QUICKLAUNCH
-#define ELM_MAIN() int main(int argc, char **argv) {elm_init(argc, argv); return elm_main(argc, argv);}
+#define ELM_MAIN() int main(int argc, char **argv) {elm_init(argc, argv); return elm_main(argc, argv);} /**< macro to be used after the elm_main() function */
#else
-#define ELM_MAIN() int main(int argc, char **argv) {return elm_quicklaunch_fallback(argc, argv);}
+#define ELM_MAIN() int main(int argc, char **argv) {return elm_quicklaunch_fallback(argc, argv);} /**< macro to be used after the elm_main() function */
#endif
/**************************************************************************/
/* General calls */
+
+ /**
+ * Initialize Elementary
+ *
+ * @param[in] argc System's argument count value
+ * @param[in] argv System's pointer to array of argument strings
+ * @return The init counter value.
+ *
+ * This function initializes Elementary and increments a counter of
+ * the number of calls to it. It returs the new counter's value.
+ *
+ * @warning This call is exported only for use by the @c ELM_MAIN()
+ * macro. There is no need to use this if you use this macro (which
+ * is highly advisable). An elm_main() should contain the entry
+ * point code for your application, having the same prototype as
+ * elm_init(), and @b not being static (putting the @c EAPI symbol
+ * in front of its type declaration is advisable). The @c
+ * ELM_MAIN() call should be placed just after it.
+ *
+ * Example:
+ * @dontinclude bg_example_01.c
+ * @skip static void
+ * @until ELM_MAIN
+ *
+ * See the full @ref bg_example_01_c "example".
+ *
+ * @see elm_shutdown().
+ * @ingroup General
+ */
EAPI int elm_init(int argc, char **argv);
+
+ /**
+ * Shut down Elementary
+ *
+ * @return The init counter value.
+ *
+ * This should be called at the end of your application, just
+ * before it ceases to do any more processing. This will clean up
+ * any permanent resources your application may have allocated via
+ * Elementary that would otherwise persist.
+ *
+ * @see elm_init() for an example
+ *
+ * @ingroup General
+ */
EAPI int elm_shutdown(void);
+
+ /**
+ * Run Elementary's main loop
+ *
+ * This call should be issued just after all initialization is
+ * completed. This function will not return until elm_exit() is
+ * called. It will keep looping, running the main
+ * (event/processing) loop for Elementary.
+ *
+ * @see elm_init() for an example
+ *
+ * @ingroup General
+ */
EAPI void elm_run(void);
+
+ /**
+ * Exit Elementary's main loop
+ *
+ * If this call is issued, it will flag the main loop to cease
+ * processing and return back to its parent function (usually your
+ * elm_main() function).
+ *
+ * @see elm_init() for an example. There, just after a request to
+ * close the window comes, the main loop will be left.
+ *
+ * @note By using the #ELM_POLICY_QUIT on your Elementary
+ * applications, you'll this function called automatically for you.
+ *
+ * @ingroup General
+ */
EAPI void elm_exit(void);
+ /**
+ * Provide information in order to make Elementary determine the @b
+ * run time location of the software in question, so other data files
+ * such as images, sound files, executable utilities, libraries,
+ * modules and locale files can be found.
+ *
+ * @param mainfunc This is your application's main function name,
+ * whose binary's location is to be found. Providing @c NULL
+ * will make Elementary not to use it
+ * @param dom This will be used as the application's "domain", in the
+ * form of a prefix to any environment variables that may
+ * override prefix detection and the directory name, inside the
+ * standard share or data directories, where the software's
+ * data files will be looked for.
+ * @param checkfile This is an (optional) magic file's path to check
+ * for existence (and it must be located in the data directory,
+ * under the share directory provided above). Its presence will
+ * help determine the prefix found was correct. Pass @c NULL if
+ * the check is not to be done.
+ *
+ * This function allows one to re-locate the application somewhere
+ * else after compilation, if the developer wishes for easier
+ * distribution of pre-compiled binaries.
+ *
+ * The prefix system is designed to locate where the given software is
+ * installed (under a common path prefix) at run time and then report
+ * specific locations of this prefix and common directories inside
+ * this prefix like the binary, library, data and locale directories,
+ * through the @c elm_app_*_get() family of functions.
+ *
+ * Call elm_app_info_set() early on before you change working
+ * directory or anything about @c argv[0], so it gets accurate
+ * information.
+ *
+ * It will then try and trace back which file @p mainfunc comes from,
+ * if provided, to determine the application's prefix directory.
+ *
+ * The @p dom parameter provides a string prefix to prepend before
+ * environment variables, allowing a fallback to @b specific
+ * environment variables to locate the software. You would most
+ * probably provide a lowercase string there, because it will also
+ * serve as directory domain, explained next. For environment
+ * variables purposes, this string is made uppercase. For example if
+ * @c "myapp" is provided as the prefix, then the program would expect
+ * @c "MYAPP_PREFIX" as a master environment variable to specify the
+ * exact install prefix for the software, or more specific environment
+ * variables like @c "MYAPP_BIN_DIR", @c "MYAPP_LIB_DIR", @c
+ * "MYAPP_DATA_DIR" and @c "MYAPP_LOCALE_DIR", which could be set by
+ * the user or scripts before launching. If not provided (@c NULL),
+ * environment variables will not be used to override compiled-in
+ * defaults or auto detections.
+ *
+ * The @p dom string also provides a subdirectory inside the system
+ * shared data directory for data files. For example, if the system
+ * directory is @c /usr/local/share, then this directory name is
+ * appended, creating @c /usr/local/share/myapp, if it @p was @c
+ * "myapp". It is expected the application installs data files in
+ * this directory.
+ *
+ * The @p checkfile is a file name or path of something inside the
+ * share or data directory to be used to test that the prefix
+ * detection worked. For example, your app will install a wallpaper
+ * image as @c /usr/local/share/myapp/images/wallpaper.jpg and so to
+ * check that this worked, provide @c "images/wallpaper.jpg" as the @p
+ * checkfile string.
+ *
+ * @see elm_app_compile_bin_dir_set()
+ * @see elm_app_compile_lib_dir_set()
+ * @see elm_app_compile_data_dir_set()
+ * @see elm_app_compile_locale_set()
+ * @see elm_app_prefix_dir_get()
+ * @see elm_app_bin_dir_get()
+ * @see elm_app_lib_dir_get()
+ * @see elm_app_data_dir_get()
+ * @see elm_app_locale_dir_get()
+ */
+ EAPI void elm_app_info_set(void *mainfunc, const char *dom, const char *checkfile);
+
+ /**
+ * Provide information on the @b fallback application's binaries
+ * directory, on scenarios where they get overriden by
+ * elm_app_info_set().
+ *
+ * @param dir The path to the default binaries directory (compile time
+ * one)
+ *
+ * @note Elementary will as well use this path to determine actual
+ * names of binaries' directory paths, maybe changing it to be @c
+ * something/local/bin instead of @c something/bin, only, for
+ * example.
+ *
+ * @warning You should call this function @b before
+ * elm_app_info_set().
+ */
+ EAPI void elm_app_compile_bin_dir_set(const char *dir);
+
+ /**
+ * Provide information on the @b fallback application's libraries
+ * directory, on scenarios where they get overriden by
+ * elm_app_info_set().
+ *
+ * @param dir The path to the default libraries directory (compile
+ * time one)
+ *
+ * @note Elementary will as well use this path to determine actual
+ * names of libraries' directory paths, maybe changing it to be @c
+ * something/lib32 or @c something/lib64 instead of @c something/lib,
+ * only, for example.
+ *
+ * @warning You should call this function @b before
+ * elm_app_info_set().
+ */
+ EAPI void elm_app_compile_lib_dir_set(const char *dir);
+
+ /**
+ * Provide information on the @b fallback application's data
+ * directory, on scenarios where they get overriden by
+ * elm_app_info_set().
+ *
+ * @param dir The path to the default data directory (compile time
+ * one)
+ *
+ * @note Elementary will as well use this path to determine actual
+ * names of data directory paths, maybe changing it to be @c
+ * something/local/share instead of @c something/share, only, for
+ * example.
+ *
+ * @warning You should call this function @b before
+ * elm_app_info_set().
+ */
+ EAPI void elm_app_compile_data_dir_set(const char *dir);
+
+ /**
+ * Provide information on the @b fallback application's locale
+ * directory, on scenarios where they get overriden by
+ * elm_app_info_set().
+ *
+ * @param dir The path to the default locale directory (compile time
+ * one)
+ *
+ * @warning You should call this function @b before
+ * elm_app_info_set().
+ */
+ EAPI void elm_app_compile_locale_set(const char *dir);
+
+ /**
+ * Retrieve the application's run time prefix directory, as set by
+ * elm_app_info_set() and the way (environment) the application was
+ * run from.
+ *
+ * @return The directory prefix the application is actually using
+ */
+ EAPI const char *elm_app_prefix_dir_get(void);
+
+ /**
+ * Retrieve the application's run time binaries prefix directory, as
+ * set by elm_app_info_set() and the way (environment) the application
+ * was run from.
+ *
+ * @return The binaries directory prefix the application is actually
+ * using
+ */
+ EAPI const char *elm_app_bin_dir_get(void);
+
+ /**
+ * Retrieve the application's run time libraries prefix directory, as
+ * set by elm_app_info_set() and the way (environment) the application
+ * was run from.
+ *
+ * @return The libraries directory prefix the application is actually
+ * using
+ */
+ EAPI const char *elm_app_lib_dir_get(void);
+
+ /**
+ * Retrieve the application's run time data prefix directory, as
+ * set by elm_app_info_set() and the way (environment) the application
+ * was run from.
+ *
+ * @return The data directory prefix the application is actually
+ * using
+ */
+ EAPI const char *elm_app_data_dir_get(void);
+
+ /**
+ * Retrieve the application's run time locale prefix directory, as
+ * set by elm_app_info_set() and the way (environment) the application
+ * was run from.
+ *
+ * @return The locale directory prefix the application is actually
+ * using
+ */
+ EAPI const char *elm_app_locale_dir_get(void);
+
EAPI void elm_quicklaunch_mode_set(Eina_Bool ql_on);
EAPI Eina_Bool elm_quicklaunch_mode_get(void);
EAPI int elm_quicklaunch_init(int argc, char **argv);
EAPI Eina_Bool elm_need_e_dbus(void);
EAPI Eina_Bool elm_need_ethumb(void);
+ /**
+ * Set a new policy's value (for a given policy group/identifier).
+ *
+ * @param policy policy identifier, as in @ref Elm_Policy.
+ * @param value policy value, which depends on the identifier
+ *
+ * @return @c EINA_TRUE on success or @c EINA_FALSE, on error.
+ *
+ * Elementary policies define applications' behavior,
+ * somehow. These behaviors are divided in policy groups (see
+ * #Elm_Policy enumeration). This call will emit the Ecore event
+ * #ELM_EVENT_POLICY_CHANGED, which can be hooked at with
+ * handlers. An #Elm_Event_Policy_Changed struct will be passed,
+ * then.
+ *
+ * @note Currently, we have only one policy identifier/group
+ * (#ELM_POLICY_QUIT), which has two possible values.
+ *
+ * @ingroup General
+ */
EAPI Eina_Bool elm_policy_set(unsigned int policy, int value);
+
+ /**
+ * Gets the policy value set for given policy identifier.
+ *
+ * @param policy policy identifier, as in #Elm_Policy.
+ * @return The currently set policy value, for that
+ * identifier. Will be @c 0 if @p policy passed is invalid.
+ *
+ * @ingroup General
+ */
EAPI int elm_policy_get(unsigned int policy);
+ /**
+ * Set a label of an object
+ *
+ * @param obj The Elementary object
+ * @param part The text part name to set (NULL for the default label)
+ * @param label The new text of the label
+ *
+ * @note Elementary objects may have many labels (e.g. Action Slider)
+ *
+ * @ingroup General
+ */
+ EAPI void elm_object_text_part_set(Evas_Object *obj, const char *part, const char *label);
+
+#define elm_object_text_set(obj, label) elm_object_text_part_set((obj), NULL, (label))
+
+ /**
+ * Get a label of an object
+ *
+ * @param obj The Elementary object
+ * @param part The text part name to get (NULL for the default label)
+ * @return text of the label or NULL for any error
+ *
+ * @note Elementary objects may have many labels (e.g. Action Slider)
+ *
+ * @ingroup General
+ */
+ EAPI const char *elm_object_text_part_get(const Evas_Object *obj, const char *part);
+
+#define elm_object_text_get(obj) elm_object_text_part_get((obj), NULL)
+
+ /**
+ * Set a content of an object
+ *
+ * @param obj The Elementary object
+ * @param part The content part name to set (NULL for the default content)
+ * @param content The new content of the object
+ *
+ * @note Elementary objects may have many contents
+ *
+ * @ingroup General
+ */
+ EAPI void elm_object_content_part_set(Evas_Object *obj, const char *part, Evas_Object *content);
+
+#define elm_object_content_set(obj, content) elm_object_content_part_set((obj), NULL, (content))
+
+ /**
+ * Get a content of an object
+ *
+ * @param obj The Elementary object
+ * @param item The content part name to get (NULL for the default content)
+ * @return content of the object or NULL for any error
+ *
+ * @note Elementary objects may have many contents
+ *
+ * @ingroup General
+ */
+ EAPI Evas_Object *elm_object_content_part_get(const Evas_Object *obj, const char *part);
+
+#define elm_object_content_get(obj) elm_object_content_part_get((obj), NULL)
+
+ /**
+ * Unset a content of an object
+ *
+ * @param obj The Elementary object
+ * @param item The content part name to unset (NULL for the default content)
+ *
+ * @note Elementary objects may have many contents
+ *
+ * @ingroup General
+ */
+ EAPI Evas_Object *elm_object_content_part_unset(Evas_Object *obj, const char *part);
+
+#define elm_object_content_unset(obj) elm_object_content_part_unset((obj), NULL)
+
+ /**
+ * Set a content of an object item
+ *
+ * @param it The Elementary object item
+ * @param part The content part name to set (NULL for the default content)
+ * @param content The new content of the object item
+ *
+ * @note Elementary object items may have many contents
+ *
+ * @ingroup General
+ */
+ EAPI void elm_object_item_content_part_set(Elm_Object_Item *it, const char *part, Evas_Object *content);
+
+#define elm_object_item_content_set(it, content) elm_object_item_content_part_set((it), NULL, (content))
+
+ /**
+ * Get a content of an object item
+ *
+ * @param it The Elementary object item
+ * @param part The content part name to unset (NULL for the default content)
+ * @return content of the object item or NULL for any error
+ *
+ * @note Elementary object items may have many contents
+ *
+ * @ingroup General
+ */
+ EAPI Evas_Object *elm_object_item_content_part_get(const Elm_Object_Item *it, const char *item);
+
+#define elm_object_item_content_get(it) elm_object_item_content_part_get((it), NULL)
+
+ /**
+ * Unset a content of an object item
+ *
+ * @param it The Elementary object item
+ * @param part The content part name to unset (NULL for the default content)
+ *
+ * @note Elementary object items may have many contents
+ *
+ * @ingroup General
+ */
+ EAPI Evas_Object *elm_object_item_content_part_unset(Elm_Object_Item *it, const char *part);
+
+#define elm_object_item_content_unset(it, content) elm_object_item_content_part_unset((it), (content))
+
+ /**
+ * Set a label of an objec itemt
+ *
+ * @param it The Elementary object item
+ * @param part The text part name to set (NULL for the default label)
+ * @param label The new text of the label
+ *
+ * @note Elementary object items may have many labels
+ *
+ * @ingroup General
+ */
+ EAPI void elm_object_item_text_part_set(Elm_Object_Item *it, const char *part, const char *label);
+
+#define elm_object_item_text_set(it, label) elm_object_item_text_part_set((it), NULL, (label))
+
+ /**
+ * Get a label of an object
+ *
+ * @param it The Elementary object item
+ * @param part The text part name to get (NULL for the default label)
+ * @return text of the label or NULL for any error
+ *
+ * @note Elementary object items may have many labels
+ *
+ * @ingroup General
+ */
+ EAPI const char *elm_object_item_text_part_get(const Elm_Object_Item *it, const char *part);
+
+ /**
+ * Set the text to read out when in accessibility mode
+ *
+ * @param obj The object which is to be described
+ * @param txt The text that describes the widget to people with poor or no vision
+ *
+ * @ingroup General
+ */
+ EAPI void elm_object_access_info_set(Evas_Object *obj, const char *txt);
+
+ /**
+ * Set the text to read out when in accessibility mode
+ *
+ * @param it The object item which is to be described
+ * @param txt The text that describes the widget to people with poor or no vision
+ *
+ * @ingroup General
+ */
+ EAPI void elm_object_item_access_info_set(Elm_Object_Item *it, const char *txt);
+
+
+#define elm_object_item_text_get(it) elm_object_item_text_part_get((it), NULL)
+
+ /**
+ * Get the data associated with an object item
+ * @param it The object item
+ * @return The data associated with @p it
+ *
+ * @ingroup General
+ */
+ EAPI void *elm_object_item_data_get(const Elm_Object_Item *it);
+
+ /**
+ * Set the data associated with an object item
+ * @param it The object item
+ * @param data The data to be associated with @p it
+ *
+ * @ingroup General
+ */
+ EAPI void elm_object_item_data_set(Elm_Object_Item *it, void *data);
+
+ /**
+ * @}
+ */
+
EAPI void elm_all_flush(void);
EAPI int elm_cache_flush_interval_get(void);
EAPI void elm_cache_flush_interval_set(int size);
EAPI void elm_edje_collection_cache_set(int size);
EAPI void elm_edje_collection_cache_all_set(int size);
+ /**
+ * @defgroup Scaling Selective Widget Scaling
+ *
+ * Different widgets can be scaled independently. These functions
+ * allow you to manipulate this scaling on a per-widget basis. The
+ * object and all its children get their scaling factors multiplied
+ * by the scale factor set. This is multiplicative, in that if a
+ * child also has a scale size set it is in turn multiplied by its
+ * parent's scale size. @c 1.0 means “don't scale”, @c 2.0 is
+ * double size, @c 0.5 is half, etc.
+ *
+ * @ref general_functions_example_page "This" example contemplates
+ * some of these functions.
+ */
+
+ /**
+ * Set the scaling factor for a given Elementary object
+ *
+ * @param obj The Elementary to operate on
+ * @param scale Scale factor (from @c 0.0 up, with @c 1.0 meaning
+ * no scaling)
+ *
+ * @ingroup Scaling
+ */
EAPI void elm_object_scale_set(Evas_Object *obj, double scale) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the scaling factor for a given Elementary object
+ *
+ * @param obj The object
+ * @return The scaling factor set by elm_object_scale_set()
+ *
+ * @ingroup Scaling
+ */
EAPI double elm_object_scale_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_object_mirrored_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_object_mirrored_set(Evas_Object *obj, Eina_Bool mirrored) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_object_mirrored_automatic_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_object_mirrored_automatic_set(Evas_Object *obj, Eina_Bool automatic) EINA_ARG_NONNULL(1);
- EAPI void elm_object_style_set(Evas_Object *obj, const char *style) EINA_ARG_NONNULL(1);
- EAPI const char *elm_object_style_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_object_disabled_set(Evas_Object *obj, Eina_Bool disabled) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_object_disabled_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_object_widget_check(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI Evas_Object *elm_object_parent_widget_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI Evas_Object *elm_object_top_widget_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI const char *elm_object_widget_type_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * @defgroup Password_last_show Password last input show
+ *
+ * Last show feature of password mode enables user to view
+ * the last input entered for few seconds before masking it.
+ * These functions allow to set this feature in password mode
+ * of entry widget and also allow to manipulate the duration
+ * for which the input has to be visible.
+ *
+ * @{
+ */
- EAPI double elm_scale_get(void);
+ /**
+ * Get show last setting of password mode.
+ *
+ * This gets the show last input setting of password mode which might be
+ * enabled or disabled.
+ *
+ * @return @c EINA_TRUE, if the last input show setting is enabled, @c EINA_FALSE
+ * if it's disabled.
+ * @ingroup Password_last_show
+ */
+ EAPI Eina_Bool elm_password_show_last_get(void);
+
+ /**
+ * Set show last setting in password mode.
+ *
+ * This enables or disables show last setting of password mode.
+ *
+ * @param password_show_last If EINA_TRUE enable's last input show in password mode.
+ * @see elm_password_show_last_timeout_set()
+ * @ingroup Password_last_show
+ */
+ EAPI void elm_password_show_last_set(Eina_Bool password_show_last);
+
+ /**
+ * Get's the timeout value in last show password mode.
+ *
+ * This gets the time out value for which the last input entered in password
+ * mode will be visible.
+ *
+ * @return The timeout value of last show password mode.
+ * @ingroup Password_last_show
+ */
+ EAPI double elm_password_show_last_timeout_get(void);
+
+ /**
+ * Set's the timeout value in last show password mode.
+ *
+ * This sets the time out value for which the last input entered in password
+ * mode will be visible.
+ *
+ * @param password_show_last_timeout The timeout value.
+ * @see elm_password_show_last_set()
+ * @ingroup Password_last_show
+ */
+ EAPI void elm_password_show_last_timeout_set(double password_show_last_timeout);
+
+ /**
+ * @}
+ */
+
+ EAPI Eina_Bool elm_object_mirrored_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_object_mirrored_set(Evas_Object *obj, Eina_Bool mirrored) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_object_mirrored_automatic_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_object_mirrored_automatic_set(Evas_Object *obj, Eina_Bool automatic) EINA_ARG_NONNULL(1);
+ /**
+ * Set the style to use by a widget
+ *
+ * Sets the style name that will define the appearance of a widget. Styles
+ * vary from widget to widget and may also be defined by other themes
+ * by means of extensions and overlays.
+ *
+ * @param obj The Elementary widget to style
+ * @param style The style name to use
+ *
+ * @see elm_theme_extension_add()
+ * @see elm_theme_overlay_add()
+ *
+ * @ingroup Theme
+ */
+ EAPI void elm_object_style_set(Evas_Object *obj, const char *style) EINA_ARG_NONNULL(1);
+ /**
+ * Get the style used by the widget
+ *
+ * This gets the style being used for that widget. Note that the string
+ * pointer is only valid as longas the object is valid and the style doesn't
+ * change.
+ *
+ * @param obj The Elementary widget to query for its style
+ * @return The style name used
+ *
+ * @see elm_object_style_set()
+ *
+ * @ingroup Theme
+ */
+ EAPI const char *elm_object_style_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * @defgroup Styles Styles
+ *
+ * Widgets can have different styles of look. These generic API's
+ * set styles of widgets, if they support them (and if the theme(s)
+ * do).
+ *
+ * @ref general_functions_example_page "This" example contemplates
+ * some of these functions.
+ */
+
+ /**
+ * Set the disabled state of an Elementary object.
+ *
+ * @param obj The Elementary object to operate on
+ * @param disabled The state to put in in: @c EINA_TRUE for
+ * disabled, @c EINA_FALSE for enabled
+ *
+ * Elementary objects can be @b disabled, in which state they won't
+ * receive input and, in general, will be themed differently from
+ * their normal state, usually greyed out. Useful for contexts
+ * where you don't want your users to interact with some of the
+ * parts of you interface.
+ *
+ * This sets the state for the widget, either disabling it or
+ * enabling it back.
+ *
+ * @ingroup Styles
+ */
+ EAPI void elm_object_disabled_set(Evas_Object *obj, Eina_Bool disabled) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the disabled state of an Elementary object.
+ *
+ * @param obj The Elementary object to operate on
+ * @return @c EINA_TRUE, if the widget is disabled, @c EINA_FALSE
+ * if it's enabled (or on errors)
+ *
+ * This gets the state of the widget, which might be enabled or disabled.
+ *
+ * @ingroup Styles
+ */
+ EAPI Eina_Bool elm_object_disabled_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * @defgroup WidgetNavigation Widget Tree Navigation.
+ *
+ * How to check if an Evas Object is an Elementary widget? How to
+ * get the first elementary widget that is parent of the given
+ * object? These are all covered in widget tree navigation.
+ *
+ * @ref general_functions_example_page "This" example contemplates
+ * some of these functions.
+ */
+
+ EAPI Eina_Bool elm_object_widget_check(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the first parent of the given object that is an Elementary
+ * widget.
+ *
+ * @param obj the Elementary object to query parent from.
+ * @return the parent object that is an Elementary widget, or @c
+ * NULL, if it was not found.
+ *
+ * Use this to query for an object's parent widget.
+ *
+ * @note Most of Elementary users wouldn't be mixing non-Elementary
+ * smart objects in the objects tree of an application, as this is
+ * an advanced usage of Elementary with Evas. So, except for the
+ * application's window, which is the root of that tree, all other
+ * objects would have valid Elementary widget parents.
+ *
+ * @ingroup WidgetNavigation
+ */
+ EAPI Evas_Object *elm_object_parent_widget_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_object_top_widget_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI const char *elm_object_widget_type_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ EAPI double elm_scale_get(void);
EAPI void elm_scale_set(double scale);
EAPI void elm_scale_all_set(double scale);
EAPI Eina_Hash *elm_font_available_hash_add(Eina_List *list);
EAPI void elm_font_available_hash_del(Eina_Hash *hash);
+ /**
+ * @defgroup Fingers Fingers
+ *
+ * Elementary is designed to be finger-friendly for touchscreens,
+ * and so in addition to scaling for display resolution, it can
+ * also scale based on finger "resolution" (or size). You can then
+ * customize the granularity of the areas meant to receive clicks
+ * on touchscreens.
+ *
+ * Different profiles may have pre-set values for finger sizes.
+ *
+ * @ref general_functions_example_page "This" example contemplates
+ * some of these functions.
+ */
+
+ /**
+ * Get the configured "finger size"
+ *
+ * @return The finger size
+ *
+ * This gets the globally configured finger size, <b>in pixels</b>
+ *
+ * @ingroup Fingers
+ */
EAPI Evas_Coord elm_finger_size_get(void);
EAPI void elm_finger_size_set(Evas_Coord size);
EAPI void elm_finger_size_all_set(Evas_Coord size);
+ /**
+ * @defgroup Focus Focus
+ *
+ * An Elementary application has, at all times, one (and only one)
+ * @b focused object. This is what determines where the input
+ * events go to within the application's window. Also, focused
+ * objects can be decorated differently, in order to signal to the
+ * user where the input is, at a given moment.
+ *
+ * Elementary applications also have the concept of <b>focus
+ * chain</b>: one can cycle through all the windows' focusable
+ * objects by input (tab key) or programmatically. The default
+ * focus chain for an application is the one define by the order in
+ * which the widgets where added in code. One will cycle through
+ * top level widgets, and, for each one containg sub-objects, cycle
+ * through them all, before returning to the level
+ * above. Elementary also allows one to set @b custom focus chains
+ * for their applications.
+ *
+ * Besides the focused decoration a widget may exhibit, when it
+ * gets focus, Elementary has a @b global focus highlight object
+ * that can be enabled for a window. If one chooses to do so, this
+ * extra highlight effect will surround the current focused object,
+ * too.
+ *
+ * @note Some Elementary widgets are @b unfocusable, after
+ * creation, by their very nature: they are not meant to be
+ * interacted with input events, but are there just for visual
+ * purposes.
+ *
+ * @ref general_functions_example_page "This" example contemplates
+ * some of these functions.
+ */
+
EAPI Eina_Bool elm_focus_highlight_enabled_get(void);
EAPI void elm_focus_highlight_enabled_set(Eina_Bool enable);
EAPI Eina_Bool elm_focus_highlight_animate_get(void);
EAPI void elm_focus_highlight_animate_set(Eina_Bool animate);
+ /**
+ * Get the whether an Elementary object has the focus or not.
+ *
+ * @param obj The Elementary object to get the information from
+ * @return @c EINA_TRUE, if the object is focused, @c EINA_FALSE if
+ * not (and on errors).
+ *
+ * @see elm_object_focus()
+ *
+ * @ingroup Focus
+ */
EAPI Eina_Bool elm_object_focus_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Make a given Elementary object the focused one.
+ *
+ * @param obj The Elementary object to make focused.
+ *
+ * @note This object, if it can handle focus, will take the focus
+ * away from the one who had it previously and will, for now on, be
+ * the one receiving input events.
+ *
+ * @see elm_object_focus_get()
+ *
+ * @ingroup Focus
+ */
EAPI void elm_object_focus(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Remove the focus from an Elementary object
+ *
+ * @param obj The Elementary to take focus from
+ *
+ * This removes the focus from @p obj, passing it back to the
+ * previous element in the focus chain list.
+ *
+ * @see elm_object_focus() and elm_object_focus_custom_chain_get()
+ *
+ * @ingroup Focus
+ */
EAPI void elm_object_unfocus(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the ability for an Element object to be focused
+ *
+ * @param obj The Elementary object to operate on
+ * @param enable @c EINA_TRUE if the object can be focused, @c
+ * EINA_FALSE if not (and on errors)
+ *
+ * This sets whether the object @p obj is able to take focus or
+ * not. Unfocusable objects do nothing when programmatically
+ * focused, being the nearest focusable parent object the one
+ * really getting focus. Also, when they receive mouse input, they
+ * will get the event, but not take away the focus from where it
+ * was previously.
+ *
+ * @ingroup Focus
+ */
EAPI void elm_object_focus_allow_set(Evas_Object *obj, Eina_Bool enable) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get whether an Elementary object is focusable or not
+ *
+ * @param obj The Elementary object to operate on
+ * @return @c EINA_TRUE if the object is allowed to be focused, @c
+ * EINA_FALSE if not (and on errors)
+ *
+ * @note Objects which are meant to be interacted with by input
+ * events are created able to be focused, by default. All the
+ * others are not.
+ *
+ * @ingroup Focus
+ */
EAPI Eina_Bool elm_object_focus_allow_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_object_focus_custom_chain_set(Evas_Object *obj, Eina_List *objs) EINA_ARG_NONNULL(1);
EAPI void elm_object_focus_cycle(Evas_Object *obj, Elm_Focus_Direction dir) EINA_ARG_NONNULL(1);
EAPI void elm_object_focus_direction_go(Evas_Object *obj, int x, int y) EINA_ARG_NONNULL(1);
+ /**
+ * Make the elementary object and its children to be unfocusable (or focusable).
+ *
+ * @param obj The Elementary object to operate on
+ * @param tree_unfocusable @c EINA_TRUE for unfocusable,
+ * @c EINA_FALSE for focusable.
+ *
+ * This sets whether the object @p obj and its children objects
+ * able to take focus or not. If the tree is unfocusable,
+ * newest focused object which is not in this tree will get focus.
+ * This API can be helpful for an object to be deleted.
+ * When an object will be deleted soon, it and its children may not
+ * want to get focus (by focus reverting or by other focus controls).
+ * Then, just use this API before deleting.
+ *
+ * @see elm_object_tree_unfocusable_get()
+ *
+ * @ingroup Focus
+ */
+ EAPI void elm_object_tree_unfocusable_set(Evas_Object *obj, Eina_Bool tree_unfocusable); EINA_ARG_NONNULL(1);
+
+ /**
+ * Get whether an Elementary object and its children are unfocusable or not.
+ *
+ * @param obj The Elementary object to get the information from
+ * @return @c EINA_TRUE, if the tree is unfocussable,
+ * @c EINA_FALSE if not (and on errors).
+ *
+ * @see elm_object_tree_unfocusable_set()
+ *
+ * @ingroup Focus
+ */
+ EAPI Eina_Bool elm_object_tree_unfocusable_get(const Evas_Object *obj); EINA_ARG_NONNULL(1);
+
EAPI Eina_Bool elm_scroll_bounce_enabled_get(void);
EAPI void elm_scroll_bounce_enabled_set(Eina_Bool enabled);
EAPI void elm_scroll_bounce_enabled_all_set(Eina_Bool enabled);
EAPI void elm_object_event_callback_add(Evas_Object *obj, Elm_Event_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
EAPI void *elm_object_event_callback_del(Evas_Object *obj, Elm_Event_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
+ /**
+ * Adjust size of an element for finger usage.
+ *
+ * @param times_w How many fingers should fit horizontally
+ * @param w Pointer to the width size to adjust
+ * @param times_h How many fingers should fit vertically
+ * @param h Pointer to the height size to adjust
+ *
+ * This takes width and height sizes (in pixels) as input and a
+ * size multiple (which is how many fingers you want to place
+ * within the area, being "finger" the size set by
+ * elm_finger_size_set()), and adjusts the size to be large enough
+ * to accommodate the resulting size -- if it doesn't already
+ * accommodate it. On return the @p w and @p h sizes pointed to by
+ * these parameters will be modified, on those conditions.
+ *
+ * @note This is kind of a low level Elementary call, most useful
+ * on size evaluation times for widgets. An external user wouldn't
+ * be calling, most of the time.
+ *
+ * @ingroup Fingers
+ */
EAPI void elm_coords_finger_size_adjust(int times_w, Evas_Coord *w, int times_h, Evas_Coord *h);
EAPI double elm_longpress_timeout_get(void);
EAPI void elm_autocapitalization_allow_all_set(Eina_Bool autocap);
EAPI void elm_autoperiod_allow_all_set(Eina_Bool autoperiod);
+
/* theme */
+ /**
+ * @defgroup Theme Theme
+ *
+ * Elementary uses Edje to theme its widgets, naturally. But for the most
+ * part this is hidden behind a simpler interface that lets the user set
+ * extensions and choose the style of widgets in a much easier way.
+ *
+ * Instead of thinking in terms of paths to Edje files and their groups
+ * each time you want to change the appearance of a widget, Elementary
+ * works so you can add any theme file with extensions or replace the
+ * main theme at one point in the application, and then just set the style
+ * of widgets with elm_object_style_set() and related functions. Elementary
+ * will then look in its list of themes for a matching group and apply it,
+ * and when the theme changes midway through the application, all widgets
+ * will be updated accordingly.
+ *
+ * There are three concepts you need to know to understand how Elementary
+ * theming works: default theme, extensions and overlays.
+ *
+ * Default theme, obviously enough, is the one that provides the default
+ * look of all widgets. End users can change the theme used by Elementary
+ * by setting the @c ELM_THEME environment variable before running an
+ * application, or globally for all programs using the @c elementary_config
+ * utility. Applications can change the default theme using elm_theme_set(),
+ * but this can go against the user wishes, so it's not an adviced practice.
+ *
+ * Ideally, applications should find everything they need in the already
+ * provided theme, but there may be occasions when that's not enough and
+ * custom styles are required to correctly express the idea. For this
+ * cases, Elementary has extensions.
+ *
+ * Extensions allow the application developer to write styles of its own
+ * to apply to some widgets. This requires knowledge of how each widget
+ * is themed, as extensions will always replace the entire group used by
+ * the widget, so important signals and parts need to be there for the
+ * object to behave properly (see documentation of Edje for details).
+ * Once the theme for the extension is done, the application needs to add
+ * it to the list of themes Elementary will look into, using
+ * elm_theme_extension_add(), and set the style of the desired widgets as
+ * he would normally with elm_object_style_set().
+ *
+ * Overlays, on the other hand, can replace the look of all widgets by
+ * overriding the default style. Like extensions, it's up to the application
+ * developer to write the theme for the widgets it wants, the difference
+ * being that when looking for the theme, Elementary will check first the
+ * list of overlays, then the set theme and lastly the list of extensions,
+ * so with overlays it's possible to replace the default view and every
+ * widget will be affected. This is very much alike to setting the whole
+ * theme for the application and will probably clash with the end user
+ * options, not to mention the risk of ending up with not matching styles
+ * across the program. Unless there's a very special reason to use them,
+ * overlays should be avoided for the resons exposed before.
+ *
+ * All these theme lists are handled by ::Elm_Theme instances. Elementary
+ * keeps one default internally and every function that receives one of
+ * these can be called with NULL to refer to this default (except for
+ * elm_theme_free()). It's possible to create a new instance of a
+ * ::Elm_Theme to set other theme for a specific widget (and all of its
+ * children), but this is as discouraged, if not even more so, than using
+ * overlays. Don't use this unless you really know what you are doing.
+ *
+ * But to be less negative about things, you can look at the following
+ * examples:
+ * @li @ref theme_example_01 "Using extensions"
+ * @li @ref theme_example_02 "Using overlays"
+ *
+ * @{
+ */
+ /**
+ * @typedef Elm_Theme
+ *
+ * Opaque handler for the list of themes Elementary looks for when
+ * rendering widgets.
+ *
+ * Stay out of this unless you really know what you are doing. For most
+ * cases, sticking to the default is all a developer needs.
+ */
typedef struct _Elm_Theme Elm_Theme;
+ /**
+ * Create a new specific theme
+ *
+ * This creates an empty specific theme that only uses the default theme. A
+ * specific theme has its own private set of extensions and overlays too
+ * (which are empty by default). Specific themes do not fall back to themes
+ * of parent objects. They are not intended for this use. Use styles, overlays
+ * and extensions when needed, but avoid specific themes unless there is no
+ * other way (example: you want to have a preview of a new theme you are
+ * selecting in a "theme selector" window. The preview is inside a scroller
+ * and should display what the theme you selected will look like, but not
+ * actually apply it yet. The child of the scroller will have a specific
+ * theme set to show this preview before the user decides to apply it to all
+ * applications).
+ */
EAPI Elm_Theme *elm_theme_new(void);
+ /**
+ * Free a specific theme
+ *
+ * @param th The theme to free
+ *
+ * This frees a theme created with elm_theme_new().
+ */
EAPI void elm_theme_free(Elm_Theme *th);
+ /**
+ * Copy the theme fom the source to the destination theme
+ *
+ * @param th The source theme to copy from
+ * @param thdst The destination theme to copy data to
+ *
+ * This makes a one-time static copy of all the theme config, extensions
+ * and overlays from @p th to @p thdst. If @p th references a theme, then
+ * @p thdst is also set to reference it, with all the theme settings,
+ * overlays and extensions that @p th had.
+ */
EAPI void elm_theme_copy(Elm_Theme *th, Elm_Theme *thdst);
+ /**
+ * Tell the source theme to reference the ref theme
+ *
+ * @param th The theme that will do the referencing
+ * @param thref The theme that is the reference source
+ *
+ * This clears @p th to be empty and then sets it to refer to @p thref
+ * so @p th acts as an override to @p thref, but where its overrides
+ * don't apply, it will fall through to @pthref for configuration.
+ */
EAPI void elm_theme_ref_set(Elm_Theme *th, Elm_Theme *thref);
+ /**
+ * Return the theme referred to
+ *
+ * @param th The theme to get the reference from
+ * @return The referenced theme handle
+ *
+ * This gets the theme set as the reference theme by elm_theme_ref_set().
+ * If no theme is set as a reference, NULL is returned.
+ */
EAPI Elm_Theme *elm_theme_ref_get(Elm_Theme *th);
+ /**
+ * Return the default theme
+ *
+ * @return The default theme handle
+ *
+ * This returns the internal default theme setup handle that all widgets
+ * use implicitly unless a specific theme is set. This is also often use
+ * as a shorthand of NULL.
+ */
EAPI Elm_Theme *elm_theme_default_get(void);
+ /**
+ * Prepends a theme overlay to the list of overlays
+ *
+ * @param th The theme to add to, or if NULL, the default theme
+ * @param item The Edje file path to be used
+ *
+ * Use this if your application needs to provide some custom overlay theme
+ * (An Edje file that replaces some default styles of widgets) where adding
+ * new styles, or changing system theme configuration is not possible. Do
+ * NOT use this instead of a proper system theme configuration. Use proper
+ * configuration files, profiles, environment variables etc. to set a theme
+ * so that the theme can be altered by simple confiugration by a user. Using
+ * this call to achieve that effect is abusing the API and will create lots
+ * of trouble.
+ *
+ * @see elm_theme_extension_add()
+ */
EAPI void elm_theme_overlay_add(Elm_Theme *th, const char *item);
+ /**
+ * Delete a theme overlay from the list of overlays
+ *
+ * @param th The theme to delete from, or if NULL, the default theme
+ * @param item The name of the theme overlay
+ *
+ * @see elm_theme_overlay_add()
+ */
EAPI void elm_theme_overlay_del(Elm_Theme *th, const char *item);
+ /**
+ * Appends a theme extension to the list of extensions.
+ *
+ * @param th The theme to add to, or if NULL, the default theme
+ * @param item The Edje file path to be used
+ *
+ * This is intended when an application needs more styles of widgets or new
+ * widget themes that the default does not provide (or may not provide). The
+ * application has "extended" usage by coming up with new custom style names
+ * for widgets for specific uses, but as these are not "standard", they are
+ * not guaranteed to be provided by a default theme. This means the
+ * application is required to provide these extra elements itself in specific
+ * Edje files. This call adds one of those Edje files to the theme search
+ * path to be search after the default theme. The use of this call is
+ * encouraged when default styles do not meet the needs of the application.
+ * Use this call instead of elm_theme_overlay_add() for almost all cases.
+ *
+ * @see elm_object_style_set()
+ */
EAPI void elm_theme_extension_add(Elm_Theme *th, const char *item);
+ /**
+ * Deletes a theme extension from the list of extensions.
+ *
+ * @param th The theme to delete from, or if NULL, the default theme
+ * @param item The name of the theme extension
+ *
+ * @see elm_theme_extension_add()
+ */
EAPI void elm_theme_extension_del(Elm_Theme *th, const char *item);
+ /**
+ * Set the theme search order for the given theme
+ *
+ * @param th The theme to set the search order, or if NULL, the default theme
+ * @param theme Theme search string
+ *
+ * This sets the search string for the theme in path-notation from first
+ * theme to search, to last, delimited by the : character. Example:
+ *
+ * "shiny:/path/to/file.edj:default"
+ *
+ * See the ELM_THEME environment variable for more information.
+ *
+ * @see elm_theme_get()
+ * @see elm_theme_list_get()
+ */
EAPI void elm_theme_set(Elm_Theme *th, const char *theme);
+ /**
+ * Return the theme search order
+ *
+ * @param th The theme to get the search order, or if NULL, the default theme
+ * @return The internal search order path
+ *
+ * This function returns a colon separated string of theme elements as
+ * returned by elm_theme_list_get().
+ *
+ * @see elm_theme_set()
+ * @see elm_theme_list_get()
+ */
EAPI const char *elm_theme_get(Elm_Theme *th);
+ /**
+ * Return a list of theme elements to be used in a theme.
+ *
+ * @param th Theme to get the list of theme elements from.
+ * @return The internal list of theme elements
+ *
+ * This returns the internal list of theme elements (will only be valid as
+ * long as the theme is not modified by elm_theme_set() or theme is not
+ * freed by elm_theme_free(). This is a list of strings which must not be
+ * altered as they are also internal. If @p th is NULL, then the default
+ * theme element list is returned.
+ *
+ * A theme element can consist of a full or relative path to a .edj file,
+ * or a name, without extension, for a theme to be searched in the known
+ * theme paths for Elemementary.
+ *
+ * @see elm_theme_set()
+ * @see elm_theme_get()
+ */
EAPI const Eina_List *elm_theme_list_get(const Elm_Theme *th);
+ /**
+ * Return the full patrh for a theme element
+ *
+ * @param f The theme element name
+ * @param in_search_path Pointer to a boolean to indicate if item is in the search path or not
+ * @return The full path to the file found.
+ *
+ * This returns a string you should free with free() on success, NULL on
+ * failure. This will search for the given theme element, and if it is a
+ * full or relative path element or a simple searchable name. The returned
+ * path is the full path to the file, if searched, and the file exists, or it
+ * is simply the full path given in the element or a resolved path if
+ * relative to home. The @p in_search_path boolean pointed to is set to
+ * EINA_TRUE if the file was a searchable file andis in the search path,
+ * and EINA_FALSE otherwise.
+ */
EAPI char *elm_theme_list_item_path_get(const char *f, Eina_Bool *in_search_path);
+ /**
+ * Flush the current theme.
+ *
+ * @param th Theme to flush
+ *
+ * This flushes caches that let elementary know where to find theme elements
+ * in the given theme. If @p th is NULL, then the default theme is flushed.
+ * Call this function if source theme data has changed in such a way as to
+ * make any caches Elementary kept invalid.
+ */
EAPI void elm_theme_flush(Elm_Theme *th);
+ /**
+ * This flushes all themes (default and specific ones).
+ *
+ * This will flush all themes in the current application context, by calling
+ * elm_theme_flush() on each of them.
+ */
EAPI void elm_theme_full_flush(void);
-
+ /**
+ * Set the theme for all elementary using applications on the current display
+ *
+ * @param theme The name of the theme to use. Format same as the ELM_THEME
+ * environment variable.
+ */
EAPI void elm_theme_all_set(const char *theme);
-
+ /**
+ * Return a list of theme elements in the theme search path
+ *
+ * @return A list of strings that are the theme element names.
+ *
+ * This lists all available theme files in the standard Elementary search path
+ * for theme elements, and returns them in alphabetical order as theme
+ * element names in a list of strings. Free this with
+ * elm_theme_name_available_list_free() when you are done with the list.
+ */
EAPI Eina_List *elm_theme_name_available_list_new(void);
+ /**
+ * Free the list returned by elm_theme_name_available_list_new()
+ *
+ * This frees the list of themes returned by
+ * elm_theme_name_available_list_new(). Once freed the list should no longer
+ * be used. a new list mys be created.
+ */
EAPI void elm_theme_name_available_list_free(Eina_List *list);
-
+ /**
+ * Set a specific theme to be used for this object and its children
+ *
+ * @param obj The object to set the theme on
+ * @param th The theme to set
+ *
+ * This sets a specific theme that will be used for the given object and any
+ * child objects it has. If @p th is NULL then the theme to be used is
+ * cleared and the object will inherit its theme from its parent (which
+ * ultimately will use the default theme if no specific themes are set).
+ *
+ * Use special themes with great care as this will annoy users and make
+ * configuration difficult. Avoid any custom themes at all if it can be
+ * helped.
+ */
EAPI void elm_object_theme_set(Evas_Object *obj, Elm_Theme *th) EINA_ARG_NONNULL(1);
- EAPI Elm_Theme *elm_object_theme_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-
+ /**
+ * Get the specific theme to be used
+ *
+ * @param obj The object to get the specific theme from
+ * @return The specifc theme set.
+ *
+ * This will return a specific theme set, or NULL if no specific theme is
+ * set on that object. It will not return inherited themes from parents, only
+ * the specific theme set for that specific object. See elm_object_theme_set()
+ * for more information.
+ */
+ EAPI Elm_Theme *elm_object_theme_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * @}
+ */
+
/* win */
typedef enum _Elm_Win_Type
{
ELM_WIN_TOOLTIP,
ELM_WIN_NOTIFICATION,
ELM_WIN_COMBO,
- ELM_WIN_DND
+ ELM_WIN_DND,
+ ELM_WIN_INLINED_IMAGE,
} Elm_Win_Type;
typedef enum _Elm_Win_Keyboard_Mode
EAPI int elm_win_quickpanel_priority_minor_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_win_quickpanel_zone_set(Evas_Object *obj, int zone) EINA_ARG_NONNULL(1);
EAPI int elm_win_quickpanel_zone_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_win_prop_focus_skip_set(Evas_Object *obj, Eina_Bool skip); EINA_ARG_NONNULL(1);
- EAPI void elm_win_illume_command_send(Evas_Object *obj, Elm_Illume_Command command, void *params); EINA_ARG_NONNULL(1);
+ EAPI void elm_win_prop_focus_skip_set(Evas_Object *obj, Eina_Bool skip) EINA_ARG_NONNULL(1);
+ EAPI void elm_win_illume_command_send(Evas_Object *obj, Elm_Illume_Command command, void *params) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_win_inlined_image_object_get(Evas_Object *obj);
EAPI void elm_win_focus_highlight_enabled_set(Evas_Object *obj, Eina_Bool enabled) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_win_focus_highlight_enabled_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_win_focus_highlight_style_set(Evas_Object *obj, const char *style) EINA_ARG_NONNULL(1);
* "moved" - window that holds the canvas was moved
*/
+ /**
+ * @defgroup Bg Bg
+ *
+ * @brief Background object, used for setting a solid color, image or Edje
+ * group as background to a window or any container object.
+ *
+ * The bg object is used for setting a solid background to a window or
+ * packing into any container object. It works just like an image, but has
+ * some properties useful to a background, like setting it to tiled,
+ * centered, scaled or stretched.
+ *
+ * Here is some sample code using it:
+ * @li @ref bg_01_example_page
+ * @li @ref bg_02_example_page
+ * @li @ref bg_03_example_page
+ */
+
/* bg */
typedef enum _Elm_Bg_Option
{
ELM_BG_OPTION_TILE /**< tile background at its original size */
} Elm_Bg_Option;
+ /**
+ * Add a new background to the parent
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ *
+ * @ingroup Bg
+ */
EAPI Evas_Object *elm_bg_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the file (image or edje) used for the background
+ *
+ * @param obj The bg object
+ * @param file The file path
+ * @param group Optional key (group in Edje) within the file
+ *
+ * This sets the image file used in the background object. The image (or edje)
+ * will be stretched (retaining aspect if its an image file) to completely fill
+ * the bg object. This may mean some parts are not visible.
+ *
+ * @note Once the image of @p obj is set, a previously set one will be deleted,
+ * even if @p file is NULL.
+ *
+ * @ingroup Bg
+ */
EAPI void elm_bg_file_set(Evas_Object *obj, const char *file, const char *group) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the file (image or edje) used for the background
+ *
+ * @param obj The bg object
+ * @param file The file path
+ * @param group Optional key (group in Edje) within the file
+ *
+ * @ingroup Bg
+ */
EAPI void elm_bg_file_get(const Evas_Object *obj, const char **file, const char **group) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the option used for the background image
+ *
+ * @param obj The bg object
+ * @param option The desired background option (TILE, SCALE)
+ *
+ * This sets the option used for manipulating the display of the background
+ * image. The image can be tiled or scaled.
+ *
+ * @ingroup Bg
+ */
EAPI void elm_bg_option_set(Evas_Object *obj, Elm_Bg_Option option) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the option used for the background image
+ *
+ * @param obj The bg object
+ * @return The desired background option (CENTER, SCALE, STRETCH or TILE)
+ *
+ * @ingroup Bg
+ */
EAPI Elm_Bg_Option elm_bg_option_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set the option used for the background color
+ *
+ * @param obj The bg object
+ * @param r
+ * @param g
+ * @param b
+ *
+ * This sets the color used for the background rectangle. Its range goes
+ * from 0 to 255.
+ *
+ * @ingroup Bg
+ */
EAPI void elm_bg_color_set(Evas_Object *obj, int r, int g, int b) EINA_ARG_NONNULL(1);
+ /**
+ * Get the option used for the background color
+ *
+ * @param obj The bg object
+ * @param r
+ * @param g
+ * @param b
+ *
+ * @ingroup Bg
+ */
EAPI void elm_bg_color_get(const Evas_Object *obj, int *r, int *g, int *b) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the overlay object used for the background object.
+ *
+ * @param obj The bg object
+ * @param overlay The overlay object
+ *
+ * This provides a way for elm_bg to have an 'overlay' that will be on top
+ * of the bg. Once the over object is set, a previously set one will be
+ * deleted, even if you set the new one to NULL. If you want to keep that
+ * old content object, use the elm_bg_overlay_unset() function.
+ *
+ * @ingroup Bg
+ */
+
EAPI void elm_bg_overlay_set(Evas_Object *obj, Evas_Object *overlay) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the overlay object used for the background object.
+ *
+ * @param obj The bg object
+ * @return The content that is being used
+ *
+ * Return the content object which is set for this widget
+ *
+ * @ingroup Bg
+ */
EAPI Evas_Object *elm_bg_overlay_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the overlay object used for the background object.
+ *
+ * @param obj The bg object
+ * @return The content that was being used
+ *
+ * Unparent and return the overlay object which was set for this widget
+ *
+ * @ingroup Bg
+ */
EAPI Evas_Object *elm_bg_overlay_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the size of the pixmap representation of the image.
+ *
+ * This option just makes sense if an image is going to be set in the bg.
+ *
+ * @param obj The bg object
+ * @param w The new width of the image pixmap representation.
+ * @param h The new height of the image pixmap representation.
+ *
+ * This function sets a new size for pixmap representation of the given bg
+ * image. It allows the image to be loaded already in the specified size,
+ * reducing the memory usage and load time when loading a big image with load
+ * size set to a smaller size.
+ *
+ * NOTE: this is just a hint, the real size of the pixmap may differ
+ * depending on the type of image being loaded, being bigger than requested.
+ *
+ * @ingroup Bg
+ */
EAPI void elm_bg_load_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
/* smart callbacks called:
*/
EAPI Evas_Object *elm_icon_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_icon_file_set(Evas_Object *obj, const char *file, const char *group) EINA_ARG_NONNULL(1, 2);
+ EAPI void elm_icon_thumb_set(const Evas_Object *obj, const char *file, const char *group) EINA_ARG_NONNULL(1, 2);
EAPI void elm_icon_file_get(const Evas_Object *obj, const char **file, const char **group) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_icon_standard_set(Evas_Object *obj, const char *name) EINA_ARG_NONNULL(1);
EAPI const char *elm_icon_standard_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI int elm_icon_prescale_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_icon_order_lookup_set(Evas_Object *obj, Elm_Icon_Lookup_Order order) EINA_ARG_NONNULL(1);
EAPI Elm_Icon_Lookup_Order elm_icon_order_lookup_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_icon_anim_available_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_icon_anim_set(Evas_Object *obj, Eina_Bool anim) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_icon_anim_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_icon_anim_play_set(Evas_Object *obj, Eina_Bool play) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_icon_anim_play_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
/* smart callbacks called:
* "clicked" - the user clicked the icon
*/
EAPI Elm_Image_Orient elm_image_orient_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_image_editable_set(Evas_Object *obj, Eina_Bool set) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_image_editable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_image_object_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_image_aspect_ratio_retained_set(Evas_Object *obj, Eina_Bool retained) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_image_aspect_ratio_retained_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
* "clicked" - the user clicked the image
*/
+ /* glview */
+ typedef void (*Elm_GLView_Func)(Evas_Object *obj);
+
+ typedef enum _Elm_GLView_Mode
+ {
+ ELM_GLVIEW_ALPHA = 1,
+ ELM_GLVIEW_DEPTH = 2,
+ ELM_GLVIEW_STENCIL = 4
+ } Elm_GLView_Mode;
+
+ /**
+ * Defines a policy for the glview resizing.
+ *
+ * @note Default is ELM_GLVIEW_RESIZE_POLICY_RECREATE
+ */
+ typedef enum _Elm_GLView_Resize_Policy
+ {
+ ELM_GLVIEW_RESIZE_POLICY_RECREATE = 1, /**< Resize the internal surface along with the image */
+ ELM_GLVIEW_RESIZE_POLICY_SCALE = 2 /**< Only reize the internal image and not the surface */
+ } Elm_GLView_Resize_Policy;
+
+ typedef enum _Elm_GLView_Render_Policy
+ {
+ ELM_GLVIEW_RENDER_POLICY_ON_DEMAND = 1, /**< Render only when there is a need for redrawing */
+ ELM_GLVIEW_RENDER_POLICY_ALWAYS = 2 /**< Render always even when it is not visible */
+ } Elm_GLView_Render_Policy;
+
+
+ EAPI Evas_Object *elm_glview_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+ EAPI void elm_glview_size_set(Evas_Object *obj, Evas_Coord width, Evas_Coord height) EINA_ARG_NONNULL(1);
+ EAPI void elm_glview_size_get(const Evas_Object *obj, Evas_Coord *width, Evas_Coord *height) EINA_ARG_NONNULL(1);
+ EAPI Evas_GL_API *elm_glview_gl_api_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_glview_mode_set(Evas_Object *obj, Elm_GLView_Mode mode) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_glview_resize_policy_set(Evas_Object *obj, Elm_GLView_Resize_Policy policy) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_glview_render_policy_set(Evas_Object *obj, Elm_GLView_Render_Policy policy) EINA_ARG_NONNULL(1);
+ EAPI void elm_glview_init_func_set(Evas_Object *obj, Elm_GLView_Func func) EINA_ARG_NONNULL(1);
+ EAPI void elm_glview_del_func_set(Evas_Object *obj, Elm_GLView_Func func) EINA_ARG_NONNULL(1);
+ EAPI void elm_glview_resize_func_set(Evas_Object *obj, Elm_GLView_Func func) EINA_ARG_NONNULL(1);
+ EAPI void elm_glview_render_func_set(Evas_Object *obj, Elm_GLView_Func func) EINA_ARG_NONNULL(1);
+ EAPI void elm_glview_changed_set(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
/* box */
+ /**
+ * @defgroup Box Box
+ *
+ * A box arranges objects in a linear fashion, governed by a layout function
+ * that defines the details of this arrangement.
+ *
+ * By default, the box will use an internal function to set the layout to
+ * a single row, either vertical or horizontal. This layout is affected
+ * by a number of parameters, such as the homogeneous flag set by
+ * elm_box_homogeneous_set(), the values given by elm_box_padding_set() and
+ * elm_box_align_set() and the hints set to each object in the box.
+ *
+ * For this default layout, it's possible to change the orientation with
+ * elm_box_horizontal_set(). The box will start in the vertical orientation,
+ * placing its elements ordered from top to bottom. When horizontal is set,
+ * the order will go from left to right. If the box is set to be
+ * homogeneous, every object in it will be assigned the same space, that
+ * of the largest object. Padding can be used to set some spacing between
+ * the cell given to each object. The alignment of the box, set with
+ * elm_box_align_set(), determines how the bounding box of all the elements
+ * will be placed within the space given to the box widget itself.
+ *
+ * The size hints of each object also affect how they are placed and sized
+ * within the box. evas_object_size_hint_min_set() will give the minimum
+ * size the object can have, and the box will use it as the basis for all
+ * latter calculations. Elementary widgets set their own minimum size as
+ * needed, so there's rarely any need to use it manually.
+ *
+ * evas_object_size_hint_weight_set(), when not in homogeneous mode, is
+ * used to tell whether the object will be allocated the minimum size it
+ * needs or if the space given to it should be expanded. It's important
+ * to realize that expanding the size given to the object is not the same
+ * thing as resizing the object. It could very well end being a small
+ * widget floating in a much larger empty space. If not set, the weight
+ * for objects will normally be 0.0 for both axis, meaning the widget will
+ * not be expanded. To take as much space possible, set the weight to
+ * EVAS_HINT_EXPAND (defined to 1.0) for the desired axis to expand.
+ *
+ * Besides how much space each object is allocated, it's possible to control
+ * how the widget will be placed within that space using
+ * evas_object_size_hint_align_set(). By default, this value will be 0.5
+ * for both axis, meaning the object will be centered, but any value from
+ * 0.0 (left or top, for the @c x and @c y axis, respectively) to 1.0
+ * (right or bottom) can be used. The special value EVAS_HINT_FILL, which
+ * is -1.0, means the object will be resized to fill the entire space it
+ * was allocated.
+ *
+ * In addition, customized functions to define the layout can be set, which
+ * allow the application developer to organize the objects within the box
+ * in any number of ways.
+ *
+ * The special elm_box_layout_transition() function can be used
+ * to switch from one layout to another, animating the motion of the
+ * children of the box.
+ *
+ * @note Objects should not be added to box objects using _add() calls.
+ *
+ * Some examples on how to use boxes follow:
+ * @li @ref box_example_01
+ * @li @ref box_example_02
+ *
+ * @{
+ */
+ /**
+ * @typedef Elm_Box_Transition
+ *
+ * Opaque handler containing the parameters to perform an animated
+ * transition of the layout the box uses.
+ *
+ * @see elm_box_transition_new()
+ * @see elm_box_layout_set()
+ * @see elm_box_layout_transition()
+ */
typedef struct _Elm_Box_Transition Elm_Box_Transition;
+ /**
+ * Add a new box to the parent
+ *
+ * By default, the box will be in vertical mode and non-homogeneous.
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ */
EAPI Evas_Object *elm_box_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+ /**
+ * Set the horizontal orientation
+ *
+ * By default, box object arranges their contents vertically from top to
+ * bottom.
+ * By calling this function with @p horizontal as EINA_TRUE, the box will
+ * become horizontal, arranging contents from left to right.
+ *
+ * @note This flag is ignored if a custom layout function is set.
+ *
+ * @param obj The box object
+ * @param horizontal The horizontal flag (EINA_TRUE = horizontal,
+ * EINA_FALSE = vertical)
+ */
EAPI void elm_box_horizontal_set(Evas_Object *obj, Eina_Bool horizontal) EINA_ARG_NONNULL(1);
+ /**
+ * Get the horizontal orientation
+ *
+ * @param obj The box object
+ * @return EINA_TRUE if the box is set to horizintal mode, EINA_FALSE otherwise
+ */
EAPI Eina_Bool elm_box_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_box_homogenous_set(Evas_Object *obj, Eina_Bool homogenous) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_box_homogenous_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_box_extended_mode_set(Evas_Object *obj, Eina_Bool extended) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_box_extended_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set the box to arrange its children homogeneously
+ *
+ * If enabled, homogeneous layout makes all items the same size, according
+ * to the size of the largest of its children.
+ *
+ * @note This flag is ignored if a custom layout function is set.
+ *
+ * @param obj The box object
+ * @param homogeneous The homogeneous flag
+ */
+ EAPI void elm_box_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous) EINA_ARG_NONNULL(1);
+ /**
+ * Get whether the box is using homogeneous mode or not
+ *
+ * @param obj The box object
+ * @return EINA_TRUE if it's homogeneous, EINA_FALSE otherwise
+ */
+ EAPI Eina_Bool elm_box_homogeneous_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_box_homogenous_set(Evas_Object *obj, Eina_Bool homogenous) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI Eina_Bool elm_box_homogenous_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Add an object to the beginning of the pack list
+ *
+ * Pack @p subobj into the box @p obj, placing it first in the list of
+ * children objects. The actual position the object will get on screen
+ * depends on the layout used. If no custom layout is set, it will be at
+ * the top or left, depending if the box is vertical or horizontal,
+ * respectively.
+ *
+ * @param obj The box object
+ * @param subobj The object to add to the box
+ *
+ * @see elm_box_pack_end()
+ * @see elm_box_pack_before()
+ * @see elm_box_pack_after()
+ * @see elm_box_unpack()
+ * @see elm_box_unpack_all()
+ * @see elm_box_clear()
+ */
EAPI void elm_box_pack_start(Evas_Object *obj, Evas_Object *subobj) EINA_ARG_NONNULL(1);
+ /**
+ * Add an object at the end of the pack list
+ *
+ * Pack @p subobj into the box @p obj, placing it last in the list of
+ * children objects. The actual position the object will get on screen
+ * depends on the layout used. If no custom layout is set, it will be at
+ * the bottom or right, depending if the box is vertical or horizontal,
+ * respectively.
+ *
+ * @param obj The box object
+ * @param subobj The object to add to the box
+ *
+ * @see elm_box_pack_start()
+ * @see elm_box_pack_before()
+ * @see elm_box_pack_after()
+ * @see elm_box_unpack()
+ * @see elm_box_unpack_all()
+ * @see elm_box_clear()
+ */
EAPI void elm_box_pack_end(Evas_Object *obj, Evas_Object *subobj) EINA_ARG_NONNULL(1);
+ /**
+ * Adds an object to the box before the indicated object
+ *
+ * This will add the @p subobj to the box indicated before the object
+ * indicated with @p before. If @p before is not already in the box, results
+ * are undefined. Before means either to the left of the indicated object or
+ * above it depending on orientation.
+ *
+ * @param obj The box object
+ * @param subobj The object to add to the box
+ * @param before The object before which to add it
+ *
+ * @see elm_box_pack_start()
+ * @see elm_box_pack_end()
+ * @see elm_box_pack_after()
+ * @see elm_box_unpack()
+ * @see elm_box_unpack_all()
+ * @see elm_box_clear()
+ */
EAPI void elm_box_pack_before(Evas_Object *obj, Evas_Object *subobj, Evas_Object *before) EINA_ARG_NONNULL(1);
+ /**
+ * Adds an object to the box after the indicated object
+ *
+ * This will add the @p subobj to the box indicated after the object
+ * indicated with @p after. If @p after is not already in the box, results
+ * are undefined. After means either to the right of the indicated object or
+ * below it depending on orientation.
+ *
+ * @param obj The box object
+ * @param subobj The object to add to the box
+ * @param after The object after which to add it
+ *
+ * @see elm_box_pack_start()
+ * @see elm_box_pack_end()
+ * @see elm_box_pack_before()
+ * @see elm_box_unpack()
+ * @see elm_box_unpack_all()
+ * @see elm_box_clear()
+ */
EAPI void elm_box_pack_after(Evas_Object *obj, Evas_Object *subobj, Evas_Object *after) EINA_ARG_NONNULL(1);
+ /**
+ * Clear the box of all children
+ *
+ * Remove all the elements contained by the box, deleting the respective
+ * objects.
+ *
+ * @param obj The box object
+ *
+ * @see elm_box_unpack()
+ * @see elm_box_unpack_all()
+ */
EAPI void elm_box_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Unpack a box item
+ *
+ * Remove the object given by @p subobj from the box @p obj without
+ * deleting it.
+ *
+ * @param obj The box object
+ *
+ * @see elm_box_unpack_all()
+ * @see elm_box_clear()
+ */
EAPI void elm_box_unpack(Evas_Object *obj, Evas_Object *subobj) EINA_ARG_NONNULL(1);
+ /**
+ * Remove all items from the box, without deleting them
+ *
+ * Clear the box from all children, but don't delete the respective objects.
+ * If no other references of the box children exist, the objects will never
+ * be deleted, and thus the application will leak the memory. Make sure
+ * when using this function that you hold a reference to all the objects
+ * in the box @p obj.
+ *
+ * @param obj The box object
+ *
+ * @see elm_box_clear()
+ * @see elm_box_unpack()
+ */
EAPI void elm_box_unpack_all(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Retrieve a list of the objects packed into the box
+ *
+ * Returns a new @c Eina_List with a pointer to @c Evas_Object in its nodes.
+ * The order of the list corresponds to the packing order the box uses.
+ *
+ * You must free this list with eina_list_free() once you are done with it.
+ *
+ * @param obj The box object
+ */
EAPI const Eina_List *elm_box_children_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set the space (padding) between the box's elements.
+ *
+ * Extra space in pixels that will be added between a box child and its
+ * neighbors after its containing cell has been calculated. This padding
+ * is set for all elements in the box, besides any possible padding that
+ * individual elements may have through their size hints.
+ *
+ * @param obj The box object
+ * @param horizontal The horizontal space between elements
+ * @param vertical The vertical space between elements
+ */
EAPI void elm_box_padding_set(Evas_Object *obj, Evas_Coord horizontal, Evas_Coord vertical) EINA_ARG_NONNULL(1);
+ /**
+ * Get the space (padding) between the box's elements.
+ *
+ * @param obj The box object
+ * @param horizontal The horizontal space between elements
+ * @param vertical The vertical space between elements
+ *
+ * @see elm_box_padding_set()
+ */
EAPI void elm_box_padding_get(const Evas_Object *obj, Evas_Coord *horizontal, Evas_Coord *vertical) EINA_ARG_NONNULL(1);
+ /**
+ * Set the alignment of the whole bouding box of contents.
+ *
+ * Sets how the bounding box containing all the elements of the box, after
+ * their sizes and position has been calculated, will be aligned within
+ * the space given for the whole box widget.
+ *
+ * @param obj The box object
+ * @param horizontal The horizontal alignment of elements
+ * @param vertical The vertical alignment of elements
+ */
EAPI void elm_box_align_set(Evas_Object *obj, double horizontal, double vertical) EINA_ARG_NONNULL(1);
+ /**
+ * Get the alignment of the whole bouding box of contents.
+ *
+ * @param obj The box object
+ * @param horizontal The horizontal alignment of elements
+ * @param vertical The vertical alignment of elements
+ *
+ * @see elm_box_align_set()
+ */
EAPI void elm_box_align_get(const Evas_Object *obj, double *horizontal, double *vertical) EINA_ARG_NONNULL(1);
+ /**
+ * Set the layout defining function to be used by the box
+ *
+ * Whenever anything changes that requires the box in @p obj to recalculate
+ * the size and position of its elements, the function @p cb will be called
+ * to determine what the layout of the children will be.
+ *
+ * Once a custom function is set, everything about the children layout
+ * is defined by it. The flags set by elm_box_horizontal_set() and
+ * elm_box_homogeneous_set() no longer have any meaning, and the values
+ * given by elm_box_padding_set() and elm_box_align_set() are up to this
+ * layout function to decide if they are used and how. These last two
+ * will be found in the @c priv parameter, of type @c Evas_Object_Box_Data,
+ * passed to @p cb. The @c Evas_Object the function receives is not the
+ * Elementary widget, but the internal Evas Box it uses, so none of the
+ * functions described here can be used on it.
+ *
+ * Any of the layout functions in @c Evas can be used here, as well as the
+ * special elm_box_layout_transition().
+ *
+ * The final @p data argument received by @p cb is the same @p data passed
+ * here, and the @p free_data function will be called to free it
+ * whenever the box is destroyed or another layout function is set.
+ *
+ * Setting @p cb to NULL will revert back to the default layout function.
+ *
+ * @param obj The box object
+ * @param cb The callback function used for layout
+ * @param data Data that will be passed to layout function
+ * @param free_data Function called to free @p data
+ *
+ * @see elm_box_layout_transition()
+ */
EAPI void elm_box_layout_set(Evas_Object *obj, Evas_Object_Box_Layout cb, const void *data, void (*free_data)(void *data)) EINA_ARG_NONNULL(1);
+ /**
+ * Special layout function that animates the transition from one layout to another
+ *
+ * Normally, when switching the layout function for a box, this will be
+ * reflected immediately on screen on the next render, but it's also
+ * possible to do this through an animated transition.
+ *
+ * This is done by creating an ::Elm_Box_Transition and setting the box
+ * layout to this function.
+ *
+ * For example:
+ * @code
+ * Elm_Box_Transition *t = elm_box_transition_new(1.0,
+ * evas_object_box_layout_vertical, // start
+ * NULL, // data for initial layout
+ * NULL, // free function for initial data
+ * evas_object_box_layout_horizontal, // end
+ * NULL, // data for final layout
+ * NULL, // free function for final data
+ * anim_end, // will be called when animation ends
+ * NULL); // data for anim_end function\
+ * elm_box_layout_set(box, elm_box_layout_transition, t,
+ * elm_box_transition_free);
+ * @endcode
+ *
+ * @note This function can only be used with elm_box_layout_set(). Calling
+ * it directly will not have the expected results.
+ *
+ * @see elm_box_transition_new
+ * @see elm_box_transition_free
+ * @see elm_box_layout_set
+ */
EAPI void elm_box_layout_transition(Evas_Object *obj, Evas_Object_Box_Data *priv, void *data);
+ /**
+ * Create a new ::Elm_Box_Transition to animate the switch of layouts
+ *
+ * If you want to animate the change from one layout to another, you need
+ * to set the layout function of the box to elm_box_layout_transition(),
+ * passing as user data to it an instance of ::Elm_Box_Transition with the
+ * necessary information to perform this animation. The free function to
+ * set for the layout is elm_box_transition_free().
+ *
+ * The parameters to create an ::Elm_Box_Transition sum up to how long
+ * will it be, in seconds, a layout function to describe the initial point,
+ * another for the final position of the children and one function to be
+ * called when the whole animation ends. This last function is useful to
+ * set the definitive layout for the box, usually the same as the end
+ * layout for the animation, but could be used to start another transition.
+ *
+ * @param start_layout The layout function that will be used to start the animation
+ * @param start_layout_data The data to be passed the @p start_layout function
+ * @param start_layout_free_data Function to free @p start_layout_data
+ * @param end_layout The layout function that will be used to end the animation
+ * @param end_layout_free_data The data to be passed the @p end_layout function
+ * @param end_layout_free_data Function to free @p end_layout_data
+ * @param transition_end_cb Callback function called when animation ends
+ * @param transition_end_data Data to be passed to @p transition_end_cb
+ * @return An instance of ::Elm_Box_Transition
+ *
+ * @see elm_box_transition_new
+ * @see elm_box_layout_transition
+ */
EAPI Elm_Box_Transition *elm_box_transition_new(const double duration, Evas_Object_Box_Layout start_layout, void *start_layout_data, void(*start_layout_free_data)(void *data), Evas_Object_Box_Layout end_layout, void *end_layout_data, void(*end_layout_free_data)(void *data), void(*transition_end_cb)(void *data), void *transition_end_data) EINA_ARG_NONNULL(2, 5);
+ /**
+ * Free a Elm_Box_Transition instance created with elm_box_transition_new().
+ *
+ * This function is mostly useful as the @c free_data parameter in
+ * elm_box_layout_set() when elm_box_layout_transition().
+ *
+ * @param data The Elm_Box_Transition instance to be freed.
+ *
+ * @see elm_box_transition_new
+ * @see elm_box_layout_transition
+ */
EAPI void elm_box_transition_free(void *data);
- /* smart callbacks called:
+ /**
+ * @}
+ */
+
+ /* button */
+ /**
+ * @defgroup Button Button
+ *
+ * @image html widget/button/preview-00.png
+ * @image html widget/button/preview-01.png
+ * @image html widget/button/preview-02.png
+ *
+ * This is a push-button. Press it and run some function. It can contain
+ * a simple label and icon object and it also has an autorepeat feature.
+ *
+ * This widgets emits the following signals:
+ * @li "clicked": the user clicked the button (press/release).
+ * @li "repeated": the user pressed the button without releasing it.
+ * @li "pressed": button was pressed.
+ * @li "unpressed": button was released after being pressed.
+ * In all three cases, the @c event parameter of the callback will be
+ * @c NULL.
+ *
+ * Also, defined in the default theme, the button has the following styles
+ * available:
+ * @li default: a normal button.
+ * @li anchor: Like default, but the button fades away when the mouse is not
+ * over it, leaving only the text or icon.
+ * @li hoversel_vertical: Internally used by @ref Hoversel to give a
+ * continuous look across its options.
+ * @li hoversel_vertical_entry: Another internal for @ref Hoversel.
+ *
+ * Follow through a complete example @ref button_example_01 "here".
+ * @{
*/
+
typedef enum
{
- UIControlStateDefault,
- UIControlStateHighlighted,
- UIControlStateDisabled,
- UIControlStateFocused,
- UIControlStateReserved
+ UIControlStateDefault,
+ UIControlStateHighlighted,
+ UIControlStateDisabled,
+ UIControlStateFocused,
+ UIControlStateReserved
} UIControlState;
- /* button */
+ /**
+ * Add a new button to the parent's canvas
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ */
EAPI Evas_Object *elm_button_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
- EAPI void elm_button_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
- EAPI void elm_button_label_set_for_state(Evas_Object *obj, const char *label, UIControlState state);
- EAPI const char *elm_button_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI const char *elm_button_label_get_for_state(const Evas_Object *obj, UIControlState state);
+ /**
+ * Set the label used in the button
+ *
+ * The passed @p label can be NULL to clean any existing text in it and
+ * leave the button as an icon only object.
+ *
+ * @param obj The button object
+ * @param label The text will be written on the button
+ * @deprecated use elm_object_text_set() instead.
+ */
+ EINA_DEPRECATED EAPI void elm_button_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+ /**
+ * Get the label set for the button
+ *
+ * The string returned is an internal pointer and should not be freed or
+ * altered. It will also become invalid when the button is destroyed.
+ * The string returned, if not NULL, is a stringshare, so if you need to
+ * keep it around even after the button is destroyed, you can use
+ * eina_stringshare_ref().
+ *
+ * @param obj The button object
+ * @return The text set to the label, or NULL if nothing is set
+ * @deprecated use elm_object_text_set() instead.
+ */
+ EINA_DEPRECATED EAPI const char *elm_button_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set the label for each state of button
+ *
+ * The passed @p label can be NULL to clean any existing text in it and
+ * leave the button as an icon only object for the state.
+ *
+ * @param obj The button object
+ * @param label The text will be written on the button
+ * @param state The state of button
+ *
+ * @ingroup Button
+ */
+ EINA_DEPRECATED EAPI void elm_button_label_set_for_state(Evas_Object *obj, const char *label, UIControlState state) EINA_ARG_NONNULL(1);
+ /**
+ * Get the label of button for each state
+ *
+ * The string returned is an internal pointer and should not be freed or
+ * altered. It will also become invalid when the button is destroyed.
+ * The string returned, if not NULL, is a stringshare, so if you need to
+ * keep it around even after the button is destroyed, you can use
+ * eina_stringshare_ref().
+ *
+ * @param obj The button object
+ * @param state The state of button
+ * @return The title of button for state
+ *
+ * @ingroup Button
+ */
+ EINA_DEPRECATED EAPI const char *elm_button_label_get_for_state(const Evas_Object *obj, UIControlState state) EINA_ARG_NONNULL(1);
+ /**
+ * Set the icon used for the button
+ *
+ * Setting a new icon will delete any other that was previously set, making
+ * any reference to them invalid. If you need to maintain the previous
+ * object alive, unset it first with elm_button_icon_unset().
+ *
+ * @param obj The button object
+ * @param icon The icon object for the button
+ */
EAPI void elm_button_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+ /**
+ * Get the icon used for the button
+ *
+ * Return the icon object which is set for this widget. If the button is
+ * destroyed or another icon is set, the returned object will be deleted
+ * and any reference to it will be invalid.
+ *
+ * @param obj The button object
+ * @return The icon object that is being used
+ *
+ * @see elm_button_icon_unset()
+ */
EAPI Evas_Object *elm_button_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Remove the icon set without deleting it and return the object
+ *
+ * This function drops the reference the button holds of the icon object
+ * and returns this last object. It is used in case you want to remove any
+ * icon, or set another one, without deleting the actual object. The button
+ * will be left without an icon set.
+ *
+ * @param obj The button object
+ * @return The icon object that was being used
+ */
EAPI Evas_Object *elm_button_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_button_autorepeat_set(Evas_Object *obj, Eina_Bool on) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_button_autorepeat_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_button_autorepeat_initial_timeout_set(Evas_Object *obj, double t) EINA_ARG_NONNULL(1);
+ /**
+ * Turn on/off the autorepeat event generated when the button is kept pressed
+ *
+ * When off, no autorepeat is performed and buttons emit a normal @c clicked
+ * signal when they are clicked.
+ *
+ * When on, keeping a button pressed will continuously emit a @c repeated
+ * signal until the button is released. The time it takes until it starts
+ * emitting the signal is given by
+ * elm_button_autorepeat_initial_timeout_set(), and the time between each
+ * new emission by elm_button_autorepeat_gap_timeout_set().
+ *
+ * @param obj The button object
+ * @param on A bool to turn on/off the event
+ */
+ EAPI void elm_button_autorepeat_set(Evas_Object *obj, Eina_Bool on) EINA_ARG_NONNULL(1);
+ /**
+ * Get whether the autorepeat feature is enabled
+ *
+ * @param obj The button object
+ * @return EINA_TRUE if autorepeat is on, EINA_FALSE otherwise
+ *
+ * @see elm_button_autorepeat_set()
+ */
+ EAPI Eina_Bool elm_button_autorepeat_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set the initial timeout before the autorepeat event is generated
+ *
+ * Sets the timeout, in seconds, since the button is pressed until the
+ * first @c repeated signal is emitted. If @p t is 0.0 or less, there
+ * won't be any delay and the even will be fired the moment the button is
+ * pressed.
+ *
+ * @param obj The button object
+ * @param t Timeout in seconds
+ *
+ * @see elm_button_autorepeat_set()
+ * @see elm_button_autorepeat_gap_timeout_set()
+ */
+ EAPI void elm_button_autorepeat_initial_timeout_set(Evas_Object *obj, double t) EINA_ARG_NONNULL(1);
+ /**
+ * Get the initial timeout before the autorepeat event is generated
+ *
+ * @param obj The button object
+ * @return Timeout in seconds
+ *
+ * @see elm_button_autorepeat_initial_timeout_set()
+ */
EAPI double elm_button_autorepeat_initial_timeout_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set the interval between each generated autorepeat event
+ *
+ * After the first @c repeated event is fired, all subsequent ones will
+ * follow after a delay of @p t seconds for each.
+ *
+ * @param obj The button object
+ * @param t Interval in seconds
+ *
+ * @see elm_button_autorepeat_initial_timeout_set()
+ */
EAPI void elm_button_autorepeat_gap_timeout_set(Evas_Object *obj, double t) EINA_ARG_NONNULL(1);
- EAPI double elm_button_autorepeat_gap_timeout_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- /* available styles:
- * default
- * anchor
- * hoversel_vertical
- * hoversel_vertical_entry
+ /**
+ * Get the interval between each generated autorepeat event
+ *
+ * @param obj The button object
+ * @return Interval in seconds
*/
- /* smart callbacks called:
- * "clicked" - the user clicked the button
- * "repeated" - the user pressed the button without releasing it
- * "unpressed" - when the button is unpressed (released)
+ EAPI double elm_button_autorepeat_gap_timeout_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * @}
*/
/* fileselector */
EAPI Evas_Object *elm_fileselector_button_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
- EAPI void elm_fileselector_button_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
- EAPI const char *elm_fileselector_button_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_fileselector_button_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI const char *elm_fileselector_button_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_fileselector_button_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_fileselector_button_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_fileselector_button_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
*/
EAPI Evas_Object *elm_fileselector_entry_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
- EAPI void elm_fileselector_entry_button_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
- EAPI const char *elm_fileselector_entry_button_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_fileselector_entry_button_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI const char *elm_fileselector_entry_button_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_fileselector_entry_button_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_fileselector_entry_button_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_fileselector_entry_button_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
/* label */
EAPI Evas_Object *elm_label_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
- EAPI void elm_label_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
- EAPI const char *elm_label_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_label_line_wrap_set(Evas_Object *obj, Eina_Bool wrap) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_label_line_wrap_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_label_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1); /* deprecated, use elm_object_text_set instead */
+ EINA_DEPRECATED EAPI const char *elm_label_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /* deprecated, use elm_object_text_get instead */
+ EAPI void elm_label_line_wrap_set(Evas_Object *obj, Elm_Wrap_Type wrap) EINA_ARG_NONNULL(1);
+ EAPI Elm_Wrap_Type elm_label_line_wrap_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_label_wrap_width_set(Evas_Object *obj, Evas_Coord w) EINA_ARG_NONNULL(1);
EAPI Evas_Coord elm_label_wrap_width_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_label_wrap_height_set(Evas_Object *obj, Evas_Coord h) EINA_ARG_NONNULL(1);
EAPI void elm_label_text_align_set(Evas_Object *obj, const char *alignmode) EINA_ARG_NONNULL(1);
EAPI void elm_label_background_color_set(Evas_Object *obj, unsigned int r, unsigned int g, unsigned int b, unsigned int a) EINA_ARG_NONNULL(1);
EAPI void elm_label_ellipsis_set(Evas_Object *obj, Eina_Bool ellipsis) EINA_ARG_NONNULL(1);
- EAPI void elm_label_wrap_mode_set(Evas_Object *obj, Eina_Bool wrapmode) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_label_wrap_mode_set(Evas_Object *obj, Eina_Bool wrapmode) EINA_ARG_NONNULL(1);
EAPI void elm_label_slide_set(Evas_Object *obj, Eina_Bool slide) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_label_slide_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_label_slide_duration_set(Evas_Object *obj, int duration) EINA_ARG_NONNULL(1);
- EAPI int elm_label_slide_duration_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_label_slide_duration_set(Evas_Object *obj, double duration) EINA_ARG_NONNULL(1);
+ EAPI double elm_label_slide_duration_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
/* available styles:
* default
* marker
/* toggle */
EAPI Evas_Object *elm_toggle_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
- EAPI void elm_toggle_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
- EAPI const char *elm_toggle_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_toggle_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI const char *elm_toggle_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_toggle_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_toggle_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_toggle_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
* by the cursor in the first place).
*/
- /* frame */
+ /**
+ * @page tutorial_frame Frame example
+ * @dontinclude frame_example_01.c
+ *
+ * In this example we are going to create 4 Frames with different styles and
+ * add a rectangle of different color in each.
+ *
+ * We start we the usual setup code:
+ * @until show(bg)
+ *
+ * And then create one rectangle:
+ * @until show
+ *
+ * To add it in our first frame, which since it doesn't have it's style
+ * specifically set uses the default style:
+ * @until show
+ *
+ * And then create another rectangle:
+ * @until show
+ *
+ * To add it in our second frame, which uses the "pad_small" style, note that
+ * even tough we are setting a text for this frame it won't be show, only the
+ * default style shows the Frame's title:
+ * @until show
+ * @note The "pad_small", "pad_medium", "pad_large" and "pad_huge" styles are
+ * very similar, their only difference is the size of the empty area around
+ * the content of the frame.
+ *
+ * And then create yet another rectangle:
+ * @until show
+ *
+ * To add it in our third frame, which uses the "outdent_top" style, note
+ * that even tough we are setting a text for this frame it won't be show,
+ * only the default style shows the Frame's title:
+ * @until show
+ *
+ * And then create one last rectangle:
+ * @until show
+ *
+ * To add it in our fourth and final frame, which uses the "outdent_bottom"
+ * style, note that even tough we are setting a text for this frame it won't
+ * be show, only the default style shows the Frame's title:
+ * @until show
+ *
+ * And now we are left with just some more setup code:
+ * @until ELM_MAIN()
+ *
+ * Our example will look like this:
+ * @image html screenshots/frame_example_01.png
+ * @image latex screenshots/frame_example_01.eps
+ *
+ * @example frame_example_01.c
+ */
+ /**
+ * @defgroup Frame Frame
+ *
+ * @brief Frame is a widget that holds some content and has a title.
+ *
+ * The default look is a frame with a title, but Frame supports multple
+ * styles:
+ * @li default
+ * @li pad_small
+ * @li pad_medium
+ * @li pad_large
+ * @li pad_huge
+ * @li outdent_top
+ * @li outdent_bottom
+ *
+ * Of all this styles only default shows the title. Frame emits no signals.
+ *
+ * For a detailed example see the @ref tutorial_frame.
+ *
+ * @{
+ */
+ /**
+ * @brief Add a new frame to the parent
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ */
EAPI Evas_Object *elm_frame_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
- EAPI void elm_frame_label_set(Evas_Object *obj, const char *label); EINA_ARG_NONNULL(1)
- EAPI const char *elm_frame_label_get(const Evas_Object *obj); EINA_ARG_NONNULL(1)
- EAPI void elm_frame_content_set(Evas_Object *obj, Evas_Object *content); EINA_ARG_NONNULL(1)
- EAPI Evas_Object *elm_frame_content_get(const Evas_Object *obj); EINA_ARG_NONNULL(1)
- EAPI Evas_Object *elm_frame_content_unset(Evas_Object *obj); EINA_ARG_NONNULL(1)
- /* available styles:
- * default
- * pad_small
- * pad_medium
- * pad_large
- * pad_huge
- * outdent_top
- * outdent_bottom
+ /**
+ * @brief Set the frame label
+ *
+ * @param obj The frame object
+ * @param label The label of this frame object
+ *
+ * @deprecated use elm_object_text_set() instead.
*/
- /* smart callbacks called:
+ EINA_DEPRECATED EAPI void elm_frame_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Get the frame label
+ *
+ * @param obj The frame object
+ *
+ * @return The label of this frame objet or NULL if unable to get frame
+ *
+ * @deprecated use elm_object_text_get() instead.
+ */
+ EINA_DEPRECATED EAPI const char *elm_frame_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Set the content of the frame widget
+ *
+ * Once the content object is set, a previously set one will be deleted.
+ * If you want to keep that old content object, use the
+ * elm_frame_content_unset() function.
+ *
+ * @param obj The frame object
+ * @param content The content will be filled in this frame object
+ */
+ EAPI void elm_frame_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Get the content of the frame widget
+ *
+ * Return the content object which is set for this widget
+ *
+ * @param obj The frame object
+ * @return The content that is being used
+ */
+ EAPI Evas_Object *elm_frame_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Unset the content of the frame widget
+ *
+ * Unparent and return the content object which was set for this widget
+ *
+ * @param obj The frame object
+ * @return The content that was being used
+ */
+ EAPI Evas_Object *elm_frame_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * @}
*/
/* table */
EAPI Evas_Object *elm_table_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
- EAPI void elm_table_homogenous_set(Evas_Object *obj, Eina_Bool homogenous) EINA_ARG_NONNULL(1);
+ EAPI void elm_table_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_table_homogeneous_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_table_homogenous_set(Evas_Object *obj, Eina_Bool homogenous) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI Eina_Bool elm_table_homogenous_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_table_padding_set(Evas_Object *obj, Evas_Coord horizontal, Evas_Coord vertical) EINA_ARG_NONNULL(1);
EAPI void elm_table_padding_get(const Evas_Object *obj, Evas_Coord *horizontal, Evas_Coord *vertical) EINA_ARG_NONNULL(1);
EAPI void elm_table_pack(Evas_Object *obj, Evas_Object *subobj, int x, int y, int w, int h) EINA_ARG_NONNULL(1);
EAPI void elm_table_unpack(Evas_Object *obj, Evas_Object *subobj) EINA_ARG_NONNULL(1);
EAPI void elm_table_clear(Evas_Object *obj, Eina_Bool clear) EINA_ARG_NONNULL(1);
+ EAPI void elm_table_pack_set(Evas_Object *subobj, int x, int y, int w, int h) EINA_ARG_NONNULL(1);
+ EAPI void elm_table_pack_get(Evas_Object *subobj, int *x, int *y, int *w, int *h) EINA_ARG_NONNULL(1);
/* gengrid */
typedef struct _Elm_Gengrid_Item_Class Elm_Gengrid_Item_Class;
EAPI void elm_gengrid_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
EAPI void elm_gengrid_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
EAPI void elm_gengrid_page_relative_set(Evas_Object *obj, double h_pagerel, double v_pagerel) EINA_ARG_NONNULL(1);
+ EAPI void elm_gengrid_page_relative_get(const Evas_Object *obj, double *h_pagerel, double *v_pagerel) EINA_ARG_NONNULL(1);
EAPI void elm_gengrid_page_size_set(Evas_Object *obj, Evas_Coord h_pagesize, Evas_Coord v_pagesize) EINA_ARG_NONNULL(1);
EAPI void elm_gengrid_horizontal_set(Evas_Object *obj, Eina_Bool setting) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_gengrid_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI Elm_Gengrid_Item *elm_gengrid_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI Elm_Gengrid_Item *elm_gengrid_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_gengrid_item_gengrid_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
EAPI void elm_gengrid_item_del(Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
EAPI void elm_gengrid_item_update(Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
+ EAPI const Elm_Gengrid_Item_Class *elm_gengrid_item_item_class_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
+ EAPI void elm_gengrid_item_item_class_set(Elm_Gengrid_Item *item, const Elm_Gengrid_Item_Class *gic) EINA_ARG_NONNULL(1, 2);
EAPI void *elm_gengrid_item_data_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
EAPI void elm_gengrid_item_data_set(Elm_Gengrid_Item *item, const void *data) EINA_ARG_NONNULL(1);
EAPI void elm_gengrid_item_pos_get(const Elm_Gengrid_Item *item, unsigned int *x, unsigned int *y) EINA_ARG_NONNULL(1);
EAPI Elm_Gengrid_Item *elm_gengrid_item_prepend(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Evas_Smart_Cb func, const void *func_data) EINA_ARG_NONNULL(1);
EAPI Elm_Gengrid_Item *elm_gengrid_item_insert_before(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Elm_Gengrid_Item *relative, Evas_Smart_Cb func, const void *func_data) EINA_ARG_NONNULL(1);
EAPI Elm_Gengrid_Item *elm_gengrid_item_insert_after(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Elm_Gengrid_Item *relative, Evas_Smart_Cb func, const void *func_data) EINA_ARG_NONNULL(1);
+ EAPI Elm_Gengrid_Item *elm_gengrid_item_sorted_insert(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Eina_Compare_Cb comp, Evas_Smart_Cb func, const void *func_data) EINA_ARG_NONNULL(1);
+ EAPI Elm_Gengrid_Item *elm_gengrid_item_direct_sorted_insert(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Eina_Compare_Cb comp, Evas_Smart_Cb func, const void *func_data);
/* smart callbacks called:
*
- * selected - User has selected a item.
- * unselected - User has unselected a item.
- * clicked - User has double-clicked or pressed enter on a item.
- * realized - An evas object for a item was built.
- * unrealized - An evas object for a item was deleted.
+ * selected - User has selected an item.
+ * unselected - User has unselected an item.
+ * clicked,double - User has double-clicked or pressed enter on an item.
+ * realized - An evas object for an item was built.
+ * unrealized - An evas object for an item was deleted.
* changed - An item has been added, removed, resized or moved,
* or gengrid has been resized or horizontal property has been changed.
* scroll - the content has been scrolled (moved).
* "drag,stop" - Gengrid is not being dragged.
*/
- /* clock */
+ /**
+ * @defgroup Clock Clock
+ *
+ * This is a @b digital clock widget. In its default theme, it has a
+ * vintage "flipping numbers clock" appearance, which will animate
+ * sheets of individual algarisms individually as time goes by.
+ *
+ * A newly created clock will fetch system's time (already
+ * considering local time adjustments) to start with, and will tick
+ * accondingly. It may or may not show seconds.
+ *
+ * Clocks have an @b edition mode. When in it, the sheets will
+ * display extra arrow indications on the top and bottom and the
+ * user may click on them to raise or lower the time values. After
+ * it's told to exit edition mode, it will keep ticking with that
+ * new time set (it keeps the difference from local time).
+ *
+ * Also, when under edition mode, user clicks on the cited arrows
+ * which are @b held for some time will make the clock to flip the
+ * sheet, thus editing the time, continuosly and automatically for
+ * the user. The interval between sheet flips will keep growing in
+ * time, so that it helps the user to reach a time which is distant
+ * from the one set.
+ *
+ * The time display is, by default, in military mode (24h), but an
+ * am/pm indicator may be optionally shown, too, when it will
+ * switch to 12h.
+ *
+ * Smart callbacks one can register to:
+ * - "changed" - the clock's user changed the time
+ *
+ * Here is an example on its usage:
+ * @li @ref clock_example
+ */
+
+ /**
+ * @addtogroup Clock
+ * @{
+ */
+
+ /**
+ * Identifiers for which clock digits should be editable, when a
+ * clock widget is in edition mode. Values may be ORed together to
+ * make a mask, naturally.
+ *
+ * @see elm_clock_edit_set()
+ * @see elm_clock_digit_edit_set()
+ */
typedef enum _Elm_Clock_Digedit
{
- ELM_CLOCK_NONE = 0,
- ELM_CLOCK_HOUR_DECIMAL = 1 << 0,
- ELM_CLOCK_HOUR_UNIT = 1 << 1,
- ELM_CLOCK_MIN_DECIMAL = 1 << 2,
- ELM_CLOCK_MIN_UNIT = 1 << 3,
- ELM_CLOCK_SEC_DECIMAL = 1 << 4,
- ELM_CLOCK_SEC_UNIT = 1 << 5,
- ELM_CLOCK_ALL = (1 << 6) - 1
+ ELM_CLOCK_NONE = 0, /**< Default value. Means that all digits are editable, when in edition mode. */
+ ELM_CLOCK_HOUR_DECIMAL = 1 << 0, /**< Decimal algarism of hours value should be editable */
+ ELM_CLOCK_HOUR_UNIT = 1 << 1, /**< Unit algarism of hours value should be editable */
+ ELM_CLOCK_MIN_DECIMAL = 1 << 2, /**< Decimal algarism of minutes value should be editable */
+ ELM_CLOCK_MIN_UNIT = 1 << 3, /**< Unit algarism of minutes value should be editable */
+ ELM_CLOCK_SEC_DECIMAL = 1 << 4, /**< Decimal algarism of seconds value should be editable */
+ ELM_CLOCK_SEC_UNIT = 1 << 5, /**< Unit algarism of seconds value should be editable */
+ ELM_CLOCK_ALL = (1 << 6) - 1 /**< All digits should be editable */
} Elm_Clock_Digedit;
+ /**
+ * Add a new clock widget to the given parent Elementary
+ * (container) object
+ *
+ * @param parent The parent object
+ * @return a new clock widget handle or @c NULL, on errors
+ *
+ * This function inserts a new clock widget on the canvas.
+ *
+ * @ingroup Clock
+ */
EAPI Evas_Object *elm_clock_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set a clock widget's time, programmatically
+ *
+ * @param obj The clock widget object
+ * @param hrs The hours to set
+ * @param min The minutes to set
+ * @param sec The secondes to set
+ *
+ * This function updates the time that is showed by the clock
+ * widget.
+ *
+ * Values @b must be set within the following ranges:
+ * - 0 - 23, for hours
+ * - 0 - 59, for minutes
+ * - 0 - 59, for seconds,
+ *
+ * even if the clock is not in "military" mode.
+ *
+ * @warning The behavior for values set out of those ranges is @b
+ * indefined.
+ *
+ * @ingroup Clock
+ */
EAPI void elm_clock_time_set(Evas_Object *obj, int hrs, int min, int sec) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get a clock widget's time values
+ *
+ * @param obj The clock object
+ * @param[out] hrs Pointer to the variable to get the hours value
+ * @param[out] min Pointer to the variable to get the minutes value
+ * @param[out] sec Pointer to the variable to get the seconds value
+ *
+ * This function gets the time set for @p obj, returning
+ * it on the variables passed as the arguments to function
+ *
+ * @note Use @c NULL pointers on the time values you're not
+ * interested in: they'll be ignored by the function.
+ *
+ * @ingroup Clock
+ */
EAPI void elm_clock_time_get(const Evas_Object *obj, int *hrs, int *min, int *sec) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set whether a given clock widget is under <b>edition mode</b> or
+ * under (default) displaying-only mode.
+ *
+ * @param obj The clock object
+ * @param edit @c EINA_TRUE to put it in edition, @c EINA_FALSE to
+ * put it back to "displaying only" mode
+ *
+ * This function makes a clock's time to be editable or not <b>by
+ * user interaction</b>. When in edition mode, clocks @b stop
+ * ticking, until one brings them back to canonical mode. The
+ * elm_clock_digit_edit_set() function will influence which digits
+ * of the clock will be editable. By default, all of them will be
+ * (#ELM_CLOCK_NONE).
+ *
+ * @note am/pm sheets, if being shown, will @b always be editable
+ * under edition mode.
+ *
+ * @see elm_clock_edit_get()
+ *
+ * @ingroup Clock
+ */
EAPI void elm_clock_edit_set(Evas_Object *obj, Eina_Bool edit) EINA_ARG_NONNULL(1);
+
+ /**
+ * Retrieve whether a given clock widget is under <b>edition
+ * mode</b> or under (default) displaying-only mode.
+ *
+ * @param obj The clock object
+ * @param edit @c EINA_TRUE, if it's in edition mode, @c EINA_FALSE
+ * otherwise
+ *
+ * This function retrieves whether the clock's time can be edited
+ * or not by user interaction.
+ *
+ * @see elm_clock_edit_set() for more details
+ *
+ * @ingroup Clock
+ */
EAPI Eina_Bool elm_clock_edit_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set what digits of the given clock widget should be editable
+ * when in edition mode.
+ *
+ * @param obj The clock object
+ * @param digedit Bit mask indicating the digits to be editable
+ * (values in #Elm_Clock_Digedit).
+ *
+ * If the @p digedit param is #ELM_CLOCK_NONE, editing will be
+ * disabled on @p obj (same effect as elm_clock_edit_set(), with @c
+ * EINA_FALSE).
+ *
+ * @see elm_clock_digit_edit_get()
+ *
+ * @ingroup Clock
+ */
EAPI void elm_clock_digit_edit_set(Evas_Object *obj, Elm_Clock_Digedit digedit) EINA_ARG_NONNULL(1);
+
+ /**
+ * Retrieve what digits of the given clock widget should be
+ * editable when in edition mode.
+ *
+ * @param obj The clock object
+ * @return Bit mask indicating the digits to be editable
+ * (values in #Elm_Clock_Digedit).
+ *
+ * @see elm_clock_digit_edit_set() for more details
+ *
+ * @ingroup Clock
+ */
EAPI Elm_Clock_Digedit elm_clock_digit_edit_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set if the given clock widget must show hours in military or
+ * am/pm mode
+ *
+ * @param obj The clock object
+ * @param am_pm @c EINA_TRUE to put it in am/pm mode, @c EINA_FALSE
+ * to military mode
+ *
+ * This function sets if the clock must show hours in military or
+ * am/pm mode. In some countries like Brazil the military mode
+ * (00-24h-format) is used, in opposition to the USA, where the
+ * am/pm mode is more commonly used.
+ *
+ * @see elm_clock_show_am_pm_get()
+ *
+ * @ingroup Clock
+ */
EAPI void elm_clock_show_am_pm_set(Evas_Object *obj, Eina_Bool am_pm) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get if the given clock widget shows hours in military or am/pm
+ * mode
+ *
+ * @param obj The clock object
+ * @return @c EINA_TRUE, if in am/pm mode, @c EINA_FALSE if in
+ * military
+ *
+ * This function gets if the clock shows hours in military or am/pm
+ * mode.
+ *
+ * @see elm_clock_show_am_pm_set() for more details
+ *
+ * @ingroup Clock
+ */
EAPI Eina_Bool elm_clock_show_am_pm_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set if the given clock widget must show time with seconds or not
+ *
+ * @param obj The clock object
+ * @param seconds @c EINA_TRUE to show seconds, @c EINA_FALSE otherwise
+ *
+ * This function sets if the given clock must show or not elapsed
+ * seconds. By default, they are @b not shown.
+ *
+ * @see elm_clock_show_seconds_get()
+ *
+ * @ingroup Clock
+ */
EAPI void elm_clock_show_seconds_set(Evas_Object *obj, Eina_Bool seconds) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get whether the given clock widget is showing time with seconds
+ * or not
+ *
+ * @param obj The clock object
+ * @return @c EINA_TRUE if it's showing seconds, @c EINA_FALSE otherwise
+ *
+ * This function gets whether @p obj is showing or not the elapsed
+ * seconds.
+ *
+ * @see elm_clock_show_seconds_set()
+ *
+ * @ingroup Clock
+ */
EAPI Eina_Bool elm_clock_show_seconds_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the interval on time updates for an user mouse button hold
+ * on clock widgets' time edition.
+ *
+ * @param obj The clock object
+ * @param interval The (first) interval value in seconds
+ *
+ * This interval value is @b decreased while the user holds the
+ * mouse pointer either incrementing or decrementing a given the
+ * clock digit's value.
+ *
+ * This helps the user to get to a given time distant from the
+ * current one easier/faster, as it will start to flip quicker and
+ * quicker on mouse button holds.
+ *
+ * The calculation for the next flip interval value, starting from
+ * the one set with this call, is the previous interval divided by
+ * 1.05, so it decreases a little bit.
+ *
+ * The default starting interval value for automatic flips is
+ * @b 0.85 seconds.
+ *
+ * @see elm_clock_interval_get()
+ *
+ * @ingroup Clock
+ */
EAPI void elm_clock_interval_set(Evas_Object *obj, double interval) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the interval on time updates for an user mouse button hold
+ * on clock widgets' time edition.
+ *
+ * @param obj The clock object
+ * @return The (first) interval value, in seconds, set on it
+ *
+ * @see elm_clock_interval_set() for more details
+ *
+ * @ingroup Clock
+ */
EAPI double elm_clock_interval_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- /* smart callbacks called:
- * "changed" - the user changed the time
+
+ /**
+ * @}
*/
/* layout */
EAPI Eina_Bool elm_layout_file_set(Evas_Object *obj, const char *file, const char *group) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_layout_theme_set(Evas_Object *obj, const char *clas, const char *group, const char *style) EINA_ARG_NONNULL(1);
EAPI void elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content) EINA_ARG_NONNULL(1);
- EAPI const Evas_Object *elm_layout_content_get(const Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_layout_content_get(const Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_layout_content_unset(Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1);
- EAPI void elm_layout_text_set(Evas_Object *obj, const char *part, const char *text) EINA_ARG_NONNULL(1);
- EAPI const char *elm_layout_text_get(const Evas_Object *obj, const char *part) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_layout_text_set(Evas_Object *obj, const char *part, const char *text) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI const char *elm_layout_text_get(const Evas_Object *obj, const char *part) EINA_ARG_NONNULL(1);
EAPI void elm_layout_box_append(Evas_Object *obj, const char *part, Evas_Object *child) EINA_ARG_NONNULL(1);
EAPI void elm_layout_box_prepend(Evas_Object *obj, const char *part, Evas_Object *child) EINA_ARG_NONNULL(1);
EAPI void elm_layout_box_insert_before(Evas_Object *obj, const char *part, Evas_Object *child, const Evas_Object *reference) EINA_ARG_NONNULL(1);
* Elementary naming convention for its parts.
*
* @ingroup Layout
+ * @deprecate use elm_object_text_* instead.
*/
#define elm_layout_label_set(_ly, _txt) \
elm_layout_text_set((_ly), "elm.text", (_txt))
* Elementary naming convention for its parts.
*
* @ingroup Layout
+ * @deprecate use elm_object_text_* instead.
*/
#define elm_layout_label_get(_ly) \
elm_layout_text_get((_ly), "elm.text")
EAPI Eina_Bool elm_entry_password_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_entry_entry_set(Evas_Object *obj, const char *entry) EINA_ARG_NONNULL(1);
EAPI const char *elm_entry_entry_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_entry_entry_append(Evas_Object *obj, const char *entry) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_entry_is_empty(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI const char *elm_entry_selection_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_entry_entry_insert(Evas_Object *obj, const char *entry) EINA_ARG_NONNULL(1);
- EAPI void elm_entry_line_wrap_set(Evas_Object *obj, Eina_Bool wrap) EINA_ARG_NONNULL(1);
- EAPI void elm_entry_line_char_wrap_set(Evas_Object *obj, Eina_Bool wrap) EINA_ARG_NONNULL(1);
+ EAPI void elm_entry_line_wrap_set(Evas_Object *obj, Elm_Wrap_Type wrap) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_entry_line_char_wrap_set(Evas_Object *obj, Eina_Bool wrap) EINA_ARG_NONNULL(1);
+ EAPI Elm_Wrap_Type elm_entry_line_wrap_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_entry_editable_set(Evas_Object *obj, Eina_Bool editable) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_entry_editable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_entry_select_none(Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_entry_text_filter_remove(Evas_Object *obj, void (*func) (void *data, Evas_Object *entry, char **text), void *data) EINA_ARG_NONNULL(1, 2);
EAPI char *elm_entry_markup_to_utf8(const char *s) EINA_MALLOC EINA_WARN_UNUSED_RESULT;
EAPI char *elm_entry_utf8_to_markup(const char *s) EINA_MALLOC EINA_WARN_UNUSED_RESULT;
- EINA_DEPRECATED EAPI void elm_entry_wrap_width_set(Evas_Object *obj, Evas_Coord w);
- EINA_DEPRECATED EAPI Evas_Coord elm_entry_wrap_width_get(const Evas_Object *obj);
- EINA_DEPRECATED EAPI void elm_entry_fontsize_set(Evas_Object *obj, int fontsize);
- EINA_DEPRECATED EAPI void elm_entry_text_color_set(Evas_Object *obj, unsigned int r, unsigned int g, unsigned int b, unsigned int a);
- EINA_DEPRECATED EAPI void elm_entry_text_align_set(Evas_Object *obj, const char *alignmode);
- EAPI void elm_entry_background_color_set(Evas_Object *obj, unsigned int r, unsigned int g, unsigned int b, unsigned int a);
EAPI void elm_entry_file_set(Evas_Object *obj, const char *file, Elm_Text_Format format) EINA_ARG_NONNULL(1);
EAPI void elm_entry_file_get(const Evas_Object *obj, const char **file, Elm_Text_Format *format) EINA_ARG_NONNULL(1);
EAPI void elm_entry_file_save(Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_entry_autosave_set(Evas_Object *obj, Eina_Bool autosave) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_entry_autosave_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_entry_cnp_textonly_set(Evas_Object *obj, Eina_Bool textonly) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_entry_cnp_textonly_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_entry_autocapitalization_set(Evas_Object *obj, Eina_Bool autocap);
- EAPI void elm_entry_autoperiod_set(Evas_Object *obj, Eina_Bool autoperiod);
- EAPI void elm_entry_autoenable_returnkey_set(Evas_Object *obj, Eina_Bool on);
- EAPI void elm_entry_input_panel_enabled_set(Evas_Object *obj, Eina_Bool enabled);
- EAPI void elm_entry_input_panel_layout_set(Evas_Object *obj, Elm_Input_Panel_Layout layout);
- EAPI Ecore_IMF_Context *elm_entry_imf_context_get(Evas_Object *obj);
- EAPI void elm_entry_matchlist_set(Evas_Object *obj, Eina_List *match_list, Eina_Bool case_sensitive);
- EAPI Eina_Bool elm_entry_is_empty(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_entry_magnifier_type_set(Evas_Object *obj, int type) EINA_ARG_NONNULL(1);
-
+ EAPI Eina_Bool elm_entry_cnp_textonly_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_entry_scrollable_set(Evas_Object *obj, Eina_Bool scroll);
+ EAPI Eina_Bool elm_entry_scrollable_get(const Evas_Object *obj);
+ EAPI void elm_entry_icon_set(Evas_Object *obj, Evas_Object *icon);
+ EAPI Evas_Object *elm_entry_icon_get(const Evas_Object *obj);
+ EAPI Evas_Object *elm_entry_icon_unset(Evas_Object *obj);
+ EAPI void elm_entry_icon_visible_set(Evas_Object *obj, Eina_Bool setting);
+ EAPI void elm_entry_end_set(Evas_Object *obj, Evas_Object *end);
+ EAPI Evas_Object *elm_entry_end_get(const Evas_Object *obj);
+ EAPI Evas_Object *elm_entry_end_unset(Evas_Object *obj);
+ EAPI void elm_entry_end_visible_set(Evas_Object *obj, Eina_Bool setting);
+ EAPI void elm_entry_scrollbar_policy_set(Evas_Object *obj, Elm_Scroller_Policy h, Elm_Scroller_Policy v);
+ EAPI void elm_entry_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
+ EAPI void elm_entry_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
/* pre-made filters for entries */
typedef struct _Elm_Entry_Filter_Limit_Size Elm_Entry_Filter_Limit_Size;
const char *rejected;
};
EAPI void elm_entry_filter_accept_set(void *data, Evas_Object *entry, char **text) EINA_ARG_NONNULL(1, 3);
+ EAPI void elm_entry_background_color_set(Evas_Object *obj, unsigned int r, unsigned int g, unsigned int b, unsigned int a);
+ EAPI void elm_entry_autocapitalization_set(Evas_Object *obj, Eina_Bool autocap);
+ EAPI void elm_entry_autoperiod_set(Evas_Object *obj, Eina_Bool autoperiod);
+ EAPI void elm_entry_autoenable_returnkey_set(Evas_Object *obj, Eina_Bool on);
+ EAPI void elm_entry_input_panel_enabled_set(Evas_Object *obj, Eina_Bool enabled);
+ EAPI void elm_entry_input_panel_layout_set(Evas_Object *obj, Elm_Input_Panel_Layout layout);
+ EAPI Ecore_IMF_Context *elm_entry_imf_context_get(Evas_Object *obj);
+ EAPI void elm_entry_matchlist_set(Evas_Object *obj, Eina_List *match_list, Eina_Bool case_sensitive);
+ EAPI void elm_entry_magnifier_type_set(Evas_Object *obj, int type) EINA_ARG_NONNULL(1);
+
+ EINA_DEPRECATED EAPI void elm_entry_wrap_width_set(Evas_Object *obj, Evas_Coord w);
+ EINA_DEPRECATED EAPI Evas_Coord elm_entry_wrap_width_get(const Evas_Object *obj);
+ EINA_DEPRECATED EAPI void elm_entry_fontsize_set(Evas_Object *obj, int fontsize);
+ EINA_DEPRECATED EAPI void elm_entry_text_color_set(Evas_Object *obj, unsigned int r, unsigned int g, unsigned int b, unsigned int a);
+ EINA_DEPRECATED EAPI void elm_entry_text_align_set(Evas_Object *obj, const char *alignmode);
+
/* smart callbacks called:
* "changed" - the text content changed
* "selection,start" - the user started selecting text
* in convenient packages that do more than basic stuff */
/* anchorview */
+ /**
+ * @defgroup Anchorview Anchorview
+ *
+ * Anchorview is for displaying text that contains markup with anchors
+ * like <c>\<a href=1234\>something\</\></c> in it.
+ *
+ * Besides being styled differently, the anchorview widget provides the
+ * necessary functionality so that clicking on these anchors brings up a
+ * popup with user defined content such as "call", "add to contacts" or
+ * "open web page". This popup is provided using the @ref Hover widget.
+ *
+ * This widget is very similar to @ref Anchorblock, so refer to that
+ * widget for an example. The only difference Anchorview has is that the
+ * widget is already provided with scrolling functionality, so if the
+ * text set to it is too large to fit in the given space, it will scroll,
+ * whereas the @ref Anchorblock widget will keep growing to ensure all the
+ * text can be displayed.
+ *
+ * This widget emits the following signals:
+ * @li "anchor,clicked": will be called when an anchor is clicked. The
+ * @p event_info parameter on the callback will be a pointer of type
+ * ::Elm_Entry_Anchorview_Info.
+ *
+ * See @ref Anchorblock for an example on how to use both of them.
+ *
+ * @see Anchorblock
+ * @see Entry
+ * @see Hover
+ *
+ * @{
+ */
+ /**
+ * @typedef Elm_Entry_Anchorview_Info
+ *
+ * The info sent in the callback for "anchor,clicked" signals emitted by
+ * the Anchorview widget.
+ */
typedef struct _Elm_Entry_Anchorview_Info Elm_Entry_Anchorview_Info;
+ /**
+ * @struct _Elm_Entry_Anchorview_Info
+ *
+ * The info sent in the callback for "anchor,clicked" signals emitted by
+ * the Anchorview widget.
+ */
struct _Elm_Entry_Anchorview_Info
{
- const char *name;
- int button;
- Evas_Object *hover;
+ const char *name; /**< Name of the anchor, as indicated in its href
+ attribute */
+ int button; /**< The mouse button used to click on it */
+ Evas_Object *hover; /**< The hover object to use for the popup */
struct {
Evas_Coord x, y, w, h;
- } anchor, hover_parent;
- Eina_Bool hover_left : 1;
- Eina_Bool hover_right : 1;
- Eina_Bool hover_top : 1;
- Eina_Bool hover_bottom : 1;
+ } anchor, /**< Geometry selection of text used as anchor */
+ hover_parent; /**< Geometry of the object used as parent by the
+ hover */
+ Eina_Bool hover_left : 1; /**< Hint indicating if there's space
+ for content on the left side of
+ the hover. Before calling the
+ callback, the widget will make the
+ necessary calculations to check
+ which sides are fit to be set with
+ content, based on the position the
+ hover is activated and its distance
+ to the edges of its parent object
+ */
+ Eina_Bool hover_right : 1; /**< Hint indicating content fits on
+ the right side of the hover.
+ See @ref hover_left */
+ Eina_Bool hover_top : 1; /**< Hint indicating content fits on top
+ of the hover. See @ref hover_left */
+ Eina_Bool hover_bottom : 1; /**< Hint indicating content fits
+ below the hover. See @ref
+ hover_left */
};
+ /**
+ * Add a new Anchorview object
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ */
EAPI Evas_Object *elm_anchorview_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
- EAPI void elm_anchorview_text_set(Evas_Object *obj, const char *text) EINA_ARG_NONNULL(1);
- EAPI const char *elm_anchorview_text_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-
- EAPI void elm_anchorview_hover_parent_set(Evas_Object *obj, Evas_Object *parent) EINA_ARG_NONNULL(1);
- EAPI Evas_Object *elm_anchorview_hover_parent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_anchorview_hover_style_set(Evas_Object *obj, const char *style) EINA_ARG_NONNULL(1);
- EAPI const char *elm_anchorview_hover_style_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_anchorview_hover_end(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_anchorview_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
- EAPI void elm_anchorview_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
+ /**
+ * Set the text to show in the anchorview
+ *
+ * Sets the text of the anchorview to @p text. This text can include markup
+ * format tags, including <c>\<a href=anchorname\></c> to begin a segment of
+ * text that will be specially styled and react to click events, ended with
+ * either of \</a\> or \</\>. When clicked, the anchor will emit an
+ * "anchor,clicked" signal that you can attach a callback to with
+ * evas_object_smart_callback_add(). The name of the anchor given in the
+ * event info struct will be the one set in the href attribute, in this
+ * case, anchorname.
+ *
+ * Other markup can be used to style the text in different ways, but it's
+ * up to the style defined in the theme which tags do what.
+ * @deprecated use elm_object_text_set() instead.
+ */
+ EINA_DEPRECATED EAPI void elm_anchorview_text_set(Evas_Object *obj, const char *text) EINA_ARG_NONNULL(1);
+ /**
+ * Get the markup text set for the anchorview
+ *
+ * Retrieves the text set on the anchorview, with markup tags included.
+ *
+ * @param obj The anchorview object
+ * @return The markup text set or @c NULL if nothing was set or an error
+ * occurred
+ * @deprecated use elm_object_text_set() instead.
+ */
+ EINA_DEPRECATED EAPI const char *elm_anchorview_text_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set the parent of the hover popup
+ *
+ * Sets the parent object to use by the hover created by the anchorview
+ * when an anchor is clicked. See @ref Hover for more details on this.
+ * If no parent is set, the same anchorview object will be used.
+ *
+ * @param obj The anchorview object
+ * @param parent The object to use as parent for the hover
+ */
+ EAPI void elm_anchorview_hover_parent_set(Evas_Object *obj, Evas_Object *parent) EINA_ARG_NONNULL(1);
+ /**
+ * Get the parent of the hover popup
+ *
+ * Get the object used as parent for the hover created by the anchorview
+ * widget. See @ref Hover for more details on this.
+ *
+ * @param obj The anchorview object
+ * @return The object used as parent for the hover, NULL if none is set.
+ */
+ EAPI Evas_Object *elm_anchorview_hover_parent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set the style that the hover should use
+ *
+ * When creating the popup hover, anchorview will request that it's
+ * themed according to @p style.
+ *
+ * @param obj The anchorview object
+ * @param style The style to use for the underlying hover
+ *
+ * @see elm_object_style_set()
+ */
+ EAPI void elm_anchorview_hover_style_set(Evas_Object *obj, const char *style) EINA_ARG_NONNULL(1);
+ /**
+ * Get the style that the hover should use
+ *
+ * Get the style the hover created by anchorview will use.
+ *
+ * @param obj The anchorview object
+ * @return The style to use by the hover. NULL means the default is used.
+ *
+ * @see elm_object_style_set()
+ */
+ EAPI const char *elm_anchorview_hover_style_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Ends the hover popup in the anchorview
+ *
+ * When an anchor is clicked, the anchorview widget will create a hover
+ * object to use as a popup with user provided content. This function
+ * terminates this popup, returning the anchorview to its normal state.
+ *
+ * @param obj The anchorview object
+ */
+ EAPI void elm_anchorview_hover_end(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set bouncing behaviour when the scrolled content reaches an edge
+ *
+ * Tell the internal scroller object whether it should bounce or not
+ * when it reaches the respective edges for each axis.
+ *
+ * @param obj The anchorview object
+ * @param h_bounce Whether to bounce or not in the horizontal axis
+ * @param v_bounce Whether to bounce or not in the vertical axis
+ *
+ * @see elm_scroller_bounce_set()
+ */
+ EAPI void elm_anchorview_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
+ /**
+ * Get the set bouncing behaviour of the internal scroller
+ *
+ * Get whether the internal scroller should bounce when the edge of each
+ * axis is reached scrolling.
+ *
+ * @param obj The anchorview object
+ * @param h_bounce Pointer where to store the bounce state of the horizontal
+ * axis
+ * @param v_bounce Pointer where to store the bounce state of the vertical
+ * axis
+ *
+ * @see elm_scroller_bounce_get()
+ */
+ EAPI void elm_anchorview_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
+ /**
+ * Appends a custom item provider to the given anchorview
+ *
+ * Appends the given function to the list of items providers. This list is
+ * called, one function at a time, with the given @p data pointer, the
+ * anchorview object and, in the @p item parameter, the item name as
+ * referenced in its href string. Following functions in the list will be
+ * called in order until one of them returns something different to NULL,
+ * which should be an Evas_Object which will be used in place of the item
+ * element.
+ *
+ * Items in the markup text take the form \<item relsize=16x16 vsize=full
+ * href=item/name\>\</item\>
+ *
+ * @param obj The anchorview object
+ * @param func The function to add to the list of providers
+ * @param data User data that will be passed to the callback function
+ *
+ * @see elm_entry_item_provider_append()
+ */
EAPI void elm_anchorview_item_provider_append(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *anchorview, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
+ /**
+ * Prepend a custom item provider to the given anchorview
+ *
+ * Like elm_anchorview_item_provider_append(), but it adds the function
+ * @p func to the beginning of the list, instead of the end.
+ *
+ * @param obj The anchorview object
+ * @param func The function to add to the list of providers
+ * @param data User data that will be passed to the callback function
+ */
EAPI void elm_anchorview_item_provider_prepend(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *anchorview, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
+ /**
+ * Remove a custom item provider from the list of the given anchorview
+ *
+ * Removes the function and data pairing that matches @p func and @p data.
+ * That is, unless the same function and same user data are given, the
+ * function will not be removed from the list. This allows us to add the
+ * same callback several times, with different @p data pointers and be
+ * able to remove them later without conflicts.
+ *
+ * @param obj The anchorview object
+ * @param func The function to remove from the list
+ * @param data The data matching the function to remove from the list
+ */
EAPI void elm_anchorview_item_provider_remove(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *anchorview, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
- /* smart callbacks called:
- * "anchor,clicked" - achor called was clicked | event_info = Elm_Entry_Anchorview_Info
+ /**
+ * @}
*/
/* anchorblock */
+ /**
+ * @defgroup Anchorblock Anchorblock
+ *
+ * Anchorblock is for displaying text that contains markup with anchors
+ * like <c>\<a href=1234\>something\</\></c> in it.
+ *
+ * Besides being styled differently, the anchorblock widget provides the
+ * necessary functionality so that clicking on these anchors brings up a
+ * popup with user defined content such as "call", "add to contacts" or
+ * "open web page". This popup is provided using the @ref Hover widget.
+ *
+ * This widget emits the following signals:
+ * @li "anchor,clicked": will be called when an anchor is clicked. The
+ * @p event_info parameter on the callback will be a pointer of type
+ * ::Elm_Entry_Anchorblock_Info.
+ *
+ * @see Anchorview
+ * @see Entry
+ * @see Hover
+ *
+ * Since examples are usually better than plain words, we might as well
+ * try @ref tutorial_anchorblock_example "one".
+ */
+ /**
+ * @page tutorial_anchorblock_example Anchorblock/Anchorview example
+ * This exampel will show both Anchorblock and @ref Anchorview,
+ * since both are very similar and it's easier to show them once and side
+ * by side, so the difference is more clear.
+ *
+ * We'll show the relevant snippets of the code here, but the full example
+ * can be found here... sorry, @ref anchorblock_example_01.c "here".
+ *
+ * As for the actual example, it's just a simple window with an anchorblock
+ * and an anchorview, both containing the same text. After including
+ * Elementary.h and declaring some functions we'll need, we jump to our
+ * elm_main (see ELM_MAIN) and create our window.
+ * @dontinclude anchorblock_example_01.c
+ * @skip int
+ * @until const char
+ * @until ;
+ *
+ * With the needed variables declared, we'll create the window and a box to
+ * hold our widgets, but we don't need to go through that here.
+ *
+ * In order to make clear where the anchorblock ends and the anchorview
+ * begins, they'll be each inside a @ref Frame. After creating the frame,
+ * the anchorblock follows.
+ * @skip elm_frame_add
+ * @until elm_frame_content_set
+ *
+ * Nothing out of the ordinary there. What's worth mentioning is the call
+ * to elm_anchorblock_hover_parent_set(). We are telling our widget that
+ * when an anchor is clicked, the hover for the popup will cover the entire
+ * window. This affects the area that will be obscured by the hover and
+ * where clicking will dismiss it, as well as the calculations it does to
+ * inform the best locations where to insert the popups content.
+ * Other than that, the code is pretty standard. We also need to set our
+ * callback for when an anchor is clicked, since it's our task to populate
+ * the popup. There's no default for it.
+ *
+ * The anchorview is no different, we only change a few things so it looks
+ * different.
+ * @until elm_frame_content_set
+ *
+ * Then we run, so stuff works and close our main function in the usual way.
+ * @until ELM_MAIN
+ *
+ * Now, a little note. Normally you would use either one of anchorblock or
+ * anchorview, set your one callback to clicks and do your stuff in there.
+ * In this example, however, there are a few tricks to make it easier to
+ * show both widgets in one go (and to save me some typing). So we have
+ * two callbacks, one per widget, that will call a common function to do
+ * the rest. The trick is using ::Elm_Entry_Anchorblock_Info for the
+ * anchorview too, since both are equal, and passing a callback to use
+ * for our buttons to end the hover, because each widget has a different
+ * function for it.
+ * @until _anchorview_clicked_cb
+ * @until }
+ *
+ * The meat of our popup is in the following function. We check what kind
+ * of menu we need to show, based on the name set to the anchor in the
+ * markup text. If there's no type (something went wrong, no valid contact
+ * in the address list) we are just putting a button that does nothing, but
+ * it's perfectly reasonable to just end the hover and call it quits.
+ *
+ * Our popup will consist of one main button in the middle of our hover,
+ * and possibly a secondary button and a list of other options. We'll create
+ * first our main button and check what kind of popup we need afterwards.
+ * @skip static void
+ * @skip static void
+ * @until eina_stringshare_add
+ * @until }
+ *
+ * Each button has two callbacks, one is our hack to close the hover
+ * properly based on which widget it belongs to, the other a simple
+ * printf that will show the action with the anchors own data. This is
+ * not how you would usually do it. Instead, the common case is to have
+ * one callback for the button that will know which function to call to end
+ * things, but since we are doing it this way it's worth noting that
+ * smart callbacks will be called in reverse in respect to the order they
+ * were added, and since our @c btn_end_cb will close the hover, and thus
+ * delete our buttons, the other callback wouldn't be called if we had
+ * added it before.
+ *
+ * After our telephone popup, there are a few others that are practically
+ * the same, so they won't be shown here.
+ *
+ * Once we are done with that, it's time to place our actions into our
+ * hover. Main button goes in the middle without much questioning, and then
+ * we see if we have a secondary button and a box of extra options.
+ * Because I said so, secondary button goes on either side and box of
+ * options either on top or below the main one, but to choose which
+ * exactly, we use the hints our callback info has, which saves us from
+ * having to do the math and see which side has more space available, with
+ * a little special case where we delete our extra stuff if there's nowhere
+ * to place it.
+ * @skip url:
+ * @skip }
+ * @skip evas_object_smart
+ * @until evas_object_del(box)
+ * @until }
+ * @until }
+ *
+ * The example will look like this:
+ * @image html screenshots/anchorblock_01.png
+ * @image latex screenshots/anchorblock_01.eps
+ *
+ * @example anchorblock_example_01.c
+ */
+ /**
+ * @addtogroup Anchorblock
+ * @{
+ */
+ /**
+ * @typedef Elm_Entry_Anchorblock_Info
+ *
+ * The info sent in the callback for "anchor,clicked" signals emitted by
+ * the Anchorblock widget.
+ */
typedef struct _Elm_Entry_Anchorblock_Info Elm_Entry_Anchorblock_Info;
+ /**
+ * @struct _Elm_Entry_Anchorblock_Info
+ *
+ * The info sent in the callback for "anchor,clicked" signals emitted by
+ * the Anchorblock widget.
+ */
struct _Elm_Entry_Anchorblock_Info
{
- const char *name;
- int button;
- Evas_Object *hover;
+ const char *name; /**< Name of the anchor, as indicated in its href
+ attribute */
+ int button; /**< The mouse button used to click on it */
+ Evas_Object *hover; /**< The hover object to use for the popup */
struct {
Evas_Coord x, y, w, h;
- } anchor, hover_parent;
- Eina_Bool hover_left : 1;
- Eina_Bool hover_right : 1;
- Eina_Bool hover_top : 1;
- Eina_Bool hover_bottom : 1;
+ } anchor, /**< Geometry selection of text used as anchor */
+ hover_parent; /**< Geometry of the object used as parent by the
+ hover */
+ Eina_Bool hover_left : 1; /**< Hint indicating if there's space
+ for content on the left side of
+ the hover. Before calling the
+ callback, the widget will make the
+ necessary calculations to check
+ which sides are fit to be set with
+ content, based on the position the
+ hover is activated and its distance
+ to the edges of its parent object
+ */
+ Eina_Bool hover_right : 1; /**< Hint indicating content fits on
+ the right side of the hover.
+ See @ref hover_left */
+ Eina_Bool hover_top : 1; /**< Hint indicating content fits on top
+ of the hover. See @ref hover_left */
+ Eina_Bool hover_bottom : 1; /**< Hint indicating content fits
+ below the hover. See @ref
+ hover_left */
};
+ /**
+ * Add a new Anchorblock object
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ */
EAPI Evas_Object *elm_anchorblock_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
- EAPI void elm_anchorblock_text_set(Evas_Object *obj, const char *text) EINA_ARG_NONNULL(1);
- EAPI const char *elm_anchorblock_text_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set the text to show in the anchorblock
+ *
+ * Sets the text of the anchorblock to @p text. This text can include markup
+ * format tags, including <c>\<a href=anchorname\></a></c> to begin a segment
+ * of text that will be specially styled and react to click events, ended
+ * with either of \</a\> or \</\>. When clicked, the anchor will emit an
+ * "anchor,clicked" signal that you can attach a callback to with
+ * evas_object_smart_callback_add(). The name of the anchor given in the
+ * event info struct will be the one set in the href attribute, in this
+ * case, anchorname.
+ *
+ * Other markup can be used to style the text in different ways, but it's
+ * up to the style defined in the theme which tags do what.
+ * @deprecated use elm_object_text_set() instead.
+ */
+ EINA_DEPRECATED EAPI void elm_anchorblock_text_set(Evas_Object *obj, const char *text) EINA_ARG_NONNULL(1);
+ /**
+ * Get the markup text set for the anchorblock
+ *
+ * Retrieves the text set on the anchorblock, with markup tags included.
+ *
+ * @param obj The anchorblock object
+ * @return The markup text set or @c NULL if nothing was set or an error
+ * occurred
+ * @deprecated use elm_object_text_set() instead.
+ */
+ EINA_DEPRECATED EAPI const char *elm_anchorblock_text_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set the parent of the hover popup
+ *
+ * Sets the parent object to use by the hover created by the anchorblock
+ * when an anchor is clicked. See @ref Hover for more details on this.
+ *
+ * @param obj The anchorblock object
+ * @param parent The object to use as parent for the hover
+ */
EAPI void elm_anchorblock_hover_parent_set(Evas_Object *obj, Evas_Object *parent) EINA_ARG_NONNULL(1);
+ /**
+ * Get the parent of the hover popup
+ *
+ * Get the object used as parent for the hover created by the anchorblock
+ * widget. See @ref Hover for more details on this.
+ * If no parent is set, the same anchorblock object will be used.
+ *
+ * @param obj The anchorblock object
+ * @return The object used as parent for the hover, NULL if none is set.
+ */
EAPI Evas_Object *elm_anchorblock_hover_parent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set the style that the hover should use
+ *
+ * When creating the popup hover, anchorblock will request that it's
+ * themed according to @p style.
+ *
+ * @param obj The anchorblock object
+ * @param style The style to use for the underlying hover
+ *
+ * @see elm_object_style_set()
+ */
EAPI void elm_anchorblock_hover_style_set(Evas_Object *obj, const char *style) EINA_ARG_NONNULL(1);
+ /**
+ * Get the style that the hover should use
+ *
+ * Get the style the hover created by anchorblock will use.
+ *
+ * @param obj The anchorblock object
+ * @return The style to use by the hover. NULL means the default is used.
+ *
+ * @see elm_object_style_set()
+ */
EAPI const char *elm_anchorblock_hover_style_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Ends the hover popup in the anchorblock
+ *
+ * When an anchor is clicked, the anchorblock widget will create a hover
+ * object to use as a popup with user provided content. This function
+ * terminates this popup, returning the anchorblock to its normal state.
+ *
+ * @param obj The anchorblock object
+ */
EAPI void elm_anchorblock_hover_end(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Appends a custom item provider to the given anchorblock
+ *
+ * Appends the given function to the list of items providers. This list is
+ * called, one function at a time, with the given @p data pointer, the
+ * anchorblock object and, in the @p item parameter, the item name as
+ * referenced in its href string. Following functions in the list will be
+ * called in order until one of them returns something different to NULL,
+ * which should be an Evas_Object which will be used in place of the item
+ * element.
+ *
+ * Items in the markup text take the form \<item relsize=16x16 vsize=full
+ * href=item/name\>\</item\>
+ *
+ * @param obj The anchorblock object
+ * @param func The function to add to the list of providers
+ * @param data User data that will be passed to the callback function
+ *
+ * @see elm_entry_item_provider_append()
+ */
EAPI void elm_anchorblock_item_provider_append(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *anchorblock, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
+ /**
+ * Prepend a custom item provider to the given anchorblock
+ *
+ * Like elm_anchorblock_item_provider_append(), but it adds the function
+ * @p func to the beginning of the list, instead of the end.
+ *
+ * @param obj The anchorblock object
+ * @param func The function to add to the list of providers
+ * @param data User data that will be passed to the callback function
+ */
EAPI void elm_anchorblock_item_provider_prepend(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *anchorblock, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
+ /**
+ * Remove a custom item provider from the list of the given anchorblock
+ *
+ * Removes the function and data pairing that matches @p func and @p data.
+ * That is, unless the same function and same user data are given, the
+ * function will not be removed from the list. This allows us to add the
+ * same callback several times, with different @p data pointers and be
+ * able to remove them later without conflicts.
+ *
+ * @param obj The anchorblock object
+ * @param func The function to remove from the list
+ * @param data The data matching the function to remove from the list
+ */
EAPI void elm_anchorblock_item_provider_remove(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *anchorblock, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
- /* smart callbacks called:
- * "anchor,clicked" - achor called was clicked | event_info = Elm_Entry_Anchorblock_Info
+ /**
+ * @}
*/
- /* bubble */
+ /**
+ * @defgroup Bubble Bubble
+ *
+ * @brief The Bubble is a widget to show text similarly to how speech is
+ * represented in comics.
+ *
+ * The bubble widget contains 5 important visual elements:
+ * @li The frame is a rectangle with rounded rectangles and an "arrow".
+ * @li The @p icon is an image to which the frame's arrow points to.
+ * @li The @p label is a text which appears to the right of the icon if the
+ * corner is "top_left" or "bottom_left" and is right aligned to the frame
+ * otherwise.
+ * @li The @p info is a text which appears to the right of the label. Info's
+ * font is of a ligther color than label.
+ * @li The @p content is an evas object that is shown inside the frame.
+ *
+ * The position of the arrow, icon, label and info depends on which corner is
+ * selected. The four available corners are:
+ * @li "top_left" - Default
+ * @li "top_right"
+ * @li "bottom_left"
+ * @li "bottom_right"
+ *
+ * Signals that you can add callbacks for are:
+ * @li "clicked" - This is called when a user has clicked the bubble.
+ *
+ * For an example of using a buble see @ref bubble_01_example_page "this".
+ *
+ * @{
+ */
+ /**
+ * Add a new bubble to the parent
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ *
+ * This function adds a text bubble to the given parent evas object.
+ */
EAPI Evas_Object *elm_bubble_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
- EAPI void elm_bubble_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
- EAPI const char *elm_bubble_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_bubble_info_set(Evas_Object *obj, const char *info) EINA_ARG_NONNULL(1);
- EAPI const char *elm_bubble_info_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-
+ /**
+ * Set the label of the bubble
+ *
+ * @param obj The bubble object
+ * @param label The string to set in the label
+ *
+ * This function sets the title of the bubble. Where this appears depends on
+ * the selected corner.
+ * @deprecated use elm_object_text_set() instead.
+ */
+ EINA_DEPRECATED EAPI void elm_bubble_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+ /**
+ * Get the label of the bubble
+ *
+ * @param obj The bubble object
+ * @return The string of set in the label
+ *
+ * This function gets the title of the bubble.
+ * @deprecated use elm_object_text_set() instead.
+ */
+ EINA_DEPRECATED EAPI const char *elm_bubble_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set the info of the bubble
+ *
+ * @param obj The bubble object
+ * @param info The given info about the bubble
+ *
+ * This function sets the info of the bubble. Where this appears depends on
+ * the selected corner.
+ * @deprecated use elm_object_text_set() instead.
+ */
+ EINA_DEPRECATED EAPI void elm_bubble_info_set(Evas_Object *obj, const char *info) EINA_ARG_NONNULL(1);
+ /**
+ * Get the info of the bubble
+ *
+ * @param obj The bubble object
+ *
+ * @return The "info" string of the bubble
+ *
+ * This function gets the info text.
+ * @deprecated use elm_object_text_set() instead.
+ */
+ EINA_DEPRECATED EAPI const char *elm_bubble_info_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set the content to be shown in the bubble
+ *
+ * Once the content object is set, a previously set one will be deleted.
+ * If you want to keep the old content object, use the
+ * elm_bubble_content_unset() function.
+ *
+ * @param obj The bubble object
+ * @param content The given content of the bubble
+ *
+ * This function sets the content shown on the middle of the bubble.
+ */
EAPI void elm_bubble_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
+ /**
+ * Get the content shown in the bubble
+ *
+ * Return the content object which is set for this widget.
+ *
+ * @param obj The bubble object
+ * @return The content that is being used
+ */
EAPI Evas_Object *elm_bubble_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Unset the content shown in the bubble
+ *
+ * Unparent and return the content object which was set for this widget.
+ *
+ * @param obj The bubble object
+ * @return The content that was being used
+ */
EAPI Evas_Object *elm_bubble_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set the icon of the bubble
+ *
+ * Once the icon object is set, a previously set one will be deleted.
+ * If you want to keep the old content object, use the
+ * elm_icon_content_unset() function.
+ *
+ * @param obj The bubble object
+ * @param icon The given icon for the bubble
+ */
EAPI void elm_bubble_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+ /**
+ * Get the icon of the bubble
+ *
+ * @param obj The bubble object
+ * @return The icon for the bubble
+ *
+ * This function gets the icon shown on the top left of bubble.
+ */
EAPI Evas_Object *elm_bubble_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Unset the icon of the bubble
+ *
+ * Unparent and return the icon object which was set for this widget.
+ *
+ * @param obj The bubble object
+ * @return The icon that was being used
+ */
EAPI Evas_Object *elm_bubble_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EINA_DEPRECATED EAPI void elm_bubble_sweep_layout_set(Evas_Object *obj, Evas_Object *sweep) EINA_ARG_NONNULL(1);
- EINA_DEPRECATED EAPI Evas_Object *elm_bubble_sweep_layout_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set the corner of the bubble
+ *
+ * @param obj The bubble object.
+ * @param corner The given corner for the bubble.
+ *
+ * This function sets the corner of the bubble. The corner will be used to
+ * determine where the arrow in the frame points to and where label, icon and
+ * info arre shown.
+ *
+ * Possible values for corner are:
+ * @li "top_left" - Default
+ * @li "top_right"
+ * @li "bottom_left"
+ * @li "bottom_right"
+ */
EAPI void elm_bubble_corner_set(Evas_Object *obj, const char *corner) EINA_ARG_NONNULL(1, 2);
+ /**
+ * Get the corner of the bubble
+ *
+ * @param obj The bubble object.
+ * @return The given corner for the bubble.
+ *
+ * This function gets the selected corner of the bubble.
+ */
EAPI const char *elm_bubble_corner_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- /* smart callbacks called:
- * "clicked" - the user clicked the bubble
- * "sweep,left,right" - when bubble is sweeped from left to right, this signal is sent.
- * "sweep,right,left" - when bubble is sweeped from right to left, this signal is sent.
+
+ EINA_DEPRECATED EAPI void elm_bubble_sweep_layout_set(Evas_Object *obj, Evas_Object *sweep) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI Evas_Object *elm_bubble_sweep_layout_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * @}
*/
/* photo */
EAPI void elm_photo_editable_set(Evas_Object *obj, Eina_Bool set) EINA_ARG_NONNULL(1);
/* smart callbacks called:
* "clicked" - the user clicked the icon
- * "drop" - Something was dropped on the widget
* "drag,start" - Someone started dragging the image out of the object
* "drag,end" - Dragged item was dropped (somewhere)
*/
- /* thumb */
- typedef enum _Elm_Thumb_Animation_Setting
+ /* gesture layer */
+ /** @defgroup Elm_Gesture_Layer Gesture Layer */
+ /**
+ * @enum _Elm_Gesture_Types
+ * Emum of supported gesture types.
+ * @ingroup Elm_Gesture_Layer
+ */
+ enum _Elm_Gesture_Types
{
- ELM_THUMB_ANIMATION_START = 0, /* Play animation once */
- ELM_THUMB_ANIMATION_LOOP, /* Keep playing animation until stop is requested */
- ELM_THUMB_ANIMATION_STOP,
- ELM_THUMB_ANIMATION_LAST
- } Elm_Thumb_Animation_Setting;
+ ELM_GESTURE_FIRST = 0,
- EAPI Evas_Object *elm_thumb_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
- EAPI void elm_thumb_reload(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_thumb_file_set(Evas_Object *obj, const char *file, const char *key) EINA_ARG_NONNULL(1);
- EAPI void elm_thumb_file_get(const Evas_Object *obj, const char **file, const char **key) EINA_ARG_NONNULL(1);
- EAPI void elm_thumb_path_get(const Evas_Object *obj, const char **file, const char **key) EINA_ARG_NONNULL(1);
- EAPI void elm_thumb_animate_set(Evas_Object *obj, Elm_Thumb_Animation_Setting s) EINA_ARG_NONNULL(1);
- EAPI Elm_Thumb_Animation_Setting elm_thumb_animate_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void *elm_thumb_ethumb_client_get(void);
- EAPI Eina_Bool elm_thumb_ethumb_client_connected(void);
- EAPI Eina_Bool elm_thumb_editable_set(Evas_Object *obj, Eina_Bool edit) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_thumb_editable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- /* available styles:
- * default
- * noframe
- */
- /* smart callbacks called:
- * "clicked" - This is called when a user has clicked the thumb without dragging around.
- * "clicked,double" - This is called when a user has double-clicked the thumb.
- * "press" - This is called when a user has pressed down the thumb.
- * "generate,start" - The thumbnail generation started.
- * "generate,stop" - The generation process stopped.
- * "generate,error" - The generation failed.
- * "load,error" - The thumbnail image loading failed.
+ ELM_GESTURE_N_TAPS, /**< N fingers single taps */
+ ELM_GESTURE_N_DOUBLE_TAPS, /**< N fingers double-single taps */
+ ELM_GESTURE_N_TRIPLE_TAPS, /**< N fingers triple-single taps */
+
+ ELM_GESTURE_MOMENTUM, /**< Reports momentum in the dircetion of move */
+
+ ELM_GESTURE_N_LINES, /**< N fingers line gesture */
+ ELM_GESTURE_N_FLICKS, /**< N fingers flick gesture */
+
+ ELM_GESTURE_ZOOM, /**< Zoom */
+ ELM_GESTURE_ROTATE, /**< Rotate */
+
+ ELM_GESTURE_LAST
+ };
+
+ /**
+ * @typedef Elm_Gesture_Types
+ * Type for Emum of supported gesture types.
+ * @ingroup Elm_Gesture_Layer
*/
+ typedef enum _Elm_Gesture_Types Elm_Gesture_Types;
- /* hoversel */
+ /**
+ * @enum _Elm_Gesture_State
+ * Emum of gesture states.
+ * @ingroup Elm_Gesture_Layer
+ */
+ enum _Elm_Gesture_State
+ {
+ ELM_GESTURE_STATE_UNDEFINED = -1, /**< Gesture not STARTed */
+ ELM_GESTURE_STATE_START, /**< Gesture STARTed */
+ ELM_GESTURE_STATE_MOVE, /**< Gesture is ongoing */
+ ELM_GESTURE_STATE_END, /**< Gesture completed */
+ ELM_GESTURE_STATE_ABORT /**< Onging gesture was ABORTed */
+ };
+ /**
+ * @typedef Elm_Gesture_State
+ * gesture states.
+ * @ingroup Elm_Gesture_Layer
+ */
+ typedef enum _Elm_Gesture_State Elm_Gesture_State;
+
+ /**
+ * @struct _Elm_Gesture_Taps_Info
+ * Struct holds taps info for user
+ * @ingroup Elm_Gesture_Layer
+ */
+ struct _Elm_Gesture_Taps_Info
+ {
+ Evas_Coord x, y; /**< Holds center point between fingers */
+ unsigned int n; /**< Number of fingers tapped */
+ unsigned int timestamp; /**< event timestamp */
+ };
+
+ /**
+ * @typedef Elm_Gesture_Taps_Info
+ * holds taps info for user
+ * @ingroup Elm_Gesture_Layer
+ */
+ typedef struct _Elm_Gesture_Taps_Info Elm_Gesture_Taps_Info;
+
+ /**
+ * @struct _Elm_Gesture_Momentum_Info
+ * Struct holds momentum info for user
+ * x1 and y1 are not necessarily in sync
+ * x1 holds x value of x direction starting point
+ * and same holds for y1.
+ * This is noticeable when doing V-shape movement
+ * @ingroup Elm_Gesture_Layer
+ */
+ struct _Elm_Gesture_Momentum_Info
+ { /* Report line ends, timestamps, and momentum computed */
+ Evas_Coord x1; /**< Final-swipe direction starting point on X */
+ Evas_Coord y1; /**< Final-swipe direction starting point on Y */
+ Evas_Coord x2; /**< Final-swipe direction ending point on X */
+ Evas_Coord y2; /**< Final-swipe direction ending point on Y */
+
+ unsigned int tx; /**< Timestamp of start of final x-swipe */
+ unsigned int ty; /**< Timestamp of start of final y-swipe */
+
+ Evas_Coord mx; /**< Momentum on X */
+ Evas_Coord my; /**< Momentum on Y */
+ };
+
+ /**
+ * @typedef Elm_Gesture_Momentum_Info
+ * holds momentum info for user
+ * @ingroup Elm_Gesture_Layer
+ */
+ typedef struct _Elm_Gesture_Momentum_Info Elm_Gesture_Momentum_Info;
+
+ /**
+ * @struct _Elm_Gesture_Line_Info
+ * Struct holds line info for user
+ * @ingroup Elm_Gesture_Layer
+ */
+ struct _Elm_Gesture_Line_Info
+ { /* Report line ends, timestamps, and momentum computed */
+ Elm_Gesture_Momentum_Info momentum; /**< Line momentum info */
+ unsigned int n; /**< Number of fingers (lines) */
+ /* FIXME should be radians, bot degrees */
+ double angle; /**< Angle (direction) of lines */
+ };
+
+ /**
+ * @typedef _Elm_Gesture_Line_Info
+ * Holds line info for user
+ * @ingroup Elm_Gesture_Layer
+ */
+ typedef struct _Elm_Gesture_Line_Info Elm_Gesture_Line_Info;
+
+ /**
+ * @struct _Elm_Gesture_Zoom_Info
+ * Struct holds zoom info for user
+ * @ingroup Elm_Gesture_Layer
+ */
+ struct _Elm_Gesture_Zoom_Info
+ {
+ Evas_Coord x, y; /**< Holds zoom center point reported to user */
+ Evas_Coord radius; /**< Holds radius between fingers reported to user */
+ float zoom; /**< Zoom value: 1.0 means no zoom */
+ float momentum; /**< Zoom momentum: zoom growth per second (NOT YET SUPPORTED) */
+ };
+
+ /**
+ * @typedef Elm_Gesture_Zoom_Info
+ * Holds zoom info for user
+ * @ingroup Elm_Gesture_Layer
+ */
+ typedef struct _Elm_Gesture_Zoom_Info Elm_Gesture_Zoom_Info;
+
+ /**
+ * @struct _Elm_Gesture_Rotate_Info
+ * Struct holds rotation info for user
+ * @ingroup Elm_Gesture_Layer
+ */
+ struct _Elm_Gesture_Rotate_Info
+ {
+ Evas_Coord x, y; /**< Holds zoom center point reported to user */
+ Evas_Coord radius; /**< Holds radius between fingers reported to user */
+ double base_angle; /**< Holds start-angle */
+ double angle; /**< Rotation value: 0.0 means no rotation */
+ double momentum; /**< Rotation momentum: rotation done per second (NOT YET SUPPORTED) */
+ };
+
+ /**
+ * @typedef Elm_Gesture_Rotate_Info
+ * Holds rotation info for user
+ * @ingroup Elm_Gesture_Layer
+ */
+ typedef struct _Elm_Gesture_Rotate_Info Elm_Gesture_Rotate_Info;
+
+ /**
+ * @typedef Elm_Gesture_Event_Cb
+ * User callback used to stream gesture info from gesture layer
+ * @param data user data
+ * @param event_info gesture report info
+ * Returns a flag field to be applied on the causing event.
+ * You should probably return EVAS_EVENT_FLAG_ON_HOLD if your widget acted
+ * upon the event, in an irreversible way.
+ *
+ * @ingroup Elm_Gesture_Layer
+ */
+ typedef Evas_Event_Flags (*Elm_Gesture_Event_Cb) (void *data, void *event_info);
+
+ /**
+ * Use function to set callbacks to be notified about
+ * change of state of gesture.
+ * When a user registers a callback with this function
+ * this means this gesture has to be tested.
+ *
+ * When ALL callbacks for a gesture are set to NULL
+ * it means user isn't interested in gesture-state
+ * and it will not be tested.
+ *
+ * @param obj Pointer to gesture-layer.
+ * @param idx The gesture you would like to track its state.
+ * @param cb callback function pointer.
+ * @param cb_type what event this callback tracks: START, MOVE, END, ABORT.
+ * @param data user info to be sent to callback (usually, Smart Data)
+ *
+ * @ingroup Elm_Gesture_Layer
+ */
+ EAPI void elm_gesture_layer_cb_set(Evas_Object *obj, Elm_Gesture_Types idx, Elm_Gesture_State cb_type, Elm_Gesture_Event_Cb cb, void *data) EINA_ARG_NONNULL(1);
+
+ /**
+ * Call this function to get repeat-events settings.
+ *
+ * @param obj Pointer to gesture-layer.
+ *
+ * @return repeat events settings.
+ * @see elm_gesture_layer_hold_events_set()
+ * @ingroup Elm_Gesture_Layer
+ */
+ EAPI Eina_Bool elm_gesture_layer_hold_events_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * This function called in order to make gesture-layer repeat events.
+ * Set this of you like to get the raw events only if gestures were not detected.
+ * Clear this if you like gesture layer to fwd events as testing gestures.
+ *
+ * @param obj Pointer to gesture-layer.
+ * @param r Repeat: TRUE/FALSE
+ *
+ * @ingroup Elm_Gesture_Layer
+ */
+ EAPI void elm_gesture_layer_hold_events_set(Evas_Object *obj, Eina_Bool r) EINA_ARG_NONNULL(1);
+
+ /**
+ * This function sets step-value for zoom action.
+ * Set step to any positive value.
+ * Cancel step setting by setting to 0.0
+ *
+ * @param obj Pointer to gesture-layer.
+ * @param s new zoom step value.
+ *
+ * @ingroup Elm_Gesture_Layer
+ */
+ EAPI void elm_gesture_layer_zoom_step_set(Evas_Object *obj, double s) EINA_ARG_NONNULL(1);
+
+ /**
+ * This function sets step-value for rotate action.
+ * Set step to any positive value.
+ * Cancel step setting by setting to 0.0
+ *
+ * @param obj Pointer to gesture-layer.
+ * @param s new roatate step value.
+ *
+ * @ingroup Elm_Gesture_Layer
+ */
+ EAPI void elm_gesture_layer_rotate_step_set(Evas_Object *obj, double s) EINA_ARG_NONNULL(1);
+
+ /**
+ * This function called to attach gesture-layer to an Evas_Object.
+ * @param obj Pointer to gesture-layer.
+ * @param t Pointer to underlying object (AKA Target)
+ *
+ * @return TRUE, FALSE on success, failure.
+ *
+ * @ingroup Elm_Gesture_Layer
+ */
+ EAPI Eina_Bool elm_gesture_layer_attach(Evas_Object *obj, Evas_Object *t) EINA_ARG_NONNULL(1, 2);
+
+ /**
+ * Call this function to construct a new gesture-layer object.
+ * This does not activate the gesture layer. You have to
+ * call elm_gesture_layer_attach in order to 'activate' gesture-layer.
+ *
+ * @param parent the parent object.
+ *
+ * @return Pointer to new gesture-layer object.
+ *
+ * @ingroup Elm_Gesture_Layer
+ */
+ EAPI Evas_Object *elm_gesture_layer_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+
+ /* thumb */
+ typedef enum _Elm_Thumb_Animation_Setting
+ {
+ ELM_THUMB_ANIMATION_START = 0, /* Play animation once */
+ ELM_THUMB_ANIMATION_LOOP, /* Keep playing animation until stop is requested */
+ ELM_THUMB_ANIMATION_STOP,
+ ELM_THUMB_ANIMATION_LAST
+ } Elm_Thumb_Animation_Setting;
+
+ EAPI Evas_Object *elm_thumb_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+ EAPI void elm_thumb_reload(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_thumb_file_set(Evas_Object *obj, const char *file, const char *key) EINA_ARG_NONNULL(1);
+ EAPI void elm_thumb_file_get(const Evas_Object *obj, const char **file, const char **key) EINA_ARG_NONNULL(1);
+ EAPI void elm_thumb_path_get(const Evas_Object *obj, const char **file, const char **key) EINA_ARG_NONNULL(1);
+ EAPI void elm_thumb_animate_set(Evas_Object *obj, Elm_Thumb_Animation_Setting s) EINA_ARG_NONNULL(1);
+ EAPI Elm_Thumb_Animation_Setting elm_thumb_animate_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void *elm_thumb_ethumb_client_get(void);
+ EAPI Eina_Bool elm_thumb_ethumb_client_connected(void);
+ EAPI Eina_Bool elm_thumb_editable_set(Evas_Object *obj, Eina_Bool edit) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_thumb_editable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /* available styles:
+ * default
+ * noframe
+ */
+ /* smart callbacks called:
+ * "clicked" - This is called when a user has clicked the thumb without dragging around.
+ * "clicked,double" - This is called when a user has double-clicked the thumb.
+ * "press" - This is called when a user has pressed down the thumb.
+ * "generate,start" - The thumbnail generation started.
+ * "generate,stop" - The generation process stopped.
+ * "generate,error" - The generation failed.
+ * "load,error" - The thumbnail image loading failed.
+ */
+
+ /* hoversel */
EAPI Evas_Object *elm_hoversel_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
EAPI void elm_hoversel_horizontal_set(Evas_Object *obj, Eina_Bool horizontal) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_hoversel_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_hoversel_hover_parent_set(Evas_Object *obj, Evas_Object *parent) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_hoversel_hover_parent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_hoversel_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
- EAPI const char *elm_hoversel_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_hoversel_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI const char *elm_hoversel_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_hoversel_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_hoversel_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_hoversel_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_toolbar_item_separator_get(const Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
EAPI void elm_toolbar_mode_shrink_set(Evas_Object *obj, Elm_Toolbar_Shrink_Mode shrink_mode) EINA_ARG_NONNULL(1);
EAPI Elm_Toolbar_Shrink_Mode elm_toolbar_mode_shrink_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_toolbar_homogenous_set(Evas_Object *obj, Eina_Bool homogenous) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_toolbar_homogenous_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_toolbar_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_toolbar_homogeneous_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_toolbar_homogenous_set(Evas_Object *obj, Eina_Bool homogenous) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI Eina_Bool elm_toolbar_homogenous_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_toolbar_menu_parent_set(Evas_Object *obj, Evas_Object *parent) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_toolbar_menu_parent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_toolbar_align_set(Evas_Object *obj, double align) EINA_ARG_NONNULL(1);
EAPI void elm_list_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v) EINA_ARG_NONNULL(1);
EAPI void elm_list_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v) EINA_ARG_NONNULL(1);
/* smart callbacks called:
- * "clicked" - when the user double-clicked an item
+ * "clicked,double" - when the user double-clicked an item
* "selected" - when the user selected an item
* "unselected" - when the user selected an item
* "longpressed" - an item in the hoversel list is long-pressed
* "scroll,edge,right" - the list is scrolled until the right edge
*/
- // FIXME: incomplete - carousel. don't use this until this comment is removed
- typedef struct _Elm_Carousel_Item Elm_Carousel_Item;
- EAPI Evas_Object *elm_carousel_add(Evas_Object *parent);
- EAPI Elm_Carousel_Item *elm_carousel_item_add(Evas_Object *obj, Evas_Object *icon, const char *label, Evas_Smart_Cb func, const void *data);
- EAPI void elm_carousel_item_del(Elm_Carousel_Item *item);
- EAPI void elm_carousel_item_select(Elm_Carousel_Item *item);
- /* smart callbacks called:
- * "clicked" - when the user clicks on a carousel item and becomes selected
- */
-
/* slider */
EAPI Evas_Object *elm_slider_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
- EAPI void elm_slider_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
- EAPI const char *elm_slider_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_slider_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI const char *elm_slider_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_slider_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_slider_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_slider_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI const char *elm_slider_unit_format_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_slider_indicator_format_set(Evas_Object *obj, const char *indicator) EINA_ARG_NONNULL(1);
EAPI const char *elm_slider_indicator_format_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_slider_indicator_format_function_set(Evas_Object *obj, const char *(*func)(double val)) EINA_ARG_NONNULL(1);
+ EAPI void elm_slider_indicator_format_function_set(Evas_Object *obj, const char *(*func)(double val), void (*free_func)(const char *str)) EINA_ARG_NONNULL(1);
+ EAPI void elm_slider_units_format_function_set(Evas_Object *obj, const char *(*func)(double val), void (*free_func)(const char *str)) EINA_ARG_NONNULL(1);
EAPI void elm_slider_horizontal_set(Evas_Object *obj, Eina_Bool horizontal) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_slider_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_slider_min_max_set(Evas_Object *obj, double min, double max) EINA_ARG_NONNULL(1);
/* actionslider */
- typedef enum _Elm_Actionslider_Pos
- {
- ELM_ACTIONSLIDER_NONE = 0,
- ELM_ACTIONSLIDER_LEFT = 1 << 0,
- ELM_ACTIONSLIDER_CENTER = 1 << 1,
- ELM_ACTIONSLIDER_RIGHT = 1 << 2,
- ELM_ACTIONSLIDER_ALL = (1 << 3) -1
- } Elm_Actionslider_Pos;
+ /**
+ * @addtogroup Actionslider Actionslider
+ *
+ * A actionslider is a switcher for 2 or 3 labels with customizable magnet
+ * properties. The indicator is the element the user drags to choose a label.
+ * When the position is set with magnet, when released the indicator will be
+ * moved to it if it's nearest the magnetized position.
+ *
+ * @note By default all positions are set as enabled.
+ *
+ * Signals that you can add callbacks for are:
+ *
+ * "selected" - when user selects an enabled position (the label is passed
+ * as event info)".
+ * @n
+ * "pos_changed" - when the indicator reaches any of the positions("left",
+ * "right" or "center").
+ *
+ * See an example of actionslider usage @ref actionslider_example_page "here"
+ * @{
+ */
typedef enum _Elm_Actionslider_Indicator_Pos
{
ELM_ACTIONSLIDER_LABEL_BUTTON
} Elm_Actionslider_Label_Pos;
- EAPI Evas_Object *elm_actionslider_add(Evas_Object *parent);
- EAPI void elm_actionslider_indicator_pos_set(Evas_Object *obj, Elm_Actionslider_Indicator_Pos pos);
- EAPI Elm_Actionslider_Indicator_Pos elm_actionslider_indicator_pos_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_actionslider_magnet_pos_set(Evas_Object *obj, Elm_Actionslider_Magnet_Pos pos);
- EAPI Elm_Actionslider_Magnet_Pos elm_actionslider_magnet_pos_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_actionslider_label_set(Evas_Object *obj, Elm_Actionslider_Label_Pos pos, const char *label);
- EAPI void elm_actionslider_labels_get(const Evas_Object *obj, const char **left_label, const char **center_label, const char **right_label) EINA_ARG_NONNULL(1);
- EAPI const char *elm_actionslider_selected_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_actionslider_enabled_pos_set(Evas_Object *obj, Elm_Actionslider_Magnet_Pos pos) EINA_ARG_NONNULL(1);
- EAPI Elm_Actionslider_Magnet_Pos elm_actionslider_enabled_pos_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_actionslider_indicator_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
- EAPI const char *elm_actionslider_indicator_label_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_actionslider_hold(Evas_Object *obj, Eina_Bool flag);
/* smart callbacks called:
* "indicator,position" - when a button reaches to the special position like "left", "right" and "center".
*/
+ /**
+ * Add a new actionslider to the parent.
+ *
+ * @param parent The parent object
+ * @return The new actionslider object or NULL if it cannot be created
+ */
+ EAPI Evas_Object *elm_actionslider_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set actionslider label.
+ *
+ * @param[in] obj The actionslider object
+ * @param[in] pos The position of the label.
+ * (ELM_ACTIONSLIDER_LABEL_LEFT, ELM_ACTIONSLIDER_LABEL_RIGHT)
+ * @param label The label which is going to be set.
+ */
+ EAPI void elm_actionslider_label_set(Evas_Object *obj, Elm_Actionslider_Label_Pos pos, const char *label) EINA_ARG_NONNULL(1);
+ /**
+ * Get actionslider labels.
+ *
+ * @param obj The actionslider object
+ * @param left_label A char** to place the left_label of @p obj into.
+ * @param center_label A char** to place the center_label of @p obj into.
+ * @param right_label A char** to place the right_label of @p obj into.
+ */
+ EAPI void elm_actionslider_labels_get(const Evas_Object *obj, const char **left_label, const char **center_label, const char **right_label) EINA_ARG_NONNULL(1);
+ /**
+ * Get actionslider selected label.
+ *
+ * @param obj The actionslider object
+ * @return The selected label
+ */
+ EAPI const char *elm_actionslider_selected_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set actionslider indicator position.
+ *
+ * @param obj The actionslider object.
+ * @param pos The position of the indicator.
+ */
+ EAPI void elm_actionslider_indicator_pos_set(Evas_Object *obj, Elm_Actionslider_Indicator_Pos pos) EINA_ARG_NONNULL(1);
+ /**
+ * Get actionslider indicator position.
+ *
+ * @param obj The actionslider object.
+ * @return The position of the indicator.
+ */
+ EAPI Elm_Actionslider_Indicator_Pos elm_actionslider_indicator_pos_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set actionslider magnet position. To make multiple positions magnets @c or
+ * them together(e.g.: ELM_ACTIONSLIDER_MAGNET_LEFT | ELM_ACTIONSLIDER_MAGNET_RIGHT)
+ *
+ * @param obj The actionslider object.
+ * @param pos Bit mask indicating the magnet positions.
+ */
+ EAPI void elm_actionslider_magnet_pos_set(Evas_Object *obj, Elm_Actionslider_Magnet_Pos pos) EINA_ARG_NONNULL(1);
+ /**
+ * Get actionslider magnet position.
+ *
+ * @param obj The actionslider object.
+ * @return The positions with magnet property.
+ */
+ EAPI Elm_Actionslider_Magnet_Pos elm_actionslider_magnet_pos_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set actionslider enabled position. To set multiple positions as enabled @c or
+ * them together(e.g.: ELM_ACTIONSLIDER_MAGNET_LEFT | ELM_ACTIONSLIDER_MAGNET_RIGHT).
+ *
+ * @note All the positions are enabled by default.
+ *
+ * @param obj The actionslider object.
+ * @param pos Bit mask indicating the enabled positions.
+ */
+ EAPI void elm_actionslider_enabled_pos_set(Evas_Object *obj, Elm_Actionslider_Magnet_Pos pos) EINA_ARG_NONNULL(1);
+ /**
+ * Get actionslider enabled position.
+ *
+ * @param obj The actionslider object.
+ * @return The enabled positions.
+ */
+ EAPI Elm_Actionslider_Magnet_Pos elm_actionslider_enabled_pos_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set the label used on the indicator.
+ *
+ * @param obj The actionslider object
+ * @param label The label to be set on the indicator.
+ * @deprecated use elm_object_text_set() instead.
+ */
+ EINA_DEPRECATED EAPI void elm_actionslider_indicator_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+ /**
+ * Get the label used on the indicator object.
+ *
+ * @param obj The actionslider object
+ * @return The indicator label
+ * @deprecated use elm_object_text_get() instead.
+ */
+ EINA_DEPRECATED EAPI const char *elm_actionslider_indicator_label_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Hold actionslider object movement.
+ *
+ * @param[in] obj The actionslider object
+ * @param[in] flag Actionslider hold/release
+ * (EINA_TURE = hold/EIN_FALSE = release)
+ *
+ * @ingroup Actionslider
+ */
+ EAPI void elm_actionslider_hold(Evas_Object *obj, Eina_Bool flag) EINA_ARG_NONNULL(1);
+
+
+ /**
+ *
+ */
+
/* genlist */
typedef enum _Elm_Genlist_Item_Flags
{
EAPI void elm_genlist_item_cursor_engine_only_set(Elm_Genlist_Item *item, Eina_Bool engine_only) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_genlist_item_cursor_engine_only_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
EAPI void elm_genlist_realized_items_update(Evas_Object *obj) EINA_ARG_NONNULL(1);
- /* smart callbacks called:
- * "clicked,double" - This is called when a user has double-clicked an item. The
- * event_info parameter is the genlist item that was double-clicked.
+ EAPI void elm_genlist_item_mode_set(Elm_Genlist_Item *it, const char *mode_type, Eina_Bool mode_set) EINA_ARG_NONNULL(1, 2);
+ EAPI const char *elm_genlist_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI const Elm_Genlist_Item *elm_genlist_mode_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_genlist_reorder_mode_set(Evas_Object *obj, Eina_Bool reorder_mode) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_genlist_reorder_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /* Signals that you can add callbacks for are:
+ * "clicked,double" - This is called when a user has double-clicked an item.
+ * The event_info parameter is the genlist item that was
+ * double-clicked.
* "selected" - This is called when a user has made an item selected. The
* event_info parameter is the genlist item that was selected.
* "unselected" - This is called when a user has made an item unselected. The
EAPI void elm_genlist_pinch_zoom_set(Evas_Object *obj, Eina_Bool emode) EINA_ARG_NONNULL(1);
EAPI void elm_genlist_pinch_zoom_mode_set(Evas_Object *obj, Eina_Bool emode) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_genlist_pinch_zoom_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_genlist_reorder_mode_set(Evas_Object *obj, Eina_Bool reorder_mode) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_genlist_reorder_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_genlist_item_mode_set(Elm_Genlist_Item *it, const char *mode_type, Eina_Bool mode_set) EINA_ARG_NONNULL(1, 2);
- EAPI const char *elm_genlist_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI const Elm_Genlist_Item *elm_genlist_mode_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- /* check */
+ /**
+ * @page tutorial_check Check example
+ * @dontinclude check_example_01.c
+ *
+ * This example will show 2 checkboxes, one with just a label and the second
+ * one with both a label and an icon. This example also ilustrates how to
+ * have the checkbox change the value of a variable and how to react to those
+ * changes.
+ *
+ * We will start with the usual setup code:
+ * @until show(bg)
+ *
+ * And now we create our first checkbox, set its label, tell it to change
+ * the value of @p value when the checkbox stats is changed and ask to be
+ * notified of state changes:
+ * @until show
+ *
+ * For our second checkbox we are going to set an icon so we need to create
+ * and icon:
+ * @until show
+ * @note For simplicity we are using a rectangle as icon, but any evas object
+ * can be used.
+ *
+ * And for our second checkbox we set the label, icon and state to true:
+ * @until show
+ *
+ * We now do some more setup:
+ * @until ELM_MAIN
+ *
+ * And finally implement the callback that will be called when the first
+ * checkbox's state changes. This callback will use @p data to print a
+ * message:
+ * @until }
+ * @note This work because @p data is @p value(from the main function) and @p
+ * value is changed when the checkbox is changed.
+ *
+ * Our example will look like this:
+ * @image html screenshots/check_example_01.png
+ * @image latex screenshots/check_example_01.eps
+ *
+ * @example check_example_01.c
+ */
+ /**
+ * @defgroup Check Check
+ *
+ * @brief The check widget allows for toggling a value between true and
+ * false.
+ *
+ * Check objects are a lot like radio objects in layout and functionality
+ * except they do not work as a group, but independently and only toggle the
+ * value of a boolean from false to true (0 or 1). elm_check_state_set() sets
+ * the boolean state (1 for true, 0 for false), and elm_check_state_get()
+ * returns the current state. For convenience, like the radio objects, you
+ * can set a pointer to a boolean directly with elm_check_state_pointer_set()
+ * for it to modify.
+ *
+ * Signals that you can add callbacks for are:
+ * "changed" - This is called whenever the user changes the state of one of
+ * the check object(event_info is NULL).
+ *
+ * @ref tutorial_check should give you a firm grasp of how to use this widget.
+ * @{
+ */
+ /**
+ * @brief Add a new Check object
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ */
EAPI Evas_Object *elm_check_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
- EAPI void elm_check_label_set(Evas_Object *obj, const char *label); EINA_ARG_NONNULL(1)
- EAPI const char *elm_check_label_get(const Evas_Object *obj); EINA_ARG_NONNULL(1)
- EAPI void elm_check_icon_set(Evas_Object *obj, Evas_Object *icon); EINA_ARG_NONNULL(1)
- EAPI Evas_Object *elm_check_icon_get(const Evas_Object *obj); EINA_ARG_NONNULL(1)
- EAPI Evas_Object *elm_check_icon_unset(Evas_Object *obj); EINA_ARG_NONNULL(1)
- EAPI void elm_check_state_set(Evas_Object *obj, Eina_Bool state); EINA_ARG_NONNULL(1)
- EAPI Eina_Bool elm_check_state_get(const Evas_Object *obj); EINA_ARG_NONNULL(1)
- EAPI void elm_check_state_pointer_set(Evas_Object *obj, Eina_Bool *statep); EINA_ARG_NONNULL(1)
- /* smart callbacks called:
- * "changed" - This is called whenever the user changes the state of one of the check object.
+ /**
+ * @brief Set the text label of the check object
+ *
+ * @param obj The check object
+ * @param label The text label string in UTF-8
+ *
+ * @deprecated use elm_object_text_set() instead.
+ */
+ EINA_DEPRECATED EAPI void elm_check_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Get the text label of the check object
+ *
+ * @param obj The check object
+ * @return The text label string in UTF-8
+ *
+ * @deprecated use elm_object_text_get() instead.
+ */
+ EINA_DEPRECATED EAPI const char *elm_check_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Set the icon object of the check object
+ *
+ * @param obj The check object
+ * @param icon The icon object
+ *
+ * Once the icon object is set, a previously set one will be deleted.
+ * If you want to keep that old content object, use the
+ * elm_check_icon_unset() function.
+ */
+ EAPI void elm_check_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Get the icon object of the check object
+ *
+ * @param obj The check object
+ * @return The icon object
+ */
+ EAPI Evas_Object *elm_check_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Unset the icon used for the check object
+ *
+ * @param obj The check object
+ * @return The icon object that was being used
+ *
+ * Unparent and return the icon object which was set for this widget.
+ */
+ EAPI Evas_Object *elm_check_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Set the on/off state of the check object
+ *
+ * @param obj The check object
+ * @param state The state to use (1 == on, 0 == off)
+ *
+ * This sets the state of the check. If set
+ * with elm_check_state_pointer_set() the state of that variable is also
+ * changed. Calling this @b doesn't cause the "changed" signal to be emited.
+ */
+ EAPI void elm_check_state_set(Evas_Object *obj, Eina_Bool state) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Get the state of the check object
+ *
+ * @param obj The check object
+ * @return The boolean state
+ */
+ EAPI Eina_Bool elm_check_state_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Set a convenience pointer to a boolean to change
+ *
+ * @param obj The check object
+ * @param statep Pointer to the boolean to modify
+ *
+ * This sets a pointer to a boolean, that, in addition to the check objects
+ * state will also be modified directly. To stop setting the object pointed
+ * to simply use NULL as the @p statep parameter. If @p statep is not NULL,
+ * then when this is called, the check objects state will also be modified to
+ * reflect the value of the boolean @p statep points to, just like calling
+ * elm_check_state_set().
+ */
+ EAPI void elm_check_state_pointer_set(Evas_Object *obj, Eina_Bool *statep) EINA_ARG_NONNULL(1);
+ /**
+ * @}
*/
/* radio */
EAPI Evas_Object *elm_radio_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
- EAPI void elm_radio_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
- EAPI const char *elm_radio_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_radio_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI const char *elm_radio_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_radio_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_radio_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_radio_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
* "changed" - when the radio status is changed
*/
- EAPI Evas_Object *elm_page_control_add(Evas_Object *parent);
- EAPI void elm_page_control_page_count_set(Evas_Object *obj, unsigned int page_count);
- EAPI void elm_page_control_page_id_set(Evas_Object *obj, unsigned int page_id);
- EAPI unsigned int elm_page_control_page_id_get(Evas_Object *obj);
/* pager */
EAPI Evas_Object *elm_pager_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
EAPI void elm_pager_content_push(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_slideshow_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
EAPI Elm_Slideshow_Item *elm_slideshow_item_add(Evas_Object *obj, const Elm_Slideshow_Item_Class *itc, const void *data) EINA_ARG_NONNULL(1);
+ EAPI Elm_Slideshow_Item *elm_slideshow_item_sorted_insert(Evas_Object *obj, const Elm_Slideshow_Item_Class *itc, const void *data, Eina_Compare_Cb func) EINA_ARG_NONNULL(1);
EAPI void elm_slideshow_show(Elm_Slideshow_Item *item) EINA_ARG_NONNULL(1);
EAPI void elm_slideshow_next(Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_slideshow_previous(Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void *elm_slideshow_item_data_get(const Elm_Slideshow_Item *item) EINA_ARG_NONNULL(1);
EAPI Elm_Slideshow_Item *elm_slideshow_item_current_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI Evas_Object* elm_slideshow_item_object_get(const Elm_Slideshow_Item* item) EINA_ARG_NONNULL(1);
+ EAPI Elm_Slideshow_Item *elm_slideshow_item_nth_get(const Evas_Object *obj, unsigned int nth) EINA_ARG_NONNULL(1);
EAPI const char *elm_slideshow_layout_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_slideshow_layout_set(Evas_Object *obj, const char *layout) EINA_ARG_NONNULL(1);
EAPI const Eina_List *elm_slideshow_layouts_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_slideshow_cache_before_set(Evas_Object *obj, int count) EINA_ARG_NONNULL(1);
+ EAPI int elm_slideshow_cache_before_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_slideshow_cache_after_set(Evas_Object *obj, int count) EINA_ARG_NONNULL(1);
+ EAPI int elm_slideshow_cache_after_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI unsigned int elm_slideshow_count_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/* smart callbacks called:
* "changed" - when the slideshow switch to another item
*/
EAPI void elm_progressbar_pulse(Evas_Object *obj, Eina_Bool state) EINA_ARG_NONNULL(1);
EAPI void elm_progressbar_value_set(Evas_Object *obj, double val) EINA_ARG_NONNULL(1);
EAPI double elm_progressbar_value_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_progressbar_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
- EAPI const char *elm_progressbar_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_progressbar_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI const char *elm_progressbar_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_progressbar_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_progressbar_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_progressbar_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_index_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
EAPI void elm_index_active_set(Evas_Object *obj, Eina_Bool active) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_index_active_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_index_item_level_set(Evas_Object *obj, int level) EINA_ARG_NONNULL(1);
EAPI int elm_index_item_level_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void *elm_index_item_selected_get(const Evas_Object *obj, int level) EINA_ARG_NONNULL(1);
EAPI void elm_index_item_data_set(Elm_Index_Item *it, const void *data) EINA_ARG_NONNULL(1);
EAPI void elm_index_item_del_cb_set(Elm_Index_Item *it, Evas_Smart_Cb func) EINA_ARG_NONNULL(1);
EAPI const char *elm_index_item_letter_get(const Elm_Index_Item *item) EINA_ARG_NONNULL(1);
- EAPI void elm_index_button_image_invisible_set(Evas_Object *obj, Eina_Bool invisible);
+ EAPI void elm_index_button_image_invisible_set(Evas_Object *obj, Eina_Bool invisible) EINA_ARG_NONNULL(1);
/* smart callbacks called:
* "changed" - when the selected index item changes
* "delay,changed" - when the selected index item changes, but after some small idle period
* "clicked,double" - when mouse/finger double-clicked
* "load" - when photo load begins
* "loaded" - when photo load done
- * "load,details" - when detailed image load begins
- * "loaded,details" - when detailed image load done
+ * "load,detail" - when detailed image load begins
+ * "loaded,detail" - when detailed image load done
* "zoom,start" - when zooming started
* "zoom,stop" - when zooming stopped
* "zoom,change" - when auto zoom mode changed zoom level
typedef struct _Elm_Map_Group_Class Elm_Map_Group_Class;
typedef struct _Elm_Map_Route Elm_Map_Route;
typedef struct _Elm_Map_Name Elm_Map_Name;
+ typedef struct _Elm_Map_Track Elm_Map_Track;
typedef Evas_Object *(*ElmMapMarkerGetFunc) (Evas_Object *obj, Elm_Map_Marker *marker, void *data);
typedef void (*ElmMapMarkerDelFunc) (Evas_Object *obj, Elm_Map_Marker *marker, void *data, Evas_Object *o);
EAPI const char *elm_map_source_name_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_map_route_source_set(Evas_Object *obj, Elm_Map_Route_Sources source) EINA_ARG_NONNULL(1);
EAPI Elm_Map_Route_Sources elm_map_route_source_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_map_source_zoom_min_set(Evas_Object *obj, int zoom) EINA_ARG_NONNULL(1);
EAPI int elm_map_source_zoom_min_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_map_source_zoom_max_set(Evas_Object *obj, int zoom) EINA_ARG_NONNULL(1);
EAPI int elm_map_source_zoom_max_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_map_user_agent_set(Evas_Object *obj, const char *user_agent) EINA_ARG_NONNULL(1, 2);
EAPI const char *elm_map_user_agent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_map_rotate_get(const Evas_Object *obj, double *degree, Evas_Coord *cx, Evas_Coord *cy) EINA_ARG_NONNULL(1, 2, 3, 4);
EAPI void elm_map_wheel_disabled_set(Evas_Object *obj, Eina_Bool disabled) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_map_wheel_disabled_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+#ifdef ELM_EMAP
+ EAPI Evas_Object *elm_map_track_add(Evas_Object *obj, EMap_Route *emap) EINA_ARG_NONNULL(1);
+#endif
+ EAPI void elm_map_track_remove(Evas_Object *obj, Evas_Object *route) EINA_ARG_NONNULL(1);
/* smart callbacks called:
* "clicked" - when image clicked
* "scroll,drag,stop" - dragging the contents around has stopped
*/
+ /* Route */
+ EAPI Evas_Object *elm_route_add(Evas_Object *parent);
+#ifdef ELM_EMAP
+ EAPI void elm_route_emap_set(Evas_Object *obj, EMap_Route *emap);
+#endif
+ EAPI double elm_route_lon_min_get(Evas_Object *obj);
+ EAPI double elm_route_lat_min_get(Evas_Object *obj);
+ EAPI double elm_route_lon_max_get(Evas_Object *obj);
+ EAPI double elm_route_lat_max_get(Evas_Object *obj);
+
+
/* panel */
typedef enum _Elm_Panel_Orient
{
ELM_FLIP_CUBE_LEFT,
ELM_FLIP_CUBE_RIGHT,
ELM_FLIP_CUBE_UP,
- ELM_FLIP_CUBE_DOWN
+ ELM_FLIP_CUBE_DOWN,
+ ELM_FLIP_PAGE_LEFT,
+ ELM_FLIP_PAGE_RIGHT,
+ ELM_FLIP_PAGE_UP,
+ ELM_FLIP_PAGE_DOWN
} Elm_Flip_Mode;
+ typedef enum _Elm_Flip_Interaction
+ {
+ ELM_FLIP_INTERACTION_NONE,
+ ELM_FLIP_INTERACTION_ROTATE,
+ ELM_FLIP_INTERACTION_CUBE,
+ ELM_FLIP_INTERACTION_PAGE
+ } Elm_Flip_Interaction;
+ typedef enum _Elm_Flip_Direction
+ {
+ ELM_FLIP_DIRECTION_UP,
+ ELM_FLIP_DIRECTION_DOWN,
+ ELM_FLIP_DIRECTION_LEFT,
+ ELM_FLIP_DIRECTION_RIGHT
+ } Elm_Flip_Direction;
EAPI Evas_Object *elm_flip_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
EAPI void elm_flip_content_front_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_flip_front_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_flip_perspective_set(Evas_Object *obj, Evas_Coord foc, Evas_Coord x, Evas_Coord y) EINA_ARG_NONNULL(1);
EAPI void elm_flip_go(Evas_Object *obj, Elm_Flip_Mode mode) EINA_ARG_NONNULL(1);
+ EAPI void elm_flip_interaction_set(Evas_Object *obj, Elm_Flip_Interaction mode);
+ EAPI Elm_Flip_Interaction elm_flip_interaction_get(const Evas_Object *obj);
+ EAPI void elm_flip_interacton_direction_enabled_set(Evas_Object *obj, Elm_Flip_Direction dir, Eina_Bool enabled);
+ EAPI Eina_Bool elm_flip_interacton_direction_enabled_get(Evas_Object *obj, Elm_Flip_Direction dir);
+ EAPI void elm_flip_interacton_direction_hitsize_set(Evas_Object *obj, Elm_Flip_Direction dir, double hitsize);
+ EAPI double elm_flip_interacton_direction_hitsize_get(Evas_Object *obj, Elm_Flip_Direction dir);
/* smart callbacks called:
+ * "animate,begin" - when a flip animation was started
* "animate,done" - when a flip animation is finished
*/
/* scrolledentry */
- EAPI Evas_Object *elm_scrolled_entry_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_single_line_set(Evas_Object *obj, Eina_Bool single_line) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_scrolled_entry_single_line_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_password_set(Evas_Object *obj, Eina_Bool password) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_scrolled_entry_password_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_entry_set(Evas_Object *obj, const char *entry) EINA_ARG_NONNULL(1);
- EAPI const char *elm_scrolled_entry_entry_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_scrolled_entry_is_empty(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI const char *elm_scrolled_entry_selection_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_entry_insert(Evas_Object *obj, const char *entry) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_line_wrap_set(Evas_Object *obj, Eina_Bool wrap) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_line_char_wrap_set(Evas_Object *obj, Eina_Bool wrap) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_editable_set(Evas_Object *obj, Eina_Bool editable) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_scrolled_entry_editable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_select_none(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_select_all(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_scrolled_entry_cursor_next(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_scrolled_entry_cursor_prev(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_scrolled_entry_cursor_up(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_scrolled_entry_cursor_down(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_cursor_begin_set(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_cursor_end_set(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_cursor_line_begin_set(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_cursor_line_end_set(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_cursor_selection_begin(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_cursor_selection_end(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_scrolled_entry_cursor_is_format_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_scrolled_entry_cursor_is_visible_format_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI const char *elm_scrolled_entry_cursor_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_selection_cut(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_selection_copy(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_selection_paste(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_context_menu_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_context_menu_item_add(Evas_Object *obj, const char *label, const char *icon_file, Elm_Icon_Type icon_type, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_context_menu_disabled_set(Evas_Object *obj, Eina_Bool disabled) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_scrolled_entry_context_menu_disabled_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_scrollbar_policy_set(Evas_Object *obj, Elm_Scroller_Policy h, Elm_Scroller_Policy v) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1, 2);
- EAPI Evas_Object *elm_scrolled_entry_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI Evas_Object *elm_scrolled_entry_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_icon_visible_set(Evas_Object *obj, Eina_Bool setting) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_end_set(Evas_Object *obj, Evas_Object *end) EINA_ARG_NONNULL(1, 2);
- EAPI Evas_Object *elm_scrolled_entry_end_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI Evas_Object *elm_scrolled_entry_end_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_end_visible_set(Evas_Object *obj, Eina_Bool setting) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_item_provider_append(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *entry, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
- EAPI void elm_scrolled_entry_item_provider_prepend(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *entry, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
- EAPI void elm_scrolled_entry_item_provider_remove(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *entry, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
- EAPI void elm_scrolled_entry_text_filter_append(Evas_Object *obj, void (*func) (void *data, Evas_Object *entry, char **text), void *data) EINA_ARG_NONNULL(1, 2);
- EAPI void elm_scrolled_entry_text_filter_prepend(Evas_Object *obj, void (*func) (void *data, Evas_Object *entry, char **text), void *data) EINA_ARG_NONNULL(1, 2);
- EAPI void elm_scrolled_entry_text_filter_remove(Evas_Object *obj, void (*func) (void *data, Evas_Object *entry, char **text), void *data) EINA_ARG_NONNULL(1, 2);
- EAPI void elm_scrolled_entry_file_set(Evas_Object *obj, const char *file, Elm_Text_Format format) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_file_get(const Evas_Object *obj, const char **file, Elm_Text_Format *format) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_file_save(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_autosave_set(Evas_Object *obj, Eina_Bool autosave) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_scrolled_entry_autosave_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_cnp_textonly_set(Evas_Object *obj, Eina_Bool textonly) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_scrolled_entry_cnp_textonly_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_scrolled_entry_input_panel_enabled_set(Evas_Object *obj, Eina_Bool enabled);
- EAPI void elm_scrolled_entry_input_panel_layout_set(Evas_Object *obj, Elm_Input_Panel_Layout layout);
- EAPI Ecore_IMF_Context *elm_scrolled_entry_imf_context_get(Evas_Object *obj);
- EAPI void elm_scrolled_entry_autocapitalization_set(Evas_Object *obj, Eina_Bool autocap);
- EAPI void elm_scrolled_entry_autoperiod_set(Evas_Object *obj, Eina_Bool autoperiod);
+ EINA_DEPRECATED EAPI Evas_Object *elm_scrolled_entry_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_single_line_set(Evas_Object *obj, Eina_Bool single_line) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI Eina_Bool elm_scrolled_entry_single_line_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_password_set(Evas_Object *obj, Eina_Bool password) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI Eina_Bool elm_scrolled_entry_password_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_entry_set(Evas_Object *obj, const char *entry) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI const char *elm_scrolled_entry_entry_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_entry_append(Evas_Object *obj, const char *entry) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI Eina_Bool elm_scrolled_entry_is_empty(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI const char *elm_scrolled_entry_selection_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_entry_insert(Evas_Object *obj, const char *entry) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_line_wrap_set(Evas_Object *obj, Elm_Wrap_Type wrap) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_editable_set(Evas_Object *obj, Eina_Bool editable) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI Eina_Bool elm_scrolled_entry_editable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_select_none(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_select_all(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI Eina_Bool elm_scrolled_entry_cursor_next(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI Eina_Bool elm_scrolled_entry_cursor_prev(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI Eina_Bool elm_scrolled_entry_cursor_up(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI Eina_Bool elm_scrolled_entry_cursor_down(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_cursor_begin_set(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_cursor_end_set(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_cursor_line_begin_set(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_cursor_line_end_set(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_cursor_selection_begin(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_cursor_selection_end(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI Eina_Bool elm_scrolled_entry_cursor_is_format_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI Eina_Bool elm_scrolled_entry_cursor_is_visible_format_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI const char *elm_scrolled_entry_cursor_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_cursor_pos_set(Evas_Object *obj, int pos) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI int elm_scrolled_entry_cursor_pos_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_selection_cut(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_selection_copy(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_selection_paste(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_context_menu_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_context_menu_item_add(Evas_Object *obj, const char *label, const char *icon_file, Elm_Icon_Type icon_type, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_context_menu_disabled_set(Evas_Object *obj, Eina_Bool disabled) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI Eina_Bool elm_scrolled_entry_context_menu_disabled_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_scrollbar_policy_set(Evas_Object *obj, Elm_Scroller_Policy h, Elm_Scroller_Policy v) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1, 2);
+ EINA_DEPRECATED EAPI Evas_Object *elm_scrolled_entry_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI Evas_Object *elm_scrolled_entry_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_icon_visible_set(Evas_Object *obj, Eina_Bool setting) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_end_set(Evas_Object *obj, Evas_Object *end) EINA_ARG_NONNULL(1, 2);
+ EINA_DEPRECATED EAPI Evas_Object *elm_scrolled_entry_end_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI Evas_Object *elm_scrolled_entry_end_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_end_visible_set(Evas_Object *obj, Eina_Bool setting) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_item_provider_append(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *entry, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_item_provider_prepend(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *entry, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_item_provider_remove(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *entry, const char *item), void *data) EINA_ARG_NONNULL(1, 2);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_text_filter_append(Evas_Object *obj, void (*func) (void *data, Evas_Object *entry, char **text), void *data) EINA_ARG_NONNULL(1, 2);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_text_filter_prepend(Evas_Object *obj, void (*func) (void *data, Evas_Object *entry, char **text), void *data) EINA_ARG_NONNULL(1, 2);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_text_filter_remove(Evas_Object *obj, void (*func) (void *data, Evas_Object *entry, char **text), void *data) EINA_ARG_NONNULL(1, 2);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_file_set(Evas_Object *obj, const char *file, Elm_Text_Format format) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_file_get(const Evas_Object *obj, const char **file, Elm_Text_Format *format) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_file_save(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_autosave_set(Evas_Object *obj, Eina_Bool autosave) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI Eina_Bool elm_scrolled_entry_autosave_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_cnp_textonly_set(Evas_Object *obj, Eina_Bool textonly) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI Eina_Bool elm_scrolled_entry_cnp_textonly_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_line_char_wrap_set(Evas_Object *obj, Eina_Bool wrap) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_input_panel_enabled_set(Evas_Object *obj, Eina_Bool enabled);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_input_panel_layout_set(Evas_Object *obj, Elm_Input_Panel_Layout layout);
+ EINA_DEPRECATED EAPI Ecore_IMF_Context *elm_scrolled_entry_imf_context_get(Evas_Object *obj);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_autocapitalization_set(Evas_Object *obj, Eina_Bool autocap);
+ EINA_DEPRECATED EAPI void elm_scrolled_entry_autoperiod_set(Evas_Object *obj, Eina_Bool autoperiod);
/* conformant */
EAPI Evas_Object *elm_conformant_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
EAPI void elm_conformant_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_conformant_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_conformant_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI Evas_Object *elm_conformant_content_area_get(Evas_Object *obj); EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_conformant_content_area_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/* mapbuf */
EAPI Evas_Object *elm_mapbuf_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
EAPI void elm_mapbuf_alpha_set(Evas_Object *obj, Eina_Bool alpha) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_mapbuf_alpha_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- /* flipselector */
- typedef struct _Elm_Flipselector_Item Elm_Flipselector_Item;
+ /**
+ * @defgroup Flipselector Flip Selector
+ *
+ * A flip selector is a widget to show a set of @b text items, one
+ * at a time, with the same sheet switching style as the @ref Clock
+ * "clock" widget, when one changes the current displaying sheet
+ * (thus, the "flip" in the name).
+ *
+ * User clicks to flip sheets which are @b held for some time will
+ * make the flip selector to flip continuosly and automatically for
+ * the user. The interval between flips will keep growing in time,
+ * so that it helps the user to reach an item which is distant from
+ * the current selection.
+ *
+ * Smart callbacks one can register to:
+ * - @c "selected" - when the widget's selected text item is changed
+ * - @c "overflowed" - when the widget's current selection is changed
+ * from the first item in its list to the last
+ * - @c "underflowed" - when the widget's current selection is changed
+ * from the last item in its list to the first
+ *
+ * Available styles for it:
+ * - @c "default"
+ *
+ * Here is an example on its usage:
+ * @li @ref flipselector_example
+ */
+
+ /**
+ * @addtogroup Flipselector
+ * @{
+ */
+
+ typedef struct _Elm_Flipselector_Item Elm_Flipselector_Item; /**< Item handle for a flip selector widget. */
+ /**
+ * Add a new flip selector widget to the given parent Elementary
+ * (container) widget
+ *
+ * @param parent The parent object
+ * @return a new flip selector widget handle or @c NULL, on errors
+ *
+ * This function inserts a new flip selector widget on the canvas.
+ *
+ * @ingroup Flipselector
+ */
EAPI Evas_Object *elm_flipselector_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+
+ /**
+ * Programmatically select the next item of a flip selector widget
+ *
+ * @param obj The flipselector object
+ *
+ * @note The selection will be animated. Also, if it reaches the
+ * end of its list of member items, it will continue with the first
+ * one onwards.
+ *
+ * @ingroup Flipselector
+ */
EAPI void elm_flipselector_flip_next(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Programmatically select the previous item of a flip selector
+ * widget
+ *
+ * @param obj The flipselector object
+ *
+ * @note The selection will be animated. Also, if it reaches the
+ * beginning of its list of member items, it will continue with the
+ * last one backwards.
+ *
+ * @ingroup Flipselector
+ */
EAPI void elm_flipselector_flip_prev(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI Elm_Flipselector_Item *elm_flipselector_item_append(Evas_Object *obj, const char *label, void (*func)(void *data, Evas_Object *obj, void *event_info), void *data) EINA_ARG_NONNULL(1);
- EAPI Elm_Flipselector_Item *elm_flipselector_item_prepend(Evas_Object *obj, const char *label, void (*func)(void *data, Evas_Object *obj, void *event_info), void *data) EINA_ARG_NONNULL(1);
+
+ /**
+ * Append a (text) item to a flip selector widget
+ *
+ * @param obj The flipselector object
+ * @param label The (text) label of the new item
+ * @param func Convenience callback function to take place when
+ * item is selected
+ * @param data Data passed to @p func, above
+ * @return A handle to the item added or @c NULL, on errors
+ *
+ * The widget's list of labels to show will be appended with the
+ * given value. If the user wishes so, a callback function pointer
+ * can be passed, which will get called when this same item is
+ * selected.
+ *
+ * @note The current selection @b won't be modified by appending an
+ * element to the list.
+ *
+ * @note The maximum length of the text label is going to be
+ * determined <b>by the widget's theme</b>. Strings larger than
+ * that value are going to be @b truncated.
+ *
+ * @ingroup Flipselector
+ */
+ EAPI Elm_Flipselector_Item *elm_flipselector_item_append(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data) EINA_ARG_NONNULL(1);
+
+ /**
+ * Prepend a (text) item to a flip selector widget
+ *
+ * @param obj The flipselector object
+ * @param label The (text) label of the new item
+ * @param func Convenience callback function to take place when
+ * item is selected
+ * @param data Data passed to @p func, above
+ * @return A handle to the item added or @c NULL, on errors
+ *
+ * The widget's list of labels to show will be prepended with the
+ * given value. If the user wishes so, a callback function pointer
+ * can be passed, which will get called when this same item is
+ * selected.
+ *
+ * @note The current selection @b won't be modified by prepending
+ * an element to the list.
+ *
+ * @note The maximum length of the text label is going to be
+ * determined <b>by the widget's theme</b>. Strings larger than
+ * that value are going to be @b truncated.
+ *
+ * @ingroup Flipselector
+ */
+ EAPI Elm_Flipselector_Item *elm_flipselector_item_prepend(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the internal list of items in a given flip selector widget.
+ *
+ * @param obj The flipselector object
+ * @return The list of items (#Elm_Flipselector_Item as data) or @c
+ * NULL on errors.
+ *
+ * This list is @b not to be modified in any way and must not be
+ * freed. Use the list members with functions like
+ * elm_flipselector_item_label_set(),
+ * elm_flipselector_item_label_get(), elm_flipselector_item_del(),
+ * elm_flipselector_item_del(),
+ * elm_flipselector_item_selected_get(),
+ * elm_flipselector_item_selected_set().
+ *
+ * @warning This list is only valid until @p obj object's internal
+ * items list is changed. It should be fetched again with another
+ * call to this function when changes happen.
+ *
+ * @ingroup Flipselector
+ */
EAPI const Eina_List *elm_flipselector_items_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the first item in the given flip selector widget's list of
+ * items.
+ *
+ * @param obj The flipselector object
+ * @return The first item or @c NULL, if it has no items (and on
+ * errors)
+ *
+ * @see elm_flipselector_item_append()
+ * @see elm_flipselector_last_item_get()
+ *
+ * @ingroup Flipselector
+ */
EAPI Elm_Flipselector_Item *elm_flipselector_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the last item in the given flip selector widget's list of
+ * items.
+ *
+ * @param obj The flipselector object
+ * @return The last item or @c NULL, if it has no items (and on
+ * errors)
+ *
+ * @see elm_flipselector_item_prepend()
+ * @see elm_flipselector_first_item_get()
+ *
+ * @ingroup Flipselector
+ */
EAPI Elm_Flipselector_Item *elm_flipselector_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the currently selected item in a flip selector widget.
+ *
+ * @param obj The flipselector object
+ * @return The selected item or @c NULL, if the widget has no items
+ * (and on erros)
+ *
+ * @ingroup Flipselector
+ */
EAPI Elm_Flipselector_Item *elm_flipselector_selected_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set whether a given flip selector widget's item should be the
+ * currently selected one.
+ *
+ * @param item The flip selector item
+ * @param selected @c EINA_TRUE to select it, @c EINA_FALSE to unselect.
+ *
+ * This sets whether @p item is or not the selected (thus, under
+ * display) one. If @p item is different than one under display,
+ * the latter will be unselected. If the @p item is set to be
+ * unselected, on the other hand, the @b first item in the widget's
+ * internal members list will be the new selected one.
+ *
+ * @see elm_flipselector_item_selected_get()
+ *
+ * @ingroup Flipselector
+ */
EAPI void elm_flipselector_item_selected_set(Elm_Flipselector_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get whether a given flip selector widget's item is the currently
+ * selected one.
+ *
+ * @param item The flip selector item
+ * @return @c EINA_TRUE, if it's selected, @c EINA_FALSE otherwise
+ * (or on errors).
+ *
+ * @see elm_flipselector_item_selected_set()
+ *
+ * @ingroup Flipselector
+ */
EAPI Eina_Bool elm_flipselector_item_selected_get(const Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1);
+
+ /**
+ * Delete a given item from a flip selector widget.
+ *
+ * @param item The item to delete
+ *
+ * @ingroup Flipselector
+ */
EAPI void elm_flipselector_item_del(Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the label of a given flip selector widget's item.
+ *
+ * @param item The item to get label from
+ * @return The text label of @p item or @c NULL, on errors
+ *
+ * @see elm_flipselector_item_label_set()
+ *
+ * @ingroup Flipselector
+ */
EAPI const char *elm_flipselector_item_label_get(const Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the label of a given flip selector widget's item.
+ *
+ * @param item The item to set label on
+ * @param label The text label string, in UTF-8 encoding
+ *
+ * @see elm_flipselector_item_label_get()
+ *
+ * @ingroup Flipselector
+ */
EAPI void elm_flipselector_item_label_set(Elm_Flipselector_Item *item, const char *label) EINA_ARG_NONNULL(1);
+
+ /**
+ * Gets the item before @p item in a flip selector widget's
+ * internal list of items.
+ *
+ * @param item The item to fetch previous from
+ * @return The item before the @p item, in its parent's list. If
+ * there is no previous item for @p item or there's an
+ * error, @c NULL is returned.
+ *
+ * @see elm_flipselector_item_next_get()
+ *
+ * @ingroup Flipselector
+ */
EAPI Elm_Flipselector_Item *elm_flipselector_item_prev_get(Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1);
+
+ /**
+ * Gets the item after @p item in a flip selector widget's
+ * internal list of items.
+ *
+ * @param item The item to fetch next from
+ * @return The item after the @p item, in its parent's list. If
+ * there is no next item for @p item or there's an
+ * error, @c NULL is returned.
+ *
+ * @see elm_flipselector_item_next_get()
+ *
+ * @ingroup Flipselector
+ */
EAPI Elm_Flipselector_Item *elm_flipselector_item_next_get(Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the interval on time updates for an user mouse button hold
+ * on a flip selector widget.
+ *
+ * @param obj The flip selector object
+ * @param interval The (first) interval value in seconds
+ *
+ * This interval value is @b decreased while the user holds the
+ * mouse pointer either flipping up or flipping doww a given flip
+ * selector.
+ *
+ * This helps the user to get to a given item distant from the
+ * current one easier/faster, as it will start to flip quicker and
+ * quicker on mouse button holds.
+ *
+ * The calculation for the next flip interval value, starting from
+ * the one set with this call, is the previous interval divided by
+ * 1.05, so it decreases a little bit.
+ *
+ * The default starting interval value for automatic flips is
+ * @b 0.85 seconds.
+ *
+ * @see elm_flipselector_interval_get()
+ *
+ * @ingroup Flipselector
+ */
EAPI void elm_flipselector_interval_set(Evas_Object *obj, double interval) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the interval on time updates for an user mouse button hold
+ * on a flip selector widget.
+ *
+ * @param obj The flip selector object
+ * @return The (first) interval value, in seconds, set on it
+ *
+ * @see elm_flipselector_interval_set() for more details
+ *
+ * @ingroup Flipselector
+ */
EAPI double elm_flipselector_interval_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- /* smart callbacks called:
- * "selected" - when flipselector selected item is changed
- * "overflowed" - when flipselector item is changed to first item
- * from last item
- * "underflowed" - when flipselector item is changed to last item
- * from first item.
+
+ /**
+ * @}
*/
- /* available styles:
- * default
+
+ /**
+ * @addtogroup Animator Animator
+ * @ingroup Elementary
+ *
+ * @brief Functions to ease creation of animations.
+ *
+ * elm_animator is designed to provide an easy way to create animations.
+ * Creating an animation with elm_animator is as simple as setting a
+ * duration, an operating callback and telling it to run the animation.
+ * However that is not the full extent of elm_animator's ability, animations
+ * can be paused and resumed, reversed and the animation need not be linear.
+ *
+ * To run an animation you must specify at least a duration and operation
+ * callback, not setting any other properties will create a linear animation
+ * that runs once and is not reversed.
+ *
+ * @ref elm_animator_example_page_01 "This" example should make all of that
+ * very clear.
+ *
+ * @warning elm_animator is @b not a widget.
+ * @{
+ */
+ /**
+ * @brief Type of curve desired for animation.
+ *
+ * The speed in which an animation happens doesn't have to be linear, some
+ * animations will look better if they're accelerating or decelerating, so
+ * elm_animator provides four options in this regard:
+ * @image html elm_animator_curve_style.png
+ * @image latex elm_animator_curve_style.eps width=\textwidth
+ * As can be seen in the image the speed of the animation will be:
+ * @li ELM_ANIMATOR_CURVE_LINEAR constant
+ * @li ELM_ANIMATOR_CURVE_IN_OUT start slow, speed up and then slow down
+ * @li ELM_ANIMATOR_CURVE_IN start slow and then speed up
+ * @li ELM_ANIMATOR_CURVE_OUT start fast and then slow down
+ */
+ typedef enum
+ {
+ ELM_ANIMATOR_CURVE_LINEAR,
+ ELM_ANIMATOR_CURVE_IN_OUT,
+ ELM_ANIMATOR_CURVE_IN,
+ ELM_ANIMATOR_CURVE_OUT
+ } Elm_Animator_Curve_Style;
+ typedef struct _Elm_Animator Elm_Animator;
+ /**
+ * Called back per loop of an elementary animators cycle
+ * @param data user-data given to elm_animator_operation_callback_set()
+ * @param animator the animator being run
+ * @param double the position in the animation
+ */
+ typedef void (*Elm_Animator_Operation_Cb) (void *data, Elm_Animator *animator, double frame);
+ /**
+ * Called back when an elementary animator finishes
+ * @param data user-data given to elm_animator_completion_callback_set()
+ */
+ typedef void (*Elm_Animator_Completion_Cb) (void *data);
+
+ /**
+ * @brief Create a new animator.
+ *
+ * @param[in] parent Parent object
+ *
+ * The @a parent argument can be set to NULL for no parent. If a parent is set
+ * there is no need to call elm_animator_del(), when the parent is deleted it
+ * will delete the animator.
+ * @deprecated Use @ref Transit instead.
+
+ */
+ EINA_DEPRECATED EAPI Elm_Animator* elm_animator_add(Evas_Object *parent);
+ /**
+ * Deletes the animator freeing any resources it used. If the animator was
+ * created with a NULL parent this must be called, otherwise it will be
+ * automatically called when the parent is deleted.
+ *
+ * @param[in] animator Animator object
+ * @deprecated Use @ref Transit instead.
+ */
+ EINA_DEPRECATED EAPI void elm_animator_del(Elm_Animator *animator) EINA_ARG_NONNULL(1);
+ /**
+ * Set the duration of the animation.
+ *
+ * @param[in] animator Animator object
+ * @param[in] duration Duration in second
+ * @deprecated Use @ref Transit instead.
+ */
+ EINA_DEPRECATED EAPI void elm_animator_duration_set(Elm_Animator *animator, double duration) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Set the callback function for animator operation.
+ *
+ * @param[in] animator Animator object
+ * @param[in] func @ref Elm_Animator_Operation_Cb "Callback" function pointer
+ * @param[in] data Callback function user argument
+ *
+ * The @p func callback will be called with a frame value in range [0, 1] which
+ * indicates how far along the animation should be. It is the job of @p func to
+ * actually change the state of any object(or objects) that are being animated.
+ * @deprecated Use @ref Transit instead.
+ */
+ EINA_DEPRECATED EAPI void elm_animator_operation_callback_set(Elm_Animator *animator, Elm_Animator_Operation_Cb func, void *data) EINA_ARG_NONNULL(1);
+ /**
+ * Set the callback function for the when the animation ends.
+ *
+ * @param[in] animator Animator object
+ * @param[in] func Callback function pointe
+ * @param[in] data Callback function user argument
+ *
+ * @warning @a func will not be executed if elm_animator_stop() is called.
+ * @deprecated Use @ref Transit instead.
*/
+ EINA_DEPRECATED EAPI void elm_animator_completion_callback_set(Elm_Animator *animator, Elm_Animator_Completion_Cb func, void *data) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Stop animator.
+ *
+ * @param[in] animator Animator object
+ *
+ * If called before elm_animator_animate() it does nothing. If there is an
+ * animation in progress the animation will be stopped(the operation callback
+ * will not be executed again) and it can't be restarted using
+ * elm_animator_resume().
+ * @deprecated Use @ref Transit instead.
+ */
+ EINA_DEPRECATED EAPI void elm_animator_stop(Elm_Animator *animator) EINA_ARG_NONNULL(1);
+ /**
+ * Set the animator repeat count.
+ *
+ * @param[in] animator Animator object
+ * @param[in] repeat_cnt Repeat count
+ * @deprecated Use @ref Transit instead.
+ */
+ EINA_DEPRECATED EAPI void elm_animator_repeat_set(Elm_Animator *animator, unsigned int repeat_cnt) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Start animation.
+ *
+ * @param[in] animator Animator object
+ *
+ * This function starts the animation if the nescessary properties(duration
+ * and operation callback) have been set. Once started the animation will
+ * run until complete or elm_animator_stop() is called.
+ * @deprecated Use @ref Transit instead.
+ */
+ EINA_DEPRECATED EAPI void elm_animator_animate(Elm_Animator *animator) EINA_ARG_NONNULL(1);
+ /**
+ * Sets the animation @ref Elm_Animator_Curve_Style "acceleration style".
+ *
+ * @param[in] animator Animator object
+ * @param[in] cs Curve style. Default is ELM_ANIMATOR_CURVE_LINEAR
+ * @deprecated Use @ref Transit instead.
+ */
+ EINA_DEPRECATED EAPI void elm_animator_curve_style_set(Elm_Animator *animator, Elm_Animator_Curve_Style cs) EINA_ARG_NONNULL(1);
+ /**
+ * Gets the animation @ref Elm_Animator_Curve_Style "acceleration style".
+ *
+ * @param[in] animator Animator object
+ * @param[in] cs Curve style. Default is ELM_ANIMATOR_CURVE_LINEAR
+ * @deprecated Use @ref Transit instead.
+ */
+ EINA_DEPRECATED EAPI Elm_Animator_Curve_Style elm_animator_curve_style_get(const Elm_Animator *animator) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Sets wether the animation should be automatically reversed.
+ *
+ * @param[in] animator Animator object
+ * @param[in] reverse Reverse or not
+ *
+ * This controls wether the animation will be run on reverse imediately after
+ * running forward. When this is set together with repetition the animation
+ * will run in reverse once for each time it ran forward.@n
+ * Runnin an animation in reverse is accomplished by calling the operation
+ * callback with a frame value starting at 1 and diminshing until 0.
+ * @deprecated Use @ref Transit instead.
+ */
+ EINA_DEPRECATED EAPI void elm_animator_auto_reverse_set(Elm_Animator *animator, Eina_Bool reverse) EINA_ARG_NONNULL(1);
+ /**
+ * Gets wether the animation will automatically reversed
+ *
+ * @param[in] animator Animator object
+ * @deprecated Use @ref Transit instead.
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_animator_auto_reverse_get(const Elm_Animator *animator) EINA_ARG_NONNULL(1);
+ /**
+ * Gets the status for the animator operation. The status of the animator @b
+ * doesn't take in to account elm_animator_pause() or elm_animator_resume(), it
+ * only informs if the animation was started and has not ended(either normally
+ * or through elm_animator_stop()).
+ *
+ * @param[in] animator Animator object
+ * @deprecated Use @ref Transit instead.
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_animator_operating_get(const Elm_Animator *animator) EINA_ARG_NONNULL(1);
+ /**
+ * Gets how many times the animation will be repeated
+ *
+ * @param[in] animator Animator object
+ * @deprecated Use @ref Transit instead.
+ */
+ EINA_DEPRECATED EAPI unsigned int elm_animator_repeat_get(const Elm_Animator *animator) EINA_ARG_NONNULL(1);
+ /**
+ * Pause the animator.
+ *
+ * @param[in] animator Animator object
+ *
+ * This causes the animation to be temporarily stopped(the operation callback
+ * will not be called). If the animation is not yet running this is a no-op.
+ * Once an animation has been paused with this function it can be resumed
+ * using elm_animator_resume().
+ * @deprecated Use @ref Transit instead.
+ */
+ EINA_DEPRECATED EAPI void elm_animator_pause(Elm_Animator *animator) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Resumes the animator.
+ *
+ * @param[in] animator Animator object
+ *
+ * Resumes an animation that was paused using elm_animator_pause(), after
+ * calling this function calls to the operation callback will happen
+ * normally. If an animation is stopped by means of elm_animator_stop it
+ * @b can't be restarted with this function.@n
+ *
+ * @warning When an animation is resumed it doesn't start from where it was paused, it
+ * will go to where it would have been if it had not been paused. If an
+ * animation with a duration of 3 seconds is paused after 1 second for 1 second
+ * it will resume as if it had ben animating for 2 seconds, the operating
+ * callback will be called with a frame value of aproximately 2/3.
+ * @deprecated Use @ref Transit instead.
+ */
+ EINA_DEPRECATED EAPI void elm_animator_resume(Elm_Animator *animator) EINA_ARG_NONNULL(1);
+ /**
+ * @}
+ */
+
+ /* calendar */
+ typedef enum
+ {
+ ELM_CALENDAR_UNIQUE,
+ ELM_CALENDAR_DAILY,
+ ELM_CALENDAR_WEEKLY,
+ ELM_CALENDAR_MONTHLY,
+ ELM_CALENDAR_ANNUALLY
+ } Elm_Calendar_Mark_Repeat;
+ typedef struct _Elm_Calendar_Mark Elm_Calendar_Mark;
+
+ EAPI Evas_Object *elm_calendar_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+ EAPI const char **elm_calendar_weekdays_names_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_calendar_weekdays_names_set(Evas_Object *obj, const char *weekdays[]) EINA_ARG_NONNULL(1, 2);
+ EAPI double elm_calendar_interval_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_calendar_interval_set(Evas_Object *obj, double interval) EINA_ARG_NONNULL(1);
+ EAPI void elm_calendar_min_max_year_get(const Evas_Object *obj, int *min, int *max) EINA_ARG_NONNULL(1);
+ EAPI void elm_calendar_min_max_year_set(Evas_Object *obj, int min, int max) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_calendar_day_selection_enabled_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_calendar_day_selection_enabled_set(Evas_Object *obj, Eina_Bool enabled) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_calendar_selected_time_get(const Evas_Object *obj, struct tm *selected_time) EINA_ARG_NONNULL(1, 2);
+ EAPI void elm_calendar_selected_time_set(Evas_Object *obj, struct tm *selected_time) EINA_ARG_NONNULL(1);
+ EAPI void elm_calendar_format_function_set(Evas_Object *obj, char * (*format_function) (struct tm *stime)) EINA_ARG_NONNULL(1);
+ EAPI Elm_Calendar_Mark *elm_calendar_mark_add(Evas_Object *obj, const char *mark_type, struct tm *mark_time, Elm_Calendar_Mark_Repeat repeat) EINA_ARG_NONNULL(1);
+ EAPI void elm_calendar_mark_del(Elm_Calendar_Mark *mark) EINA_ARG_NONNULL(1);
+ EAPI void elm_calendar_marks_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI const Eina_List *elm_calendar_marks_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_calendar_marks_draw(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_calendar_text_saturday_color_set(Evas_Object *obj, int pos) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_calendar_text_sunday_color_set(Evas_Object *obj, int pos) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_calendar_text_weekday_color_set(Evas_Object *obj, int pos) EINA_ARG_NONNULL(1);
+ /* smart callbacks called:
+ * changed - emitted when the user select a day or change the displayed
+ * month.
+ */
+
+ /* diskselector */
+ typedef struct _Elm_Diskselector_Item Elm_Diskselector_Item;
+
+ EAPI Evas_Object *elm_diskselector_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_diskselector_round_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_diskselector_round_set(Evas_Object *obj, Eina_Bool round) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI int elm_diskselector_side_label_lenght_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI void elm_diskselector_side_label_lenght_set(Evas_Object *obj, int len) EINA_ARG_NONNULL(1);
+ EAPI int elm_diskselector_side_label_length_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_diskselector_side_label_length_set(Evas_Object *obj, int len) EINA_ARG_NONNULL(1);
+ EAPI void elm_diskselector_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
+ EAPI void elm_diskselector_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
+ EAPI void elm_diskselector_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v) EINA_ARG_NONNULL(1);
+ EAPI void elm_diskselector_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v) EINA_ARG_NONNULL(1);
+ EAPI void elm_diskselector_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI const Eina_List *elm_diskselector_items_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Elm_Diskselector_Item *elm_diskselector_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
+ EAPI void elm_diskselector_item_del(Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+ EAPI void elm_diskselector_item_del_cb_set(Elm_Diskselector_Item *item, Evas_Smart_Cb func) EINA_ARG_NONNULL(1);
+ EAPI void *elm_diskselector_item_data_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_diskselector_item_icon_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+ EAPI void elm_diskselector_item_icon_set(Elm_Diskselector_Item *item, Evas_Object *icon) EINA_ARG_NONNULL(1);
+ EAPI const char *elm_diskselector_item_label_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+ EAPI void elm_diskselector_item_label_set(Elm_Diskselector_Item *item, const char *label) EINA_ARG_NONNULL(1);
+ EAPI Elm_Diskselector_Item *elm_diskselector_selected_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_diskselector_item_selected_set(Elm_Diskselector_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_diskselector_item_selected_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+ EAPI Elm_Diskselector_Item *elm_diskselector_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Elm_Diskselector_Item *elm_diskselector_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Elm_Diskselector_Item *elm_diskselector_item_prev_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+ EAPI Elm_Diskselector_Item *elm_diskselector_item_next_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+ EAPI void elm_diskselector_item_tooltip_text_set(Elm_Diskselector_Item *item, const char *text) EINA_ARG_NONNULL(1);
+ EAPI void elm_diskselector_item_tooltip_content_cb_set(Elm_Diskselector_Item *item, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb) EINA_ARG_NONNULL(1);
+ EAPI void elm_diskselector_item_tooltip_unset(Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+ EAPI void elm_diskselector_item_tooltip_style_set(Elm_Diskselector_Item *item, const char *style) EINA_ARG_NONNULL(1);
+ EAPI const char *elm_diskselector_item_tooltip_style_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+ EAPI void elm_diskselector_item_cursor_set(Elm_Diskselector_Item *item, const char *cursor) EINA_ARG_NONNULL(1);
+ EAPI const char *elm_diskselector_item_cursor_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+ EAPI void elm_diskselector_item_cursor_unset(Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+ EAPI void elm_diskselector_item_cursor_style_set(Elm_Diskselector_Item *item, const char *style) EINA_ARG_NONNULL(1);
+ EAPI const char *elm_diskselector_item_cursor_style_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+ EAPI void elm_diskselector_item_cursor_engine_only_set(Elm_Diskselector_Item *item, Eina_Bool engine_only) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_diskselector_item_cursor_engine_only_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
+ EAPI void elm_diskselector_display_item_num_set(Evas_Object *obj, int num) EINA_ARG_NONNULL(1);
+ /* smart callbacks called:
+ * "selected" - when item is selected (scroller stops)
+ */
+
+ /**
+ * @page tutorial_colorselector Color selector example
+ * @dontinclude colorselector_example_01.c
+ *
+ * This example shows how to change the color of a rectangle using a color
+ * selector. We aren't going to explain a lot of the code since it's the
+ * usual setup code:
+ * @until show(rect)
+ *
+ * Now that we have a window with background and a rectangle we can create
+ * our color_selector and set it's initial color to fully opaque blue:
+ * @until show
+ *
+ * Next we tell ask to be notified whenever the color changes:
+ * @until changed
+ *
+ * We follow that we some more run of the mill setup code:
+ * @until ELM_MAIN()
+ *
+ * And now get to the callback that sets the color of the rectangle:
+ * @until }
+ *
+ * This example will look like this:
+ * @image html screenshots/colorselector_example_01.png
+ * @image latex screenshots/colorselector_example_01.eps
+ *
+ * @example colorselector_example_01.c
+ */
+ /**
+ * @defgroup Colorselector Colorselector
+ *
+ * @{
+ *
+ * @brief Widget for user to select a color.
+ *
+ * Signals that you can add callbacks for are:
+ * "changed" - When the color value changes(event_info is NULL).
+ *
+ * See @ref tutorial_colorselector.
+ */
+ /**
+ * @brief Add a new colorselector to the parent
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ *
+ * @ingroup Colorselector
+ */
+ EAPI Evas_Object *elm_colorselector_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+ /**
+ * Set a color for the colorselector
+ *
+ * @param obj Colorselector object
+ * @param r r-value of color
+ * @param g g-value of color
+ * @param b b-value of color
+ * @param a a-value of color
+ *
+ * @ingroup Colorselector
+ */
+ EAPI void elm_colorselector_color_set(Evas_Object *obj, int r, int g , int b, int a) EINA_ARG_NONNULL(1);
+ /**
+ * Get a color from the colorselector
+ *
+ * @param obj Colorselector object
+ * @param r integer pointer for r-value of color
+ * @param g integer pointer for g-value of color
+ * @param b integer pointer for b-value of color
+ * @param a integer pointer for a-value of color
+ *
+ * @ingroup Colorselector
+ */
+ EAPI void elm_colorselector_color_get(const Evas_Object *obj, int *r, int *g , int *b, int *a) EINA_ARG_NONNULL(1);
+ /**
+ * @}
+ */
+
+ /* Contextual Popup */
+ typedef struct _Elm_Ctxpopup_Item Elm_Ctxpopup_Item;
+
+ typedef enum _Elm_Ctxpopup_Direction
+ {
+ ELM_CTXPOPUP_DIRECTION_DOWN,
+ ELM_CTXPOPUP_DIRECTION_RIGHT,
+ ELM_CTXPOPUP_DIRECTION_LEFT,
+ ELM_CTXPOPUP_DIRECTION_UP,
+ } Elm_Ctxpopup_Direction;
+
+ EAPI Evas_Object *elm_ctxpopup_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_ctxpopup_item_icon_get(const Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
+ EAPI void elm_ctxpopup_item_icon_set(Elm_Ctxpopup_Item *item, Evas_Object *icon) EINA_ARG_NONNULL(1);
+ EAPI const char *elm_ctxpopup_item_label_get(const Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
+ EAPI void elm_ctxpopup_item_label_set(Elm_Ctxpopup_Item *item, const char *label) EINA_ARG_NONNULL(1);
+ EAPI void elm_ctxpopup_hover_parent_set(Evas_Object *obj, Evas_Object *parent) EINA_ARG_NONNULL(1, 2);
+ EAPI Evas_Object *elm_ctxpopup_hover_parent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_ctxpopup_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_ctxpopup_horizontal_set(Evas_Object *obj, Eina_Bool horizontal) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_ctxpopup_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ Elm_Ctxpopup_Item *elm_ctxpopup_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
+ EAPI void elm_ctxpopup_item_del(Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
+ EAPI void elm_ctxpopup_item_disabled_set(Elm_Ctxpopup_Item *item, Eina_Bool disabled) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_ctxpopup_item_disabled_get(const Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
+ EAPI void elm_ctxpopup_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1, 2);
+ EAPI Evas_Object *elm_ctxpopup_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_ctxpopup_direction_priority_set(Evas_Object *obj, Elm_Ctxpopup_Direction first, Elm_Ctxpopup_Direction second, Elm_Ctxpopup_Direction third, Elm_Ctxpopup_Direction fourth) EINA_ARG_NONNULL(1);
+ EAPI void elm_ctxpopup_direction_priority_get(Evas_Object *obj, Elm_Ctxpopup_Direction *first, Elm_Ctxpopup_Direction *second, Elm_Ctxpopup_Direction *third, Elm_Ctxpopup_Direction *fourth) EINA_ARG_NONNULL(1);
+ /* smart callbacks called:
+ * "dismissed" - the ctxpopup was dismissed
+ */
+
+ /* transit */
+ /**
+ *
+ * @defgroup Transit Transit
+ * @ingroup Elementary
+ *
+ * Transit is designed to apply various animated transition effects to @c
+ * Evas_Object, such like translation, rotation, etc. For using these
+ * effects, create an @ref Elm_Transit and add the desired transition effects.
+ *
+ * Once the effects are added into transit, they will be automatically
+ * managed (their callback will be called until the duration is ended, and
+ * they will be deleted on completion).
+ *
+ * Example:
+ * @code
+ * Elm_Transit *trans = elm_transit_add();
+ * elm_transit_object_add(trans, obj);
+ * elm_transit_effect_translation_add(trans, 0, 0, 280, 280
+ * elm_transit_duration_set(transit, 1);
+ * elm_transit_auto_reverse_set(transit, EINA_TRUE);
+ * elm_transit_tween_mode_set(transit, ELM_TRANSIT_TWEEN_MODE_DECELERATE);
+ * elm_transit_repeat_times_set(transit, 3);
+ * @endcode
+ *
+ * Some transition effects are used to change the properties of objects. They
+ * are:
+ * @li @ref elm_transit_effect_translation_add
+ * @li @ref elm_transit_effect_color_add
+ * @li @ref elm_transit_effect_rotation_add
+ * @li @ref elm_transit_effect_wipe_add
+ * @li @ref elm_transit_effect_zoom_add
+ * @li @ref elm_transit_effect_resizing_add
+ *
+ * Other transition effects are used to make one object disappear and another
+ * object appear on its old place. These effects are:
+ *
+ * @li @ref elm_transit_effect_flip_add
+ * @li @ref elm_transit_effect_resizable_flip_add
+ * @li @ref elm_transit_effect_fade_add
+ * @li @ref elm_transit_effect_blend_add
+ *
+ * It's also possible to make a transition chain with @ref
+ * elm_transit_chain_transit_add.
+ *
+ * @warning We strongly recommend to use elm_transit just when edje can not do
+ * the trick. Edje has more advantage than Elm_Transit, it has more flexibility and
+ * animations can be manipulated inside the theme.
+ *
+ * List of examples:
+ * @li @ref transit_example_01_explained
+ * @li @ref transit_example_02_explained
+ * @li @ref transit_example_03_c
+ * @li @ref transit_example_04_c
+ *
+ * @{
+ */
+
+ /**
+ * @enum Elm_Transit_Tween_Mode
+ *
+ * The type of acceleration used in the transition.
+ */
+ typedef enum
+ {
+ ELM_TRANSIT_TWEEN_MODE_LINEAR, /**< Constant speed */
+ ELM_TRANSIT_TWEEN_MODE_SINUSOIDAL, /**< Starts slow, increase speed
+ over time, then decrease again
+ and stop slowly */
+ ELM_TRANSIT_TWEEN_MODE_DECELERATE, /**< Starts fast and decrease
+ speed over time */
+ ELM_TRANSIT_TWEEN_MODE_ACCELERATE /**< Starts slow and increase speed
+ over time */
+ } Elm_Transit_Tween_Mode;
+
+ /**
+ * @enum Elm_Transit_Effect_Flip_Axis
+ *
+ * The axis where flip effect should be applied.
+ */
+ typedef enum
+ {
+ ELM_TRANSIT_EFFECT_FLIP_AXIS_X, /**< Flip on X axis */
+ ELM_TRANSIT_EFFECT_FLIP_AXIS_Y /**< Flip on Y axis */
+ } Elm_Transit_Effect_Flip_Axis;
+ /**
+ * @enum Elm_Transit_Effect_Wipe_Dir
+ *
+ * The direction where the wipe effect should occur.
+ */
+ typedef enum
+ {
+ ELM_TRANSIT_EFFECT_WIPE_DIR_LEFT, /**< Wipe to the left */
+ ELM_TRANSIT_EFFECT_WIPE_DIR_RIGHT, /**< Wipe to the right */
+ ELM_TRANSIT_EFFECT_WIPE_DIR_UP, /**< Wipe up */
+ ELM_TRANSIT_EFFECT_WIPE_DIR_DOWN /**< Wipe down */
+ } Elm_Transit_Effect_Wipe_Dir;
+ /** @enum Elm_Transit_Effect_Wipe_Type
+ *
+ * Whether the wipe effect should show or hide the object.
+ */
+ typedef enum
+ {
+ ELM_TRANSIT_EFFECT_WIPE_TYPE_HIDE, /**< Hide the object during the
+ animation */
+ ELM_TRANSIT_EFFECT_WIPE_TYPE_SHOW /**< Show the object during the
+ animation */
+ } Elm_Transit_Effect_Wipe_Type;
+
+ /**
+ * @typedef Elm_Transit
+ *
+ * The Transit created with elm_transit_add(). This type has the information
+ * about the objects which the transition will be applied, and the
+ * transition effects that will be used. It also contains info about
+ * duration, number of repetitions, auto-reverse, etc.
+ */
+ typedef struct _Elm_Transit Elm_Transit;
+ typedef void Elm_Transit_Effect;
+ /**
+ * @typedef Elm_Transit_Effect_Transition_Cb
+ *
+ * Transition callback called for this effect on each transition iteration.
+ */
+ typedef void (*Elm_Transit_Effect_Transition_Cb) (Elm_Transit_Effect *effect, Elm_Transit *transit, double progress);
+ /**
+ * Elm_Transit_Effect_End_Cb
+ *
+ * Transition callback called for this effect when the transition is over.
+ */
+ typedef void (*Elm_Transit_Effect_End_Cb) (Elm_Transit_Effect *effect, Elm_Transit *transit);
+
+ /**
+ * Elm_Transit_Del_Cb
+ *
+ * A callback called when the transit is deleted.
+ */
+ typedef void (*Elm_Transit_Del_Cb) (void *data, Elm_Transit *transit);
+
+ /**
+ * Add new transit.
+ *
+ * @note Is not necessary to delete the transit object, it will be deleted at
+ * the end of its operation.
+ * @note The transit will start playing when the program enter in the main loop, is not
+ * necessary to give a start to the transit.
+ *
+ * @return The transit object.
+ *
+ * @ingroup Transit
+ */
+ EAPI Elm_Transit *elm_transit_add(void);
+
+ /**
+ * Stops the animation and delete the @p transit object.
+ *
+ * Call this function if you wants to stop the animation before the duration
+ * time. Make sure the @p transit object is still alive with
+ * elm_transit_del_cb_set() function.
+ * All added effects will be deleted, calling its repective data_free_cb
+ * functions. The function setted by elm_transit_del_cb_set() will be called.
+ *
+ * @see elm_transit_del_cb_set()
+ *
+ * @param transit The transit object to be deleted.
+ *
+ * @ingroup Transit
+ * @warning Just call this function if you are sure the transit is alive.
+ */
+ EAPI void elm_transit_del(Elm_Transit *transit) EINA_ARG_NONNULL(1);
+
+ /**
+ * Add a new effect to the transit.
+ *
+ * @note The cb function and the data are the key to the effect. If you try to
+ * add an already added effect, nothing is done.
+ * @note After the first addition of an effect in @p transit, if its
+ * effect list become empty again, the @p transit will be killed by
+ * elm_transit_del(transit) function.
+ *
+ * Exemple:
+ * @code
+ * Elm_Transit *transit = elm_transit_add();
+ * elm_transit_effect_add(transit,
+ * elm_transit_effect_blend_op,
+ * elm_transit_effect_blend_context_new(),
+ * elm_transit_effect_blend_context_free);
+ * @endcode
+ *
+ * @param transit The transit object.
+ * @param transition_cb The operation function. It is called when the
+ * animation begins, it is the function that actually performs the animation.
+ * It is called with the @p data, @p transit and the time progression of the
+ * animation (a double value between 0.0 and 1.0).
+ * @param effect The context data of the effect.
+ * @param end_cb The function to free the context data, it will be called
+ * at the end of the effect, it must finalize the animation and free the
+ * @p data.
+ *
+ * @ingroup Transit
+ * @warning The transit free the context data at the and of the transition with
+ * the data_free_cb function, do not use the context data in another transit.
+ */
+ EAPI void elm_transit_effect_add(Elm_Transit *transit, Elm_Transit_Effect_Transition_Cb transition_cb, Elm_Transit_Effect *effect, Elm_Transit_Effect_End_Cb end_cb) EINA_ARG_NONNULL(1, 2);
+
+ /**
+ * Delete an added effect.
+ *
+ * This function will remove the effect from the @p transit, calling the
+ * data_free_cb to free the @p data.
+ *
+ * @see elm_transit_effect_add()
+ *
+ * @note If the effect is not found, nothing is done.
+ * @note If the effect list become empty, this function will call
+ * elm_transit_del(transit), that is, it will kill the @p transit.
+ *
+ * @param transit The transit object.
+ * @param transition_cb The operation function.
+ * @param effect The context data of the effect.
+ *
+ * @ingroup Transit
+ */
+ EAPI void elm_transit_effect_del(Elm_Transit *transit, Elm_Transit_Effect_Transition_Cb transition_cb, Elm_Transit_Effect *effect) EINA_ARG_NONNULL(1, 2);
+
+ /**
+ * Add new object to apply the effects.
+ *
+ * @note After the first addition of an object in @p transit, if its
+ * object list become empty again, the @p transit will be killed by
+ * elm_transit_del(transit) function.
+ * @note If the @p obj belongs to another transit, the @p obj will be
+ * removed from it and it will only belong to the @p transit. If the old
+ * transit stays without objects, it will die.
+ * @note When you add an object into the @p transit, its state from
+ * evas_object_pass_events_get(obj) is saved, and it is applied when the
+ * transit ends, if you change this state whith evas_object_pass_events_set()
+ * after add the object, this state will change again when @p transit stops to
+ * run.
+ *
+ * @param transit The transit object.
+ * @param obj Object to be animated.
+ *
+ * @ingroup Transit
+ * @warning It is not allowed to add a new object after transit begins to go.
+ */
+ EAPI void elm_transit_object_add(Elm_Transit *transit, Evas_Object *obj) EINA_ARG_NONNULL(1, 2);
+
+ /**
+ * Removes an added object from the transit.
+ *
+ * @note If the @p obj is not in the @p transit, nothing is done.
+ * @note If the list become empty, this function will call
+ * elm_transit_del(transit), that is, it will kill the @p transit.
+ *
+ * @param transit The transit object.
+ * @param obj Object to be removed from @p transit.
+ *
+ * @ingroup Transit
+ * @warning It is not allowed to remove objects after transit begins to go.
+ */
+ EAPI void elm_transit_object_remove(Elm_Transit *transit, Evas_Object *obj) EINA_ARG_NONNULL(1, 2);
+
+ /**
+ * Get the objects of the transit.
+ *
+ * @param transit The transit object.
+ * @return a Eina_List with the objects from the transit.
+ *
+ * @ingroup Transit
+ */
+ EAPI const Eina_List *elm_transit_objects_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
+
+ /**
+ * Enable/disable keeping up the objects states.
+ * If it is not kept, the objects states will be reset when transition ends.
+ *
+ * @note @p transit can not be NULL.
+ * @note One state includes geometry, color, map data.
+ *
+ * @param transit The transit object.
+ * @param state_keep Keeping or Non Keeping.
+ *
+ * @ingroup Transit
+ */
+ EAPI void elm_transit_objects_final_state_keep_set(Elm_Transit *transit, Eina_Bool state_keep) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get a value whether the objects states will be reset or not.
+ *
+ * @note @p transit can not be NULL
+ *
+ * @see elm_transit_objects_final_state_keep_set()
+ *
+ * @param transit The transit object.
+ * @return EINA_TRUE means the states of the objects will be reset.
+ * If @p transit is NULL, EINA_FALSE is returned
+ *
+ * @ingroup Transit
+ */
+ EAPI Eina_Bool elm_transit_objects_final_state_keep_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the event enabled when transit is operating.
+ *
+ * If @p enabled is EINA_TRUE, the objects of the transit will receives
+ * events from mouse and keyboard during the animation.
+ * @note When you add an object with elm_transit_object_add(), its state from
+ * evas_object_pass_events_get(obj) is saved, and it is applied when the
+ * transit ends, if you change this state with evas_object_pass_events_set()
+ * after adding the object, this state will change again when @p transit stops
+ * to run.
+ *
+ * @param transit The transit object.
+ * @param enabled Events are received when enabled is @c EINA_TRUE, and
+ * ignored otherwise.
+ *
+ * @ingroup Transit
+ */
+ EAPI void elm_transit_event_enabled_set(Elm_Transit *transit, Eina_Bool enabled) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the value of event enabled status.
+ *
+ * @see elm_transit_event_enabled_set()
+ *
+ * @param transit The Transit object
+ * @return EINA_TRUE, when event is enabled. If @p transit is NULL
+ * EINA_FALSE is returned
+ *
+ * @ingroup Transit
+ */
+ EAPI Eina_Bool elm_transit_event_enabled_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the user-callback function when the transit is deleted.
+ *
+ * @note Using this function twice will overwrite the first function setted.
+ * @note the @p transit object will be deleted after call @p cb function.
+ *
+ * @param transit The transit object.
+ * @param cb Callback function pointer. This function will be called before
+ * the deletion of the transit.
+ * @param data Callback funtion user data. It is the @p op parameter.
+ *
+ * @ingroup Transit
+ */
+ EAPI void elm_transit_del_cb_set(Elm_Transit *transit, Elm_Transit_Del_Cb cb, void *data) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set reverse effect automatically.
+ *
+ * If auto reverse is setted, after running the effects with the progress
+ * parameter from 0 to 1, it will call the effecs again with the progress
+ * from 1 to 0. The transit will last for a time iqual to (2 * duration * repeat),
+ * where the duration was setted with the function elm_transit_add and
+ * the repeat with the function elm_transit_repeat_times_set().
+ *
+ * @param transit The transit object.
+ * @param reverse EINA_TRUE means the auto_reverse is on.
+ *
+ * @ingroup Transit
+ */
+ EAPI void elm_transit_auto_reverse_set(Elm_Transit *transit, Eina_Bool reverse) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get if the auto reverse is on.
+ *
+ * @see elm_transit_auto_reverse_set()
+ *
+ * @param transit The transit object.
+ * @return EINA_TRUE means auto reverse is on. If @p transit is NULL
+ * EINA_FALSE is returned
+ *
+ * @ingroup Transit
+ */
+ EAPI Eina_Bool elm_transit_auto_reverse_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the transit repeat count. Effect will be repeated by repeat count.
+ *
+ * This function sets the number of repetition the transit will run after
+ * the first one, that is, if @p repeat is 1, the transit will run 2 times.
+ * If the @p repeat is a negative number, it will repeat infinite times.
+ *
+ * @note If this function is called during the transit execution, the transit
+ * will run @p repeat times, ignoring the times it already performed.
+ *
+ * @param transit The transit object
+ * @param repeat Repeat count
+ *
+ * @ingroup Transit
+ */
+ EAPI void elm_transit_repeat_times_set(Elm_Transit *transit, int repeat) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the transit repeat count.
+ *
+ * @see elm_transit_repeat_times_set()
+ *
+ * @param transit The Transit object.
+ * @return The repeat count. If @p transit is NULL
+ * 0 is returned
+ *
+ * @ingroup Transit
+ */
+ EAPI int elm_transit_repeat_times_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the transit animation acceleration type.
+ *
+ * This function sets the tween mode of the transit that can be:
+ * ELM_TRANSIT_TWEEN_MODE_LINEAR - The default mode.
+ * ELM_TRANSIT_TWEEN_MODE_SINUSOIDAL - Starts in accelerate mode and ends decelerating.
+ * ELM_TRANSIT_TWEEN_MODE_DECELERATE - The animation will be slowed over time.
+ * ELM_TRANSIT_TWEEN_MODE_ACCELERATE - The animation will accelerate over time.
+ *
+ * @param transit The transit object.
+ * @param tween_mode The tween type.
+ *
+ * @ingroup Transit
+ */
+ EAPI void elm_transit_tween_mode_set(Elm_Transit *transit, Elm_Transit_Tween_Mode tween_mode) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the transit animation acceleration type.
+ *
+ * @note @p transit can not be NULL
+ *
+ * @param transit The transit object.
+ * @return The tween type. If @p transit is NULL
+ * ELM_TRANSIT_TWEEN_MODE_LINEAR is returned.
+ *
+ * @ingroup Transit
+ */
+ EAPI Elm_Transit_Tween_Mode elm_transit_tween_mode_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the transit animation time
+ *
+ * @note @p transit can not be NULL
+ *
+ * @param transit The transit object.
+ * @param duration The animation time.
+ *
+ * @ingroup Transit
+ */
+ EAPI void elm_transit_duration_set(Elm_Transit *transit, double duration) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the transit animation time
+ *
+ * @note @p transit can not be NULL
+ *
+ * @param transit The transit object.
+ *
+ * @return The transit animation time.
+ *
+ * @ingroup Transit
+ */
+ EAPI double elm_transit_duration_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
+
+ /**
+ * Starts the transition.
+ * Once this API is called, the transit begins to measure the time.
+ *
+ * @note @p transit can not be NULL
+ *
+ * @param transit The transit object.
+ *
+ * @ingroup Transit
+ */
+ EAPI void elm_transit_go(Elm_Transit *transit) EINA_ARG_NONNULL(1);
+
+ /**
+ * Pause/Resume the transition.
+ *
+ * If you call elm_transit_go again, the transit will be started from the
+ * beginning, and will be unpaused.
+ *
+ * @note @p transit can not be NULL
+ *
+ * @param transit The transit object.
+ * @param paused Whether the transition should be paused or not.
+ *
+ * @ingroup Transit
+ */
+ EAPI void elm_transit_paused_set(Elm_Transit *transit, Eina_Bool paused) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the value of paused status.
+ *
+ * @see elm_transit_paused_set()
+ *
+ * @note @p transit can not be NULL
+ *
+ * @param transit The transit object.
+ * @return EINA_TRUE means transition is paused. If @p transit is NULL
+ * EINA_FALSE is returned
+ *
+ * @ingroup Transit
+ */
+ EAPI Eina_Bool elm_transit_paused_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the time progression of the animation (a double value between 0.0 and 1.0).
+ *
+ * The value returned is a fraction (current time / total time). It
+ * represents the progression position relative to the total.
+ *
+ * @note @p transit can not be NULL
+ *
+ * @param transit The transit object.
+ *
+ * @return The time progression value. If @p transit is NULL
+ * 0 is returned
+ *
+ * @ingroup Transit
+ */
+ EAPI double elm_transit_progress_value_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
+
+ /**
+ * Makes the chain relationship between two transits.
+ *
+ * @note @p transit can not be NULL. Transit would have multiple chain transits.
+ * @note @p chain_transit can not be NULL. Chain transits could be chained to the only one transit.
+ *
+ * @param transit The transit object.
+ * @param chain_transit The chain transit object. This transit will be operated
+ * after transit is done.
+ *
+ * This function adds @p chain_transit transition to a chain after the @p
+ * transit, and will be started as soon as @p transit ends. See @ref
+ * transit_example_02_explained for a full example.
+ *
+ * @ingroup Transit
+ */
+ EAPI void elm_transit_chain_transit_add(Elm_Transit *transit, Elm_Transit *chain_transit) EINA_ARG_NONNULL(1, 2);
+
+ /**
+ * Cut off the chain relationship between two transits.
+ *
+ * @note @p transit can not be NULL. Transit would have the chain relationship with @p chain transit.
+ * @note @p chain_transit can not be NULL. Chain transits should be chained to the @p transit.
+ *
+ * @param transit The transit object.
+ * @param chain_transit The chain transit object.
+ *
+ * This function remove the @p chain_transit transition from the @p transit.
+ *
+ * @ingroup Transit
+ */
+ EAPI void elm_transit_chain_transit_del(Elm_Transit *transit, Elm_Transit *chain_transit) EINA_ARG_NONNULL(1,2);
+
+ /**
+ * Get the current chain transit list.
+ *
+ * @note @p transit can not be NULL.
+ *
+ * @param transit The transit object.
+ * @return chain transit list.
+ *
+ * @ingroup Transit
+ */
+ EAPI Eina_List *elm_transit_chain_transits_get(const Elm_Transit *transit);
+
+ /**
+ * Add the Resizing Effect to Elm_Transit.
+ *
+ * @note This API is one of the facades. It creates resizing effect context
+ * and add it's required APIs to elm_transit_effect_add.
+ *
+ * @see elm_transit_effect_add()
+ *
+ * @param transit Transit object.
+ * @param from_w Object width size when effect begins.
+ * @param from_h Object height size when effect begins.
+ * @param to_w Object width size when effect ends.
+ * @param to_h Object height size when effect ends.
+ * @return Resizing effect context data.
+ *
+ * @ingroup Transit
+ */
+ EAPI Elm_Transit_Effect *elm_transit_effect_resizing_add(Elm_Transit* transit, Evas_Coord from_w, Evas_Coord from_h, Evas_Coord to_w, Evas_Coord to_h);
+
+ /**
+ * Add the Translation Effect to Elm_Transit.
+ *
+ * @note This API is one of the facades. It creates translation effect context
+ * and add it's required APIs to elm_transit_effect_add.
+ *
+ * @see elm_transit_effect_add()
+ *
+ * @param transit Transit object.
+ * @param from_dx X Position variation when effect begins.
+ * @param from_dy Y Position variation when effect begins.
+ * @param to_dx X Position variation when effect ends.
+ * @param to_dy Y Position variation when effect ends.
+ * @return Translation effect context data.
+ *
+ * @ingroup Transit
+ * @warning It is highly recommended just create a transit with this effect when
+ * the window that the objects of the transit belongs has already been created.
+ * This is because this effect needs the geometry information about the objects,
+ * and if the window was not created yet, it can get a wrong information.
+ */
+ EAPI Elm_Transit_Effect *elm_transit_effect_translation_add(Elm_Transit* transit, Evas_Coord from_dx, Evas_Coord from_dy, Evas_Coord to_dx, Evas_Coord to_dy);
+
+ /**
+ * Add the Zoom Effect to Elm_Transit.
+ *
+ * @note This API is one of the facades. It creates zoom effect context
+ * and add it's required APIs to elm_transit_effect_add.
+ *
+ * @see elm_transit_effect_add()
+ *
+ * @param transit Transit object.
+ * @param from_rate Scale rate when effect begins (1 is current rate).
+ * @param to_rate Scale rate when effect ends.
+ * @return Zoom effect context data.
+ *
+ * @ingroup Transit
+ * @warning It is highly recommended just create a transit with this effect when
+ * the window that the objects of the transit belongs has already been created.
+ * This is because this effect needs the geometry information about the objects,
+ * and if the window was not created yet, it can get a wrong information.
+ */
+ EAPI Elm_Transit_Effect *elm_transit_effect_zoom_add(Elm_Transit *transit, float from_rate, float to_rate);
+
+ /**
+ * Add the Flip Effect to Elm_Transit.
+ *
+ * @note This API is one of the facades. It creates flip effect context
+ * and add it's required APIs to elm_transit_effect_add.
+ * @note This effect is applied to each pair of objects in the order they are listed
+ * in the transit list of objects. The first object in the pair will be the
+ * "front" object and the second will be the "back" object.
+ *
+ * @see elm_transit_effect_add()
+ *
+ * @param transit Transit object.
+ * @param axis Flipping Axis(X or Y).
+ * @param cw Flipping Direction. EINA_TRUE is clock-wise.
+ * @return Flip effect context data.
+ *
+ * @ingroup Transit
+ * @warning It is highly recommended just create a transit with this effect when
+ * the window that the objects of the transit belongs has already been created.
+ * This is because this effect needs the geometry information about the objects,
+ * and if the window was not created yet, it can get a wrong information.
+ */
+ EAPI Elm_Transit_Effect *elm_transit_effect_flip_add(Elm_Transit *transit, Elm_Transit_Effect_Flip_Axis axis, Eina_Bool cw);
+
+ /**
+ * Add the Resizable Flip Effect to Elm_Transit.
+ *
+ * @note This API is one of the facades. It creates resizable flip effect context
+ * and add it's required APIs to elm_transit_effect_add.
+ * @note This effect is applied to each pair of objects in the order they are listed
+ * in the transit list of objects. The first object in the pair will be the
+ * "front" object and the second will be the "back" object.
+ *
+ * @see elm_transit_effect_add()
+ *
+ * @param transit Transit object.
+ * @param axis Flipping Axis(X or Y).
+ * @param cw Flipping Direction. EINA_TRUE is clock-wise.
+ * @return Resizable flip effect context data.
+ *
+ * @ingroup Transit
+ * @warning It is highly recommended just create a transit with this effect when
+ * the window that the objects of the transit belongs has already been created.
+ * This is because this effect needs the geometry information about the objects,
+ * and if the window was not created yet, it can get a wrong information.
+ */
+ EAPI Elm_Transit_Effect *elm_transit_effect_resizable_flip_add(Elm_Transit *transit, Elm_Transit_Effect_Flip_Axis axis, Eina_Bool cw);
+
+ /**
+ * Add the Wipe Effect to Elm_Transit.
+ *
+ * @note This API is one of the facades. It creates wipe effect context
+ * and add it's required APIs to elm_transit_effect_add.
+ *
+ * @see elm_transit_effect_add()
+ *
+ * @param transit Transit object.
+ * @param type Wipe type. Hide or show.
+ * @param dir Wipe Direction.
+ * @return Wipe effect context data.
+ *
+ * @ingroup Transit
+ * @warning It is highly recommended just create a transit with this effect when
+ * the window that the objects of the transit belongs has already been created.
+ * This is because this effect needs the geometry information about the objects,
+ * and if the window was not created yet, it can get a wrong information.
+ */
+ EAPI Elm_Transit_Effect *elm_transit_effect_wipe_add(Elm_Transit *transit, Elm_Transit_Effect_Wipe_Type type, Elm_Transit_Effect_Wipe_Dir dir);
+
+ /**
+ * Add the Color Effect to Elm_Transit.
+ *
+ * @note This API is one of the facades. It creates color effect context
+ * and add it's required APIs to elm_transit_effect_add.
+ *
+ * @see elm_transit_effect_add()
+ *
+ * @param transit Transit object.
+ * @param from_r RGB R when effect begins.
+ * @param from_g RGB G when effect begins.
+ * @param from_b RGB B when effect begins.
+ * @param from_a RGB A when effect begins.
+ * @param to_r RGB R when effect ends.
+ * @param to_g RGB G when effect ends.
+ * @param to_b RGB B when effect ends.
+ * @param to_a RGB A when effect ends.
+ * @return Color effect context data.
+ *
+ * @ingroup Transit
+ */
+ EAPI Elm_Transit_Effect *elm_transit_effect_color_add(Elm_Transit *transit, unsigned int from_r, unsigned int from_g, unsigned int from_b, unsigned int from_a, unsigned int to_r, unsigned int to_g, unsigned int to_b, unsigned int to_a);
+
+ /**
+ * Add the Fade Effect to Elm_Transit.
+ *
+ * @note This API is one of the facades. It creates fade effect context
+ * and add it's required APIs to elm_transit_effect_add.
+ * @note This effect is applied to each pair of objects in the order they are listed
+ * in the transit list of objects. The first object in the pair will be the
+ * "before" object and the second will be the "after" object.
+ *
+ * @see elm_transit_effect_add()
+ *
+ * @param transit Transit object.
+ * @return Fade effect context data.
+ *
+ * @ingroup Transit
+ * @warning It is highly recommended just create a transit with this effect when
+ * the window that the objects of the transit belongs has already been created.
+ * This is because this effect needs the color information about the objects,
+ * and if the window was not created yet, it can get a wrong information.
+ */
+ EAPI Elm_Transit_Effect *elm_transit_effect_fade_add(Elm_Transit *transit);
+
+ /**
+ * Add the Blend Effect to Elm_Transit.
+ *
+ * @note This API is one of the facades. It creates blend effect context
+ * and add it's required APIs to elm_transit_effect_add.
+ * @note This effect is applied to each pair of objects in the order they are listed
+ * in the transit list of objects. The first object in the pair will be the
+ * "before" object and the second will be the "after" object.
+ *
+ * @see elm_transit_effect_add()
+ *
+ * @param transit Transit object.
+ * @return Blend effect context data.
+ *
+ * @ingroup Transit
+ * @warning It is highly recommended just create a transit with this effect when
+ * the window that the objects of the transit belongs has already been created.
+ * This is because this effect needs the color information about the objects,
+ * and if the window was not created yet, it can get a wrong information.
+ */
+ EAPI Elm_Transit_Effect *elm_transit_effect_blend_add(Elm_Transit *transit);
+
+ /**
+ * Add the Rotation Effect to Elm_Transit.
+ *
+ * @note This API is one of the facades. It creates rotation effect context
+ * and add it's required APIs to elm_transit_effect_add.
+ *
+ * @see elm_transit_effect_add()
+ *
+ * @param transit Transit object.
+ * @param from_degree Degree when effect begins.
+ * @param to_degree Degree when effect is ends.
+ * @return Rotation effect context data.
+ *
+ * @ingroup Transit
+ * @warning It is highly recommended just create a transit with this effect when
+ * the window that the objects of the transit belongs has already been created.
+ * This is because this effect needs the geometry information about the objects,
+ * and if the window was not created yet, it can get a wrong information.
+ */
+ EAPI Elm_Transit_Effect *elm_transit_effect_rotation_add(Elm_Transit *transit, float from_degree, float to_degree);
+
+ /**
+ * Add the ImageAnimation Effect to Elm_Transit.
+ *
+ * @note This API is one of the facades. It creates image animation effect context
+ * and add it's required APIs to elm_transit_effect_add.
+ * The @p images parameter is a list images paths. This list and
+ * its contents will be deleted at the end of the effect by
+ * elm_transit_effect_image_animation_context_free() function.
+ *
+ * Example:
+ * @code
+ * char buf[PATH_MAX];
+ * Eina_List *images = NULL;
+ * Elm_Transit *transi = elm_transit_add();
+ *
+ * snprintf(buf, sizeof(buf), "%s/images/icon_11.png", PACKAGE_DATA_DIR);
+ * images = eina_list_append(images, eina_stringshare_add(buf));
+ *
+ * snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
+ * images = eina_list_append(images, eina_stringshare_add(buf));
+ * elm_transit_effect_image_animation_add(transi, images);
+ *
+ * @endcode
+ *
+ * @see elm_transit_effect_add()
+ *
+ * @param transit Transit object.
+ * @param images Eina_List of images file paths. This list and
+ * its contents will be deleted at the end of the effect by
+ * elm_transit_effect_image_animation_context_free() function.
+ * @return Image Animation effect context data.
+ *
+ * @ingroup Transit
+ */
+ EAPI Elm_Transit_Effect *elm_transit_effect_image_animation_add(Elm_Transit *transit, Eina_List *images);
+ /**
+ * @}
+ */
+
+ /* Store */
+ typedef struct _Elm_Store Elm_Store;
+ typedef struct _Elm_Store_DBsystem Elm_Store_DBsystem;
+ typedef struct _Elm_Store_Filesystem Elm_Store_Filesystem;
+ typedef struct _Elm_Store_Item Elm_Store_Item;
+ typedef struct _Elm_Store_Item_DBsystem Elm_Store_Item_DBsystem;
+ typedef struct _Elm_Store_Item_Filesystem Elm_Store_Item_Filesystem;
+ typedef struct _Elm_Store_Item_Info Elm_Store_Item_Info;
+ typedef struct _Elm_Store_Item_Info_Filesystem Elm_Store_Item_Info_Filesystem;
+ typedef struct _Elm_Store_Item_Mapping Elm_Store_Item_Mapping;
+ typedef struct _Elm_Store_Item_Mapping_Empty Elm_Store_Item_Mapping_Empty;
+ typedef struct _Elm_Store_Item_Mapping_Icon Elm_Store_Item_Mapping_Icon;
+ typedef struct _Elm_Store_Item_Mapping_Photo Elm_Store_Item_Mapping_Photo;
+ typedef struct _Elm_Store_Item_Mapping_Custom Elm_Store_Item_Mapping_Custom;
+
+ typedef Eina_Bool (*Elm_Store_Item_List_Cb) (void *data, Elm_Store_Item_Info *info);
+ typedef void (*Elm_Store_Item_Fetch_Cb) (void *data, Elm_Store_Item *sti, Elm_Store_Item_Info *info);
+ typedef void (*Elm_Store_Item_Unfetch_Cb) (void *data, Elm_Store_Item *sti, Elm_Store_Item_Info *info);
+ typedef void (*Elm_Store_Item_Select_Cb) (void *data, Elm_Store_Item *sti);
+ typedef int (*Elm_Store_Item_Sort_Cb) (void *data, Elm_Store_Item_Info *info1, Elm_Store_Item_Info *info2);
+ typedef void (*Elm_Store_Item_Free_Cb) (void *data, Elm_Store_Item_Info *info);
+ typedef void *(*Elm_Store_Item_Mapping_Cb) (void *data, Elm_Store_Item *sti, const char *part);
+
+ typedef enum
+ {
+ ELM_STORE_ITEM_MAPPING_NONE = 0,
+ ELM_STORE_ITEM_MAPPING_LABEL, // const char * -> label
+ ELM_STORE_ITEM_MAPPING_STATE, // Eina_Bool -> state
+ ELM_STORE_ITEM_MAPPING_ICON, // char * -> icon path
+ ELM_STORE_ITEM_MAPPING_PHOTO, // char * -> photo path
+ ELM_STORE_ITEM_MAPPING_CUSTOM, // item->custom(it->data, it, part) -> void * (-> any)
+ // can add more here as needed by common apps
+ ELM_STORE_ITEM_MAPPING_LAST
+ } Elm_Store_Item_Mapping_Type;
+
+ struct _Elm_Store_Item_Mapping_Icon
+ {
+ // FIXME: allow edje file icons
+ int w, h;
+ Elm_Icon_Lookup_Order lookup_order;
+ Eina_Bool standard_name : 1;
+ Eina_Bool no_scale : 1;
+ Eina_Bool smooth : 1;
+ Eina_Bool scale_up : 1;
+ Eina_Bool scale_down : 1;
+ };
+
+ struct _Elm_Store_Item_Mapping_Empty
+ {
+ Eina_Bool dummy;
+ };
+
+ struct _Elm_Store_Item_Mapping_Photo
+ {
+ int size;
+ };
+
+ struct _Elm_Store_Item_Mapping_Custom
+ {
+ Elm_Store_Item_Mapping_Cb func;
+ };
+
+ struct _Elm_Store_Item_Mapping
+ {
+ Elm_Store_Item_Mapping_Type type;
+ const char *part;
+ int offset;
+ union {
+ Elm_Store_Item_Mapping_Empty empty;
+ Elm_Store_Item_Mapping_Icon icon;
+ Elm_Store_Item_Mapping_Photo photo;
+ Elm_Store_Item_Mapping_Custom custom;
+ // add more types here
+ } details;
+ };
- /* animator */
- typedef enum
+ struct _Elm_Store_Item_Info
{
- ELM_ANIMATOR_CURVE_LINEAR,
- ELM_ANIMATOR_CURVE_IN_OUT,
- ELM_ANIMATOR_CURVE_IN,
- ELM_ANIMATOR_CURVE_OUT
- } Elm_Animator_Curve_Style;
- typedef struct _Elm_Animator Elm_Animator;
- /**
- * Called back per loop of an elementary animators cycle
- * @param data user-data given to elm_animator_operation_callback_set()
- * @param animator the animator being run
- * @param double the position in the animation
- */
- typedef void (*Elm_Animator_Operation_Cb) (void *data, Elm_Animator *animator, double frame);
- /**
- * Called back when an elementary animator finishes
- * @param data user-data given to elm_animator_completion_callback_set()
- */
- typedef void (*Elm_Animator_Completion_Cb) (void *data);
+ int index;
+ int item_type;
+ int group_index;
+ Eina_Bool rec_item;
+ int pre_group_index;
- EINA_DEPRECATED EAPI Elm_Animator* elm_animator_add(Evas_Object *parent);
- EINA_DEPRECATED EAPI void elm_animator_del(Elm_Animator *animator) EINA_ARG_NONNULL(1);
- EINA_DEPRECATED EAPI void elm_animator_duration_set(Elm_Animator *animator, double duration) EINA_ARG_NONNULL(1);
- EINA_DEPRECATED EAPI void elm_animator_operation_callback_set(Elm_Animator *animator, Elm_Animator_Operation_Cb func, void *data) EINA_ARG_NONNULL(1);
- EINA_DEPRECATED EAPI void elm_animator_completion_callback_set(Elm_Animator *animator, Elm_Animator_Completion_Cb func, void *data) EINA_ARG_NONNULL(1);
- EINA_DEPRECATED EAPI void elm_animator_stop(Elm_Animator *animator) EINA_ARG_NONNULL(1);
- EINA_DEPRECATED EAPI void elm_animator_repeat_set(Elm_Animator *animator, unsigned int repeat_cnt) EINA_ARG_NONNULL(1);
- EINA_DEPRECATED EAPI void elm_animator_animate(Elm_Animator *animator) EINA_ARG_NONNULL(1);
- EINA_DEPRECATED EAPI void elm_animator_curve_style_set(Elm_Animator *animator, Elm_Animator_Curve_Style cs) EINA_ARG_NONNULL(1);
- EINA_DEPRECATED EAPI Elm_Animator_Curve_Style elm_animator_curve_style_get(const Elm_Animator *animator); EINA_ARG_NONNULL(1);
- EINA_DEPRECATED EAPI void elm_animator_auto_reverse_set(Elm_Animator *animator, Eina_Bool reverse) EINA_ARG_NONNULL(1);
- EINA_DEPRECATED EAPI Eina_Bool elm_animator_auto_reverse_get(const Elm_Animator *animator) EINA_ARG_NONNULL(1);
- EINA_DEPRECATED EAPI Eina_Bool elm_animator_operating_get(const Elm_Animator *animator) EINA_ARG_NONNULL(1);
- EINA_DEPRECATED EAPI unsigned int elm_animator_repeat_get(const Elm_Animator *animator) EINA_ARG_NONNULL(1);
- EINA_DEPRECATED EAPI void elm_animator_pause(Elm_Animator *animator) EINA_ARG_NONNULL(1);
- EINA_DEPRECATED EAPI void elm_animator_resume(Elm_Animator *animator) EINA_ARG_NONNULL(1);
+ Elm_Genlist_Item_Class *item_class;
+ const Elm_Store_Item_Mapping *mapping;
+ void *data;
+ char *sort_id;
+ };
- /* calendar */
- typedef enum
+ struct _Elm_Store_Item_Info_Filesystem
{
- ELM_CALENDAR_UNIQUE,
- ELM_CALENDAR_DAILY,
- ELM_CALENDAR_WEEKLY,
- ELM_CALENDAR_MONTHLY,
- ELM_CALENDAR_ANNUALLY
- } Elm_Calendar_Mark_Repeat;
- typedef struct _Elm_Calendar_Mark Elm_Calendar_Mark;
+ Elm_Store_Item_Info base;
+ char *path;
+ };
- EAPI Evas_Object *elm_calendar_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
- EAPI const char **elm_calendar_weekdays_names_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_calendar_weekdays_names_set(Evas_Object *obj, const char *weekdays[]) EINA_ARG_NONNULL(1, 2);
- EAPI double elm_calendar_interval_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_calendar_interval_set(Evas_Object *obj, double interval) EINA_ARG_NONNULL(1);
- EAPI void elm_calendar_min_max_year_get(const Evas_Object *obj, int *min, int *max) EINA_ARG_NONNULL(1);
- EAPI void elm_calendar_min_max_year_set(Evas_Object *obj, int min, int max) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_calendar_day_selection_enabled_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_calendar_day_selection_enabled_set(Evas_Object *obj, Eina_Bool enabled) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_calendar_selected_time_get(const Evas_Object *obj, struct tm *selected_time) EINA_ARG_NONNULL(1, 2);
- EAPI void elm_calendar_selected_time_set(Evas_Object *obj, struct tm *selected_time) EINA_ARG_NONNULL(1);
- EAPI void elm_calendar_format_function_set(Evas_Object *obj, char * (*format_function) (struct tm *stime)) EINA_ARG_NONNULL(1);
- EAPI Elm_Calendar_Mark *elm_calendar_mark_add(Evas_Object *obj, const char *mark_type, struct tm *mark_time, Elm_Calendar_Mark_Repeat repeat) EINA_ARG_NONNULL(1);
- EAPI void elm_calendar_mark_del(Elm_Calendar_Mark *mark) EINA_ARG_NONNULL(1);
- EAPI void elm_calendar_marks_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI const Eina_List *elm_calendar_marks_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_calendar_marks_draw(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EINA_DEPRECATED EAPI void elm_calendar_text_saturday_color_set(Evas_Object *obj, int pos) EINA_ARG_NONNULL(1);
- EINA_DEPRECATED EAPI void elm_calendar_text_sunday_color_set(Evas_Object *obj, int pos) EINA_ARG_NONNULL(1);
- EINA_DEPRECATED EAPI void elm_calendar_text_weekday_color_set(Evas_Object *obj, int pos) EINA_ARG_NONNULL(1);
+#define ELM_STORE_ITEM_MAPPING_END { ELM_STORE_ITEM_MAPPING_NONE, NULL, 0, { .empty = { EINA_TRUE } } }
+#define ELM_STORE_ITEM_MAPPING_OFFSET(st, it) offsetof(st, it)
+
+ EAPI Elm_Store *elm_store_dbsystem_new(void);
+ EAPI void elm_store_item_count_set(Elm_Store *st, int count) EINA_ARG_NONNULL(1);
+ EAPI void elm_store_item_select_func_set(Elm_Store *st, Elm_Store_Item_Select_Cb func, const void *data) EINA_ARG_NONNULL(1);
+ EAPI void elm_store_item_sort_func_set(Elm_Store *st, Elm_Store_Item_Sort_Cb func, const void *data) EINA_ARG_NONNULL(1);
+ EAPI void elm_store_item_free_func_set(Elm_Store *st, Elm_Store_Item_Free_Cb func, const void *data) EINA_ARG_NONNULL(1);
+ EAPI int elm_store_item_data_index_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
+ EAPI void *elm_store_dbsystem_db_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
+ EAPI void elm_store_dbsystem_db_set(Elm_Store *store, void *pDB) EINA_ARG_NONNULL(1);
+ EAPI int elm_store_item_index_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
+ EAPI Elm_Store_Item *elm_store_item_add(Elm_Store *st, Elm_Store_Item_Info *info) EINA_ARG_NONNULL(1);
+ EAPI void elm_store_item_update(Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
+ EAPI void elm_store_visible_items_update(Elm_Store *st) EINA_ARG_NONNULL(1);
+ EAPI void elm_store_item_del(Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
+ EAPI void elm_store_free(Elm_Store *st);
+ EAPI Elm_Store *elm_store_filesystem_new(void);
+ EAPI void elm_store_filesystem_directory_set(Elm_Store *st, const char *dir) EINA_ARG_NONNULL(1);
+ EAPI const char *elm_store_filesystem_directory_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
+ EAPI const char *elm_store_item_filesystem_path_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
+ EAPI void elm_store_target_genlist_set(Elm_Store *st, Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_store_cache_set(Elm_Store *st, int max) EINA_ARG_NONNULL(1);
+ EAPI int elm_store_cache_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
+ EAPI void elm_store_list_func_set(Elm_Store *st, Elm_Store_Item_List_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
+ EAPI void elm_store_fetch_func_set(Elm_Store *st, Elm_Store_Item_Fetch_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
+ EAPI void elm_store_fetch_thread_set(Elm_Store *st, Eina_Bool use_thread) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_store_fetch_thread_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
+ EAPI void elm_store_unfetch_func_set(Elm_Store *st, Elm_Store_Item_Unfetch_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
+ EAPI void elm_store_sorted_set(Elm_Store *st, Eina_Bool sorted) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_store_sorted_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
+ EAPI void elm_store_item_data_set(Elm_Store_Item *sti, void *data) EINA_ARG_NONNULL(1);
+ EAPI void *elm_store_item_data_get(Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
+ EAPI const Elm_Store *elm_store_item_store_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
+ EAPI const Elm_Genlist_Item *elm_store_item_genlist_item_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
+
+ /* SegmentControl */
+ typedef struct _Elm_Segment_Item Elm_Segment_Item;
+ EAPI Evas_Object *elm_segment_control_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+ EAPI Elm_Segment_Item *elm_segment_control_item_add(Evas_Object *obj, Evas_Object *icon, const char *label) EINA_ARG_NONNULL(1);
+ EAPI Elm_Segment_Item *elm_segment_control_item_insert_at(Evas_Object *obj, Evas_Object *icon, const char *label, int index) EINA_ARG_NONNULL(1);
+ EAPI void elm_segment_control_item_del(Elm_Segment_Item *it) EINA_ARG_NONNULL(1);
+ EAPI void elm_segment_control_item_del_at(Evas_Object *obj, int index) EINA_ARG_NONNULL(1);
+ EAPI int elm_segment_control_item_count_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Elm_Segment_Item *elm_segment_control_item_get(const Evas_Object *obj, int index) EINA_ARG_NONNULL(1);
+ EAPI const char *elm_segment_control_item_label_get(const Evas_Object *obj, int index) EINA_ARG_NONNULL(1);
+ EAPI void elm_segment_control_item_label_set(Elm_Segment_Item* it, const char* label) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_segment_control_item_icon_get(const Evas_Object *obj, int index) EINA_ARG_NONNULL(1);
+ EAPI void elm_segment_control_item_icon_set(Elm_Segment_Item *it, Evas_Object *icon) EINA_ARG_NONNULL(1);
+ EAPI int elm_segment_control_item_index_get(const Elm_Segment_Item *it) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_segment_control_item_object_get(const Elm_Segment_Item *it) EINA_ARG_NONNULL(1);
+ EAPI Elm_Segment_Item *elm_segment_control_item_selected_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_segment_control_item_selected_set(Elm_Segment_Item *it, Eina_Bool select) EINA_ARG_NONNULL(1);
/* smart callbacks called:
- * changed - emitted when the user select a day or change the displayed
- * month.
+ * "changed" -when the user clicks on a segment item which is not previously
+ * selected and get selected. The event_info parameter is the
+ * segment item index.
*/
- /* diskselector */
- typedef struct _Elm_Diskselector_Item Elm_Diskselector_Item;
+ EAPI Evas_Object *elm_grid_add(Evas_Object *parent);
+ EAPI void elm_grid_size_set(Evas_Object *obj, int w, int h);
+ EAPI void elm_grid_size_get(Evas_Object *obj, int *w, int *h);
+ EAPI void elm_grid_pack(Evas_Object *obj, Evas_Object *subobj, int x, int y, int w, int h);
+ EAPI void elm_grid_unpack(Evas_Object *obj, Evas_Object *subobj);
+ EAPI void elm_grid_clear(Evas_Object *obj, Eina_Bool clear);
+ EAPI void elm_grid_pack_set(Evas_Object *subobj, int x, int y, int w, int h);
+ EAPI void elm_grid_pack_get(Evas_Object *subobj, int *x, int *y, int *w, int *h);
+
+ EAPI Evas_Object *elm_genscroller_add(Evas_Object *parent);
+ EAPI void elm_genscroller_world_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
+
+ EAPI Evas_Object *elm_video_add(Evas_Object *parent);
+ EAPI void elm_video_file_set(Evas_Object *video, const char *filename);
+ EAPI void elm_video_uri_set(Evas_Object *video, const char *uri);
+ EAPI Evas_Object *elm_video_emotion_get(Evas_Object *video);
+ EAPI void elm_video_play(Evas_Object *video);
+ EAPI void elm_video_pause(Evas_Object *video);
+ EAPI void elm_video_stop(Evas_Object *video);
+ EAPI Eina_Bool elm_video_is_playing(Evas_Object *video);
+ EAPI Eina_Bool elm_video_is_seekable(Evas_Object *video);
+ EAPI Eina_Bool elm_video_audio_mute_get(Evas_Object *video);
+ EAPI void elm_video_audio_mute_set(Evas_Object *video, Eina_Bool mute);
+ EAPI double elm_video_audio_level_get(Evas_Object *video);
+ EAPI void elm_video_audio_level_set(Evas_Object *video, double volume);
+ EAPI double elm_video_play_position_get(Evas_Object *video);
+ EAPI void elm_video_play_position_set(Evas_Object *video, double position);
+ EAPI double elm_video_play_length_get(Evas_Object *video);
+ EAPI void elm_video_remember_position_set(Evas_Object *video, Eina_Bool remember);
+ EAPI Eina_Bool elm_video_remember_position_get(Evas_Object *video);
+ EAPI const char *elm_video_title_get(Evas_Object *video);
+
+ EAPI Evas_Object *elm_player_add(Evas_Object *parent);
+ EAPI void elm_player_video_set(Evas_Object *player, Evas_Object *video);
- EAPI Evas_Object *elm_diskselector_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_diskselector_round_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_diskselector_round_set(Evas_Object *obj, Eina_Bool round) EINA_ARG_NONNULL(1);
- EAPI int elm_diskselector_side_label_lenght_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_diskselector_side_label_lenght_set(Evas_Object *obj, int len) EINA_ARG_NONNULL(1);
- EAPI void elm_diskselector_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
- EAPI void elm_diskselector_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
- EAPI void elm_diskselector_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v) EINA_ARG_NONNULL(1);
- EAPI void elm_diskselector_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v) EINA_ARG_NONNULL(1);
- EAPI void elm_diskselector_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI const Eina_List *elm_diskselector_items_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI Elm_Diskselector_Item *elm_diskselector_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
- EAPI void elm_diskselector_item_del(Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
- EAPI void elm_diskselector_item_del_cb_set(Elm_Diskselector_Item *item, Evas_Smart_Cb func) EINA_ARG_NONNULL(1);
- EAPI void *elm_diskselector_item_data_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
- EAPI Evas_Object *elm_diskselector_item_icon_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
- EAPI void elm_diskselector_item_icon_set(Elm_Diskselector_Item *item, Evas_Object *icon) EINA_ARG_NONNULL(1);
- EAPI const char *elm_diskselector_item_label_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
- EAPI void elm_diskselector_item_label_set(Elm_Diskselector_Item *item, const char *label) EINA_ARG_NONNULL(1);
- EAPI Elm_Diskselector_Item *elm_diskselector_selected_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_diskselector_item_selected_set(Elm_Diskselector_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_diskselector_item_selected_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
- EAPI Elm_Diskselector_Item *elm_diskselector_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI Elm_Diskselector_Item *elm_diskselector_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI Elm_Diskselector_Item *elm_diskselector_item_prev_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
- EAPI Elm_Diskselector_Item *elm_diskselector_item_next_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
- EAPI void elm_diskselector_item_tooltip_text_set(Elm_Diskselector_Item *item, const char *text) EINA_ARG_NONNULL(1);
- EAPI void elm_diskselector_item_tooltip_content_cb_set(Elm_Diskselector_Item *item, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb) EINA_ARG_NONNULL(1);
- EAPI void elm_diskselector_item_tooltip_unset(Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
- EAPI void elm_diskselector_item_tooltip_style_set(Elm_Diskselector_Item *item, const char *style) EINA_ARG_NONNULL(1);
- EAPI const char *elm_diskselector_item_tooltip_style_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
- EAPI void elm_diskselector_item_cursor_set(Elm_Diskselector_Item *item, const char *cursor) EINA_ARG_NONNULL(1);
- EAPI const char *elm_diskselector_item_cursor_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
- EAPI void elm_diskselector_item_cursor_unset(Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
- EAPI void elm_diskselector_item_cursor_style_set(Elm_Diskselector_Item *item, const char *style) EINA_ARG_NONNULL(1);
- EAPI const char *elm_diskselector_item_cursor_style_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
- EAPI void elm_diskselector_item_cursor_engine_only_set(Elm_Diskselector_Item *item, Eina_Bool engine_only) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_diskselector_item_cursor_engine_only_get(const Elm_Diskselector_Item *item) EINA_ARG_NONNULL(1);
- EAPI void elm_diskselector_display_item_num_set(Evas_Object *obj, int num) EINA_ARG_NONNULL(1);
+ // FIXME: incomplete - carousel. don't use this until this comment is removed
+ typedef struct _Elm_Carousel_Item Elm_Carousel_Item;
+ EAPI Evas_Object *elm_carousel_add(Evas_Object *parent);
+ EAPI Elm_Carousel_Item *elm_carousel_item_add(Evas_Object *obj, Evas_Object *icon, const char *label, Evas_Smart_Cb func, const void *data);
+ EAPI void elm_carousel_item_del(Elm_Carousel_Item *item);
+ EAPI void elm_carousel_item_select(Elm_Carousel_Item *item);
/* smart callbacks called:
- * "selected" - when item is selected (scroller stops)
+ * "clicked" - when the user clicks on a carousel item and becomes selected
*/
/* datefield */
EAPI int elm_popup_run(Evas_Object *obj);
/* NavigationBar */
+ #define NAVIBAR_TITLEOBJ_INSTANT_HIDE "elm,state,hide,noanimate,title", "elm"
+ #define NAVIBAR_TITLEOBJ_INSTANT_SHOW "elm,state,show,noanimate,title", "elm"
+
typedef enum
{
ELM_NAVIGATIONBAR_FUNCTION_BUTTON1,
EAPI void elm_navigationbar_title_label_set(Evas_Object *obj, Evas_Object *content, const char *title);
EAPI const char *elm_navigationbar_title_label_get(Evas_Object *obj, Evas_Object *content);
EAPI void elm_navigationbar_title_object_add(Evas_Object *obj, Evas_Object *content, Evas_Object *title_obj);
+ EAPI Evas_Object *elm_navigationbar_title_object_get(Evas_Object *obj, Evas_Object *content);
EAPI Eina_List *elm_navigationbar_title_object_list_get(Evas_Object *obj, Evas_Object *content);
EAPI Evas_Object *elm_navigationbar_content_top_get(Evas_Object *obj);
EAPI Evas_Object *elm_navigationbar_content_bottom_get(Evas_Object *obj);
EAPI void elm_navigationbar_title_icon_set(Evas_Object *obj, Evas_Object *content, Evas_Object *icon);
EAPI Evas_Object *elm_navigationbar_title_icon_get(Evas_Object *obj, Evas_Object *content);
- /* NavigationBar */
+ /* NavigationBar */
+ #define NAVIBAR_EX_TITLEOBJ_INSTANT_HIDE "elm,state,hide,noanimate,title", "elm"
+ #define NAVIBAR_EX_TITLEOBJ_INSTANT_SHOW "elm,state,show,noanimate,title", "elm"
+
typedef enum
{
ELM_NAVIGATIONBAR_EX_BACK_BUTTON,
EAPI void elm_navigationbar_ex_title_object_visible_set(Elm_Navigationbar_ex_Item* item, Eina_Bool visible);
Eina_Bool elm_navigationbar_ex_title_object_visible_get(Elm_Navigationbar_ex_Item* item);
+ /* naviframe */
+ #define ELM_NAVIFRAME_ITEM_ICON "elm.swallow.icon"
+ #define ELM_NAVIFRAME_ITEM_OPTIONHEADER "elm.swallow.optionheader"
+ #define ELM_NAVIFRAME_ITEM_TITLE_LABEL "elm.text.title"
+ #define ELM_NAVIFRAME_ITEM_PREV_BTN "elm.swallow.prev_btn"
+
+ EAPI Evas_Object *elm_naviframe_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+ EAPI Elm_Object_Item *elm_naviframe_item_push(Evas_Object *obj, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style) EINA_ARG_NONNULL(1, 5);
+ EAPI Evas_Object *elm_naviframe_item_pop(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_naviframe_content_preserve_on_pop_set(Evas_Object *obj, Eina_Bool preserve) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_naviframe_content_preserve_on_pop_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Elm_Object_Item *elm_naviframe_top_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Elm_Object_Item *elm_naviframe_bottom_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_naviframe_item_style_set(Elm_Object_Item *it, const char *item_style) EINA_ARG_NONNULL(1);
+ EAPI const char *elm_naviframe_item_style_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+ EAPI void elm_naviframe_item_title_visible_set(Elm_Object_Item *it, Eina_Bool visible) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_naviframe_item_title_visible_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/* Control Bar */
#define CONTROLBAR_SYSTEM_ICON_ALBUMS "controlbar_albums"
} Elm_Controlbar_Mode_Type;
typedef struct _Elm_Controlbar_Item Elm_Controlbar_Item;
-
EAPI Evas_Object *elm_controlbar_add(Evas_Object *parent);
EAPI Elm_Controlbar_Item *elm_controlbar_tab_item_append(Evas_Object *obj, const char *icon_path, const char *label, Evas_Object *view);
EAPI Elm_Controlbar_Item *elm_controlbar_tab_item_prepend(Evas_Object *obj, const char *icon_path, const char *label, Evas_Object *view);
EAPI Eina_Bool elm_controlbar_item_disabled_get(const Elm_Controlbar_Item * it);
EAPI void elm_controlbar_item_icon_set(Elm_Controlbar_Item *it, const char *icon_path);
EAPI Evas_Object *elm_controlbar_item_icon_get(const Elm_Controlbar_Item *it);
- EAPI void elm_controlbar_item_label_set(Elm_Controlbar_Item *it, const char *label);
- EAPI const char *elm_controlbar_item_label_get(const Elm_Controlbar_Item *it);
- EAPI Elm_Controlbar_Item *elm_controlbar_selected_item_get(const Evas_Object *obj);
- EAPI Elm_Controlbar_Item *elm_controlbar_first_item_get(const Evas_Object *obj);
- EAPI Elm_Controlbar_Item *elm_controlbar_last_item_get(const Evas_Object *obj);
- EAPI const Eina_List *elm_controlbar_items_get(const Evas_Object *obj);
- EAPI Elm_Controlbar_Item *elm_controlbar_item_prev(Elm_Controlbar_Item *it);
- EAPI Elm_Controlbar_Item *elm_controlbar_item_next(Elm_Controlbar_Item *it);
- EAPI void elm_controlbar_item_view_set(Elm_Controlbar_Item *it, Evas_Object * view);
- EAPI Evas_Object *elm_controlbar_item_view_get(const Elm_Controlbar_Item *it);
- EAPI Evas_Object *elm_controlbar_item_view_unset(Elm_Controlbar_Item *it);
- EAPI Evas_Object *elm_controlbar_item_button_get(const Elm_Controlbar_Item *it);
- EAPI void elm_controlbar_mode_set(Evas_Object *obj, int mode);
- EAPI void elm_controlbar_alpha_set(Evas_Object *obj, int alpha);
- EAPI void elm_controlbar_item_auto_align_set(Evas_Object *obj, Eina_Bool auto_align);
- EAPI void elm_controlbar_vertical_set(Evas_Object *obj, Eina_Bool vertical);
-
- /* SearchBar */
- EAPI Evas_Object *elm_searchbar_add(Evas_Object *parent);
- EAPI void elm_searchbar_text_set(Evas_Object *obj, const char *entry);
- EAPI const char *elm_searchbar_text_get(Evas_Object *obj);
- EAPI Evas_Object *elm_searchbar_entry_get(Evas_Object *obj);
- EAPI void elm_searchbar_cancel_button_animation_set(Evas_Object *obj, Eina_Bool cancel_btn_ani_flag);
- EAPI void elm_searchbar_cancel_button_set(Evas_Object *obj, Eina_Bool visible);
- EAPI void elm_searchbar_clear(Evas_Object *obj);
- EAPI void elm_searchbar_boundary_rect_set(Evas_Object *obj, Eina_Bool boundary);
-
- /* colorselector */
- EAPI Evas_Object *elm_colorselector_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
- EAPI void elm_colorselector_color_set(Evas_Object *obj, int r, int g , int b, int a) EINA_ARG_NONNULL(1);
- EAPI void elm_colorselector_color_get(const Evas_Object *obj, int *r, int *g , int *b, int *a) EINA_ARG_NONNULL(1);
- /* smart callbacks called:
- * "changed" - when the color value changes
- */
-
- /* Contextual Popup */
- typedef struct _Elm_Ctxpopup_Item Elm_Ctxpopup_Item;
-
- typedef enum _Elm_Ctxpopup_Direction
- {
- ELM_CTXPOPUP_DIRECTION_DOWN,
- ELM_CTXPOPUP_DIRECTION_RIGHT,
- ELM_CTXPOPUP_DIRECTION_LEFT,
- ELM_CTXPOPUP_DIRECTION_UP,
- } Elm_Ctxpopup_Direction;
-
- EAPI Evas_Object *elm_ctxpopup_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
- EAPI Evas_Object *elm_ctxpopup_item_icon_get(const Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
- EAPI void elm_ctxpopup_item_icon_set(Elm_Ctxpopup_Item *item, Evas_Object *icon) EINA_ARG_NONNULL(1);
- EAPI const char *elm_ctxpopup_item_label_get(const Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
- EAPI void elm_ctxpopup_item_label_set(Elm_Ctxpopup_Item *item, const char *label) EINA_ARG_NONNULL(1);
- EAPI void elm_ctxpopup_hover_parent_set(Evas_Object *obj, Evas_Object *parent) EINA_ARG_NONNULL(1, 2);
- EAPI Evas_Object *elm_ctxpopup_hover_parent_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_ctxpopup_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_ctxpopup_horizontal_set(Evas_Object *obj, Eina_Bool horizontal) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_ctxpopup_horizontal_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- Elm_Ctxpopup_Item *elm_ctxpopup_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
- EAPI void elm_ctxpopup_item_del(Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
- EAPI void elm_ctxpopup_item_disabled_set(Elm_Ctxpopup_Item *item, Eina_Bool disabled) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_ctxpopup_item_disabled_get(const Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
- EAPI void elm_ctxpopup_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1, 2);
- EAPI Evas_Object *elm_ctxpopup_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_ctxpopup_direction_priority_set(Evas_Object *obj, Elm_Ctxpopup_Direction first, Elm_Ctxpopup_Direction second, Elm_Ctxpopup_Direction third, Elm_Ctxpopup_Direction fourth) EINA_ARG_NONNULL(1);
- EAPI void elm_ctxpopup_direction_priority_get(Evas_Object *obj, Elm_Ctxpopup_Direction *first, Elm_Ctxpopup_Direction *second, Elm_Ctxpopup_Direction *third, Elm_Ctxpopup_Direction *fourth) EINA_ARG_NONNULL(1);
- /* smart callbacks called:
- * "dismissed" - the ctxpopup was dismissed
- */
+ EAPI void elm_controlbar_item_label_set(Elm_Controlbar_Item *it, const char *label);
+ EAPI const char *elm_controlbar_item_label_get(const Elm_Controlbar_Item *it);
+ EAPI Elm_Controlbar_Item *elm_controlbar_selected_item_get(const Evas_Object *obj);
+ EAPI Elm_Controlbar_Item *elm_controlbar_first_item_get(const Evas_Object *obj);
+ EAPI Elm_Controlbar_Item *elm_controlbar_last_item_get(const Evas_Object *obj);
+ EAPI const Eina_List *elm_controlbar_items_get(const Evas_Object *obj);
+ EAPI Elm_Controlbar_Item *elm_controlbar_item_prev(Elm_Controlbar_Item *it);
+ EAPI Elm_Controlbar_Item *elm_controlbar_item_next(Elm_Controlbar_Item *it);
+ EAPI void elm_controlbar_item_view_set(Elm_Controlbar_Item *it, Evas_Object * view);
+ EAPI Evas_Object *elm_controlbar_item_view_get(const Elm_Controlbar_Item *it);
+ EAPI Evas_Object *elm_controlbar_item_view_unset(Elm_Controlbar_Item *it);
+ EAPI Evas_Object *elm_controlbar_item_button_get(const Elm_Controlbar_Item *it);
+ EAPI void elm_controlbar_mode_set(Evas_Object *obj, int mode);
+ EAPI void elm_controlbar_alpha_set(Evas_Object *obj, int alpha);
+ EAPI void elm_controlbar_item_auto_align_set(Evas_Object *obj, Eina_Bool auto_align);
+ EAPI void elm_controlbar_vertical_set(Evas_Object *obj, Eina_Bool vertical);
- /* tansit */
- typedef enum
- {
- ELM_TRANSIT_TWEEN_MODE_LINEAR,
- ELM_TRANSIT_TWEEN_MODE_SINUSOIDAL,
- ELM_TRANSIT_TWEEN_MODE_DECELERATE,
- ELM_TRANSIT_TWEEN_MODE_ACCELERATE
- } Elm_Transit_Tween_Mode;
- typedef enum
- {
- ELM_TRANSIT_EFFECT_FLIP_AXIS_X,
- ELM_TRANSIT_EFFECT_FLIP_AXIS_Y
- } Elm_Transit_Effect_Flip_Axis;
- typedef enum
- {
- ELM_TRANSIT_EFFECT_WIPE_DIR_LEFT,
- ELM_TRANSIT_EFFECT_WIPE_DIR_RIGHT,
- ELM_TRANSIT_EFFECT_WIPE_DIR_UP,
- ELM_TRANSIT_EFFECT_WIPE_DIR_DOWN
- } Elm_Transit_Effect_Wipe_Dir;
- typedef enum
- {
- ELM_TRANSIT_EFFECT_WIPE_TYPE_HIDE,
- ELM_TRANSIT_EFFECT_WIPE_TYPE_SHOW
- } Elm_Transit_Effect_Wipe_Type;
+ /* SearchBar */
+ EAPI Evas_Object *elm_searchbar_add(Evas_Object *parent);
+ EAPI void elm_searchbar_text_set(Evas_Object *obj, const char *entry);
+ EAPI const char *elm_searchbar_text_get(Evas_Object *obj);
+ EAPI Evas_Object *elm_searchbar_entry_get(Evas_Object *obj);
+ EAPI Evas_Object *elm_searchbar_editfield_get(Evas_Object *obj);
+ EAPI void elm_searchbar_cancel_button_animation_set(Evas_Object *obj, Eina_Bool cancel_btn_ani_flag);
+ EAPI void elm_searchbar_cancel_button_set(Evas_Object *obj, Eina_Bool visible);
+ EAPI void elm_searchbar_clear(Evas_Object *obj);
+ EAPI void elm_searchbar_boundary_rect_set(Evas_Object *obj, Eina_Bool boundary);
- typedef struct _Elm_Transit Elm_Transit;
- typedef void Elm_Transit_Effect;
- typedef void (*Elm_Transit_Effect_Transition_Cb) (Elm_Transit_Effect *effect, Elm_Transit *transit, double progress);
- typedef void (*Elm_Transit_Effect_End_Cb) (Elm_Transit_Effect *effect, Elm_Transit *transit);
- typedef void (*Elm_Transit_Del_Cb) (void *data, Elm_Transit *transit);
+ EAPI Evas_Object *elm_page_control_add(Evas_Object *parent);
+ EAPI void elm_page_control_page_count_set(Evas_Object *obj, unsigned int page_count);
+ EAPI void elm_page_control_page_id_set(Evas_Object *obj, unsigned int page_id);
+ EAPI unsigned int elm_page_control_page_id_get(Evas_Object *obj);
- EAPI Elm_Transit *elm_transit_add(void);
- EAPI void elm_transit_del(Elm_Transit *transit) EINA_ARG_NONNULL(1);
- EAPI void elm_transit_effect_add(Elm_Transit *transit, Elm_Transit_Effect_Transition_Cb transition_cb, Elm_Transit_Effect *effect, Elm_Transit_Effect_End_Cb end_cb) EINA_ARG_NONNULL(1, 2);
- EAPI void elm_transit_effect_del(Elm_Transit *transit, Elm_Transit_Effect_Transition_Cb transition_cb, Elm_Transit_Effect *effect) EINA_ARG_NONNULL(1, 2);
- EAPI void elm_transit_object_add(Elm_Transit *transit, Evas_Object *obj) EINA_ARG_NONNULL(1, 2);
- EAPI void elm_transit_object_remove(Elm_Transit *transit, Evas_Object *obj) EINA_ARG_NONNULL(1, 2);
- EAPI const Eina_List *elm_transit_objects_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
- EAPI void elm_transit_objects_final_state_keep_set(Elm_Transit *transit, Eina_Bool state_keep) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_transit_objects_final_state_keep_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
- EINA_DEPRECATED EAPI void elm_transit_event_block_set(Elm_Transit *transit, Eina_Bool disabled) EINA_ARG_NONNULL(1);
- EINA_DEPRECATED EAPI Eina_Bool elm_transit_event_block_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
- EAPI void elm_transit_event_enabled_set(Elm_Transit *transit, Eina_Bool enabled) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_transit_event_enabled_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
- EAPI void elm_transit_del_cb_set(Elm_Transit *transit, Elm_Transit_Del_Cb cb, void *data) EINA_ARG_NONNULL(1);
- EAPI void elm_transit_auto_reverse_set(Elm_Transit *transit, Eina_Bool reverse) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_transit_auto_reverse_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
- EAPI void elm_transit_repeat_times_set(Elm_Transit *transit, int repeat) EINA_ARG_NONNULL(1);
- EAPI int elm_transit_repeat_times_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
- EAPI void elm_transit_tween_mode_set(Elm_Transit *transit, Elm_Transit_Tween_Mode tween_mode) EINA_ARG_NONNULL(1);
- EAPI Elm_Transit_Tween_Mode elm_transit_tween_mode_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
- EAPI void elm_transit_duration_set(Elm_Transit *transit, double duration) EINA_ARG_NONNULL(1);
- EAPI double elm_transit_duration_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
- EAPI void elm_transit_go(Elm_Transit *transit) EINA_ARG_NONNULL(1);
- EAPI void elm_transit_paused_set(Elm_Transit *transit, Eina_Bool paused) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_transit_paused_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
- EAPI double elm_transit_progress_value_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
- EAPI void elm_transit_chain_transit_add(Elm_Transit *transit, Elm_Transit *chain_transit) EINA_ARG_NONNULL(1, 2);
- EAPI void elm_transit_chain_transit_del(Elm_Transit *transit, Elm_Transit *chain_transit) EINA_ARG_NONNULL(1, 2);
- EAPI Eina_List *elm_transit_chain_transits_get(const Elm_Transit *transit);
+ /* NoContents */
+ EAPI Evas_Object *elm_nocontents_add(Evas_Object *parent);
+ EAPI void elm_nocontents_label_set(Evas_Object *obj, const char *label);
+ EAPI const char *elm_nocontents_label_get(const Evas_Object *obj);
+ EAPI void elm_nocontents_custom_set(const Evas_Object *obj, Evas_Object *custom);
+ EAPI Evas_Object *elm_nocontents_custom_get(const Evas_Object *obj);
- EAPI Elm_Transit_Effect *elm_transit_effect_resizing_add(Elm_Transit* transit, Evas_Coord from_w, Evas_Coord from_h, Evas_Coord to_w, Evas_Coord to_h);
- EAPI Elm_Transit_Effect *elm_transit_effect_translation_add(Elm_Transit* transit, Evas_Coord from_dx, Evas_Coord dy, Evas_Coord to_dx, Evas_Coord to_dy);
- EAPI Elm_Transit_Effect *elm_transit_effect_zoom_add(Elm_Transit *transit, float from_rate, float to_rate);
- EAPI Elm_Transit_Effect *elm_transit_effect_flip_add(Elm_Transit *transit, Elm_Transit_Effect_Flip_Axis axis, Eina_Bool cw);
- EAPI Elm_Transit_Effect *elm_transit_effect_resizable_flip_add(Elm_Transit *transit, Elm_Transit_Effect_Flip_Axis axis, Eina_Bool cw);
- EAPI Elm_Transit_Effect *elm_transit_effect_wipe_add(Elm_Transit *transit, Elm_Transit_Effect_Wipe_Type type, Elm_Transit_Effect_Wipe_Dir dir);
- EAPI Elm_Transit_Effect *elm_transit_effect_color_add(Elm_Transit *transit, unsigned int from_r, unsigned int from_g, unsigned int from_b, unsigned int from_a, unsigned int to_r, unsigned int to_g, unsigned int to_b, unsigned int to_a);
- EAPI Elm_Transit_Effect *elm_transit_effect_fade_add(Elm_Transit *transit);
- EAPI Elm_Transit_Effect *elm_transit_effect_blend_add(Elm_Transit *transit);
- EAPI Elm_Transit_Effect *elm_transit_effect_rotation_add(Elm_Transit *transit, float from_degree, float to_degree);
- EAPI Elm_Transit_Effect *elm_transit_effect_image_animation_add(Elm_Transit *transit, Eina_List *images);
+/* TickerNoti */
+typedef enum
+ {
+ ELM_TICKERNOTI_DEFAULT,
+ ELM_TICKERNOTI_DETAILVIEW
+ } Elm_Tickernoti_Mode;
+
+typedef enum
+ {
+ ELM_TICKERNOTI_ORIENT_TOP,
+ ELM_TICKERNOTI_ORIENT_BOTTOM
+ } Elm_Tickernoti_Orient;
+
+ EAPI Evas_Object *elm_tickernoti_add (Evas_Object *parent);
+ EAPI void elm_tickernoti_icon_set (Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_tickernoti_icon_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_tickernoti_label_set (Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+ EAPI const char *elm_tickernoti_label_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_tickernoti_button_set (Evas_Object *obj, Evas_Object *button) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_tickernoti_button_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_tickernoti_orientation_set (Evas_Object *obj, Elm_Tickernoti_Orient orient) EINA_ARG_NONNULL(1);
+ EAPI Elm_Tickernoti_Orient elm_tickernoti_orientation_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI int elm_tickernoti_rotation_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_tickernoti_rotation_set (Evas_Object *obj, int angle) EINA_ARG_NONNULL(1);
+ /* #### Below APIs are going to be deprecated, announcment will be made soon ####*/
+ EAPI Evas_Object *elm_tickernoti_win_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_tickernoti_detailview_label_set (Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+ EAPI const char *elm_tickernoti_detailview_label_get (const Evas_Object *obj)EINA_ARG_NONNULL(1);
+ EAPI void elm_tickernoti_detailview_button_set (Evas_Object *obj, Evas_Object *button) EINA_ARG_NONNULL(2);
+ EAPI Evas_Object *elm_tickernoti_detailview_button_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_tickernoti_detailview_icon_set (Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_tickernoti_detailview_icon_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_tickernoti_detailview_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_tickernoti_mode_set (Evas_Object *obj, Elm_Tickernoti_Mode mode) EINA_ARG_NONNULL(1);
+ EAPI Elm_Tickernoti_Mode elm_tickernoti_mode_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /* ############################################################################### */
+ /* smart callbacks called:
+ * @li "clicked" - emitted when tickernoti is clicked, except at the
+ * swallow/button region, if any.
+ * @li "hide" - emitted when the tickernoti is completelyhidden. In case of
+ * any hide animation, this signal is raised after the animation.
+ */
/* colorpalette */
typedef struct _Colorpalette_Color Elm_Colorpalette_Color;
double x, y;
} Elm_SlidingDrawer_Drag_Value;
- EAPI Evas_Object *elm_slidingdrawer_add(Evas_Object *parent);
- EAPI void elm_slidingdrawer_content_set (Evas_Object *obj, Evas_Object *content);
- EAPI Evas_Object *elm_slidingdrawer_content_unset(Evas_Object *obj);
- EAPI void elm_slidingdrawer_pos_set(Evas_Object *obj, Elm_SlidingDrawer_Pos pos);
- EAPI void elm_slidingdrawer_max_drag_value_set(Evas_Object *obj, double dw, double dh);
- EAPI void elm_slidingdrawer_drag_value_set(Evas_Object *obj, double dx, double dy);
+ EINA_DEPRECATED EAPI Evas_Object *elm_slidingdrawer_add(Evas_Object *parent);
+ EINA_DEPRECATED EAPI void elm_slidingdrawer_content_set (Evas_Object *obj, Evas_Object *content);
+ EINA_DEPRECATED EAPI Evas_Object *elm_slidingdrawer_content_unset(Evas_Object *obj);
+ EINA_DEPRECATED EAPI void elm_slidingdrawer_pos_set(Evas_Object *obj, Elm_SlidingDrawer_Pos pos);
+ EINA_DEPRECATED EAPI void elm_slidingdrawer_max_drag_value_set(Evas_Object *obj, double dw, double dh);
+ EINA_DEPRECATED EAPI void elm_slidingdrawer_drag_value_set(Evas_Object *obj, double dx, double dy);
/* multibuttonentry */
typedef struct _Multibuttonentry_Item Elm_Multibuttonentry_Item;
EAPI Eina_Bool elm_dayselector_check_state_get(Evas_Object *obj, Elm_DaySelector_Day day);
EAPI void elm_dayselector_check_state_set(Evas_Object *obj, Elm_DaySelector_Day day, Eina_Bool checked);
- /* NoContents */
- EAPI Evas_Object *elm_nocontents_add(Evas_Object *parent);
- EAPI void elm_nocontents_label_set(Evas_Object *obj, const char *label);
- EAPI const char *elm_nocontents_label_get(const Evas_Object *obj);
- EAPI void elm_nocontents_custom_set(const Evas_Object *obj, Evas_Object *custom);
- EAPI Evas_Object *elm_nocontents_custom_get(const Evas_Object *obj);
-
- /* TickerNoti */
- typedef enum
- {
- ELM_TICKERNOTI_DEFAULT,
- ELM_TICKERNOTI_DETAILVIEW
- } Elm_Tickernoti_Mode;
-
- EAPI Evas_Object *elm_tickernoti_add (Evas_Object *parent);
- EAPI void elm_tickernoti_icon_set (const Evas_Object *obj, Evas_Object *icon);
- EAPI Evas_Object *elm_tickernoti_icon_get (const Evas_Object *obj);
- EAPI void elm_tickernoti_label_set (Evas_Object *obj, const char *label);
- EAPI const char *elm_tickernoti_label_get (const Evas_Object *obj);
- EAPI void elm_tickernoti_detailview_label_set (Evas_Object *obj, const char *label);
- EAPI const char *elm_tickernoti_detailview_label_get (const Evas_Object *obj);
- EAPI void elm_tickernoti_detailview_button_set (const Evas_Object *obj, Evas_Object *button);
- EAPI Evas_Object *elm_tickernoti_detailview_button_get (const Evas_Object *obj);
- EAPI void elm_tickernoti_detailview_icon_set (const Evas_Object *obj, Evas_Object *icon);
- EAPI Evas_Object *elm_tickernoti_detailview_icon_get (const Evas_Object *obj);
- EAPI Evas_Object *elm_tickernoti_detailview_get (const Evas_Object *obj);
- EAPI int elm_tickernoti_rotation_get (const Evas_Object *obj);
- EAPI void elm_tickernoti_rotation_set (const Evas_Object *obj, int angle);
- EAPI void elm_tickernoti_mode_set (const Evas_Object *obj, Elm_Tickernoti_Mode mode);
- EAPI Elm_Tickernoti_Mode elm_tickernoti_mode_get (const Evas_Object *obj);
-
/* Image Slider */
typedef struct _Imageslider_Item Elm_Imageslider_Item;
typedef void (*Elm_Imageslider_Cb)(void *data, Evas_Object *obj, void *event_info);
EAPI void elm_imageslider_next(Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_imageslider_item_photo_file_set(Elm_Imageslider_Item *it, const char *photo_file) EINA_ARG_NONNULL(1,2);
EAPI void elm_imageslider_item_update(Elm_Imageslider_Item *it) EINA_ARG_NONNULL(1);
-
- /* Store */
- typedef struct _Elm_Store Elm_Store;
- typedef struct _Elm_Store_DBsystem Elm_Store_DBsystem;
- typedef struct _Elm_Store_Filesystem Elm_Store_Filesystem;
- typedef struct _Elm_Store_Item Elm_Store_Item;
- typedef struct _Elm_Store_Item_DBsystem Elm_Store_Item_DBsystem;
- typedef struct _Elm_Store_Item_Filesystem Elm_Store_Item_Filesystem;
- typedef struct _Elm_Store_Item_Info Elm_Store_Item_Info;
- typedef struct _Elm_Store_Item_Info_Filesystem Elm_Store_Item_Info_Filesystem;
- typedef struct _Elm_Store_Item_Mapping Elm_Store_Item_Mapping;
- typedef struct _Elm_Store_Item_Mapping_Empty Elm_Store_Item_Mapping_Empty;
- typedef struct _Elm_Store_Item_Mapping_Icon Elm_Store_Item_Mapping_Icon;
- typedef struct _Elm_Store_Item_Mapping_Photo Elm_Store_Item_Mapping_Photo;
- typedef struct _Elm_Store_Item_Mapping_Custom Elm_Store_Item_Mapping_Custom;
-
- typedef Eina_Bool (*Elm_Store_Item_List_Cb) (void *data, Elm_Store_Item_Info *info);
- typedef void (*Elm_Store_Item_Fetch_Cb) (void *data, Elm_Store_Item *sti, Elm_Store_Item_Info *info);
- typedef void (*Elm_Store_Item_Unfetch_Cb) (void *data, Elm_Store_Item *sti, Elm_Store_Item_Info *info);
- typedef void (*Elm_Store_Item_Select_Cb) (void *data, Elm_Store_Item *sti);
- typedef int (*Elm_Store_Item_Sort_Cb) (void *data, Elm_Store_Item_Info *info1, Elm_Store_Item_Info *info2);
- typedef void (*Elm_Store_Item_Free_Cb) (void *data, Elm_Store_Item_Info *info);
- typedef void *(*Elm_Store_Item_Mapping_Cb) (void *data, Elm_Store_Item *sti, const char *part);
-
- typedef enum
- {
- ELM_STORE_ITEM_MAPPING_NONE = 0,
- ELM_STORE_ITEM_MAPPING_LABEL, // const char * -> label
- ELM_STORE_ITEM_MAPPING_STATE, // Eina_Bool -> state
- ELM_STORE_ITEM_MAPPING_ICON, // char * -> icon path
- ELM_STORE_ITEM_MAPPING_PHOTO, // char * -> photo path
- ELM_STORE_ITEM_MAPPING_CUSTOM, // item->custom(it->data, it, part) -> void * (-> any)
- // can add more here as needed by common apps
- ELM_STORE_ITEM_MAPPING_LAST
- } Elm_Store_Item_Mapping_Type;
-
- struct _Elm_Store_Item_Mapping_Icon
- {
- // FIXME: allow edje file icons
- int w, h;
- Elm_Icon_Lookup_Order lookup_order;
- Eina_Bool standard_name : 1;
- Eina_Bool no_scale : 1;
- Eina_Bool smooth : 1;
- Eina_Bool scale_up : 1;
- Eina_Bool scale_down : 1;
- };
-
- struct _Elm_Store_Item_Mapping_Empty
- {
- Eina_Bool dummy;
- };
-
- struct _Elm_Store_Item_Mapping_Photo
- {
- int size;
- };
-
- struct _Elm_Store_Item_Mapping_Custom
- {
- Elm_Store_Item_Mapping_Cb func;
- };
-
- struct _Elm_Store_Item_Mapping
- {
- Elm_Store_Item_Mapping_Type type;
- const char *part;
- int offset;
- union {
- Elm_Store_Item_Mapping_Empty empty;
- Elm_Store_Item_Mapping_Icon icon;
- Elm_Store_Item_Mapping_Photo photo;
- Elm_Store_Item_Mapping_Custom custom;
- // add more types here
- } details;
- };
-
- struct _Elm_Store_Item_Info
- {
- int index;
- int item_type;
- int group_index;
- Eina_Bool rec_item;
- int pre_group_index;
-
- Elm_Genlist_Item_Class *item_class;
- const Elm_Store_Item_Mapping *mapping;
- void *data;
- char *sort_id;
- };
-
- struct _Elm_Store_Item_Info_Filesystem
- {
- Elm_Store_Item_Info base;
- char *path;
- };
-
-#define ELM_STORE_ITEM_MAPPING_END { ELM_STORE_ITEM_MAPPING_NONE, NULL, 0, { .empty = { EINA_TRUE } } }
-#define ELM_STORE_ITEM_MAPPING_OFFSET(st, it) offsetof(st, it)
-
- EAPI Elm_Store *elm_store_dbsystem_new(void);
- EAPI void elm_store_item_count_set(Elm_Store *st, int count) EINA_ARG_NONNULL(1);
- EAPI void elm_store_item_select_func_set(Elm_Store *st, Elm_Store_Item_Select_Cb func, const void *data) EINA_ARG_NONNULL(1);
- EAPI void elm_store_item_sort_func_set(Elm_Store *st, Elm_Store_Item_Sort_Cb func, const void *data) EINA_ARG_NONNULL(1);
- EAPI void elm_store_item_free_func_set(Elm_Store *st, Elm_Store_Item_Free_Cb func, const void *data) EINA_ARG_NONNULL(1);
- EAPI int elm_store_item_data_index_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
- EAPI void *elm_store_dbsystem_db_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
- EAPI void elm_store_dbsystem_db_set(Elm_Store *store, void *pDB) EINA_ARG_NONNULL(1);
- EAPI int elm_store_item_index_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
- EAPI Elm_Store_Item *elm_store_item_add(Elm_Store *st, Elm_Store_Item_Info *info) EINA_ARG_NONNULL(1);
- EAPI void elm_store_item_update(Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
- EAPI void elm_store_visible_items_update(Elm_Store *st) EINA_ARG_NONNULL(1);
- EAPI void elm_store_item_del(Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
- EAPI void elm_store_free(Elm_Store *st);
- EAPI Elm_Store *elm_store_filesystem_new(void);
- EAPI void elm_store_filesystem_directory_set(Elm_Store *st, const char *dir) EINA_ARG_NONNULL(1);
- EAPI const char *elm_store_filesystem_directory_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
- EAPI const char *elm_store_item_filesystem_path_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
- EAPI void elm_store_target_genlist_set(Elm_Store *st, Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_store_cache_set(Elm_Store *st, int max) EINA_ARG_NONNULL(1);
- EAPI int elm_store_cache_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
- EAPI void elm_store_list_func_set(Elm_Store *st, Elm_Store_Item_List_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
- EAPI void elm_store_fetch_func_set(Elm_Store *st, Elm_Store_Item_Fetch_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
- EAPI void elm_store_fetch_thread_set(Elm_Store *st, Eina_Bool use_thread) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_store_fetch_thread_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
- EAPI void elm_store_unfetch_func_set(Elm_Store *st, Elm_Store_Item_Unfetch_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
- EAPI void elm_store_sorted_set(Elm_Store *st, Eina_Bool sorted) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_store_sorted_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
- EAPI void elm_store_item_data_set(Elm_Store_Item *sti, void *data) EINA_ARG_NONNULL(1);
- EAPI void *elm_store_item_data_get(Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
- EAPI const Elm_Store *elm_store_item_store_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
- EAPI const Elm_Genlist_Item *elm_store_item_genlist_item_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
-
- /* SegmentControl */
- typedef struct _Elm_Segment_Item Elm_Segment_Item;
- EAPI Evas_Object *elm_segment_control_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
- EAPI Elm_Segment_Item *elm_segment_control_item_add(Evas_Object *obj, Evas_Object *icon, const char *label) EINA_ARG_NONNULL(1);
- EAPI Elm_Segment_Item *elm_segment_control_item_insert_at(Evas_Object *obj, Evas_Object *icon, const char *label, int index) EINA_ARG_NONNULL(1);
- EAPI void elm_segment_control_item_del(Elm_Segment_Item *it) EINA_ARG_NONNULL(1);
- EAPI void elm_segment_control_item_del_at(Evas_Object *obj, int index) EINA_ARG_NONNULL(1);
- EAPI int elm_segment_control_item_count_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI Elm_Segment_Item *elm_segment_control_item_get(const Evas_Object *obj, int index) EINA_ARG_NONNULL(1);
- EAPI const char *elm_segment_control_item_label_get(const Evas_Object *obj, int index) EINA_ARG_NONNULL(1);
- EAPI void elm_segment_control_item_label_set(Elm_Segment_Item* it, const char* label) EINA_ARG_NONNULL(1);
- EAPI Evas_Object *elm_segment_control_item_icon_get(const Evas_Object *obj, int index) EINA_ARG_NONNULL(1);
- EAPI void elm_segment_control_item_icon_set(Elm_Segment_Item *it, Evas_Object *icon) EINA_ARG_NONNULL(1);
- EAPI int elm_segment_control_item_index_get(const Elm_Segment_Item *it) EINA_ARG_NONNULL(1);
- EAPI Evas_Object *elm_segment_control_item_object_get(const Elm_Segment_Item *it) EINA_ARG_NONNULL(1);
- EAPI Elm_Segment_Item *elm_segment_control_item_selected_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_segment_control_item_selected_set(Elm_Segment_Item *it, Eina_Bool select) EINA_ARG_NONNULL(1);
- /* smart callbacks called:
- * "changed" -when the user clicks on a segment item which is not previously
- * selected and get selected. The event_info parameter is the
- * segment item index.
- */
-
#ifdef __cplusplus
}
#endif