/**
@mainpage Elementary
@image html elementary.png
-@version @PACKAGE_VERSION@
+@version 0.7.0
@date 2008-2011
@section intro What is Elementary?
It is meant to make the programmers work almost brainless but give them lots
of flexibility.
+@li @ref Start - Go here to quickly get started with writing Apps
+
@section organization Organization
One can divide Elemementary into three main groups:
organisations behind this, as listed in the @ref authors page.
*/
+
+/**
+ * @defgroup Start Getting Started
+ *
+ * To write an Elementary app, you can get started with the following:
+ *
+@code
+#include <Elementary.h>
+EAPI_MAIN int
+elm_main(int argc, char **argv)
+{
+ // create window(s) here and do any application init
+ elm_run(); // run main loop
+ elm_shutdown(); // after mainloop finishes running, shutdown
+ return 0; // exit 0 for exit code
+}
+ELM_MAIN()
+@endcode
+ *
+ * To use autotools (which helps in many ways in the long run, like being able
+ * to immediately create releases of your software directly from your tree
+ * and ensure everything needed to build it is there) you will need a
+ * configure.ac, Makefile.am and autogen.sh file.
+ *
+ * configure.ac:
+ *
+@verbatim
+AC_INIT(myapp, 0.0.0, myname@mydomain.com)
+AC_PREREQ(2.52)
+AC_CONFIG_SRCDIR(configure.ac)
+AM_CONFIG_HEADER(config.h)
+AC_PROG_CC
+AM_INIT_AUTOMAKE(1.6 dist-bzip2)
+PKG_CHECK_MODULES([ELEMENTARY], elementary)
+AC_OUTPUT(Makefile)
+@endverbatim
+ *
+ * Makefile.am:
+ *
+@verbatim
+AUTOMAKE_OPTIONS = 1.4 foreign
+MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.h.in configure depcomp install-sh missing
+
+INCLUDES = -I$(top_srcdir)
+
+bin_PROGRAMS = myapp
+
+myapp_SOURCES = main.c
+myapp_LDADD = @ELEMENTARY_LIBS@
+myapp_CFLAGS = @ELEMENTARY_CFLAGS@
+@endverbatim
+ *
+ * autogen.sh:
+ *
+@verbatim
+#!/bin/sh
+echo "Running aclocal..." ; aclocal $ACLOCAL_FLAGS || exit 1
+echo "Running autoheader..." ; autoheader || exit 1
+echo "Running autoconf..." ; autoconf || exit 1
+echo "Running automake..." ; automake --add-missing --copy --gnu || exit 1
+./configure "$@"
+@endverbatim
+ *
+ * To generate all the things needed to bootstrap just run:
+ *
+@verbatim
+./autogen.sh
+@endverbatim
+ *
+ * This will generate Makefile.in's, the confgure script and everything else.
+ * After this it works like all normal autotools projects:
+@verbatim
+./configure
+make
+sudo make install
+@endverbatim
+ *
+ * Note sudo was assumed to get root permissions, as this would install in
+ * /usr/local which is system-owned. Use any way you like to gain root, or
+ * specify a different prefix with configure:
+ *
+@verbatim
+./confiugre --prefix=$HOME/mysoftware
+@endverbatim
+ *
+ * Also remember that autotools buys you some useful commands like:
+@verbatim
+make uninstall
+@endverbatim
+ *
+ * This uninstalls the software after it was installed with "make install".
+ * It is very useful to clear up what you built if you wish to clean the
+ * system.
+ *
+@verbatim
+make distcheck
+@endverbatim
+ *
+ * This firstly checks if your build tree is "clean" and ready for
+ * distribution. It also builds a tarball (myapp-0.0.0.tar.gz) that is
+ * ready to upload and distribute to the world, that contains the generated
+ * Makefile.in's and configure script. The users do not need to run
+ * autogen.sh - just configure and on. They don't need autotools installed.
+ * This tarball also builds cleanly, has all the sources it needs to build
+ * included (that is sources for your application, not libraries it depends
+ * on like Elementary). It builds cleanly in a buildroot and does not
+ * contain any files that are temporarily generated like binaries and other
+ * build-generated files, so the tarball is clean, and no need to worry
+ * about cleaning up your tree before packaging.
+ *
+@verbatim
+make clean
+@endverbatim
+ *
+ * This cleans up all build files (binaries, objects etc.) from the tree.
+ *
+@verbatim
+make distclean
+@endverbatim
+ *
+ * This cleans out all files from the build and from configure's output too.
+ *
+@verbatim
+make maintainer-clean
+@endverbatim
+ *
+ * This deletes all the files autogen.sh will produce so the tree is clean
+ * to be put into a revision-control system (like CVS, SVN or GIT for example).
+ *
+ * There is a more advanced way of making use of the quicklaunch infrastructure
+ * in Elementary (which will not be covered here due to its more advanced
+ * nature).
+ *
+ * Now let's actually create an interactive "Hello World" gui that you can
+ * click the ok button to exit. It's more code because this now does something
+ * much more significant, but it's still very simple:
+ *
+@code
+#include <Elementary.h>
+
+static void
+on_done(void *data, Evas_Object *obj, void *event_info)
+{
+ // quit the mainloop (elm_run function will return)
+ elm_exit();
+}
+
+EAPI_MAIN int
+elm_main(int argc, char **argv)
+{
+ Evas_Object *win, *bg, *box, *lab, *btn;
+
+ // new window - do the usual and give it a name, title and delete handler
+ win = elm_win_add(NULL, "hello", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Hello");
+ // when the user clicks "close" on a window there is a request to delete
+ evas_object_smart_callback_add(win, "delete,request", on_done, NULL);
+
+ // add a standard bg
+ bg = elm_bg_add(win);
+ // add object as a resize object for the window (controls window minimum
+ // size as well as gets resized if window is resized)
+ elm_win_resize_object_add(win, bg);
+ evas_object_show(bg);
+
+ // add a box object - default is vertical. a box holds children in a row,
+ // either horizontally or vertically. nothing more.
+ box = elm_box_add(win);
+ // make the box hotizontal
+ elm_box_horizontal_set(box, EINA_TRUE);
+ // add object as a resize object for the window (controls window minimum
+ // size as well as gets resized if window is resized)
+ elm_win_resize_object_add(win, box);
+ evas_object_show(box);
+
+ // add a label widget, set the text and put it in the pad frame
+ lab = elm_label_add(win);
+ // set default text of the label
+ elm_object_text_set(lab, "Hello out there world!");
+ // pack the label at the end of the box
+ elm_box_pack_end(box, lab);
+ evas_object_show(lab);
+
+ // add an ok button
+ btn = elm_button_add(win);
+ // set default text of button to "OK"
+ elm_object_text_set(btn, "OK");
+ // pack the button at the end of the box
+ elm_box_pack_end(box, btn);
+ evas_object_show(btn);
+ // call on_done when button is clicked
+ evas_object_smart_callback_add(btn, "clicked", on_done, NULL);
+
+ // now we are done, show the window
+ evas_object_show(win);
+
+ // run the mainloop and process events and callbacks
+ elm_run();
+ return 0;
+}
+ELM_MAIN()
+@endcode
+ *
+ */
+
/**
@page authors Authors
@author Carsten Haitzler <raster@@rasterman.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>
+@author Sung W. Park <sungwoo@gmail.com>
+@author Thierry el Borgi <thierry@substantiel.fr>
+@author Shilpa Singh <shilpa.singh@samsung.com> <shilpasingh.o@gmail.com>
+@author Chanwook Jung <joey.jung@samsung.com>
+@author Hyoyoung Chang <hyoyoung.chang@samsung.com>
+@author Guillaume "Kuri" Friloux <guillaume.friloux@asp64.com>
+@author Kim Yunhan <spbear@gmail.com>
Please contact <enlightenment-devel@lists.sourceforge.net> to get in
contact with the developers and maintainers.
@ELM_EDBUS_DEF@ ELM_EDBUS
@ELM_EFREET_DEF@ ELM_EFREET
@ELM_ETHUMB_DEF@ ELM_ETHUMB
+@ELM_WEB_DEF@ ELM_WEB
@ELM_EMAP_DEF@ ELM_EMAP
@ELM_DEBUG_DEF@ ELM_DEBUG
@ELM_ALLOCA_H_DEF@ ELM_ALLOCA_H
# endif
#endif /* ! _WIN32 */
+#ifdef _WIN32
+# define EAPI_MAIN
+#else
+# define EAPI_MAIN EAPI
+#endif
/* allow usage from c++ */
#ifdef __cplusplus
*/
typedef enum _Elm_Policy
{
- ELM_POLICY_QUIT, /**< under which circunstances the application
+ ELM_POLICY_QUIT, /**< under which circumstances the application
* should quit automatically. @see
* Elm_Policy_Quit.
*/
ELM_WRAP_LAST
} Elm_Wrap_Type;
+ typedef enum
+ {
+ ELM_INPUT_PANEL_LAYOUT_NORMAL, /**< Default layout */
+ ELM_INPUT_PANEL_LAYOUT_NUMBER, /**< Number layout */
+ ELM_INPUT_PANEL_LAYOUT_EMAIL, /**< Email layout */
+ ELM_INPUT_PANEL_LAYOUT_URL, /**< URL layout */
+ ELM_INPUT_PANEL_LAYOUT_PHONENUMBER, /**< Phone Number layout */
+ ELM_INPUT_PANEL_LAYOUT_IP, /**< IP layout */
+ ELM_INPUT_PANEL_LAYOUT_MONTH, /**< Month layout */
+ ELM_INPUT_PANEL_LAYOUT_NUMBERONLY, /**< Number Only layout */
+ ELM_INPUT_PANEL_LAYOUT_INVALID
+ } Elm_Input_Panel_Layout;
+
/**
* @typedef Elm_Object_Item
* An Elementary Object item handle.
*/
typedef Evas_Object *(*Elm_Tooltip_Item_Content_Cb) (void *data, Evas_Object *obj, Evas_Object *tooltip, void *item);
- typedef Eina_Bool (*Elm_Event_Cb) (void *data, Evas_Object *obj, Evas_Object *src, Evas_Callback_Type type, void *event_info);
+ typedef Eina_Bool (*Elm_Event_Cb) (void *data, Evas_Object *obj, Evas_Object *src, Evas_Callback_Type type, void *event_info); /**< Function prototype definition for callbacks on input events happening on Elementary widgets. @a data will receive the user data pointer passed to elm_object_event_callback_add(). @a src will be a pointer to the widget on which the input event took place. @a type will get the type of this event and @a event_info, the struct with details on this event. */
#ifndef ELM_LIB_QUICKLAUNCH
#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 */
* @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.
+ * the number of calls to it. It returns 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
EAPI Eina_Bool elm_need_efreet(void);
EAPI Eina_Bool elm_need_e_dbus(void);
+
+ /**
+ * This must be called before any other function that handle with
+ * elm_thumb objects or ethumb_client instances.
+ *
+ * @ingroup Thumb
+ */
EAPI Eina_Bool elm_need_ethumb(void);
/**
+ * This must be called before any other function that handle with
+ * elm_web objects or ewk_view instances.
+ *
+ * @ingroup Web
+ */
+ EAPI Eina_Bool elm_need_web(void);
+
+ /**
* Set a new policy's value (for a given policy group/identifier).
*
* @param policy policy identifier, as in @ref Elm_Policy.
* Set 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)
+ * @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 Evas_Object *elm_object_item_content_part_get(const Elm_Object_Item *it, const char *item);
+ EAPI Evas_Object *elm_object_item_content_part_get(const Elm_Object_Item *it, const char *part);
-#define elm_object_item_content_get(it, content) elm_object_item_content_part_get((it), NULL, (content))
+#define elm_object_item_content_get(it) elm_object_item_content_part_get((it), NULL)
/**
* Unset a content of an object item
*/
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))
+#define elm_object_item_content_unset(it) elm_object_item_content_part_unset((it), NULL)
/**
* Set a label of an objec itemt
*/
EAPI const char *elm_object_item_text_part_get(const Elm_Object_Item *it, const char *part);
-#define elm_object_item_text_get(it) elm_object_item_part_text_get((it), NULL)
+ /**
+ * 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);
+
+ /**
+ * Send a signal to the edje object of the widget item.
+ *
+ * This function sends a signal to the edje object of the obj item. An
+ * edje program can respond to a signal by specifying matching
+ * 'signal' and 'source' fields.
+ *
+ * @param it The Elementary object item
+ * @param emission The signal's name.
+ * @param source The signal's source.
+ * @ingroup General
+ */
+ EAPI void elm_object_item_signal_emit(Elm_Object_Item *it, const char *emission, const char *source) EINA_ARG_NONNULL(1);
/**
* @}
*/
+ /**
+ * @defgroup Caches Caches
+ *
+ * These are functions which let one fine-tune some cache values for
+ * Elementary applications, thus allowing for performance adjustments.
+ *
+ * @{
+ */
+
+ /**
+ * @brief Flush all caches.
+ *
+ * Frees all data that was in cache and is not currently being used to reduce
+ * memory usage. This frees Edje's, Evas' and Eet's cache. This is equivalent
+ * to calling all of the following functions:
+ * @li edje_file_cache_flush()
+ * @li edje_collection_cache_flush()
+ * @li eet_clearcache()
+ * @li evas_image_cache_flush()
+ * @li evas_font_cache_flush()
+ * @li evas_render_dump()
+ * @note Evas caches are flushed for every canvas associated with a window.
+ *
+ * @ingroup Caches
+ */
EAPI void elm_all_flush(void);
+
+ /**
+ * Get the configured cache flush interval time
+ *
+ * This gets the globally configured cache flush interval time, in
+ * ticks
+ *
+ * @return The cache flush interval time
+ * @ingroup Caches
+ *
+ * @see elm_all_flush()
+ */
EAPI int elm_cache_flush_interval_get(void);
+
+ /**
+ * Set the configured cache flush interval time
+ *
+ * This sets the globally configured cache flush interval time, in ticks
+ *
+ * @param size The cache flush interval time
+ * @ingroup Caches
+ *
+ * @see elm_all_flush()
+ */
EAPI void elm_cache_flush_interval_set(int size);
+
+ /**
+ * Set the configured cache flush interval time for all applications on the
+ * display
+ *
+ * This sets the globally configured cache flush interval time -- in ticks
+ * -- for all applications on the display.
+ *
+ * @param size The cache flush interval time
+ * @ingroup Caches
+ */
EAPI void elm_cache_flush_interval_all_set(int size);
+
+ /**
+ * Get the configured cache flush enabled state
+ *
+ * This gets the globally configured cache flush state - if it is enabled
+ * or not. When cache flushing is enabled, elementary will regularly
+ * (see elm_cache_flush_interval_get() ) flush caches and dump data out of
+ * memory and allow usage to re-seed caches and data in memory where it
+ * can do so. An idle application will thus minimise its memory usage as
+ * data will be freed from memory and not be re-loaded as it is idle and
+ * not rendering or doing anything graphically right now.
+ *
+ * @return The cache flush state
+ * @ingroup Caches
+ *
+ * @see elm_all_flush()
+ */
EAPI Eina_Bool elm_cache_flush_enabled_get(void);
+
+ /**
+ * Set the configured cache flush enabled state
+ *
+ * This sets the globally configured cache flush enabled state
+ *
+ * @param size The cache flush enabled state
+ * @ingroup Caches
+ *
+ * @see elm_all_flush()
+ */
EAPI void elm_cache_flush_enabled_set(Eina_Bool enabled);
+
+ /**
+ * Set the configured cache flush enabled state for all applications on the
+ * display
+ *
+ * This sets the globally configured cache flush enabled state for all
+ * applications on the display.
+ *
+ * @param size The cache flush enabled state
+ * @ingroup Caches
+ */
EAPI void elm_cache_flush_enabled_all_set(Eina_Bool enabled);
+
+ /**
+ * Get the configured font cache size
+ *
+ * This gets the globally configured font cache size, in bytes
+ *
+ * @return The font cache size
+ * @ingroup Caches
+ */
EAPI int elm_font_cache_get(void);
+
+ /**
+ * Set the configured font cache size
+ *
+ * This sets the globally configured font cache size, in bytes
+ *
+ * @param size The font cache size
+ * @ingroup Caches
+ */
EAPI void elm_font_cache_set(int size);
+
+ /**
+ * Set the configured font cache size for all applications on the
+ * display
+ *
+ * This sets the globally configured font cache size -- in bytes
+ * -- for all applications on the display.
+ *
+ * @param size The font cache size
+ * @ingroup Caches
+ */
EAPI void elm_font_cache_all_set(int size);
+
+ /**
+ * Get the configured image cache size
+ *
+ * This gets the globally configured image cache size, in bytes
+ *
+ * @return The image cache size
+ * @ingroup Caches
+ */
EAPI int elm_image_cache_get(void);
+
+ /**
+ * Set the configured image cache size
+ *
+ * This sets the globally configured image cache size, in bytes
+ *
+ * @param size The image cache size
+ * @ingroup Caches
+ */
EAPI void elm_image_cache_set(int size);
+
+ /**
+ * Set the configured image cache size for all applications on the
+ * display
+ *
+ * This sets the globally configured image cache size -- in bytes
+ * -- for all applications on the display.
+ *
+ * @param size The image cache size
+ * @ingroup Caches
+ */
EAPI void elm_image_cache_all_set(int size);
+
+ /**
+ * Get the configured edje file cache size.
+ *
+ * This gets the globally configured edje file cache size, in number
+ * of files.
+ *
+ * @return The edje file cache size
+ * @ingroup Caches
+ */
EAPI int elm_edje_file_cache_get(void);
+
+ /**
+ * Set the configured edje file cache size
+ *
+ * This sets the globally configured edje file cache size, in number
+ * of files.
+ *
+ * @param size The edje file cache size
+ * @ingroup Caches
+ */
EAPI void elm_edje_file_cache_set(int size);
+
+ /**
+ * Set the configured edje file cache size for all applications on the
+ * display
+ *
+ * This sets the globally configured edje file cache size -- in number
+ * of files -- for all applications on the display.
+ *
+ * @param size The edje file cache size
+ * @ingroup Caches
+ */
EAPI void elm_edje_file_cache_all_set(int size);
+
+ /**
+ * Get the configured edje collections (groups) cache size.
+ *
+ * This gets the globally configured edje collections cache size, in
+ * number of collections.
+ *
+ * @return The edje collections cache size
+ * @ingroup Caches
+ */
EAPI int elm_edje_collection_cache_get(void);
+
+ /**
+ * Set the configured edje collections (groups) cache size
+ *
+ * This sets the globally configured edje collections cache size, in
+ * number of collections.
+ *
+ * @param size The edje collections cache size
+ * @ingroup Caches
+ */
EAPI void elm_edje_collection_cache_set(int size);
+
+ /**
+ * Set the configured edje collections (groups) cache size for all
+ * applications on the display
+ *
+ * This sets the globally configured edje collections cache size -- in
+ * number of collections -- for all applications on the display.
+ *
+ * @param size The edje collections cache size
+ * @ingroup Caches
+ */
EAPI void elm_edje_collection_cache_all_set(int size);
/**
- * @defgroup Scaling Selective Widget Scaling
+ * @}
+ */
+
+ /**
+ * @defgroup Scaling Widget Scaling
*
* Different widgets can be scaled independently. These functions
* allow you to manipulate this scaling on a per-widget basis. The
*/
/**
+ * Get the global scaling factor
+ *
+ * This gets the globally configured scaling factor that is applied to all
+ * objects.
+ *
+ * @return The scaling factor
+ * @ingroup Scaling
+ */
+ EAPI double elm_scale_get(void);
+
+ /**
+ * Set the global scaling factor
+ *
+ * This sets the globally configured scaling factor that is applied to all
+ * objects.
+ *
+ * @param scale The scaling factor to set
+ * @ingroup Scaling
+ */
+ EAPI void elm_scale_set(double scale);
+
+ /**
+ * Set the global scaling factor for all applications on the display
+ *
+ * This sets the globally configured scaling factor that is applied to all
+ * objects for all applications.
+ * @param scale The scaling factor to set
+ * @ingroup Scaling
+ */
+ EAPI void elm_scale_all_set(double scale);
+
+ /**
* Set the scaling factor for a given Elementary object
*
* @param obj The Elementary to operate on
* @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);
+
/**
- * Set the style to use by a widget
+ * @defgroup Password_last_show Password last input show
*
- * 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.
+ * 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.
*
- * @param obj The Elementary widget to style
- * @param style The style name to use
+ * @{
+ */
+
+ /**
+ * Get show last setting of password mode.
*
- * @see elm_theme_extension_add()
- * @see elm_theme_overlay_add()
+ * This gets the show last input setting of password mode which might be
+ * enabled or disabled.
*
- * @ingroup Theme
+ * @return @c EINA_TRUE, if the last input show setting is enabled, @c EINA_FALSE
+ * if it's disabled.
+ * @ingroup Password_last_show
*/
- EAPI void elm_object_style_set(Evas_Object *obj, const char *style) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_password_show_last_get(void);
+
/**
- * Get the style used by the widget
+ * Set show last setting in password mode.
*
- * 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.
+ * This enables or disables show last setting of password mode.
*
- * @param obj The Elementary widget to query for its style
- * @return The style name used
+ * @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.
*
- * @see elm_object_style_set()
+ * This gets the time out value for which the last input entered in password
+ * mode will be visible.
*
- * @ingroup Theme
+ * @return The timeout value of last show password mode.
+ * @ingroup Password_last_show
*/
- EAPI const char *elm_object_style_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI double elm_password_show_last_timeout_get(void);
/**
- * @defgroup Styles Styles
+ * Set's the timeout value in last show password mode.
*
- * 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).
+ * This sets the time out value for which the last input entered in password
+ * mode will be visible.
*
- * @ref general_functions_example_page "This" example contemplates
- * some of these functions.
+ * @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);
/**
- * Set the disabled state of an Elementary object.
- *
+ * @}
+ */
+
+ /**
+ * @defgroup UI-Mirroring Selective Widget mirroring
+ *
+ * These functions allow you to set ui-mirroring on specific
+ * widgets or the whole interface. Widgets can be in one of two
+ * modes, automatic and manual. Automatic means they'll be changed
+ * according to the system mirroring mode and manual means only
+ * explicit changes will matter. You are not supposed to change
+ * mirroring state of a widget set to automatic, will mostly work,
+ * but the behavior is not really defined.
+ *
+ * @{
+ */
+
+ EAPI Eina_Bool elm_mirrored_get(void);
+ EAPI void elm_mirrored_set(Eina_Bool mirrored);
+
+ /**
+ * Get the system mirrored mode. This determines the default mirrored mode
+ * of widgets.
+ *
+ * @return EINA_TRUE if mirrored is set, EINA_FALSE otherwise
+ */
+ EAPI Eina_Bool elm_object_mirrored_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the system mirrored mode. This determines the default mirrored mode
+ * of widgets.
+ *
+ * @param mirrored EINA_TRUE to set mirrored mode, EINA_FALSE to unset it.
+ */
+ EAPI void elm_object_mirrored_set(Evas_Object *obj, Eina_Bool mirrored) EINA_ARG_NONNULL(1);
+
+ /**
+ * Returns the widget's mirrored mode setting.
+ *
+ * @param obj The widget.
+ * @return mirrored mode setting of the object.
+ *
+ **/
+ EAPI Eina_Bool elm_object_mirrored_automatic_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Sets the widget's mirrored mode setting.
+ * When widget in automatic mode, it follows the system mirrored mode set by
+ * elm_mirrored_set().
+ * @param obj The widget.
+ * @param automatic EINA_TRUE for auto mirrored mode. EINA_FALSE for manual.
+ */
+ 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_extension_del()
+ * @see elm_theme_overlay_add()
+ * @see elm_theme_overlay_del()
+ *
+ * @ingroup Styles
+ */
+ 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 Styles
+ */
+ 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
* some of these functions.
*/
+ /**
+ * Check if the given Evas Object is an Elementary widget.
+ *
+ * @param obj the object to query.
+ * @return @c EINA_TRUE if it is an elementary widget variant,
+ * @c EINA_FALSE otherwise
+ * @ingroup WidgetNavigation
+ */
EAPI Eina_Bool elm_object_widget_check(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* @ingroup WidgetNavigation
*/
EAPI Evas_Object *elm_object_parent_widget_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the top level parent of an Elementary widget.
+ *
+ * @param obj The object to query.
+ * @return The top level Elementary widget, or @c NULL if parent cannot be
+ * found.
+ * @ingroup WidgetNavigation
+ */
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);
+ /**
+ * Get the string that represents this Elementary widget.
+ *
+ * @note Elementary is weird and exposes itself as a single
+ * Evas_Object_Smart_Class of type "elm_widget", so
+ * evas_object_type_get() always return that, making debug and
+ * language bindings hard. This function tries to mitigate this
+ * problem, but the solution is to change Elementary to use
+ * proper inheritance.
+ *
+ * @param obj the object to query.
+ * @return Elementary widget name, or @c NULL if not a valid widget.
+ * @ingroup WidgetNavigation
+ */
+ EAPI const char *elm_object_widget_type_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_mirrored_get(void);
- EAPI void elm_mirrored_set(Eina_Bool mirrored);
+ /**
+ * @defgroup Config Elementary Config
+ *
+ * Elementary configuration is formed by a set options bounded to a
+ * given @ref Profile profile, like @ref Theme theme, @ref Fingers
+ * "finger size", etc. These are functions with which one syncronizes
+ * changes made to those values to the configuration storing files, de
+ * facto. You most probably don't want to use the functions in this
+ * group unlees you're writing an elementary configuration manager.
+ *
+ * @{
+ */
+ /**
+ * Save back Elementary's configuration, so that it will persist on
+ * future sessions.
+ *
+ * @return @c EINA_TRUE, when sucessful. @c EINA_FALSE, otherwise.
+ * @ingroup Config
+ *
+ * This function will take effect -- thus, do I/O -- immediately. Use
+ * it when you want to apply all configuration changes at once. The
+ * current configuration set will get saved onto the current profile
+ * configuration file.
+ *
+ */
EAPI Eina_Bool elm_config_save(void);
+
+ /**
+ * Reload Elementary's configuration, bounded to current selected
+ * profile.
+ *
+ * @return @c EINA_TRUE, when sucessful. @c EINA_FALSE, otherwise.
+ * @ingroup Config
+ *
+ * Useful when you want to force reloading of configuration values for
+ * a profile. If one removes user custom configuration directories,
+ * for example, it will force a reload with system values insted.
+ *
+ */
EAPI void elm_config_reload(void);
+ /**
+ * @}
+ */
+
+ /**
+ * @defgroup Profile Elementary Profile
+ *
+ * Profiles are pre-set options that affect the whole look-and-feel of
+ * Elementary-based applications. There are, for example, profiles
+ * aimed at desktop computer applications and others aimed at mobile,
+ * touchscreen-based ones. You most probably don't want to use the
+ * functions in this group unlees you're writing an elementary
+ * configuration manager.
+ *
+ * @{
+ */
+
+ /**
+ * Get Elementary's profile in use.
+ *
+ * This gets the global profile that is applied to all Elementary
+ * applications.
+ *
+ * @return The profile's name
+ * @ingroup Profile
+ */
EAPI const char *elm_profile_current_get(void);
+
+ /**
+ * Get an Elementary's profile directory path in the filesystem. One
+ * may want to fetch a system profile's dir or an user one (fetched
+ * inside $HOME).
+ *
+ * @param profile The profile's name
+ * @param is_user Whether to lookup for an user profile (@c EINA_TRUE)
+ * or a system one (@c EINA_FALSE)
+ * @return The profile's directory path.
+ * @ingroup Profile
+ *
+ * @note You must free it with elm_profile_dir_free().
+ */
EAPI const char *elm_profile_dir_get(const char *profile, Eina_Bool is_user);
+
+ /**
+ * Free an Elementary's profile directory path, as returned by
+ * elm_profile_dir_get().
+ *
+ * @param p_dir The profile's path
+ * @ingroup Profile
+ *
+ */
EAPI void elm_profile_dir_free(const char *p_dir);
+
+ /**
+ * Get Elementary's list of available profiles.
+ *
+ * @return The profiles list. List node data are the profile name
+ * strings.
+ * @ingroup Profile
+ *
+ * @note One must free this list, after usage, with the function
+ * elm_profile_list_free().
+ */
EAPI Eina_List *elm_profile_list_get(void);
+
+ /**
+ * Free Elementary's list of available profiles.
+ *
+ * @param l The profiles list, as returned by elm_profile_list_get().
+ * @ingroup Profile
+ *
+ */
EAPI void elm_profile_list_free(Eina_List *l);
+
+ /**
+ * Set Elementary's profile.
+ *
+ * This sets the global profile that is applied to Elementary
+ * applications. Just the process the call comes from will be
+ * affected.
+ *
+ * @param profile The profile's name
+ * @ingroup Profile
+ *
+ */
EAPI void elm_profile_set(const char *profile);
+
+ /**
+ * Set Elementary's profile.
+ *
+ * This sets the global profile that is applied to all Elementary
+ * applications. All running Elementary windows will be affected.
+ *
+ * @param profile The profile's name
+ * @ingroup Profile
+ *
+ */
EAPI void elm_profile_all_set(const char *profile);
+ /**
+ * @}
+ */
+
+ /**
+ * @defgroup Engine Elementary Engine
+ *
+ * These are functions setting and querying which rendering engine
+ * Elementary will use for drawing its windows' pixels.
+ *
+ * The following are the available engines:
+ * @li "software_x11"
+ * @li "fb"
+ * @li "directfb"
+ * @li "software_16_x11"
+ * @li "software_8_x11"
+ * @li "xrender_x11"
+ * @li "opengl_x11"
+ * @li "software_gdi"
+ * @li "software_16_wince_gdi"
+ * @li "sdl"
+ * @li "software_16_sdl"
+ * @li "opengl_sdl"
+ * @li "buffer"
+ *
+ * @{
+ */
+
+ /**
+ * @brief Get Elementary's rendering engine in use.
+ *
+ * @return The rendering engine's name
+ * @note there's no need to free the returned string, here.
+ *
+ * This gets the global rendering engine that is applied to all Elementary
+ * applications.
+ *
+ * @see elm_engine_set()
+ */
EAPI const char *elm_engine_current_get(void);
+
+ /**
+ * @brief Set Elementary's rendering engine for use.
+ *
+ * @param engine The rendering engine's name
+ *
+ * This sets global rendering engine that is applied to all Elementary
+ * applications. Note that it will take effect only to Elementary windows
+ * created after this is called.
+ *
+ * @see elm_win_add()
+ */
EAPI void elm_engine_set(const char *engine);
+ /**
+ * @}
+ */
+
+ /**
+ * @defgroup Fonts Elementary Fonts
+ *
+ * These are functions dealing with font rendering, selection and the
+ * like for Elementary applications. One might fetch which system
+ * fonts are there to use and set custom fonts for individual classes
+ * of UI items containing text (text classes).
+ *
+ * @{
+ */
+
typedef struct _Elm_Text_Class
{
const char *name;
Eina_List *styles;
} Elm_Font_Properties;
+ /**
+ * Get Elementary's list of supported text classes.
+ *
+ * @return The text classes list, with @c Elm_Text_Class blobs as data.
+ * @ingroup Fonts
+ *
+ * Release the list with elm_text_classes_list_free().
+ */
EAPI const Eina_List *elm_text_classes_list_get(void);
+
+ /**
+ * Free Elementary's list of supported text classes.
+ *
+ * @ingroup Fonts
+ *
+ * @see elm_text_classes_list_get().
+ */
EAPI void elm_text_classes_list_free(const Eina_List *list);
+ /**
+ * Get Elementary's list of font overlays, set with
+ * elm_font_overlay_set().
+ *
+ * @return The font overlays list, with @c Elm_Font_Overlay blobs as
+ * data.
+ *
+ * @ingroup Fonts
+ *
+ * For each text class, one can set a <b>font overlay</b> for it,
+ * overriding the default font properties for that class coming from
+ * the theme in use. There is no need to free this list.
+ *
+ * @see elm_font_overlay_set() and elm_font_overlay_unset().
+ */
EAPI const Eina_List *elm_font_overlay_list_get(void);
- EAPI void elm_font_overlay_set(const char *text_class, const char *font, Evas_Font_Size size);
- EAPI void elm_font_overlay_unset(const char *text_class);
- EAPI void elm_font_overlay_apply(void);
- EAPI void elm_font_overlay_all_apply(void);
- EAPI Elm_Font_Properties *elm_font_properties_get(const char *font) EINA_ARG_NONNULL(1);
- EAPI void elm_font_properties_free(Elm_Font_Properties *efp) EINA_ARG_NONNULL(1);
- EAPI const char *elm_font_fontconfig_name_get(const char *name, const char *style) EINA_ARG_NONNULL(1);
- EAPI void elm_font_fontconfig_name_free(const char *name) EINA_ARG_NONNULL(1);
- EAPI Eina_Hash *elm_font_available_hash_add(Eina_List *list);
- EAPI void elm_font_available_hash_del(Eina_Hash *hash);
+ /**
+ * Set a font overlay for a given Elementary text class.
+ *
+ * @param text_class Text class name
+ * @param font Font name and style string
+ * @param size Font size
+ *
+ * @ingroup Fonts
+ *
+ * @p font has to be in the format returned by
+ * elm_font_fontconfig_name_get(). @see elm_font_overlay_list_get()
+ * and elm_font_overlay_unset().
+ */
+ EAPI void elm_font_overlay_set(const char *text_class, const char *font, Evas_Font_Size size);
/**
- * @defgroup Fingers Fingers
+ * Unset a font overlay for a given Elementary text class.
*
- * 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.
+ * @param text_class Text class name
*
- * Different profiles may have pre-set values for finger sizes.
+ * @ingroup Fonts
*
- * @ref general_functions_example_page "This" example contemplates
- * some of these functions.
+ * This will bring back text elements belonging to text class
+ * @p text_class back to their default font settings.
*/
+ EAPI void elm_font_overlay_unset(const char *text_class);
/**
- * Get the configured "finger size"
+ * Apply the changes made with elm_font_overlay_set() and
+ * elm_font_overlay_unset() on the current Elementary window.
*
- * @return The finger size
+ * @ingroup Fonts
*
- * This gets the globally configured finger size, <b>in pixels</b>
+ * This applies all font overlays set to all objects in the UI.
+ */
+ EAPI void elm_font_overlay_apply(void);
+
+ /**
+ * Apply the changes made with elm_font_overlay_set() and
+ * elm_font_overlay_unset() on all Elementary application windows.
*
- * @ingroup Fingers
+ * @ingroup Fonts
+ *
+ * This applies all font overlays set to all objects in the UI.
*/
- 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);
+ EAPI void elm_font_overlay_all_apply(void);
/**
- * @defgroup Focus Focus
+ * Translate a font (family) name string in fontconfig's font names
+ * syntax into an @c Elm_Font_Properties struct.
*
- * 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.
+ * @param font The font name and styles string
+ * @return the font properties struct
+ *
+ * @ingroup Fonts
+ *
+ * @note The reverse translation can be achived with
+ * elm_font_fontconfig_name_get(), for one style only (single font
+ * instance, not family).
+ */
+ EAPI Elm_Font_Properties *elm_font_properties_get(const char *font) EINA_ARG_NONNULL(1);
+
+ /**
+ * Free font properties return by elm_font_properties_get().
+ *
+ * @param efp the font properties struct
+ *
+ * @ingroup Fonts
+ */
+ EAPI void elm_font_properties_free(Elm_Font_Properties *efp) EINA_ARG_NONNULL(1);
+
+ /**
+ * Translate a font name, bound to a style, into fontconfig's font names
+ * syntax.
+ *
+ * @param name The font (family) name
+ * @param style The given style (may be @c NULL)
+ *
+ * @return the font name and style string
+ *
+ * @ingroup Fonts
+ *
+ * @note The reverse translation can be achived with
+ * elm_font_properties_get(), for one style only (single font
+ * instance, not family).
+ */
+ EAPI const char *elm_font_fontconfig_name_get(const char *name, const char *style) EINA_ARG_NONNULL(1);
+
+ /**
+ * Free the font string return by elm_font_fontconfig_name_get().
+ *
+ * @param efp the font properties struct
+ *
+ * @ingroup Fonts
+ */
+ EAPI void elm_font_fontconfig_name_free(const char *name) EINA_ARG_NONNULL(1);
+
+ /**
+ * Create a font hash table of available system fonts.
+ *
+ * One must call it with @p list being the return value of
+ * evas_font_available_list(). The hash will be indexed by font
+ * (family) names, being its values @c Elm_Font_Properties blobs.
+ *
+ * @param list The list of available system fonts, as returned by
+ * evas_font_available_list().
+ * @return the font hash.
+ *
+ * @ingroup Fonts
+ *
+ * @note The user is supposed to get it populated at least with 3
+ * default font families (Sans, Serif, Monospace), which should be
+ * present on most systems.
+ */
+ EAPI Eina_Hash *elm_font_available_hash_add(Eina_List *list);
+
+ /**
+ * Free the hash return by elm_font_available_hash_add().
+ *
+ * @param hash the hash to be freed.
+ *
+ * @ingroup Fonts
+ */
+ 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);
+
+ /**
+ * Set the configured finger size
+ *
+ * This sets the globally configured finger size in pixels
+ *
+ * @param size The finger size
+ * @ingroup Fingers
+ */
+ EAPI void elm_finger_size_set(Evas_Coord size);
+
+ /**
+ * Set the configured finger size for all applications on the display
+ *
+ * This sets the globally configured finger size in pixels for all
+ * applications on the display
+ *
+ * @param size The finger size
+ * @ingroup Fingers
+ */
+ 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
* some of these functions.
*/
+ /**
+ * Get the enable status of the focus highlight
+ *
+ * This gets whether the highlight on focused objects is enabled or not
+ * @ingroup Focus
+ */
EAPI Eina_Bool elm_focus_highlight_enabled_get(void);
+
+ /**
+ * Set the enable status of the focus highlight
+ *
+ * Set whether to show or not the highlight on focused objects
+ * @param enable Enable highlight if EINA_TRUE, disable otherwise
+ * @ingroup Focus
+ */
EAPI void elm_focus_highlight_enabled_set(Eina_Bool enable);
+
+ /**
+ * Get the enable status of the highlight animation
+ *
+ * Get whether the focus highlight, if enabled, will animate its switch from
+ * one object to the next
+ * @ingroup Focus
+ */
EAPI Eina_Bool elm_focus_highlight_animate_get(void);
+
+ /**
+ * Set the enable status of the highlight animation
+ *
+ * Set whether the focus highlight, if enabled, will animate its switch from
+ * one object to the next
+ * @param animate Enable animation if EINA_TRUE, disable otherwise
+ * @ingroup Focus
+ */
EAPI void elm_focus_highlight_animate_set(Eina_Bool animate);
/**
* @return @c EINA_TRUE, if the object is focused, @c EINA_FALSE if
* not (and on errors).
*
- * @see elm_object_focus()
+ * @see elm_object_focus_set()
*
* @ingroup Focus
*/
*/
EAPI Eina_Bool elm_object_focus_allow_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set custom focus chain.
+ *
+ * This function overwrites any previous custom focus chain within
+ * the list of objects. The previous list will be deleted and this list
+ * will be managed by elementary. After it is set, don't modify it.
+ *
+ * @note On focus cycle, only will be evaluated children of this container.
+ *
+ * @param obj The container object
+ * @param objs Chain of objects to pass focus
+ * @ingroup Focus
+ */
EAPI void elm_object_focus_custom_chain_set(Evas_Object *obj, Eina_List *objs) EINA_ARG_NONNULL(1);
+
+ /**
+ * Unset a custom focus chain on a given Elementary widget
+ *
+ * @param obj The container object to remove focus chain from
+ *
+ * Any focus chain previously set on @p obj (for its child objects)
+ * is removed entirely after this call.
+ *
+ * @ingroup Focus
+ */
EAPI void elm_object_focus_custom_chain_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get custom focus chain
+ *
+ * @param obj The container object
+ * @ingroup Focus
+ */
EAPI const Eina_List *elm_object_focus_custom_chain_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Append object to custom focus chain.
+ *
+ * @note If relative_child equal to NULL or not in custom chain, the object
+ * will be added in end.
+ *
+ * @note On focus cycle, only will be evaluated children of this container.
+ *
+ * @param obj The container object
+ * @param child The child to be added in custom chain
+ * @param relative_child The relative object to position the child
+ * @ingroup Focus
+ */
EAPI void elm_object_focus_custom_chain_append(Evas_Object *obj, Evas_Object *child, Evas_Object *relative_child) EINA_ARG_NONNULL(1, 2);
+
+ /**
+ * Prepend object to custom focus chain.
+ *
+ * @note If relative_child equal to NULL or not in custom chain, the object
+ * will be added in begin.
+ *
+ * @note On focus cycle, only will be evaluated children of this container.
+ *
+ * @param obj The container object
+ * @param child The child to be added in custom chain
+ * @param relative_child The relative object to position the child
+ * @ingroup Focus
+ */
EAPI void elm_object_focus_custom_chain_prepend(Evas_Object *obj, Evas_Object *child, Evas_Object *relative_child) EINA_ARG_NONNULL(1, 2);
+
+ /**
+ * Give focus to next object in object tree.
+ *
+ * Give focus to next object in focus chain of one object sub-tree.
+ * If the last object of chain already have focus, the focus will go to the
+ * first object of chain.
+ *
+ * @param obj The object root of sub-tree
+ * @param dir Direction to cycle the focus
+ *
+ * @ingroup Focus
+ */
EAPI void elm_object_focus_cycle(Evas_Object *obj, Elm_Focus_Direction dir) EINA_ARG_NONNULL(1);
+
+ /**
+ * Give focus to near object in one direction.
+ *
+ * Give focus to near object in direction of one object.
+ * If none focusable object in given direction, the focus will not change.
+ *
+ * @param obj The reference object
+ * @param x Horizontal component of direction to focus
+ * @param y Vertical component of direction to focus
+ *
+ * @ingroup Focus
+ */
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).
+ * 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,
*/
EAPI Eina_Bool elm_object_tree_unfocusable_get(const Evas_Object *obj); EINA_ARG_NONNULL(1);
+ /**
+ * @defgroup Scrolling Scrolling
+ *
+ * These are functions setting how scrollable views in Elementary
+ * widgets should behave on user interaction.
+ *
+ * @{
+ */
+
+ /**
+ * Get whether scrollers should bounce when they reach their
+ * viewport's edge during a scroll.
+ *
+ * @return the thumb scroll bouncing state
+ *
+ * This is the default behavior for touch screens, in general.
+ * @ingroup Scrolling
+ */
EAPI Eina_Bool elm_scroll_bounce_enabled_get(void);
+
+ /**
+ * Set whether scrollers should bounce when they reach their
+ * viewport's edge during a scroll.
+ *
+ * @param enabled the thumb scroll bouncing state
+ *
+ * @see elm_thumbscroll_bounce_enabled_get()
+ * @ingroup Scrolling
+ */
EAPI void elm_scroll_bounce_enabled_set(Eina_Bool enabled);
+
+ /**
+ * Set whether scrollers should bounce when they reach their
+ * viewport's edge during a scroll, for all Elementary application
+ * windows.
+ *
+ * @param enabled the thumb scroll bouncing state
+ *
+ * @see elm_thumbscroll_bounce_enabled_get()
+ * @ingroup Scrolling
+ */
EAPI void elm_scroll_bounce_enabled_all_set(Eina_Bool enabled);
+
+ /**
+ * Get the amount of inertia a scroller will impose at bounce
+ * animations.
+ *
+ * @return the thumb scroll bounce friction
+ *
+ * @ingroup Scrolling
+ */
EAPI double elm_scroll_bounce_friction_get(void);
+
+ /**
+ * Set the amount of inertia a scroller will impose at bounce
+ * animations.
+ *
+ * @param friction the thumb scroll bounce friction
+ *
+ * @see elm_thumbscroll_bounce_friction_get()
+ * @ingroup Scrolling
+ */
EAPI void elm_scroll_bounce_friction_set(double friction);
+
+ /**
+ * Set the amount of inertia a scroller will impose at bounce
+ * animations, for all Elementary application windows.
+ *
+ * @param friction the thumb scroll bounce friction
+ *
+ * @see elm_thumbscroll_bounce_friction_get()
+ * @ingroup Scrolling
+ */
EAPI void elm_scroll_bounce_friction_all_set(double friction);
+
+ /**
+ * Get the amount of inertia a <b>paged</b> scroller will impose at
+ * page fitting animations.
+ *
+ * @return the page scroll friction
+ *
+ * @ingroup Scrolling
+ */
EAPI double elm_scroll_page_scroll_friction_get(void);
+
+ /**
+ * Set the amount of inertia a <b>paged</b> scroller will impose at
+ * page fitting animations.
+ *
+ * @param friction the page scroll friction
+ *
+ * @see elm_thumbscroll_page_scroll_friction_get()
+ * @ingroup Scrolling
+ */
EAPI void elm_scroll_page_scroll_friction_set(double friction);
+
+ /**
+ * Set the amount of inertia a <b>paged</b> scroller will impose at
+ * page fitting animations, for all Elementary application windows.
+ *
+ * @param friction the page scroll friction
+ *
+ * @see elm_thumbscroll_page_scroll_friction_get()
+ * @ingroup Scrolling
+ */
EAPI void elm_scroll_page_scroll_friction_all_set(double friction);
+
+ /**
+ * Get the amount of inertia a scroller will impose at region bring
+ * animations.
+ *
+ * @return the bring in scroll friction
+ *
+ * @ingroup Scrolling
+ */
EAPI double elm_scroll_bring_in_scroll_friction_get(void);
+
+ /**
+ * Set the amount of inertia a scroller will impose at region bring
+ * animations.
+ *
+ * @param friction the bring in scroll friction
+ *
+ * @see elm_thumbscroll_bring_in_scroll_friction_get()
+ * @ingroup Scrolling
+ */
EAPI void elm_scroll_bring_in_scroll_friction_set(double friction);
+
+ /**
+ * Set the amount of inertia a scroller will impose at region bring
+ * animations, for all Elementary application windows.
+ *
+ * @param friction the bring in scroll friction
+ *
+ * @see elm_thumbscroll_bring_in_scroll_friction_get()
+ * @ingroup Scrolling
+ */
EAPI void elm_scroll_bring_in_scroll_friction_all_set(double friction);
+
+ /**
+ * Get the amount of inertia scrollers will impose at animations
+ * triggered by Elementary widgets' zooming API.
+ *
+ * @return the zoom friction
+ *
+ * @ingroup Scrolling
+ */
EAPI double elm_scroll_zoom_friction_get(void);
+
+ /**
+ * Set the amount of inertia scrollers will impose at animations
+ * triggered by Elementary widgets' zooming API.
+ *
+ * @param friction the zoom friction
+ *
+ * @see elm_thumbscroll_zoom_friction_get()
+ * @ingroup Scrolling
+ */
EAPI void elm_scroll_zoom_friction_set(double friction);
+
+ /**
+ * Set the amount of inertia scrollers will impose at animations
+ * triggered by Elementary widgets' zooming API, for all Elementary
+ * application windows.
+ *
+ * @param friction the zoom friction
+ *
+ * @see elm_thumbscroll_zoom_friction_get()
+ * @ingroup Scrolling
+ */
EAPI void elm_scroll_zoom_friction_all_set(double friction);
+
+ /**
+ * Get whether scrollers should be draggable from any point in their
+ * views.
+ *
+ * @return the thumb scroll state
+ *
+ * @note This is the default behavior for touch screens, in general.
+ * @note All other functions namespaced with "thumbscroll" will only
+ * have effect if this mode is enabled.
+ *
+ * @ingroup Scrolling
+ */
EAPI Eina_Bool elm_scroll_thumbscroll_enabled_get(void);
+
+ /**
+ * Set whether scrollers should be draggable from any point in their
+ * views.
+ *
+ * @param enabled the thumb scroll state
+ *
+ * @see elm_thumbscroll_enabled_get()
+ * @ingroup Scrolling
+ */
EAPI void elm_scroll_thumbscroll_enabled_set(Eina_Bool enabled);
- EAPI void elm_scroll_thumbscroll_enabled_all_set(Eina_Bool enabled);
- EAPI unsigned int elm_scroll_thumbscroll_threshold_get(void);
- EAPI void elm_scroll_thumbscroll_threshold_set(unsigned int threshold);
+
+ /**
+ * Set whether scrollers should be draggable from any point in their
+ * views, for all Elementary application windows.
+ *
+ * @param enabled the thumb scroll state
+ *
+ * @see elm_thumbscroll_enabled_get()
+ * @ingroup Scrolling
+ */
+ EAPI void elm_scroll_thumbscroll_enabled_all_set(Eina_Bool enabled);
+
+ /**
+ * Get the number of pixels one should travel while dragging a
+ * scroller's view to actually trigger scrolling.
+ *
+ * @return the thumb scroll threshould
+ *
+ * One would use higher values for touch screens, in general, because
+ * of their inherent imprecision.
+ * @ingroup Scrolling
+ */
+ EAPI unsigned int elm_scroll_thumbscroll_threshold_get(void);
+
+ /**
+ * Set the number of pixels one should travel while dragging a
+ * scroller's view to actually trigger scrolling.
+ *
+ * @param threshold the thumb scroll threshould
+ *
+ * @see elm_thumbscroll_threshould_get()
+ * @ingroup Scrolling
+ */
+ EAPI void elm_scroll_thumbscroll_threshold_set(unsigned int threshold);
+
+ /**
+ * Set the number of pixels one should travel while dragging a
+ * scroller's view to actually trigger scrolling, for all Elementary
+ * application windows.
+ *
+ * @param threshold the thumb scroll threshould
+ *
+ * @see elm_thumbscroll_threshould_get()
+ * @ingroup Scrolling
+ */
EAPI void elm_scroll_thumbscroll_threshold_all_set(unsigned int threshold);
+
+ /**
+ * Get the minimum speed of mouse cursor movement which will trigger
+ * list self scrolling animation after a mouse up event
+ * (pixels/second).
+ *
+ * @return the thumb scroll momentum threshould
+ *
+ * @ingroup Scrolling
+ */
EAPI double elm_scroll_thumbscroll_momentum_threshold_get(void);
+
+ /**
+ * Set the minimum speed of mouse cursor movement which will trigger
+ * list self scrolling animation after a mouse up event
+ * (pixels/second).
+ *
+ * @param threshold the thumb scroll momentum threshould
+ *
+ * @see elm_thumbscroll_momentum_threshould_get()
+ * @ingroup Scrolling
+ */
EAPI void elm_scroll_thumbscroll_momentum_threshold_set(double threshold);
+
+ /**
+ * Set the minimum speed of mouse cursor movement which will trigger
+ * list self scrolling animation after a mouse up event
+ * (pixels/second), for all Elementary application windows.
+ *
+ * @param threshold the thumb scroll momentum threshould
+ *
+ * @see elm_thumbscroll_momentum_threshould_get()
+ * @ingroup Scrolling
+ */
EAPI void elm_scroll_thumbscroll_momentum_threshold_all_set(double threshold);
+
+ /**
+ * Get the amount of inertia a scroller will impose at self scrolling
+ * animations.
+ *
+ * @return the thumb scroll friction
+ *
+ * @ingroup Scrolling
+ */
EAPI double elm_scroll_thumbscroll_friction_get(void);
+
+ /**
+ * Set the amount of inertia a scroller will impose at self scrolling
+ * animations.
+ *
+ * @param friction the thumb scroll friction
+ *
+ * @see elm_thumbscroll_friction_get()
+ * @ingroup Scrolling
+ */
EAPI void elm_scroll_thumbscroll_friction_set(double friction);
+
+ /**
+ * Set the amount of inertia a scroller will impose at self scrolling
+ * animations, for all Elementary application windows.
+ *
+ * @param friction the thumb scroll friction
+ *
+ * @see elm_thumbscroll_friction_get()
+ * @ingroup Scrolling
+ */
EAPI void elm_scroll_thumbscroll_friction_all_set(double friction);
+
+ /**
+ * Get the amount of lag between your actual mouse cursor dragging
+ * movement and a scroller's view movement itself, while pushing it
+ * into bounce state manually.
+ *
+ * @return the thumb scroll border friction
+ *
+ * @ingroup Scrolling
+ */
EAPI double elm_scroll_thumbscroll_border_friction_get(void);
+
+ /**
+ * Set the amount of lag between your actual mouse cursor dragging
+ * movement and a scroller's view movement itself, while pushing it
+ * into bounce state manually.
+ *
+ * @param friction the thumb scroll border friction. @c 0.0 for
+ * perfect synchrony between two movements, @c 1.0 for maximum
+ * lag.
+ *
+ * @see elm_thumbscroll_border_friction_get()
+ * @note parameter value will get bound to 0.0 - 1.0 interval, always
+ *
+ * @ingroup Scrolling
+ */
EAPI void elm_scroll_thumbscroll_border_friction_set(double friction);
+
+ /**
+ * Set the amount of lag between your actual mouse cursor dragging
+ * movement and a scroller's view movement itself, while pushing it
+ * into bounce state manually, for all Elementary application windows.
+ *
+ * @param friction the thumb scroll border friction. @c 0.0 for
+ * perfect synchrony between two movements, @c 1.0 for maximum
+ * lag.
+ *
+ * @see elm_thumbscroll_border_friction_get()
+ * @note parameter value will get bound to 0.0 - 1.0 interval, always
+ *
+ * @ingroup Scrolling
+ */
EAPI void elm_scroll_thumbscroll_border_friction_all_set(double friction);
+ /**
+ * @}
+ */
+
+ /**
+ * @defgroup Scrollhints Scrollhints
+ *
+ * Objects when inside a scroller can scroll, but this may not always be
+ * desirable in certain situations. This allows an object to hint to itself
+ * and parents to "not scroll" in one of 2 ways. If any child object of a
+ * scroller has pushed a scroll freeze or hold then it affects all parent
+ * scrollers until all children have released them.
+ *
+ * 1. To hold on scrolling. This means just flicking and dragging may no
+ * longer scroll, but pressing/dragging near an edge of the scroller will
+ * still scroll. This is automatically used by the entry object when
+ * selecting text.
+ *
+ * 2. To totally freeze scrolling. This means it stops. until
+ * popped/released.
+ *
+ * @{
+ */
+
+ /**
+ * Push the scroll hold by 1
+ *
+ * This increments the scroll hold count by one. If it is more than 0 it will
+ * take effect on the parents of the indicated object.
+ *
+ * @param obj The object
+ * @ingroup Scrollhints
+ */
EAPI void elm_object_scroll_hold_push(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Pop the scroll hold by 1
+ *
+ * This decrements the scroll hold count by one. If it is more than 0 it will
+ * take effect on the parents of the indicated object.
+ *
+ * @param obj The object
+ * @ingroup Scrollhints
+ */
EAPI void elm_object_scroll_hold_pop(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Push the scroll freeze by 1
+ *
+ * This increments the scroll freeze count by one. If it is more
+ * than 0 it will take effect on the parents of the indicated
+ * object.
+ *
+ * @param obj The object
+ * @ingroup Scrollhints
+ */
EAPI void elm_object_scroll_freeze_push(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Pop the scroll freeze by 1
+ *
+ * This decrements the scroll freeze count by one. If it is more
+ * than 0 it will take effect on the parents of the indicated
+ * object.
+ *
+ * @param obj The object
+ * @ingroup Scrollhints
+ */
EAPI void elm_object_scroll_freeze_pop(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Lock the scrolling of the given widget (and thus all parents)
+ *
+ * This locks the given object from scrolling in the X axis (and implicitly
+ * also locks all parent scrollers too from doing the same).
+ *
+ * @param obj The object
+ * @param lock The lock state (1 == locked, 0 == unlocked)
+ * @ingroup Scrollhints
+ */
EAPI void elm_object_scroll_lock_x_set(Evas_Object *obj, Eina_Bool lock) EINA_ARG_NONNULL(1);
+
+ /**
+ * Lock the scrolling of the given widget (and thus all parents)
+ *
+ * This locks the given object from scrolling in the Y axis (and implicitly
+ * also locks all parent scrollers too from doing the same).
+ *
+ * @param obj The object
+ * @param lock The lock state (1 == locked, 0 == unlocked)
+ * @ingroup Scrollhints
+ */
EAPI void elm_object_scroll_lock_y_set(Evas_Object *obj, Eina_Bool lock) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the scrolling lock of the given widget
+ *
+ * This gets the lock for X axis scrolling.
+ *
+ * @param obj The object
+ * @ingroup Scrollhints
+ */
EAPI Eina_Bool elm_object_scroll_lock_x_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the scrolling lock of the given widget
+ *
+ * This gets the lock for X axis scrolling.
+ *
+ * @param obj The object
+ * @ingroup Scrollhints
+ */
EAPI Eina_Bool elm_object_scroll_lock_y_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * @}
+ */
+
+ /**
+ * Send a signal to the widget edje object.
+ *
+ * This function sends a signal to the edje object of the obj. An
+ * edje program can respond to a signal by specifying matching
+ * 'signal' and 'source' fields.
+ *
+ * @param obj The object
+ * @param emission The signal's name.
+ * @param source The signal's source.
+ * @ingroup General
+ */
EAPI void elm_object_signal_emit(Evas_Object *obj, const char *emission, const char *source) EINA_ARG_NONNULL(1);
+
+ /**
+ * Add a callback for a signal emitted by widget edje object.
+ *
+ * This function connects a callback function to a signal emitted by the
+ * edje object of the obj.
+ * Globs can occur in either the emission or source name.
+ *
+ * @param obj The object
+ * @param emission The signal's name.
+ * @param source The signal's source.
+ * @param func The callback function to be executed when the signal is
+ * emitted.
+ * @param data A pointer to data to pass in to the callback function.
+ * @ingroup General
+ */
EAPI void elm_object_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data) EINA_ARG_NONNULL(1, 4);
+
+ /**
+ * Remove a signal-triggered callback from a widget edje object.
+ *
+ * This function removes a callback, previoulsy attached to a
+ * signal emitted by the edje object of the obj. The parameters
+ * emission, source and func must match exactly those passed to a
+ * previous call to elm_object_signal_callback_add(). The data
+ * pointer that was passed to this call will be returned.
+ *
+ * @param obj The object
+ * @param emission The signal's name.
+ * @param source The signal's source.
+ * @param func The callback function to be executed when the signal is
+ * emitted.
+ * @return The data pointer
+ * @ingroup General
+ */
EAPI void *elm_object_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func) EINA_ARG_NONNULL(1, 4);
+ /**
+ * Add a callback for input events (key up, key down, mouse wheel)
+ * on a given Elementary widget
+ *
+ * @param obj The widget to add an event callback on
+ * @param func The callback function to be executed when the event
+ * happens
+ * @param data Data to pass in to @p func
+ *
+ * Every widget in an Elementary interface set to receive focus,
+ * with elm_object_focus_allow_set(), will propagate @b all of its
+ * key up, key down and mouse wheel input events up to its parent
+ * object, and so on. All of the focusable ones in this chain which
+ * had an event callback set, with this call, will be able to treat
+ * those events. There are two ways of making the propagation of
+ * these event upwards in the tree of widgets to @b cease:
+ * - Just return @c EINA_TRUE on @p func. @c EINA_FALSE will mean
+ * the event was @b not processed, so the propagation will go on.
+ * - The @c event_info pointer passed to @p func will contain the
+ * event's structure and, if you OR its @c event_flags inner
+ * value to @c EVAS_EVENT_FLAG_ON_HOLD, you're telling Elementary
+ * one has already handled it, thus killing the event's
+ * propagation, too.
+ *
+ * @note Your event callback will be issued on those events taking
+ * place only if no other child widget of @obj has consumed the
+ * event already.
+ *
+ * @note Not to be confused with @c
+ * evas_object_event_callback_add(), which will add event callbacks
+ * per type on general Evas objects (no event propagation
+ * infrastructure taken in account).
+ *
+ * @note Not to be confused with @c
+ * elm_object_signal_callback_add(), which will add callbacks to @b
+ * signals coming from a widget's theme, not input events.
+ *
+ * @note Not to be confused with @c
+ * edje_object_signal_callback_add(), which does the same as
+ * elm_object_signal_callback_add(), but directly on an Edje
+ * object.
+ *
+ * @note Not to be confused with @c
+ * evas_object_smart_callback_add(), which adds callbacks to smart
+ * objects' <b>smart events</b>, and not input events.
+ *
+ * @see elm_object_event_callback_del()
+ *
+ * @ingroup General
+ */
EAPI void elm_object_event_callback_add(Evas_Object *obj, Elm_Event_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
+
+ /**
+ * Remove an event callback from a widget.
+ *
+ * This function removes a callback, previoulsy attached to event emission
+ * by the @p obj.
+ * The parameters func and data must match exactly those passed to
+ * a previous call to elm_object_event_callback_add(). The data pointer that
+ * was passed to this call will be returned.
+ *
+ * @param obj The object
+ * @param func The callback function to be executed when the event is
+ * emitted.
+ * @param data Data to pass in to the callback function.
+ * @return The data pointer
+ * @ingroup General
+ */
EAPI void *elm_object_event_callback_del(Evas_Object *obj, Elm_Event_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
/**
*/
EAPI void elm_coords_finger_size_adjust(int times_w, Evas_Coord *w, int times_h, Evas_Coord *h);
+ /**
+ * Get the duration for occuring long press event.
+ *
+ * @return Timeout for long press event
+ * @ingroup Longpress
+ */
EAPI double elm_longpress_timeout_get(void);
+
+ /**
+ * Set the duration for occuring long press event.
+ *
+ * @param lonpress_timeout Timeout for long press event
+ * @ingroup Longpress
+ */
EAPI void elm_longpress_timeout_set(double longpress_timeout);
- /* debug
+ /**
+ * @defgroup Debug Debug
* don't use it unless you are sure
+ *
+ * @{
+ */
+
+ /**
+ * Print Tree object hierarchy in stdout
+ *
+ * @param obj The root object
+ * @ingroup Debug
*/
EAPI void elm_object_tree_dump(const Evas_Object *top);
+
+ /**
+ * Print Elm Objects tree hierarchy in file as dot(graphviz) syntax.
+ *
+ * @param obj The root object
+ * @param file The path of output file
+ * @ingroup Debug
+ */
EAPI void elm_object_tree_dot_dump(const Evas_Object *top, const char *file);
+ /**
+ * @}
+ */
- /* theme */
/**
* @defgroup Theme Theme
*
* for more information.
*/
EAPI Elm_Theme *elm_object_theme_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get a data item from a theme
+ *
+ * @param th The theme, or NULL for default theme
+ * @param key The data key to search with
+ * @return The data value, or NULL on failure
+ *
+ * This function is used to return data items from edc in @p th, an overlay, or an extension.
+ * It works the same way as edje_file_data_get() except that the return is stringshared.
+ */
+ EAPI const char *elm_theme_data_get(Elm_Theme *th, const char *key) EINA_ARG_NONNULL(2);
/**
* @}
*/
* @}
*/
/* X specific calls - won't work on non-x engines (return 0) */
+
+ /**
+ * Get the Ecore_X_Window of an Evas_Object
+ *
+ * @param obj The object
+ *
+ * @return The Ecore_X_Window of @p obj
+ *
+ * @ingroup Win
+ */
EAPI Ecore_X_Window elm_win_xwindow_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
/* smart callbacks called:
* "delete,request" - the user requested to delete the window
* "focus,in" - window got focus
* @ingroup Icon
*/
EAPI void elm_icon_file_get(const Evas_Object *obj, const char **file, const char **group) EINA_ARG_NONNULL(1);
- 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_thumb_set(Evas_Object *obj, const char *file, const char *group) EINA_ARG_NONNULL(1, 2);
/**
* Set the icon by icon standards names.
*
*/
EAPI Eina_Bool elm_icon_no_scale_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
- * Set if the object is (up/down) resizeable.
+ * Set if the object is (up/down) resizable.
*
* @param obj The icon object
- * @param scale_up A bool to set if the object is resizeable up. Default is
+ * @param scale_up A bool to set if the object is resizable up. Default is
* @c EINA_TRUE.
- * @param scale_down A bool to set if the object is resizeable down. Default
+ * @param scale_down A bool to set if the object is resizable down. Default
* is @c EINA_TRUE.
*
* This function limits the icon object resize ability. If @p scale_up is set to
*/
EAPI void elm_icon_scale_set(Evas_Object *obj, Eina_Bool scale_up, Eina_Bool scale_down) EINA_ARG_NONNULL(1);
/**
- * Get if the object is (up/down) resizeable.
+ * Get if the object is (up/down) resizable.
*
* @param obj The icon object
- * @param scale_up A bool to set if the object is resizeable up
- * @param scale_down A bool to set if the object is resizeable down
+ * @param scale_up A bool to set if the object is resizable up
+ * @param scale_down A bool to set if the object is resizable down
*
* @see elm_icon_scale_set()
*
* @ingroup Icon
*/
EAPI Elm_Icon_Lookup_Order elm_icon_order_lookup_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Get if the icon supports animation or not.
+ *
+ * @param obj The icon object
+ * @return @c EINA_TRUE if the icon supports animation,
+ * @c EINA_FALSE otherwise.
+ *
+ * Return if this elm icon's image can be animated. Currently Evas only
+ * supports gif animation. If the return value is EINA_FALSE, other
+ * elm_icon_animated_XXX APIs won't work.
+ * @ingroup Icon
+ */
+ EAPI Eina_Bool elm_icon_animated_available_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set animation mode of the icon.
+ *
+ * @param obj The icon object
+ * @param anim @c EINA_TRUE if the object do animation job,
+ * @c EINA_FALSE otherwise. Default is @c EINA_FALSE.
+ *
+ * Even though elm icon's file can be animated,
+ * sometimes appication developer want to just first page of image.
+ * In that time, don't call this function, because default value is EINA_FALSE
+ * Only when you want icon support anition,
+ * use this function and set animated to EINA_TURE
+ * @ingroup Icon
+ */
+ EAPI void elm_icon_animated_set(Evas_Object *obj, Eina_Bool animated) EINA_ARG_NONNULL(1);
+ /**
+ * Get animation mode of the icon.
+ *
+ * @param obj The icon object
+ * @return The animation mode of the icon object
+ * @see elm_icon_animated_set
+ * @ingroup Icon
+ */
+ EAPI Eina_Bool elm_icon_animated_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Set animation play mode of the icon.
+ *
+ * @param obj The icon object
+ * @param play @c EINA_TRUE the object play animation images,
+ * @c EINA_FALSE otherwise. Default is @c EINA_FALSE.
+ *
+ * If you want to play elm icon's animation, you set play to EINA_TURE.
+ * For example, you make gif player using this set/get API and click event.
+ *
+ * 1. Click event occurs
+ * 2. Check play flag using elm_icon_animaged_play_get
+ * 3. If elm icon was playing, set play to EINA_FALSE.
+ * Then animation will be stopped and vice versa
+ * @ingroup Icon
+ */
+ EAPI void elm_icon_animated_play_set(Evas_Object *obj, Eina_Bool play) EINA_ARG_NONNULL(1);
+ /**
+ * Get animation play mode of the icon.
+ *
+ * @param obj The icon object
+ * @return The play mode of the icon object
+ *
+ * @see elm_icon_animated_lay_get
+ * @ingroup Icon
+ */
+ EAPI Eina_Bool elm_icon_animated_play_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* @}
*
* @image html img/widget/image/preview-00.png
* @image latex img/widget/image/preview-00.eps
+
*
* An object that allows one to load an image file to it. It can be used
* anywhere like any other elementary widget.
*/
EAPI Eina_Bool elm_image_no_scale_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
- * Set if the object is (up/down) resizeable.
+ * Set if the object is (up/down) resizable.
*
* @param obj The image object
- * @param scale_up A bool to set if the object is resizeable up. Default is
+ * @param scale_up A bool to set if the object is resizable up. Default is
* @c EINA_TRUE.
- * @param scale_down A bool to set if the object is resizeable down. Default
+ * @param scale_down A bool to set if the object is resizable down. Default
* is @c EINA_TRUE.
*
* This function limits the image resize ability. If @p scale_up is set to
*/
EAPI void elm_image_scale_set(Evas_Object *obj, Eina_Bool scale_up, Eina_Bool scale_down) EINA_ARG_NONNULL(1);
/**
- * Get if the object is (up/down) resizeable.
+ * Get if the object is (up/down) resizable.
*
* @param obj The image object
- * @param scale_up A bool to set if the object is resizeable up
- * @param scale_down A bool to set if the object is resizeable down
+ * @param scale_up A bool to set if the object is resizable up
+ * @param scale_down A bool to set if the object is resizable down
*
* @see elm_image_scale_set()
*
*/
EAPI Eina_Bool elm_image_aspect_ratio_retained_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- /* smart callbacks called:
- * "clicked" - the user clicked the image
- */
-
/**
* @}
*/
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_Cb func) EINA_ARG_NONNULL(1);
- EAPI void elm_glview_del_func_set(Evas_Object *obj, Elm_GLView_Func_Cb func) EINA_ARG_NONNULL(1);
- EAPI void elm_glview_resize_func_set(Evas_Object *obj, Elm_GLView_Func_Cb func) EINA_ARG_NONNULL(1);
- EAPI void elm_glview_render_func_set(Evas_Object *obj, Elm_GLView_Func_Cb func) EINA_ARG_NONNULL(1);
- EAPI void elm_glview_changed_set(Evas_Object *obj) EINA_ARG_NONNULL(1);
-
- /* box */
/**
- * @defgroup Box Box
+ * @defgroup GLView
*
- * @image html img/widget/box/preview-00.png
+ * A simple GLView widget that allows GL rendering.
+ *
+ * Signals that you can add callbacks for are:
+ *
+ * @{
+ */
+
+ /**
+ * Add a new glview to the parent
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ *
+ * @ingroup GLView
+ */
+ EAPI Evas_Object *elm_glview_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+
+ /**
+ * Sets the size of the glview
+ *
+ * @param obj The glview object
+ * @param width width of the glview object
+ * @param height height of the glview object
+ *
+ * @ingroup GLView
+ */
+ EAPI void elm_glview_size_set(Evas_Object *obj, Evas_Coord width, Evas_Coord height) EINA_ARG_NONNULL(1);
+
+ /**
+ * Gets the size of the glview.
+ *
+ * @param obj The glview object
+ * @param width width of the glview object
+ * @param height height of the glview object
+ *
+ * Note that this function returns the actual image size of the
+ * glview. This means that when the scale policy is set to
+ * ELM_GLVIEW_RESIZE_POLICY_SCALE, it'll return the non-scaled
+ * size.
+ *
+ * @ingroup GLView
+ */
+ EAPI void elm_glview_size_get(const Evas_Object *obj, Evas_Coord *width, Evas_Coord *height) EINA_ARG_NONNULL(1);
+
+ /**
+ * Gets the gl api struct for gl rendering
+ *
+ * @param obj The glview object
+ * @return The api object or NULL if it cannot be created
+ *
+ * @ingroup GLView
+ */
+ EAPI Evas_GL_API *elm_glview_gl_api_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the mode of the GLView. Supports Three simple modes.
+ *
+ * @param obj The glview object
+ * @param mode The mode Options OR'ed enabling Alpha, Depth, Stencil.
+ * @return True if set properly.
+ *
+ * @ingroup GLView
+ */
+ EAPI Eina_Bool elm_glview_mode_set(Evas_Object *obj, Elm_GLView_Mode mode) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the resize policy for the glview object.
+ *
+ * @param obj The glview object.
+ * @param policy The scaling policy.
+ *
+ * By default, the resize policy is set to
+ * ELM_GLVIEW_RESIZE_POLICY_RECREATE. When resize is called it
+ * destroys the previous surface and recreates the newly specified
+ * size. If the policy is set to ELM_GLVIEW_RESIZE_POLICY_SCALE,
+ * however, glview only scales the image object and not the underlying
+ * GL Surface.
+ *
+ * @ingroup GLView
+ */
+ EAPI Eina_Bool elm_glview_resize_policy_set(Evas_Object *obj, Elm_GLView_Resize_Policy policy) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the render policy for the glview object.
+ *
+ * @param obj The glview object.
+ * @param policy The render policy.
+ *
+ * By default, the render policy is set to
+ * ELM_GLVIEW_RENDER_POLICY_ON_DEMAND. This policy is set such
+ * that during the render loop, glview is only redrawn if it needs
+ * to be redrawn. (i.e. When it is visible) If the policy is set to
+ * ELM_GLVIEWW_RENDER_POLICY_ALWAYS, it redraws regardless of
+ * whether it is visible/need redrawing or not.
+ *
+ * @ingroup GLView
+ */
+ EAPI Eina_Bool elm_glview_render_policy_set(Evas_Object *obj, Elm_GLView_Render_Policy policy) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the init function that runs once in the main loop.
+ *
+ * @param obj The glview object.
+ * @param func The init function to be registered.
+ *
+ * The registered init function gets called once during the render loop.
+ *
+ * @ingroup GLView
+ */
+ EAPI void elm_glview_init_func_set(Evas_Object *obj, Elm_GLView_Func_Cb func) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the render function that runs in the main loop.
+ *
+ * @param obj The glview object.
+ * @param func The delete function to be registered.
+ *
+ * The registered del function gets called when GLView object is deleted.
+ *
+ * @ingroup GLView
+ */
+ EAPI void elm_glview_del_func_set(Evas_Object *obj, Elm_GLView_Func_Cb func) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the resize function that gets called when resize happens.
+ *
+ * @param obj The glview object.
+ * @param func The resize function to be registered.
+ *
+ * @ingroup GLView
+ */
+ EAPI void elm_glview_resize_func_set(Evas_Object *obj, Elm_GLView_Func_Cb func) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the render function that runs in the main loop.
+ *
+ * @param obj The glview object.
+ * @param func The render function to be registered.
+ *
+ * @ingroup GLView
+ */
+ EAPI void elm_glview_render_func_set(Evas_Object *obj, Elm_GLView_Func_Cb func) EINA_ARG_NONNULL(1);
+
+ /**
+ * Notifies that there has been changes in the GLView.
+ *
+ * @param obj The glview object.
+ *
+ * @ingroup GLView
+ */
+ EAPI void elm_glview_changed_set(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * @}
+ */
+
+ /* box */
+ /**
+ * @defgroup Box Box
+ *
+ * @image html img/widget/box/preview-00.png
* @image latex img/widget/box/preview-00.eps width=\textwidth
*
* @image html img/box.png
EAPI void elm_box_align_get(const Evas_Object *obj, double *horizontal, double *vertical) EINA_ARG_NONNULL(1);
/**
+ * Force the box to recalculate its children packing.
+ *
+ * If any children was added or removed, box will not calculate the
+ * values immediately rather leaving it to the next main loop
+ * iteration. While this is great as it would save lots of
+ * recalculation, whenever you need to get the position of a just
+ * added item you must force recalculate before doing so.
+ *
+ * @param obj The box object.
+ */
+ EAPI void elm_box_recalculate(Evas_Object *obj);
+
+ /**
* Set the layout defining function to be used by the box
*
* Whenever anything changes that requires the box in @p obj to recalculate
* @defgroup Button Button
*
* @image html img/widget/button/preview-00.png
+ * @image latex img/widget/button/preview-00.eps
* @image html img/widget/button/preview-01.png
+ * @image latex img/widget/button/preview-01.eps
* @image html img/widget/button/preview-02.png
+ * @image latex img/widget/button/preview-02.eps
*
* 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.
* @defgroup File_Selector_Button File Selector Button
*
* @image html img/widget/fileselector_button/preview-00.png
+ * @image latex img/widget/fileselector_button/preview-00.eps
* @image html img/widget/fileselector_button/preview-01.png
+ * @image latex img/widget/fileselector_button/preview-01.eps
* @image html img/widget/fileselector_button/preview-02.png
+ * @image latex img/widget/fileselector_button/preview-02.eps
*
* This is a button that, when clicked, creates an Elementary
* window (or inner window) <b> with a @ref Fileselector "file
* @param policy_v Vertical scrollbar policy
*
* This sets the scrollbar visibility policy for the given scroller.
- * ELM_SCROLLER_POLICY_AUTO means the scrollber is made visible if it is
+ * ELM_SCROLLER_POLICY_AUTO means the scrollbar is made visible if it is
* needed, and otherwise kept hidden. ELM_SCROLLER_POLICY_ON turns it on all
* the time, and ELM_SCROLLER_POLICY_OFF always keeps it off. This applies
* respectively for the horizontal and vertical scrollbars.
*/
EAPI void elm_scroller_page_size_set(Evas_Object *obj, Evas_Coord h_pagesize, Evas_Coord v_pagesize) EINA_ARG_NONNULL(1);
/**
+ * @brief Get scroll current page number.
+ *
+ * @param obj The scroller object
+ * @param h_pagenumber The horizontal page number
+ * @param v_pagenumber The vertical page number
+ *
+ * The page number starts from 0. 0 is the first page.
+ * Current page means the page which meet the top-left of the viewport.
+ * If there are two or more pages in the viewport, it returns the number of page
+ * which meet the top-left of the viewport.
+ *
+ * @see elm_scroller_last_page_get()
+ * @see elm_scroller_page_show()
+ * @see elm_scroller_page_brint_in()
+ */
+ EAPI void elm_scroller_current_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Get scroll last page number.
+ *
+ * @param obj The scroller object
+ * @param h_pagenumber The horizontal page number
+ * @param v_pagenumber The vertical page number
+ *
+ * The page number starts from 0. 0 is the first page.
+ * This returns the last page number among the pages.
+ *
+ * @see elm_scroller_current_page_get()
+ * @see elm_scroller_page_show()
+ * @see elm_scroller_page_brint_in()
+ */
+ EAPI void elm_scroller_last_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber) EINA_ARG_NONNULL(1);
+ /**
+ * Show a specific virtual region within the scroller content object by page number.
+ *
+ * @param obj The scroller object
+ * @param h_pagenumber The horizontal page number
+ * @param v_pagenumber The vertical page number
+ *
+ * 0, 0 of the indicated page is located at the top-left of the viewport.
+ * This will jump to the page directly without animation.
+ *
+ * Example of usage:
+ *
+ * @code
+ * sc = elm_scroller_add(win);
+ * elm_scroller_content_set(sc, content);
+ * elm_scroller_page_relative_set(sc, 1, 0);
+ * elm_scroller_current_page_get(sc, &h_page, &v_page);
+ * elm_scroller_page_show(sc, h_page + 1, v_page);
+ * @endcode
+ *
+ * @see elm_scroller_page_bring_in()
+ */
+ EAPI void elm_scroller_page_show(Evas_Object *obj, int h_pagenumber, int v_pagenumber) EINA_ARG_NONNULL(1);
+ /**
+ * Show a specific virtual region within the scroller content object by page number.
+ *
+ * @param obj The scroller object
+ * @param h_pagenumber The horizontal page number
+ * @param v_pagenumber The vertical page number
+ *
+ * 0, 0 of the indicated page is located at the top-left of the viewport.
+ * This will slide to the page with animation.
+ *
+ * Example of usage:
+ *
+ * @code
+ * sc = elm_scroller_add(win);
+ * elm_scroller_content_set(sc, content);
+ * elm_scroller_page_relative_set(sc, 1, 0);
+ * elm_scroller_last_page_get(sc, &h_page, &v_page);
+ * elm_scroller_page_bring_in(sc, h_page, v_page);
+ * @endcode
+ *
+ * @see elm_scroller_page_show()
+ */
+ EAPI void elm_scroller_page_bring_in(Evas_Object *obj, int h_pagenumber, int v_pagenumber) EINA_ARG_NONNULL(1);
+ /**
* @brief Show a specific virtual region within the scroller content object.
*
* @param obj The scroller object
* of the existing text parts in the Edje group implementing the
* item's theme. This function @b must return a strdup'()ed string,
* as the caller will free() it when done. See
- * #GridItemLabelGetFunc.
+ * #Elm_Gengrid_Item_Label_Get_Cb.
* - @c func.icon_get - This function is called when an item object
* is actually created. The @c data parameter will point to the
* same data passed to elm_gengrid_item_append() and related item
* item's theme. It must return @c NULL, when no icon is desired,
* or a valid object handle, otherwise. The object will be deleted
* by the gengrid on its deletion or when the item is "unrealized".
- * See #GridItemIconGetFunc.
+ * See #Elm_Gengrid_Item_Icon_Get_Cb.
* - @c func.state_get - This function is called when an item
* object is actually created. The @c data parameter will point to
* the same data passed to elm_gengrid_item_append() and related
* with @c "elm,state,XXX,active" and @c "elm" as "emission" and
* "source" arguments, respectively, when the state is true (the
* default is false), where @c XXX is the name of the (state) part.
- * See #GridItemStateGetFunc.
+ * See #Elm_Gengrid_Item_State_Get_Cb.
* - @c func.del - This is called when elm_gengrid_item_del() is
* called on an item or elm_gengrid_clear() is called on the
* gengrid. This is intended for use when gengrid items are
* deleted, so any data attached to the item (e.g. its data
- * parameter on creation) can be deleted. See #GridItemDelFunc.
+ * parameter on creation) can be deleted. See #Elm_Gengrid_Item_Del_Cb.
*
* @section Gengrid_Usage_Hints Usage hints
*
* is the gengrid item that was activated.
* - @c "clicked,double" - The user has double-clicked an item.
* The @c event_info parameter is the gengrid item that was double-clicked.
+ * - @c "longpressed" - This is called when the item is pressed for a certain
+ * amount of time. By default it's 1 second.
* - @c "selected" - The user has made an item selected. The
* @c event_info parameter is the gengrid item that was selected.
* - @c "unselected" - The user has made an item unselected. The
* - @c "changed" - Called when an item is added, removed, resized
* or moved and when the gengrid is resized or gets "horizontal"
* property changes.
+ * - @c "scroll,anim,start" - This is called when scrolling animation has
+ * started.
+ * - @c "scroll,anim,stop" - This is called when scrolling animation has
+ * stopped.
* - @c "drag,start,up" - Called when the item in the gengrid has
* been dragged (not scrolled) up.
* - @c "drag,start,down" - Called when the item in the gengrid has
* started.
* - @c "scroll,drag,stop" - called when dragging the content has
* stopped.
+ * - @c "scroll,edge,top" - This is called when the gengrid is scrolled until
+ * the top edge.
+ * - @c "scroll,edge,bottom" - This is called when the gengrid is scrolled
+ * until the bottom edge.
+ * - @c "scroll,edge,left" - This is called when the gengrid is scrolled
+ * until the left edge.
+ * - @c "scroll,edge,right" - This is called when the gengrid is scrolled
+ * until the right edge.
*
- * List of gendrid examples:
+ * List of gengrid examples:
* @li @ref gengrid_example
*/
typedef struct _Elm_Gengrid_Item_Class Elm_Gengrid_Item_Class; /**< Gengrid item class definition structs */
typedef struct _Elm_Gengrid_Item_Class_Func Elm_Gengrid_Item_Class_Func; /**< Class functions for gengrid item classes. */
typedef struct _Elm_Gengrid_Item Elm_Gengrid_Item; /**< Gengrid item handles */
- typedef char *(*GridItemLabelGetFunc) (void *data, Evas_Object *obj, const char *part); /**< Label fetching class function for gengrid item classes. */
- typedef Evas_Object *(*GridItemIconGetFunc) (void *data, Evas_Object *obj, const char *part); /**< Icon fetching class function for gengrid item classes. */
- typedef Eina_Bool (*GridItemStateGetFunc) (void *data, Evas_Object *obj, const char *part); /**< State fetching class function for gengrid item classes. */
- typedef void (*GridItemDelFunc) (void *data, Evas_Object *obj); /**< Deletion class function for gengrid item classes. */
+ typedef char *(*Elm_Gengrid_Item_Label_Get_Cb) (void *data, Evas_Object *obj, const char *part); /**< Label fetching class function for gengrid item classes. */
+ typedef Evas_Object *(*Elm_Gengrid_Item_Icon_Get_Cb) (void *data, Evas_Object *obj, const char *part); /**< Icon fetching class function for gengrid item classes. */
+ typedef Eina_Bool (*Elm_Gengrid_Item_State_Get_Cb) (void *data, Evas_Object *obj, const char *part); /**< State fetching class function for gengrid item classes. */
+ typedef void (*Elm_Gengrid_Item_Del_Cb) (void *data, Evas_Object *obj); /**< Deletion class function for gengrid item classes. */
+
+ typedef char *(*GridItemLabelGetFunc) (void *data, Evas_Object *obj, const char *part) EINA_DEPRECATED; /** DEPRECATED. Use Elm_Gengrid_Item_Label_Get_Cb. */
+ typedef Evas_Object *(*GridItemIconGetFunc) (void *data, Evas_Object *obj, const char *part) EINA_DEPRECATED; /** DEPRECATED. Use Elm_Gengrid_Item_Icon_Get_Cb. */
+ typedef Eina_Bool (*GridItemStateGetFunc) (void *data, Evas_Object *obj, const char *part) EINA_DEPRECATED; /** DEPRECATED. Use Elm_Gengrid_Item_State_Get_Cb. */
+ typedef void (*GridItemDelFunc) (void *data, Evas_Object *obj) EINA_DEPRECATED; /** DEPRECATED. Use Elm_Gengrid_Item_Del_Cb. */
/**
* @struct _Elm_Gengrid_Item_Class
const char *item_style;
struct _Elm_Gengrid_Item_Class_Func
{
- GridItemLabelGetFunc label_get;
- GridItemIconGetFunc icon_get;
- GridItemStateGetFunc state_get;
- GridItemDelFunc del;
+ Elm_Gengrid_Item_Label_Get_Cb label_get;
+ Elm_Gengrid_Item_Icon_Get_Cb icon_get;
+ Elm_Gengrid_Item_State_Get_Cb state_get;
+ Elm_Gengrid_Item_Del_Cb del;
} func;
}; /**< #Elm_Gengrid_Item_Class member definitions */
* This function inserts a new gengrid widget on the canvas.
*
* @see elm_gengrid_item_size_set()
+ * @see elm_gengrid_group_item_size_set()
* @see elm_gengrid_horizontal_set()
* @see elm_gengrid_item_append()
* @see elm_gengrid_item_del()
EAPI void elm_gengrid_item_size_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
/**
+ * Set the size for the group items of a given gengrid widget
+ *
+ * @param obj The gengrid object.
+ * @param w The group items' width.
+ * @param h The group items' height;
+ *
+ * A gengrid, after creation, has still no information on the size
+ * to give to each of its cells. So, you most probably will end up
+ * with squares one @ref Fingers "finger" wide, the default
+ * size. Use this function to force a custom size for you group items,
+ * making them as big as you wish.
+ *
+ * @see elm_gengrid_group_item_size_get()
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_group_item_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the size set for the group items of a given gengrid widget
+ *
+ * @param obj The gengrid object.
+ * @param w Pointer to a variable where to store the group items' width.
+ * @param h Pointer to a variable where to store the group items' height.
+ *
+ * @note Use @c NULL pointers on the size values you're not
+ * interested in: they'll be ignored by the function.
+ *
+ * @see elm_gengrid_group_item_size_get() for more details
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_group_item_size_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
+
+ /**
* Set the items grid's alignment within a given gengrid widget
*
* @param obj The gengrid object.
* @c EINA_FALSE otherwise
*
* This will make items in @p obj selectable or not. In the latter
- * case, any user interacion on the gendrid items will neither make
+ * case, any user interaction on the gengrid items will neither make
* them appear selected nor them call their selection callback
* functions.
*
EAPI void elm_gengrid_page_size_set(Evas_Object *obj, Evas_Coord h_pagesize, Evas_Coord v_pagesize) EINA_ARG_NONNULL(1);
/**
+ * @brief Get gengrid current page number.
+ *
+ * @param obj The gengrid object
+ * @param h_pagenumber The horizontal page number
+ * @param v_pagenumber The vertical page number
+ *
+ * The page number starts from 0. 0 is the first page.
+ * Current page means the page which meet the top-left of the viewport.
+ * If there are two or more pages in the viewport, it returns the number of page
+ * which meet the top-left of the viewport.
+ *
+ * @see elm_gengrid_last_page_get()
+ * @see elm_gengrid_page_show()
+ * @see elm_gengrid_page_brint_in()
+ */
+ EAPI void elm_gengrid_current_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber) EINA_ARG_NONNULL(1);
+
+ /**
+ * @brief Get scroll last page number.
+ *
+ * @param obj The gengrid object
+ * @param h_pagenumber The horizontal page number
+ * @param v_pagenumber The vertical page number
+ *
+ * The page number starts from 0. 0 is the first page.
+ * This returns the last page number among the pages.
+ *
+ * @see elm_gengrid_current_page_get()
+ * @see elm_gengrid_page_show()
+ * @see elm_gengrid_page_brint_in()
+ */
+ EAPI void elm_gengrid_last_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber) EINA_ARG_NONNULL(1);
+
+ /**
+ * Show a specific virtual region within the gengrid content object by page number.
+ *
+ * @param obj The gengrid object
+ * @param h_pagenumber The horizontal page number
+ * @param v_pagenumber The vertical page number
+ *
+ * 0, 0 of the indicated page is located at the top-left of the viewport.
+ * This will jump to the page directly without animation.
+ *
+ * Example of usage:
+ *
+ * @code
+ * sc = elm_gengrid_add(win);
+ * elm_gengrid_content_set(sc, content);
+ * elm_gengrid_page_relative_set(sc, 1, 0);
+ * elm_gengrid_current_page_get(sc, &h_page, &v_page);
+ * elm_gengrid_page_show(sc, h_page + 1, v_page);
+ * @endcode
+ *
+ * @see elm_gengrid_page_bring_in()
+ */
+ EAPI void elm_gengrid_page_show(const Evas_Object *obj, int h_pagenumber, int v_pagenumber) EINA_ARG_NONNULL(1);
+
+ /**
+ * Show a specific virtual region within the gengrid content object by page number.
+ *
+ * @param obj The gengrid object
+ * @param h_pagenumber The horizontal page number
+ * @param v_pagenumber The vertical page number
+ *
+ * 0, 0 of the indicated page is located at the top-left of the viewport.
+ * This will slide to the page with animation.
+ *
+ * Example of usage:
+ *
+ * @code
+ * sc = elm_gengrid_add(win);
+ * elm_gengrid_content_set(sc, content);
+ * elm_gengrid_page_relative_set(sc, 1, 0);
+ * elm_gengrid_last_page_get(sc, &h_page, &v_page);
+ * elm_gengrid_page_bring_in(sc, h_page, v_page);
+ * @endcode
+ *
+ * @see elm_gengrid_page_show()
+ */
+ EAPI void elm_gengrid_page_bring_in(const Evas_Object *obj, int h_pagenumber, int v_pagenumber) EINA_ARG_NONNULL(1);
+
+ /**
* Set for what direction a given gengrid widget will expand while
* placing its items.
*
* @ingroup Layout
*/
EAPI void elm_layout_sizing_eval(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Sets a specific cursor for an edje part.
+ *
+ * @param obj The layout object.
+ * @param part_name a part from loaded edje group.
+ * @param cursor cursor name to use, see Elementary_Cursor.h
+ *
+ * @return EINA_TRUE on success or EINA_FALSE on failure, that may be
+ * part not exists or it has "mouse_events: 0".
+ *
+ * @ingroup Layout
+ */
EAPI Eina_Bool elm_layout_part_cursor_set(Evas_Object *obj, const char *part_name, const char *cursor) EINA_ARG_NONNULL(1, 2);
+
+ /**
+ * Get the cursor to be shown when mouse is over an edje part
+ *
+ * @param obj The layout object.
+ * @param part_name a part from loaded edje group.
+ * @return the cursor name.
+ *
+ * @ingroup Layout
+ */
EAPI const char *elm_layout_part_cursor_get(const Evas_Object *obj, const char *part_name) EINA_ARG_NONNULL(1, 2);
+
+ /**
+ * Unsets a cursor previously set with elm_layout_part_cursor_set().
+ *
+ * @param obj The layout object.
+ * @param part_name a part from loaded edje group, that had a cursor set
+ * with elm_layout_part_cursor_set().
+ *
+ * @ingroup Layout
+ */
EAPI void elm_layout_part_cursor_unset(Evas_Object *obj, const char *part_name) EINA_ARG_NONNULL(1, 2);
+
+ /**
+ * Sets a specific cursor style for an edje part.
+ *
+ * @param obj The layout object.
+ * @param part_name a part from loaded edje group.
+ * @param style the theme style to use (default, transparent, ...)
+ *
+ * @return EINA_TRUE on success or EINA_FALSE on failure, that may be
+ * part not exists or it did not had a cursor set.
+ *
+ * @ingroup Layout
+ */
EAPI Eina_Bool elm_layout_part_cursor_style_set(Evas_Object *obj, const char *part_name, const char *style) EINA_ARG_NONNULL(1, 2);
+
+ /**
+ * Gets a specific cursor style for an edje part.
+ *
+ * @param obj The layout object.
+ * @param part_name a part from loaded edje group.
+ *
+ * @return the theme style in use, defaults to "default". If the
+ * object does not have a cursor set, then NULL is returned.
+ *
+ * @ingroup Layout
+ */
EAPI const char *elm_layout_part_cursor_style_get(const Evas_Object *obj, const char *part_name) EINA_ARG_NONNULL(1, 2);
+
+ /**
+ * Sets if the cursor set should be searched on the theme or should use
+ * the provided by the engine, only.
+ *
+ * @note before you set if should look on theme you should define a
+ * cursor with elm_layout_part_cursor_set(). By default it will only
+ * look for cursors provided by the engine.
+ *
+ * @param obj The layout object.
+ * @param part_name a part from loaded edje group.
+ * @param engine_only if cursors should be just provided by the engine
+ * or should also search on widget's theme as well
+ *
+ * @return EINA_TRUE on success or EINA_FALSE on failure, that may be
+ * part not exists or it did not had a cursor set.
+ *
+ * @ingroup Layout
+ */
EAPI Eina_Bool elm_layout_part_cursor_engine_only_set(Evas_Object *obj, const char *part_name, Eina_Bool engine_only) EINA_ARG_NONNULL(1, 2);
- EAPI Eina_Bool elm_layout_part_cursor_engine_only_get(const Evas_Object *obj, const char *part_name) EINA_ARG_NONNULL(1, 2);
+
+ /**
+ * Gets a specific cursor engine_only for an edje part.
+ *
+ * @param obj The layout object.
+ * @param part_name a part from loaded edje group.
+ *
+ * @return whenever the cursor is just provided by engine or also from theme.
+ *
+ * @ingroup Layout
+ */
+ EAPI Eina_Bool elm_layout_part_cursor_engine_only_get(const Evas_Object *obj, const char *part_name) EINA_ARG_NONNULL(1, 2);
+
/**
* @def elm_layout_icon_set
* Convienience macro to set the icon object in a layout that follows the
*/
EAPI void elm_entry_filter_accept_set(void *data, Evas_Object *entry, char **text) EINA_ARG_NONNULL(1, 3);
/**
+ * Set the input panel layout of the entry
+ *
+ * @param obj The entry object
+ * @param layout layout type
+ */
+ EAPI void elm_entry_input_panel_layout_set(Evas_Object *obj, Elm_Input_Panel_Layout layout) EINA_ARG_NONNULL(1);
+ /**
+ * Get the input panel layout of the entry
+ *
+ * @param obj The entry object
+ * @return layout type
+ *
+ * @see elm_entry_input_panel_layout_set
+ */
+ EAPI Elm_Input_Panel_Layout elm_entry_input_panel_layout_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
* @}
*/
* @defgroup Bubble Bubble
*
* @image html img/widget/bubble/preview-00.png
+ * @image latex img/widget/bubble/preview-00.eps
* @image html img/widget/bubble/preview-01.png
+ * @image latex img/widget/bubble/preview-01.eps
* @image html img/widget/bubble/preview-02.png
+ * @image latex img/widget/bubble/preview-02.eps
*
* @brief The Bubble is a widget to show text similarly to how speech is
* represented in comics.
* @return The string of set in the label
*
* This function gets the title of the bubble.
- * @deprecated use elm_object_text_set() instead.
+ * @deprecated use elm_object_text_get() instead.
*/
EINA_DEPRECATED EAPI const char *elm_bubble_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
*
* This function sets the info of the bubble. Where this appears depends on
* the selected corner.
- * @deprecated use elm_object_text_set() instead.
+ * @deprecated use elm_object_text_part_set() instead. (with "info" as the parameter).
*/
EINA_DEPRECATED EAPI void elm_bubble_info_set(Evas_Object *obj, const char *info) EINA_ARG_NONNULL(1);
/**
* @return The "info" string of the bubble
*
* This function gets the info text.
- * @deprecated use elm_object_text_set() instead.
+ * @deprecated use elm_object_text_part_get() instead. (with "info" as the parameter).
*/
EINA_DEPRECATED EAPI const char *elm_bubble_info_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* @}
*/
- /* photo */
+ /**
+ * @defgroup Photo Photo
+ *
+ * For displaying the photo of a person (contact). Simple yet
+ * with a very specific purpose.
+ *
+ * Signals that you can add callbacks for are:
+ *
+ * "clicked" - This is called when a user has clicked the photo
+ * "drag,start" - Someone started dragging the image out of the object
+ * "drag,end" - Dragged item was dropped (somewhere)
+ *
+ * @{
+ */
+
+ /**
+ * Add a new photo to the parent
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ *
+ * @ingroup Photo
+ */
EAPI Evas_Object *elm_photo_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the file that will be used as photo
+ *
+ * @param obj The photo object
+ * @param file The path to file that will be used as photo
+ *
+ * @return (1 = success, 0 = error)
+ *
+ * @ingroup Photo
+ */
EAPI Eina_Bool elm_photo_file_set(Evas_Object *obj, const char *file) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the file that will be used as thumbnail in the photo.
+ *
+ * @param obj The photo object.
+ * @param file The path to file that will be used as thumb.
+ * @param group The key used in case of an EET file.
+ *
+ * @ingroup Photo
+ */
+ EAPI void elm_photo_thumb_set(const Evas_Object *obj, const char *file, const char *group) EINA_ARG_NONNULL(1, 2);
+
+ /**
+ * Set the size that will be used on the photo
+ *
+ * @param obj The photo object
+ * @param size The size that the photo will be
+ *
+ * @ingroup Photo
+ */
EAPI void elm_photo_size_set(Evas_Object *obj, int size) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set if the photo should be completely visible or not.
+ *
+ * @param obj The photo object
+ * @param fill if true the photo will be completely visible
+ *
+ * @ingroup Photo
+ */
EAPI void elm_photo_fill_inside_set(Evas_Object *obj, Eina_Bool fill) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set editability of the photo.
+ *
+ * An editable photo can be dragged to or from, and can be cut or
+ * pasted too. Note that pasting an image or dropping an item on
+ * the image will delete the existing content.
+ *
+ * @param obj The photo object.
+ * @param set To set of clear editablity.
+ */
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
- * "drag,start" - Someone started dragging the image out of the object
- * "drag,end" - Dragged item was dropped (somewhere)
+
+ /**
+ * @}
*/
/* gesture layer */
* @ref Elm_Gesture_Zoom_Info is the info reported for @ref ELM_GESTURE_ZOOM gesture.
*
* @ref Elm_Gesture_Rotate_Info is the info reported for @ref ELM_GESTURE_ROTATE gesture.
- * */
+ *
+ *
+ * Gesture Layer Tweaks:
+ *
+ * Note that line, flick, gestures can start without the need to remove fingers from surface.
+ * When user fingers rests on same-spot gesture is ended and starts again when fingers moved.
+ *
+ * Setting glayer_continues_enable to false in @ref Config will change this behavior
+ * so gesture starts when user touches (a *DOWN event) touch-surface
+ * and ends when no fingers touches surface (a *UP event).
+ */
/**
* @enum _Elm_Gesture_Types
*
* @ingroup Thumb
*/
- EAPI void elm_thumb_file_get(const 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);
+ /**
+ * Get the path and key to the image or video generated by ethumb.
+ *
+ * One just need to make sure that the thumbnail was generated before getting
+ * its path; otherwise, the path will be NULL. One way to do that is by asking
+ * for the path when/after the "generate,stop" smart callback is called.
+ *
+ * @param obj The thumb object.
+ * @param file Pointer to thumb path.
+ * @param key Pointer to thumb key.
+ *
+ * @see elm_thumb_file_get()
+ *
+ * @ingroup Thumb
+ */
+ EAPI void elm_thumb_path_get(const Evas_Object *obj, const char **file, const char **key) EINA_ARG_NONNULL(1);
+ /**
+ * Set the animation state for the thumb object. If its content is an animated
+ * video, you may start/stop the animation or tell it to play continuously and
+ * looping.
+ *
+ * @param obj The thumb object.
+ * @param setting The animation setting.
+ *
+ * @see elm_thumb_file_set()
+ *
+ * @ingroup Thumb
+ */
+ EAPI void elm_thumb_animate_set(Evas_Object *obj, Elm_Thumb_Animation_Setting s) EINA_ARG_NONNULL(1);
+ /**
+ * Get the animation state for the thumb object.
+ *
+ * @param obj The thumb object.
+ * @return getting The animation setting or @c ELM_THUMB_ANIMATION_LAST,
+ * on errors.
+ *
+ * @see elm_thumb_animate_set()
+ *
+ * @ingroup Thumb
+ */
+ EAPI Elm_Thumb_Animation_Setting elm_thumb_animate_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * Get the ethumb_client handle so custom configuration can be made.
+ *
+ * @return Ethumb_Client instance or NULL.
+ *
+ * This must be called before the objects are created to be sure no object is
+ * visible and no generation started.
+ *
+ * Example of usage:
+ *
+ * @code
+ * #include <Elementary.h>
+ * #ifndef ELM_LIB_QUICKLAUNCH
+ * EAPI_MAIN int
+ * elm_main(int argc, char **argv)
+ * {
+ * Ethumb_Client *client;
+ *
+ * elm_need_ethumb();
+ *
+ * // ... your code
+ *
+ * client = elm_thumb_ethumb_client_get();
+ * if (!client)
+ * {
+ * ERR("could not get ethumb_client");
+ * return 1;
+ * }
+ * ethumb_client_size_set(client, 100, 100);
+ * ethumb_client_crop_align_set(client, 0.5, 0.5);
+ * // ... your code
+ *
+ * // Create elm_thumb objects here
+ *
+ * elm_run();
+ * elm_shutdown();
+ * return 0;
+ * }
+ * #endif
+ * ELM_MAIN()
+ * @endcode
+ *
+ * @note There's only one client handle for Ethumb, so once a configuration
+ * change is done to it, any other request for thumbnails (for any thumbnail
+ * object) will use that configuration. Thus, this configuration is global.
+ *
+ * @ingroup Thumb
+ */
+ EAPI void *elm_thumb_ethumb_client_get(void);
+ /**
+ * Get the ethumb_client connection state.
+ *
+ * @return EINA_TRUE if the client is connected to the server or EINA_FALSE
+ * otherwise.
+ */
+ EAPI Eina_Bool elm_thumb_ethumb_client_connected(void);
+ /**
+ * Make the thumbnail 'editable'.
+ *
+ * @param obj Thumb object.
+ * @param set Turn on or off editability. Default is @c EINA_FALSE.
+ *
+ * This means the thumbnail is a valid drag target for drag and drop, and can be
+ * cut or pasted too.
+ *
+ * @see elm_thumb_editable_get()
+ *
+ * @ingroup Thumb
+ */
+ EAPI Eina_Bool elm_thumb_editable_set(Evas_Object *obj, Eina_Bool edit) EINA_ARG_NONNULL(1);
+ /**
+ * Make the thumbnail 'editable'.
+ *
+ * @param obj Thumb object.
+ * @return Editability.
+ *
+ * This means the thumbnail is a valid drag target for drag and drop, and can be
+ * cut or pasted too.
+ *
+ * @see elm_thumb_editable_set()
+ *
+ * @ingroup Thumb
+ */
+ EAPI Eina_Bool elm_thumb_editable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * @}
+ */
+
+ /**
+ * @defgroup Web Web
+ *
+ * @image html img/widget/web/preview-00.png
+ * @image latex img/widget/web/preview-00.eps
+ *
+ * A web object is used for displaying web pages (HTML/CSS/JS)
+ * using WebKit-EFL. You must have compiled Elementary with
+ * ewebkit support.
+ *
+ * Signals that you can add callbacks for are:
+ * @li "download,request": A file download has been requested. Event info is
+ * a pointer to a Elm_Web_Download
+ * @li "editorclient,contents,changed": Editor client's contents changed
+ * @li "editorclient,selection,changed": Editor client's selection changed
+ * @li "frame,created": A new frame was created. Event info is an
+ * Evas_Object which can be handled with WebKit's ewk_frame API
+ * @li "icon,received": An icon was received by the main frame
+ * @li "inputmethod,changed": Input method changed. Event info is an
+ * Eina_Bool indicating whether it's enabled or not
+ * @li "js,windowobject,clear": JS window object has been cleared
+ * @li "link,hover,in": Mouse cursor is hovering over a link. Event info
+ * is a char *link[2], where the first string contains the URL the link
+ * points to, and the second one the title of the link
+ * @li "link,hover,out": Mouse cursor left the link
+ * @li "load,document,finished": Loading of a document finished. Event info
+ * is the frame that finished loading
+ * @li "load,error": Load failed. Event info is a pointer to
+ * Elm_Web_Frame_Load_Error
+ * @li "load,finished": Load finished. Event info is NULL on success, on
+ * error it's a pointer to Elm_Web_Frame_Load_Error
+ * @li "load,newwindow,show": A new window was created and is ready to be
+ * shown
+ * @li "load,progress": Overall load progress. Event info is a pointer to
+ * a double containing a value between 0.0 and 1.0
+ * @li "load,provisional": Started provisional load
+ * @li "load,started": Loading of a document started
+ * @li "menubar,visible,get": Queries if the menubar is visible. Event info
+ * is a pointer to Eina_Bool where the callback should set EINA_TRUE if
+ * the menubar is visible, or EINA_FALSE in case it's not
+ * @li "menubar,visible,set": Informs menubar visibility. Event info is
+ * an Eina_Bool indicating the visibility
+ * @li "popup,created": A dropdown widget was activated, requesting its
+ * popup menu to be created. Event info is a pointer to Elm_Web_Menu
+ * @li "popup,willdelete": The web object is ready to destroy the popup
+ * object created. Event info is a pointer to Elm_Web_Menu
+ * @li "ready": Page is fully loaded
+ * @li "scrollbars,visible,get": Queries visibility of scrollbars. Event
+ * info is a pointer to Eina_Bool where the visibility state should be set
+ * @li "scrollbars,visible,set": Informs scrollbars visibility. Event info
+ * is an Eina_Bool with the visibility state set
+ * @li "statusbar,text,set": Text of the statusbar changed. Even info is
+ * a string with the new text
+ * @li "statusbar,visible,get": Queries visibility of the status bar.
+ * Event info is a pointer to Eina_Bool where the visibility state should be
+ * set.
+ * @li "statusbar,visible,set": Informs statusbar visibility. Event info is
+ * an Eina_Bool with the visibility value
+ * @li "title,changed": Title of the main frame changed. Event info is a
+ * string with the new title
+ * @li "toolbars,visible,get": Queries visibility of toolbars. Event info
+ * is a pointer to Eina_Bool where the visibility state should be set
+ * @li "toolbars,visible,set": Informs the visibility of toolbars. Event
+ * info is an Eina_Bool with the visibility state
+ * @li "tooltip,text,set": Show and set text of a tooltip. Event info is
+ * a string with the text to show
+ * @li "uri,changed": URI of the main frame changed. Event info is a string
+ * with the new URI
+ * @li "view,resized": The web object internal's view changed sized
+ * @li "windows,close,request": A JavaScript request to close the current
+ * window was requested
+ * @li "zoom,animated,end": Animated zoom finished
+ *
+ * available styles:
+ * - default
+ *
+ * An example of use of web:
+ *
+ * - @ref web_example_01 TBD
+ */
+
+ /**
+ * @addtogroup Web
+ * @{
+ */
+
+ /**
+ * Structure used to report load errors.
+ *
+ * Load errors are reported as signal by elm_web. All the strings are
+ * temporary references and should @b not be used after the signal
+ * callback returns. If it's required, make copies with strdup() or
+ * eina_stringshare_add() (they are not even guaranteed to be
+ * stringshared, so must use eina_stringshare_add() and not
+ * eina_stringshare_ref()).
+ */
+ typedef struct _Elm_Web_Frame_Load_Error Elm_Web_Frame_Load_Error;
+ /**
+ * Structure used to report load errors.
+ *
+ * Load errors are reported as signal by elm_web. All the strings are
+ * temporary references and should @b not be used after the signal
+ * callback returns. If it's required, make copies with strdup() or
+ * eina_stringshare_add() (they are not even guaranteed to be
+ * stringshared, so must use eina_stringshare_add() and not
+ * eina_stringshare_ref()).
+ */
+ struct _Elm_Web_Frame_Load_Error
+ {
+ int code; /**< Numeric error code */
+ Eina_Bool is_cancellation; /**< Error produced by cancelling a request */
+ const char *domain; /**< Error domain name */
+ const char *description; /**< Error description (already localized) */
+ const char *failing_url; /**< The URL that failed to load */
+ Evas_Object *frame; /**< Frame object that produced the error */
+ };
+
+ /**
+ * The possibles types that the items in a menu can be
+ */
+ typedef enum _Elm_Web_Menu_Item_Type Elm_Web_Menu_Item_Type;
+ /**
+ * The possibles types that the items in a menu can be
+ */
+ enum _Elm_Web_Menu_Item_Type
+ {
+ ELM_WEB_MENU_SEPARATOR,
+ ELM_WEB_MENU_GROUP,
+ ELM_WEB_MENU_OPTION
+ };
+
+ /**
+ * Structure describing the items in a menu
+ */
+ typedef struct _Elm_Web_Menu_Item Elm_Web_Menu_Item;
+ /**
+ * Structure describing the items in a menu
+ */
+ struct _Elm_Web_Menu_Item
+ {
+ const char *text; /**< The text for the item */
+ Elm_Web_Menu_Item_Type type; /**< The type of the item */
+ };
+
+ /**
+ * Structure describing the menu of a popup
+ *
+ * This structure will be passed as the @c event_info for the "popup,create"
+ * signal, which is emitted when a dropdown menu is opened. Users wanting
+ * to handle these popups by themselves should listen to this signal and
+ * set the @c handled property of the struct to @c EINA_TRUE. Leaving this
+ * property as @c EINA_FALSE means that the user will not handle the popup
+ * and the default implementation will be used.
+ *
+ * When the popup is ready to be dismissed, a "popup,willdelete" signal
+ * will be emitted to notify the user that it can destroy any objects and
+ * free all data related to it.
+ *
+ * @see elm_web_popup_selected_set()
+ * @see elm_web_popup_destroy()
+ */
+ typedef struct _Elm_Web_Menu Elm_Web_Menu;
+ /**
+ * Structure describing the menu of a popup
+ *
+ * This structure will be passed as the @c event_info for the "popup,create"
+ * signal, which is emitted when a dropdown menu is opened. Users wanting
+ * to handle these popups by themselves should listen to this signal and
+ * set the @c handled property of the struct to @c EINA_TRUE. Leaving this
+ * property as @c EINA_FALSE means that the user will not handle the popup
+ * and the default implementation will be used.
+ *
+ * When the popup is ready to be dismissed, a "popup,willdelete" signal
+ * will be emitted to notify the user that it can destroy any objects and
+ * free all data related to it.
+ *
+ * @see elm_web_popup_selected_set()
+ * @see elm_web_popup_destroy()
+ */
+ struct _Elm_Web_Menu
+ {
+ Eina_List *items; /**< List of #Elm_Web_Menu_Item */
+ int x; /**< The X position of the popup, relative to the elm_web object */
+ int y; /**< The Y position of the popup, relative to the elm_web object */
+ int width; /**< Width of the popup menu */
+ int height; /**< Height of the popup menu */
+
+ Eina_Bool handled : 1; /**< Set to @c EINA_TRUE by the user to indicate that the popup has been handled and the default implementation should be ignored. Leave as @c EINA_FALSE otherwise. */
+ };
+
+ typedef struct _Elm_Web_Download Elm_Web_Download;
+ struct _Elm_Web_Download
+ {
+ const char *url;
+ };
+
+ /**
+ * Opaque handler containing the features (such as statusbar, menubar, etc)
+ * that are to be set on a newly requested window.
+ */
+ typedef struct _Elm_Web_Window_Features Elm_Web_Window_Features;
+ /**
+ * Callback type for the create_window hook.
+ *
+ * The function parameters are:
+ * @li @p data User data pointer set when setting the hook function
+ * @li @p obj The elm_web object requesting the new window
+ * @li @p js Set to @c EINA_TRUE if the request was originated from
+ * JavaScript. @c EINA_FALSE otherwise.
+ * @li @p window_features A pointer of #Elm_Web_Window_Features indicating
+ * the features requested for the new window.
+ *
+ * The returned value of the function should be the @c elm_web widget where
+ * the request will be loaded. That is, if a new window or tab is created,
+ * the elm_web widget in it should be returned, and @b NOT the window
+ * object.
+ * Returning @c NULL should cancel the request.
+ *
+ * @see elm_web_window_create_hook_set()
+ */
+ typedef Evas_Object *(*Elm_Web_Window_Open)(void *data, Evas_Object *obj, Eina_Bool js, const Elm_Web_Window_Features *window_features);
+ /**
+ * Callback type for the JS alert hook.
+ *
+ * The function parameters are:
+ * @li @p data User data pointer set when setting the hook function
+ * @li @p obj The elm_web object requesting the new window
+ * @li @p message The message to show in the alert dialog
+ *
+ * The function should return the object representing the alert dialog.
+ * Elm_Web will run a second main loop to handle the dialog and normal
+ * flow of the application will be restored when the object is deleted, so
+ * the user should handle the popup properly in order to delete the object
+ * when the action is finished.
+ * If the function returns @c NULL the popup will be ignored.
+ *
+ * @see elm_web_dialog_alert_hook_set()
+ */
+ typedef Evas_Object *(*Elm_Web_Dialog_Alert)(void *data, Evas_Object *obj, const char *message);
+ /**
+ * Callback type for the JS confirm hook.
+ *
+ * The function parameters are:
+ * @li @p data User data pointer set when setting the hook function
+ * @li @p obj The elm_web object requesting the new window
+ * @li @p message The message to show in the confirm dialog
+ * @li @p ret Pointer where to store the user selection. @c EINA_TRUE if
+ * the user selected @c Ok, @c EINA_FALSE otherwise.
+ *
+ * The function should return the object representing the confirm dialog.
+ * Elm_Web will run a second main loop to handle the dialog and normal
+ * flow of the application will be restored when the object is deleted, so
+ * the user should handle the popup properly in order to delete the object
+ * when the action is finished.
+ * If the function returns @c NULL the popup will be ignored.
+ *
+ * @see elm_web_dialog_confirm_hook_set()
+ */
+ typedef Evas_Object *(*Elm_Web_Dialog_Confirm)(void *data, Evas_Object *obj, const char *message, Eina_Bool *ret);
+ /**
+ * Callback type for the JS prompt hook.
+ *
+ * The function parameters are:
+ * @li @p data User data pointer set when setting the hook function
+ * @li @p obj The elm_web object requesting the new window
+ * @li @p message The message to show in the prompt dialog
+ * @li @p def_value The default value to present the user in the entry
+ * @li @p value Pointer where to store the value given by the user. Must
+ * be a malloc'ed string or @c NULL if the user cancelled the popup.
+ * @li @p ret Pointer where to store the user selection. @c EINA_TRUE if
+ * the user selected @c Ok, @c EINA_FALSE otherwise.
+ *
+ * The function should return the object representing the prompt dialog.
+ * Elm_Web will run a second main loop to handle the dialog and normal
+ * flow of the application will be restored when the object is deleted, so
+ * the user should handle the popup properly in order to delete the object
+ * when the action is finished.
+ * If the function returns @c NULL the popup will be ignored.
+ *
+ * @see elm_web_dialog_prompt_hook_set()
+ */
+ typedef Evas_Object *(*Elm_Web_Dialog_Prompt)(void *data, Evas_Object *obj, const char *message, const char *def_value, char **value, Eina_Bool *ret);
+ /**
+ * Callback type for the JS file selector hook.
+ *
+ * The function parameters are:
+ * @li @p data User data pointer set when setting the hook function
+ * @li @p obj The elm_web object requesting the new window
+ * @li @p allows_multiple @c EINA_TRUE if multiple files can be selected.
+ * @li @p accept_types Mime types accepted
+ * @li @p selected Pointer where to store the list of malloc'ed strings
+ * containing the path to each file selected. Must be @c NULL if the file
+ * dialog is cancelled
+ * @li @p ret Pointer where to store the user selection. @c EINA_TRUE if
+ * the user selected @c Ok, @c EINA_FALSE otherwise.
+ *
+ * The function should return the object representing the file selector
+ * dialog.
+ * Elm_Web will run a second main loop to handle the dialog and normal
+ * flow of the application will be restored when the object is deleted, so
+ * the user should handle the popup properly in order to delete the object
+ * when the action is finished.
+ * If the function returns @c NULL the popup will be ignored.
+ *
+ * @see elm_web_dialog_file selector_hook_set()
+ */
+ typedef Evas_Object *(*Elm_Web_Dialog_File_Selector)(void *data, Evas_Object *obj, Eina_Bool allows_multiple, const char *accept_types, Eina_List **selected, Eina_Bool *ret);
+ /**
+ * Callback type for the JS console message hook.
+ *
+ * When a console message is added from JavaScript, any set function to the
+ * console message hook will be called for the user to handle. There is no
+ * default implementation of this hook.
+ *
+ * The function parameters are:
+ * @li @p data User data pointer set when setting the hook function
+ * @li @p obj The elm_web object that originated the message
+ * @li @p message The message sent
+ * @li @p line_number The line number
+ * @li @p source_id Source id
+ *
+ * @see elm_web_console_message_hook_set()
+ */
+ typedef void (*Elm_Web_Console_Message)(void *data, Evas_Object *obj, const char *message, unsigned int line_number, const char *source_id);
+ /**
+ * Add a new web object to the parent.
+ *
+ * @param parent The parent object.
+ * @return The new object or NULL if it cannot be created.
+ *
+ * @see elm_web_uri_set()
+ * @see elm_web_webkit_view_get()
+ */
+ EAPI Evas_Object *elm_web_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get internal ewk_view object from web object.
+ *
+ * Elementary may not provide some low level features of EWebKit,
+ * instead of cluttering the API with proxy methods we opted to
+ * return the internal reference. Be careful using it as it may
+ * interfere with elm_web behavior.
+ *
+ * @param obj The web object.
+ * @return The internal ewk_view object or NULL if it does not
+ * exist. (Failure to create or Elementary compiled without
+ * ewebkit)
+ *
+ * @see elm_web_add()
+ */
+ EAPI Evas_Object *elm_web_webkit_view_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Sets the function to call when a new window is requested
+ *
+ * This hook will be called when a request to create a new window is
+ * issued from the web page loaded.
+ * There is no default implementation for this feature, so leaving this
+ * unset or passing @c NULL in @p func will prevent new windows from
+ * opening.
+ *
+ * @param obj The web object where to set the hook function
+ * @param func The hook function to be called when a window is requested
+ * @param data User data
+ */
+ EAPI void elm_web_window_create_hook_set(Evas_Object *obj, Elm_Web_Window_Open func, void *data);
+ /**
+ * Sets the function to call when an alert dialog
+ *
+ * This hook will be called when a JavaScript alert dialog is requested.
+ * If no function is set or @c NULL is passed in @p func, the default
+ * implementation will take place.
+ *
+ * @param obj The web object where to set the hook function
+ * @param func The callback function to be used
+ * @param data User data
+ *
+ * @see elm_web_inwin_mode_set()
+ */
+ EAPI void elm_web_dialog_alert_hook_set(Evas_Object *obj, Elm_Web_Dialog_Alert func, void *data);
+ /**
+ * Sets the function to call when an confirm dialog
+ *
+ * This hook will be called when a JavaScript confirm dialog is requested.
+ * If no function is set or @c NULL is passed in @p func, the default
+ * implementation will take place.
+ *
+ * @param obj The web object where to set the hook function
+ * @param func The callback function to be used
+ * @param data User data
+ *
+ * @see elm_web_inwin_mode_set()
+ */
+ EAPI void elm_web_dialog_confirm_hook_set(Evas_Object *obj, Elm_Web_Dialog_Confirm func, void *data);
+ /**
+ * Sets the function to call when an prompt dialog
+ *
+ * This hook will be called when a JavaScript prompt dialog is requested.
+ * If no function is set or @c NULL is passed in @p func, the default
+ * implementation will take place.
+ *
+ * @param obj The web object where to set the hook function
+ * @param func The callback function to be used
+ * @param data User data
+ *
+ * @see elm_web_inwin_mode_set()
+ */
+ EAPI void elm_web_dialog_prompt_hook_set(Evas_Object *obj, Elm_Web_Dialog_Prompt func, void *data);
+ /**
+ * Sets the function to call when an file selector dialog
+ *
+ * This hook will be called when a JavaScript file selector dialog is
+ * requested.
+ * If no function is set or @c NULL is passed in @p func, the default
+ * implementation will take place.
+ *
+ * @param obj The web object where to set the hook function
+ * @param func The callback function to be used
+ * @param data User data
+ *
+ * @see elm_web_inwin_mode_set()
+ */
+ EAPI void elm_web_dialog_file_selector_hook_set(Evas_Object *obj, Elm_Web_Dialog_File_Selector func, void *data);
+ /**
+ * Sets the function to call when a console message is emitted from JS
+ *
+ * This hook will be called when a console message is emitted from
+ * JavaScript. There is no default implementation for this feature.
+ *
+ * @param obj The web object where to set the hook function
+ * @param func The callback function to be used
+ * @param data User data
+ */
+ EAPI void elm_web_console_message_hook_set(Evas_Object *obj, Elm_Web_Console_Message func, void *data);
+ /**
+ * Gets the status of the tab propagation
+ *
+ * @param obj The web object to query
+ * @return EINA_TRUE if tab propagation is enabled, EINA_FALSE otherwise
+ *
+ * @see elm_web_tab_propagate_set()
+ */
+ EAPI Eina_Bool elm_web_tab_propagate_get(const Evas_Object *obj);
+ /**
+ * Sets whether to use tab propagation
+ *
+ * If tab propagation is enabled, whenever the user presses the Tab key,
+ * Elementary will handle it and switch focus to the next widget.
+ * The default value is disabled, where WebKit will handle the Tab key to
+ * cycle focus though its internal objects, jumping to the next widget
+ * only when that cycle ends.
+ *
+ * @param obj The web object
+ * @param propagate Whether to propagate Tab keys to Elementary or not
+ */
+ EAPI void elm_web_tab_propagate_set(Evas_Object *obj, Eina_Bool propagate);
+ /**
+ * Sets the URI for the web object
+ *
+ * It must be a full URI, with resource included, in the form
+ * http://www.enlightenment.org or file:///tmp/something.html
+ *
+ * @param obj The web object
+ * @param uri The URI to set
+ * @return EINA_TRUE if the URI could be, EINA_FALSE if an error occurred
+ */
+ EAPI Eina_Bool elm_web_uri_set(Evas_Object *obj, const char *uri);
+ /**
+ * Gets the current URI for the object
+ *
+ * The returned string must not be freed and is guaranteed to be
+ * stringshared.
+ *
+ * @param obj The web object
+ * @return A stringshared internal string with the current URI, or NULL on
+ * failure
+ */
+ EAPI const char *elm_web_uri_get(const Evas_Object *obj);
+ /**
+ * Gets the current title
+ *
+ * The returned string must not be freed and is guaranteed to be
+ * stringshared.
+ *
+ * @param obj The web object
+ * @return A stringshared internal string with the current title, or NULL on
+ * failure
+ */
+ EAPI const char *elm_web_title_get(const Evas_Object *obj);
+ /**
+ * Sets the background color to be used by the web object
+ *
+ * This is the color that will be used by default when the loaded page
+ * does not set it's own. Color values are pre-multiplied.
+ *
+ * @param obj The web object
+ * @param r Red component
+ * @param g Green component
+ * @param b Blue component
+ * @param a Alpha component
+ */
+ EAPI void elm_web_bg_color_set(Evas_Object *obj, int r, int g, int b, int a);
+ /**
+ * Gets the background color to be used by the web object
+ *
+ * This is the color that will be used by default when the loaded page
+ * does not set it's own. Color values are pre-multiplied.
+ *
+ * @param obj The web object
+ * @param r Red component
+ * @param g Green component
+ * @param b Blue component
+ * @param a Alpha component
+ */
+ EAPI void elm_web_bg_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a);
+ /**
+ * Gets a copy of the currently selected text
+ *
+ * The string returned must be freed by the user when it's done with it.
+ *
+ * @param obj The web object
+ * @return A newly allocated string, or NULL if nothing is selected or an
+ * error occurred
+ */
+ EAPI char *elm_view_selection_get(const Evas_Object *obj);
+ /**
+ * Tells the web object which index in the currently open popup was selected
+ *
+ * When the user handles the popup creation from the "popup,created" signal,
+ * it needs to tell the web object which item was selected by calling this
+ * function with the index corresponding to the item.
+ *
+ * @param obj The web object
+ * @param index The index selected
+ *
+ * @see elm_web_popup_destroy()
+ */
+ EAPI void elm_web_popup_selected_set(Evas_Object *obj, int index);
+ /**
+ * Dismisses an open dropdown popup
+ *
+ * When the popup from a dropdown widget is to be dismissed, either after
+ * selecting an option or to cancel it, this function must be called, which
+ * will later emit an "popup,willdelete" signal to notify the user that
+ * any memory and objects related to this popup can be freed.
+ *
+ * @param obj The web object
+ * @return EINA_TRUE if the menu was successfully destroyed, or EINA_FALSE
+ * if there was no menu to destroy
+ */
+ EAPI Eina_Bool elm_web_popup_destroy(Evas_Object *obj);
+ /**
+ * Searches the given string in a document.
+ *
+ * @param obj The web object where to search the text
+ * @param string String to search
+ * @param case_sensitive If search should be case sensitive or not
+ * @param forward If search is from cursor and on or backwards
+ * @param wrap If search should wrap at the end
+ *
+ * @return @c EINA_TRUE if the given string was found, @c EINA_FALSE if not
+ * or failure
+ */
+ EAPI Eina_Bool elm_web_text_search(const Evas_Object *obj, const char *string, Eina_Bool case_sensitive, Eina_Bool forward, Eina_Bool wrap);
+ /**
+ * Marks matches of the given string in a document.
+ *
+ * @param obj The web object where to search text
+ * @param string String to match
+ * @param case_sensitive If match should be case sensitive or not
+ * @param highlight If matches should be highlighted
+ * @param limit Maximum amount of matches, or zero to unlimited
+ *
+ * @return number of matched @a string
+ */
+ EAPI unsigned int elm_web_text_matches_mark(Evas_Object *obj, const char *string, Eina_Bool case_sensitive, Eina_Bool highlight, unsigned int limit);
+ /**
+ * Clears all marked matches in the document
+ *
+ * @param obj The web object
+ *
+ * @return EINA_TRUE on success, EINA_FALSE otherwise
+ */
+ EAPI Eina_Bool elm_web_text_matches_unmark_all(Evas_Object *obj);
+ /**
+ * Sets whether to highlight the matched marks
+ *
+ * If enabled, marks set with elm_web_text_matches_mark() will be
+ * highlighted.
+ *
+ * @param obj The web object
+ * @param highlight Whether to highlight the marks or not
+ *
+ * @return EINA_TRUE on success, EINA_FALSE otherwise
+ */
+ EAPI Eina_Bool elm_web_text_matches_highlight_set(Evas_Object *obj, Eina_Bool highlight);
+ /**
+ * Gets whether highlighting marks is enabled
+ *
+ * @param The web object
+ *
+ * @return EINA_TRUE is marks are set to be highlighted, EINA_FALSE
+ * otherwise
+ */
+ EAPI Eina_Bool elm_web_text_matches_highlight_get(const Evas_Object *obj);
+ /**
+ * Gets the overall loading progress of the page
+ *
+ * Returns the estimated loading progress of the page, with a value between
+ * 0.0 and 1.0. This is an estimated progress accounting for all the frames
+ * included in the page.
+ *
+ * @param The web object
+ *
+ * @return A value between 0.0 and 1.0 indicating the progress, or -1.0 on
+ * failure
+ */
+ EAPI double elm_web_load_progress_get(const Evas_Object *obj);
+ /**
+ * Stops loading the current page
+ *
+ * Cancels the loading of the current page in the web object. This will
+ * cause a "load,error" signal to be emitted, with the is_cancellation
+ * flag set to EINA_TRUE.
+ *
+ * @param obj The web object
+ *
+ * @return EINA_TRUE if the cancel was successful, EINA_FALSE otherwise
+ */
+ EAPI Eina_Bool elm_web_stop(Evas_Object *obj);
/**
- * Get the path and key to the image or video generated by ethumb.
+ * Requests a reload of the current document in the object
*
- * One just need to make sure that the thumbnail was generated before getting
- * its path; otherwise, the path will be NULL. One way to do that is by asking
- * for the path when/after the "generate,stop" smart callback is called.
+ * @param obj The web object
*
- * @param obj The thumb object.
- * @param file Pointer to thumb path.
- * @param key Pointer to thumb key.
+ * @return EINA_TRUE on success, EINA_FALSE otherwise
+ */
+ EAPI Eina_Bool elm_web_reload(Evas_Object *obj);
+ /**
+ * Requests a reload of the current document, avoiding any existing caches
*
- * @see elm_thumb_file_get()
+ * @param obj The web object
*
- * @ingroup Thumb
+ * @return EINA_TRUE on success, EINA_FALSE otherwise
*/
- EAPI void elm_thumb_path_get(const Evas_Object *obj, const char **file, const char **key) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_web_reload_full(Evas_Object *obj);
/**
- * Set the animation state for the thumb object. If its content is an animated
- * video, you may start/stop the animation or tell it to play continuously and
- * looping.
+ * Goes back one step in the browsing history
*
- * @param obj The thumb object.
- * @param setting The animation setting.
+ * This is equivalent to calling elm_web_object_navigate(obj, -1);
*
- * @see elm_thumb_file_set()
+ * @param obj The web object
*
- * @ingroup Thumb
+ * @return EINA_TRUE on success, EINA_FALSE otherwise
+ *
+ * @see elm_web_history_enable_set()
+ * @see elm_web_back_possible()
+ * @see elm_web_forward()
+ * @see elm_web_navigate()
*/
- EAPI void elm_thumb_animate_set(Evas_Object *obj, Elm_Thumb_Animation_Setting s) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_web_back(Evas_Object *obj);
/**
- * Get the animation state for the thumb object.
+ * Goes forward one step in the browsing history
*
- * @param obj The thumb object.
- * @return getting The animation setting or @c ELM_THUMB_ANIMATION_LAST,
- * on errors.
+ * This is equivalent to calling elm_web_object_navigate(obj, 1);
*
- * @see elm_thumb_animate_set()
+ * @param obj The web object
*
- * @ingroup Thumb
+ * @return EINA_TRUE on success, EINA_FALSE otherwise
+ *
+ * @see elm_web_history_enable_set()
+ * @see elm_web_forward_possible()
+ * @see elm_web_back()
+ * @see elm_web_navigate()
*/
- EAPI Elm_Thumb_Animation_Setting elm_thumb_animate_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_web_forward(Evas_Object *obj);
/**
- * Get the ethumb_client handle so custom configuration can be made.
+ * Jumps the given number of steps in the browsing history
*
- * @return Ethumb_Client instance or NULL.
+ * The @p steps value can be a negative integer to back in history, or a
+ * positive to move forward.
*
- * This must be called before the objects are created to be sure no object is
- * visible and no generation started.
+ * @param obj The web object
+ * @param steps The number of steps to jump
*
- * Example of usage:
+ * @return EINA_TRUE on success, EINA_FALSE on error or if not enough
+ * history exists to jump the given number of steps
*
- * @code
- * #include <Elementary.h>
- * #ifndef ELM_LIB_QUICKLAUNCH
- * EAPI int
- * elm_main(int argc, char **argv)
- * {
- * Ethumb_Client *client;
+ * @see elm_web_history_enable_set()
+ * @see elm_web_navigate_possible()
+ * @see elm_web_back()
+ * @see elm_web_forward()
+ */
+ EAPI Eina_Bool elm_web_navigate(Evas_Object *obj, int steps);
+ /**
+ * Queries whether it's possible to go back in history
*
- * elm_need_ethumb();
+ * @param obj The web object
*
- * // ... your code
+ * @return EINA_TRUE if it's possible to back in history, EINA_FALSE
+ * otherwise
+ */
+ EAPI Eina_Bool elm_web_back_possible(Evas_Object *obj);
+ /**
+ * Queries whether it's possible to go forward in history
*
- * client = elm_thumb_ethumb_client_get();
- * if (!client)
- * {
- * ERR("could not get ethumb_client");
- * return 1;
- * }
- * ethumb_client_size_set(client, 100, 100);
- * ethumb_client_crop_align_set(client, 0.5, 0.5);
- * // ... your code
+ * @param obj The web object
*
- * // Create elm_thumb objects here
+ * @return EINA_TRUE if it's possible to forward in history, EINA_FALSE
+ * otherwise
+ */
+ EAPI Eina_Bool elm_web_forward_possible(Evas_Object *obj);
+ /**
+ * Queries whether it's possible to jump the given number of steps
*
- * elm_run();
- * elm_shutdown();
- * return 0;
- * }
- * #endif
- * ELM_MAIN()
- * @endcode
+ * The @p steps value can be a negative integer to back in history, or a
+ * positive to move forward.
*
- * @note There's only one client handle for Ethumb, so once a configuration
- * change is done to it, any other request for thumbnails (for any thumbnail
- * object) will use that configuration. Thus, this configuration is global.
+ * @param obj The web object
+ * @param steps The number of steps to check for
*
- * @ingroup Thumb
+ * @return EINA_TRUE if enough history exists to perform the given jump,
+ * EINA_FALSE otherwise
*/
- EAPI void *elm_thumb_ethumb_client_get(void);
+ EAPI Eina_Bool elm_web_navigate_possible(Evas_Object *obj, int steps);
/**
- * Get the ethumb_client connection state.
+ * Gets whether browsing history is enabled for the given object
*
- * @return EINA_TRUE if the client is connected to the server or EINA_FALSE
- * otherwise.
+ * @param obj The web object
+ *
+ * @return EINA_TRUE if history is enabled, EINA_FALSE otherwise
*/
- EAPI Eina_Bool elm_thumb_ethumb_client_connected(void);
+ EAPI Eina_Bool elm_web_history_enable_get(const Evas_Object *obj);
/**
- * Make the thumbnail 'editable'.
+ * Enables or disables the browsing history
*
- * @param obj Thumb object.
- * @param set Turn on or off editability. Default is @c EINA_FALSE.
+ * @param obj The web object
+ * @param enable Whether to enable or disable the browsing history
+ */
+ EAPI void elm_web_history_enable_set(Evas_Object *obj, Eina_Bool enable);
+ /**
+ * Gets whether text-only zoom is set
*
- * This means the thumbnail is a valid drag target for drag and drop, and can be
- * cut or pasted too.
+ * @param obj The web object
*
- * @see elm_thumb_editable_get()
+ * @return EINA_TRUE if zoom is set to affect only text, EINA_FALSE
+ * otherwise
*
- * @ingroup Thumb
+ * @see elm_web_zoom_text_only_set()
*/
- EAPI Eina_Bool elm_thumb_editable_set(Evas_Object *obj, Eina_Bool edit) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_web_zoom_text_only_get(const Evas_Object *obj);
/**
- * Make the thumbnail 'editable'.
+ * Enables or disables zoom to affect only text
*
- * @param obj Thumb object.
- * @return Editability.
+ * If set, then the zoom level set to the page will only be applied on text,
+ * leaving other objects, such as images, at their original size.
*
- * This means the thumbnail is a valid drag target for drag and drop, and can be
- * cut or pasted too.
+ * @param obj The web object
+ * @param setting EINA_TRUE to use text-only zoom, EINA_FALSE to have zoom
+ * affect the entire page
+ */
+ EAPI void elm_web_zoom_text_only_set(Evas_Object *obj, Eina_Bool setting);
+ /**
+ * Sets the default dialogs to use an Inwin instead of a normal window
*
- * @see elm_thumb_editable_set()
+ * If set, then the default implementation for the JavaScript dialogs and
+ * file selector will be opened in an Inwin. Otherwise they will use a
+ * normal separated window.
*
- * @ingroup Thumb
+ * @param obj The web object
+ * @param value EINA_TRUE to use Inwin, EINA_FALSE to use a normal window
*/
- EAPI Eina_Bool elm_thumb_editable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_web_inwin_mode_set(Evas_Object *obj, Eina_Bool value);
+ /**
+ * Gets whether Inwin mode is set for the current object
+ *
+ * @param obj The web object
+ *
+ * @return EINA_TRUE if Inwin mode is set, EINA_FALSE otherwise
+ */
+ EAPI Eina_Bool elm_web_inwin_mode_get(const Evas_Object *obj);
+
+ EAPI void elm_web_window_features_ref(Elm_Web_Window_Features *wf);
+ EAPI void elm_web_window_features_unref(Elm_Web_Window_Features *wf);
+ EAPI void elm_web_window_features_bool_property_get(const Elm_Web_Window_Features *wf, Eina_Bool *toolbar_visible, Eina_Bool *statusbar_visible, Eina_Bool *scrollbars_visible, Eina_Bool *menubar_visible, Eina_Bool *locationbar_visble, Eina_Bool *fullscreen);
+ EAPI void elm_web_window_features_int_property_get(const Elm_Web_Window_Features *wf, int *x, int *y, int *w, int *h);
/**
* @}
EAPI Elm_Icon_Lookup_Order elm_toolbar_icon_order_lookup_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
+ * Set whether the toolbar should always have an item selected.
+ *
+ * @param obj The toolbar object.
+ * @param wrap @c EINA_TRUE to enable always-select mode or @c EINA_FALSE to
+ * disable it.
+ *
+ * This will cause the toolbar to always have an item selected, and clicking
+ * the selected item will not cause a selected event to be emitted. Enabling this mode
+ * will immediately select the first toolbar item.
+ *
+ * Always-selected is disabled by default.
+ *
+ * @see elm_toolbar_always_select_mode_get().
+ *
+ * @ingroup Toolbar
+ */
+ EAPI void elm_toolbar_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get whether the toolbar should always have an item selected.
+ *
+ * @param obj The toolbar object.
+ * @return @c EINA_TRUE means an item will always be selected, @c EINA_FALSE indicates
+ * that it is possible to have no items selected. If @p obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_toolbar_always_select_mode_set() for details.
+ *
+ * @ingroup Toolbar
+ */
+ EAPI Eina_Bool elm_toolbar_always_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
* Set whether the toolbar items' should be selected by the user or not.
*
* @param obj The toolbar object.
EAPI const char *elm_toolbar_item_icon_get(const Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
/**
+ * Get the object of @p item.
+ *
+ * @param item The toolbar item.
+ * @return The object
+ *
+ * @ingroup Toolbar
+ */
+ EAPI Evas_Object *elm_toolbar_item_object_get(const Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the icon object of @p item.
+ *
+ * @param item The toolbar item.
+ * @return The icon object
+ *
+ * @see elm_toolbar_item_icon_set() or elm_toolbar_item_icon_memfile_set() for details.
+ *
+ * @ingroup Toolbar
+ */
+ EAPI Evas_Object *elm_toolbar_item_icon_object_get(Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set the icon associated with @p item to an image in a binary buffer.
+ *
+ * @param item The toolbar item.
+ * @param img The binary data that will be used as an image
+ * @param size The size of binary data @p img
+ * @param format Optional format of @p img to pass to the image loader
+ * @param key Optional key of @p img to pass to the image loader (eg. if @p img is an edje file)
+ *
+ * @return (@c EINA_TRUE = success, @c EINA_FALSE = error)
+ *
+ * @note The icon image set by this function can be changed by
+ * elm_toolbar_item_icon_set().
+ *
+ * @ingroup Toolbar
+ */
+ EAPI Eina_Bool elm_toolbar_item_icon_memfile_set(Elm_Toolbar_Item *item, const void *img, size_t size, const char *format, const char *key) EINA_ARG_NONNULL(1);
+
+ /**
* Delete them item from the toolbar.
*
* @param item The item of toolbar to be deleted.
EAPI Eina_Bool elm_toolbar_item_cursor_engine_only_get(const Elm_Toolbar_Item *item) EINA_ARG_NONNULL(1);
/**
+ * Change a toolbar's orientation
+ * @param obj The toolbar object
+ * @param vertical If @c EINA_TRUE, the toolbar is vertical
+ * By default, a toolbar will be horizontal. Use this function to create a vertical toolbar.
+ * @ingroup Toolbar
+ */
+ EAPI void elm_toolbar_orientation_set(Evas_Object *obj, Eina_Bool vertical) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get a toolbar's orientation
+ * @param obj The toolbar object
+ * @return If @c EINA_TRUE, the toolbar is vertical
+ * By default, a toolbar will be horizontal. Use this function to determine whether a toolbar is vertical.
+ * @ingroup Toolbar
+ */
+ EAPI Eina_Bool elm_toolbar_orientation_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
* @}
*/
- /* tooltip */
+ /**
+ * @defgroup Tooltips Tooltips
+ *
+ * The Tooltip is an (internal, for now) smart object used to show a
+ * content in a frame on mouse hover of objects(or widgets), with
+ * tips/information about them.
+ *
+ * @{
+ */
+
EAPI double elm_tooltip_delay_get(void);
EAPI Eina_Bool elm_tooltip_delay_set(double delay);
EAPI void elm_object_tooltip_show(Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_object_tooltip_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_object_tooltip_style_set(Evas_Object *obj, const char *style) EINA_ARG_NONNULL(1);
EAPI const char *elm_object_tooltip_style_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_tooltip_size_restrict_disable(Evas_Object *obj, Eina_Bool disable); EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_tooltip_size_restrict_disabled_get(const Evas_Object *obj); EINA_ARG_NONNULL(1);
+
+ /**
+ * @}
+ */
+
+ /**
+ * @defgroup Cursors Cursors
+ *
+ * The Elementary cursor is an internal smart object used to
+ * customize the mouse cursor displayed over objects (or
+ * widgets). In the most common scenario, the cursor decoration
+ * comes from the graphical @b engine Elementary is running
+ * on. Those engines may provide different decorations for cursors,
+ * and Elementary provides functions to choose them (think of X11
+ * cursors, as an example).
+ *
+ * There's also the possibility of, besides using engine provided
+ * cursors, also use ones coming from Edje theming files. Both
+ * globally and per widget, Elementary makes it possible for one to
+ * make the cursors lookup to be held on engines only or on
+ * Elementary's theme file, too.
+ *
+ * @{
+ */
+
+ /**
+ * Set the cursor to be shown when mouse is over the object
+ *
+ * Set the cursor that will be displayed when mouse is over the
+ * object. The object can have only one cursor set to it, so if
+ * this function is called twice for an object, the previous set
+ * will be unset.
+ * If using X cursors, a definition of all the valid cursor names
+ * is listed on Elementary_Cursors.h. If an invalid name is set
+ * the default cursor will be used.
+ *
+ * @param obj the object being set a cursor.
+ * @param cursor the cursor name to be used.
+ *
+ * @ingroup Cursors
+ */
EAPI void elm_object_cursor_set(Evas_Object *obj, const char *cursor) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the cursor to be shown when mouse is over the object
+ *
+ * @param obj an object with cursor already set.
+ * @return the cursor name.
+ *
+ * @ingroup Cursors
+ */
EAPI const char *elm_object_cursor_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Unset cursor for object
+ *
+ * Unset cursor for object, and set the cursor to default if the mouse
+ * was over this object.
+ *
+ * @param obj Target object
+ * @see elm_object_cursor_set()
+ *
+ * @ingroup Cursors
+ */
EAPI void elm_object_cursor_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Sets a different style for this object cursor.
+ *
+ * @note before you set a style you should define a cursor with
+ * elm_object_cursor_set()
+ *
+ * @param obj an object with cursor already set.
+ * @param style the theme style to use (default, transparent, ...)
+ *
+ * @ingroup Cursors
+ */
EAPI void elm_object_cursor_style_set(Evas_Object *obj, const char *style) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the style for this object cursor.
+ *
+ * @param obj an object with cursor already set.
+ * @return style the theme style in use, defaults to "default". If the
+ * object does not have a cursor set, then NULL is returned.
+ *
+ * @ingroup Cursors
+ */
EAPI const char *elm_object_cursor_style_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set if the cursor set should be searched on the theme or should use
+ * the provided by the engine, only.
+ *
+ * @note before you set if should look on theme you should define a cursor
+ * with elm_object_cursor_set(). By default it will only look for cursors
+ * provided by the engine.
+ *
+ * @param obj an object with cursor already set.
+ * @param engine_only boolean to define it cursors should be looked only
+ * between the provided by the engine or searched on widget's theme as well.
+ *
+ * @ingroup Cursors
+ */
EAPI void elm_object_cursor_engine_only_set(Evas_Object *obj, Eina_Bool engine_only) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the cursor engine only usage for this object cursor.
+ *
+ * @param obj an object with cursor already set.
+ * @return engine_only boolean to define it cursors should be
+ * looked only between the provided by the engine or searched on
+ * widget's theme as well. If the object does not have a cursor
+ * set, then EINA_FALSE is returned.
+ *
+ * @ingroup Cursors
+ */
EAPI Eina_Bool elm_object_cursor_engine_only_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_tooltip_size_restrict_disable(Evas_Object *obj, Eina_Bool disable); EINA_ARG_NONNULL(1);
- EAPI Eina_Bool elm_tooltip_size_restrict_disabled_get(const Evas_Object *obj); EINA_ARG_NONNULL(1);
- /* cursors */
+ /**
+ * Get the configured cursor engine only usage
+ *
+ * This gets the globally configured exclusive usage of engine cursors.
+ *
+ * @return 1 if only engine cursors should be used
+ * @ingroup Cursors
+ */
EAPI int elm_cursor_engine_only_get(void);
+
+ /**
+ * Set the configured cursor engine only usage
+ *
+ * This sets the globally configured exclusive usage of engine cursors.
+ * It won't affect cursors set before changing this value.
+ *
+ * @param engine_only If 1 only engine cursors will be enabled, if 0 will
+ * look for them on theme before.
+ * @return EINA_TRUE if value is valid and setted (0 or 1)
+ * @ingroup Cursors
+ */
EAPI Eina_Bool elm_cursor_engine_only_set(int engine_only);
/**
+ * @}
+ */
+
+ /**
* @defgroup Menu Menu
*
* @image html img/widget/menu/preview-00.png
*/
EAPI const char *elm_menu_item_object_icon_name_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1);
/**
- * @deprecated Use elm_menu_item_object_icon_name_set()
- */
- EAPI void elm_menu_item_icon_set(Elm_Menu_Item *item, const char *icon) EINA_ARG_NONNULL(1, 2) EINA_DEPRECATED;
- /**
- * @deprecated Use elm_menu_item_object_icon_name_get()
- */
- EAPI const char *elm_menu_item_icon_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1) EINA_DEPRECATED;
- /**
* @brief Set the content object of a menu item
*
* @param item The menu item object
*/
EAPI Evas_Object *elm_menu_item_object_content_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1);
/**
- * @deprecated Use elm_menu_item_object_content_get() instead.
- */
- EAPI Evas_Object *elm_menu_item_object_icon_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1) EINA_DEPRECATED;
- /**
* @brief Set the selected state of @p item.
*
* @param item The menu item object.
* @param policy_v Vertical scrollbar policy.
*
* This sets the scrollbar visibility policy for the given scroller.
- * #ELM_SCROLLER_POLICY_AUTO means the scrollber is made visible if it
+ * #ELM_SCROLLER_POLICY_AUTO means the scrollbar is made visible if it
* is needed, and otherwise kept hidden. #ELM_SCROLLER_POLICY_ON turns
* it on all the time, and #ELM_SCROLLER_POLICY_OFF always keeps it off.
* This applies respectively for the horizontal and vertical scrollbars.
*
* @ingroup List
*/
- EAPI Evas_Object *elm_list_item_base_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_list_item_object_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1);
+ EINA_DEPRECATED EAPI Evas_Object *elm_list_item_base_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1);
/**
* Get the label of item.
* - @c label_get - The @c part parameter is the name string of one of the
* existing text parts in the Edje group implementing the item's theme.
* This function @b must return a strdup'()ed string, as the caller will
- * free() it when done. See #GenlistItemLabelGetFunc.
+ * free() it when done. See #Elm_Genlist_Item_Label_Get_Cb.
* - @c icon_get - The @c part parameter is the name string of one of the
* existing (icon) swallow parts in the Edje group implementing the item's
* theme. It must return @c NULL, when no icon is desired, or a valid
* object handle, otherwise. The object will be deleted by the genlist on
* its deletion or when the item is "unrealized". See
- * #GenlistItemIconGetFunc.
+ * #Elm_Genlist_Item_Icon_Get_Cb.
* - @c func.state_get - The @c part parameter is the name string of one of
* the state parts in the Edje group implementing the item's theme. Return
* @c EINA_FALSE for false/off or @c EINA_TRUE for true/on. Genlists will
* emit a signal to its theming Edje object with @c "elm,state,XXX,active"
* and @c "elm" as "emission" and "source" arguments, respectively, when
* the state is true (the default is false), where @c XXX is the name of
- * the (state) part. See #GenlistItemStateGetFunc.
+ * the (state) part. See #Elm_Genlist_Item_State_Get_Cb.
* - @c func.del - This is intended for use when genlist items are deleted,
* so any data attached to the item (e.g. its data parameter on creation)
- * can be deleted. See #GenlistItemDelFunc.
+ * can be deleted. See #Elm_Genlist_Item_Del_Cb.
*
* available item styles:
* - default
*
* In general to indicate how the genlist should expand items horizontally to
* fill the list area, use elm_genlist_horizontal_set(). Valid modes are
- * ELM_LIST_LIMIT and ELM_LIST_SCROLL . The default is ELM_LIST_SCROLL. This
+ * ELM_LIST_LIMIT and ELM_LIST_SCROLL. The default is ELM_LIST_SCROLL. This
* mode means that if items are too wide to fit, the scroller will scroll
* horizontally. Otherwise items are expanded to fill the width of the
* viewport of the scroller. If it is ELM_LIST_LIMIT, items will be expanded
* - @c "drag" - This is called when the item in the list is being dragged.
* - @c "longpressed" - This is called when the item is pressed for a certain
* amount of time. By default it's 1 second.
+ * - @c "scroll,anim,start" - This is called when scrolling animation has
+ * started.
+ * - @c "scroll,anim,stop" - This is called when scrolling animation has
+ * stopped.
+ * - @c "scroll,drag,start" - This is called when dragging the content has
+ * started.
+ * - @c "scroll,drag,stop" - This is called when dragging the content has
+ * stopped.
* - @c "scroll,edge,top" - This is called when the genlist is scrolled until
* the top edge.
* - @c "scroll,edge,bottom" - This is called when the genlist is scrolled
typedef struct _Elm_Genlist_Item_Class Elm_Genlist_Item_Class; /**< Genlist item class definition structs */
typedef struct _Elm_Genlist_Item Elm_Genlist_Item; /**< Item of Elm_Genlist. Sub-type of Elm_Widget_Item */
typedef struct _Elm_Genlist_Item_Class_Func Elm_Genlist_Item_Class_Func; /**< Class functions for genlist item class */
- typedef char *(*GenlistItemLabelGetFunc) (void *data, Evas_Object *obj, const char *part); /**< Label fetching class function for genlist item classes. */
- typedef Evas_Object *(*GenlistItemIconGetFunc) (void *data, Evas_Object *obj, const char *part); /**< Icon fetching class function for genlist item classes. */
- typedef Eina_Bool (*GenlistItemStateGetFunc) (void *data, Evas_Object *obj, const char *part); /**< State fetching class function for genlist item classes. */
- typedef void (*GenlistItemDelFunc) (void *data, Evas_Object *obj); /**< Deletion class function for genlist item classes. */
- typedef void (*GenlistItemMovedFunc) (Evas_Object *obj, Elm_Genlist_Item *item, Elm_Genlist_Item *rel_item, Eina_Bool move_after);
+ typedef char *(*Elm_Genlist_Item_Label_Get_Cb) (void *data, Evas_Object *obj, const char *part); /**< Label fetching class function for genlist item classes. */
+ typedef Evas_Object *(*Elm_Genlist_Item_Icon_Get_Cb) (void *data, Evas_Object *obj, const char *part); /**< Icon fetching class function for genlist item classes. */
+ typedef Eina_Bool (*Elm_Genlist_Item_State_Get_Cb) (void *data, Evas_Object *obj, const char *part); /**< State fetching class function for genlist item classes. */
+ typedef void (*Elm_Genlist_Item_Del_Cb) (void *data, Evas_Object *obj); /**< Deletion class function for genlist item classes. */
+ typedef void (*GenlistItemMovedFunc) (Evas_Object *obj, Elm_Genlist_Item *item, Elm_Genlist_Item *rel_item, Eina_Bool move_after); /** TODO: remove this by SeoZ **/
+
+ typedef char *(*GenlistItemLabelGetFunc) (void *data, Evas_Object *obj, const char *part) EINA_DEPRECATED; /** DEPRECATED. Use Elm_Genlist_Item_Label_Get_Cb instead. */
+ typedef Evas_Object *(*GenlistItemIconGetFunc) (void *data, Evas_Object *obj, const char *part) EINA_DEPRECATED; /** DEPRECATED. Use Elm_Genlist_Item_Icon_Get_Cb instead. */
+ typedef Eina_Bool (*GenlistItemStateGetFunc) (void *data, Evas_Object *obj, const char *part) EINA_DEPRECATED; /** DEPRECATED. Use Elm_Genlist_Item_State_Get_Cb instead. */
+ typedef void (*GenlistItemDelFunc) (void *data, Evas_Object *obj) EINA_DEPRECATED; /** DEPRECATED. Use Elm_Genlist_Item_Del_Cb instead. */
/**
* @struct _Elm_Genlist_Item_Class
const char *item_style; /**< style of this class. */
struct
{
- GenlistItemLabelGetFunc label_get; /**< Label fetching class function for genlist item classes.*/
- GenlistItemIconGetFunc icon_get; /**< Icon fetching class function for genlist item classes. */
- GenlistItemStateGetFunc state_get; /**< State fetching class function for genlist item classes. */
- GenlistItemDelFunc del; /**< Deletion class function for genlist item classes. */
+ Elm_Genlist_Item_Label_Get_Cb label_get; /**< Label fetching class function for genlist item classes.*/
+ Elm_Genlist_Item_Icon_Get_Cb icon_get; /**< Icon fetching class function for genlist item classes. */
+ Elm_Genlist_Item_State_Get_Cb state_get; /**< State fetching class function for genlist item classes. */
+ Elm_Genlist_Item_Del_Cb del; /**< Deletion class function for genlist item classes. */
GenlistItemMovedFunc moved; // TODO: do not use this. change this to smart callback.
} func;
const char *mode_item_style;
* @ingroup Genlist
*/
EAPI const Elm_Genlist_Item *elm_genlist_mode_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ /**
+ * Set reorder mode
+ *
+ * @param obj The genlist object
+ * @param reorder_mode The reorder mode
+ * (EINA_TRUE = on, EINA_FALSE = off)
+ *
+ * @ingroup Genlist
+ */
EAPI void elm_genlist_reorder_mode_set(Evas_Object *obj, Eina_Bool reorder_mode) EINA_ARG_NONNULL(1);
+
+ /**
+ * Get the reorder mode
+ *
+ * @param obj The genlist object
+ * @return The reorder mode
+ * (EINA_TRUE = on, EINA_FALSE = off)
+ *
+ * @ingroup Genlist
+ */
EAPI Eina_Bool elm_genlist_reorder_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* @defgroup Index Index
*
* @image html img/widget/index/preview-00.png
+ * @image latex img/widget/index/preview-00.eps
*
* An index widget gives you an index for fast access to whichever
* group of other UI items one might have. It's a list of text
* @ingroup Flipselector
*/
EAPI double elm_flipselector_interval_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-
- /**
- * @}
- */
-
- /**
- * @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);
/**
* @}
*/
/**
- * @defgroup Calendar Calendar
- * @ingroup Elementary
- *
- * @image html img/widget/calendar/preview-00.png
- * @image latex img/widget/calendar/preview-00.eps
- *
- * A calendar is a widget that displays a regular calendar, one
- * month at a time, to the user, and can allows the user to select a date.
- *
- * It has support to adding check marks (holidays and checks are supported
- * by default theme).
- *
- * Weekday names and the function used to format month and year to
- * be displayed can be set, giving more flexibility to this widget.
- *
- * Smart callbacks one can register to:
- * - "changed" - emitted when the user selects a day or changes the
- * displayed month, what actually changes the selected day as well.
- *
- * Available styles for it:
- * - @c "default"
- *
- * List of examples:
- * @li @ref calendar_example_01
- * @li @ref calendar_example_02
- * @li @ref calendar_example_03
- * @li @ref calendar_example_04
- * @li @ref calendar_example_05
- * @li @ref calendar_example_06
- */
-
- /**
* @addtogroup Calendar
* @{
*/
EAPI void elm_diskselector_display_item_num_set(Evas_Object *obj, int num) EINA_ARG_NONNULL(1);
/**
+ * Get the number of items in the diskselector object.
+ *
+ * @param obj The diskselector object.
+ *
+ * @ingroup Diskselector
+ */
+ EAPI int elm_diskselector_display_item_num_get(const 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
* @param policy_v Vertical scrollbar policy.
*
* This sets the scrollbar visibility policy for the given scroller.
- * #ELM_SCROLLER_POLICY_AUTO means the scrollber is made visible if it
+ * #ELM_SCROLLER_POLICY_AUTO means the scrollbar is made visible if it
* is needed, and otherwise kept hidden. #ELM_SCROLLER_POLICY_ON turns
* it on all the time, and #ELM_SCROLLER_POLICY_OFF always keeps it off.
* This applies respectively for the horizontal and vertical scrollbars.
* @{
*
* @image html img/widget/colorselector/preview-00.png
+ * @image latex img/widget/colorselector/preview-00.eps
*
* @brief Widget for user to select a color.
*
* @ref tutorial_ctxpopup shows the usage of a good deal of the API.
* @{
*/
- typedef struct _Elm_Ctxpopup_Item Elm_Ctxpopup_Item;
-
typedef enum _Elm_Ctxpopup_Direction
{
ELM_CTXPOPUP_DIRECTION_DOWN, /**< ctxpopup show appear below clicked
the clicked area */
ELM_CTXPOPUP_DIRECTION_UP, /**< ctxpopup show appear above the clicked
area */
+ ELM_CTXPOPUP_DIRECTION_UNKNOWN, /**< ctxpopup does not determine it's direction yet*/
} Elm_Ctxpopup_Direction;
/**
*
* @see elm_ctxpopup_content_set()
*/
- 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);
+ Elm_Object_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);
/**
* @brief Delete the given item in a ctxpopup object.
*
- * @param item Ctxpopup item to be deleted
+ * @param it Ctxpopup item to be deleted
*
* @see elm_ctxpopup_item_append()
*/
- EAPI void elm_ctxpopup_item_del(Elm_Ctxpopup_Item *it) EINA_ARG_NONNULL(1);
+ EAPI void elm_ctxpopup_item_del(Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/**
* @brief Set the ctxpopup item's state as disabled or enabled.
*
- * @param item Ctxpopup item to be enabled/disabled
+ * @param it Ctxpopup item to be enabled/disabled
* @param disabled @c EINA_TRUE to disable it, @c EINA_FALSE to enable it
*
* When disabled the item is greyed out to indicate it's state.
*/
- EAPI void elm_ctxpopup_item_disabled_set(Elm_Ctxpopup_Item *item, Eina_Bool disabled) EINA_ARG_NONNULL(1);
+ EAPI void elm_ctxpopup_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled) EINA_ARG_NONNULL(1);
/**
* @brief Get the ctxpopup item's disabled/enabled state.
*
- * @param item Ctxpopup item to be enabled/disabled
+ * @param it Ctxpopup item to be enabled/disabled
* @return disabled @c EINA_TRUE, if disabled, @c EINA_FALSE otherwise
*
* @see elm_ctxpopup_item_disabled_set()
*/
- EAPI Eina_Bool elm_ctxpopup_item_disabled_get(const Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_ctxpopup_item_disabled_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/**
* @brief Get the icon object for the given ctxpopup item.
*
- * @param item Ctxpopup item
+ * @param it Ctxpopup item
* @return icon object or @c NULL, if the item does not have icon or an error
* occurred
*
* @see elm_ctxpopup_item_append()
* @see elm_ctxpopup_item_icon_set()
*/
- EAPI Evas_Object *elm_ctxpopup_item_icon_get(const Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_ctxpopup_item_icon_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/**
* @brief Sets the side icon associated with the ctxpopup item
*
- * @param item Ctxpopup item
+ * @param it Ctxpopup item
* @param icon Icon object to be set
*
* Once the icon object is set, a previously set one will be deleted.
*
* @see elm_ctxpopup_item_append()
*/
- EAPI void elm_ctxpopup_item_icon_set(Elm_Ctxpopup_Item *item, Evas_Object *icon) EINA_ARG_NONNULL(1);
+ EAPI void elm_ctxpopup_item_icon_set(Elm_Object_Item *it, Evas_Object *icon) EINA_ARG_NONNULL(1);
/**
* @brief Get the label for the given ctxpopup item.
*
- * @param item Ctxpopup item
+ * @param it Ctxpopup item
* @return label string or @c NULL, if the item does not have label or an
* error occured
*
* @see elm_ctxpopup_item_append()
* @see elm_ctxpopup_item_label_set()
*/
- EAPI const char *elm_ctxpopup_item_label_get(const Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
+ EAPI const char *elm_ctxpopup_item_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/**
* @brief (Re)set the label on the given ctxpopup item.
*
- * @param item Ctxpopup item
+ * @param it Ctxpopup item
* @param label String to set as label
*/
- EAPI void elm_ctxpopup_item_label_set(Elm_Ctxpopup_Item *item, const char *label) EINA_ARG_NONNULL(1);
+ EAPI void elm_ctxpopup_item_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1);
/**
* @brief Set an elm widget as the content of the ctxpopup.
*
* @see elm_ctxpopup_direction_priority_set() for more information.
*/
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);
+
+ /**
+ * @brief Get the current direction of a ctxpopup.
+ *
+ * @param obj Ctxpopup object
+ * @return current direction of a ctxpopup
+ *
+ * @warning Once the ctxpopup showed up, the direction would be determined
+ */
+ EAPI Elm_Ctxpopup_Direction elm_ctxpopup_direction_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
/**
* @}
*/
* positioned at left.
*
* @see elm_segment_control_item_add()
- * @see elm_segment_control_count_get()
+ * @see elm_segment_control_item_count_get()
* @see elm_segment_control_item_del()
*
* @ingroup SegmentControl
* @}
*/
+ /**
+ * @defgroup Grid Grid
+ *
+ * The grid is a grid layout widget that lays out a series of children as a
+ * fixed "grid" of widgets using a given percentage of the grid width and
+ * height each using the child object.
+ *
+ * The Grid uses a "Virtual resolution" that is stretched to fill the grid
+ * widgets size itself. The default is 100 x 100, so that means the
+ * position and sizes of children will effectively be percentages (0 to 100)
+ * of the width or height of the grid widget
+ *
+ * @{
+ */
+ /**
+ * Add a new grid to the parent
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ *
+ * @ingroup Grid
+ */
EAPI Evas_Object *elm_grid_add(Evas_Object *parent);
+
+ /**
+ * Set the virtual size of the grid
+ *
+ * @param obj The grid object
+ * @param w The virtual width of the grid
+ * @param h The virtual height of the grid
+ *
+ * @ingroup Grid
+ */
EAPI void elm_grid_size_set(Evas_Object *obj, int w, int h);
+
+ /**
+ * Get the virtual size of the grid
+ *
+ * @param obj The grid object
+ * @param w Pointer to integer to store the virtual width of the grid
+ * @param h Pointer to integer to store the virtual height of the grid
+ *
+ * @ingroup Grid
+ */
EAPI void elm_grid_size_get(Evas_Object *obj, int *w, int *h);
+
+ /**
+ * Pack child at given position and size
+ *
+ * @param obj The grid object
+ * @param subobj The child to pack
+ * @param x The virtual x coord at which to pack it
+ * @param y The virtual y coord at which to pack it
+ * @param w The virtual width at which to pack it
+ * @param h The virtual height at which to pack it
+ *
+ * @ingroup Grid
+ */
EAPI void elm_grid_pack(Evas_Object *obj, Evas_Object *subobj, int x, int y, int w, int h);
+
+ /**
+ * Unpack a child from a grid object
+ *
+ * @param obj The grid object
+ * @param subobj The child to unpack
+ *
+ * @ingroup Grid
+ */
EAPI void elm_grid_unpack(Evas_Object *obj, Evas_Object *subobj);
+
+ /**
+ * Faster way to remove all child objects from a grid object.
+ *
+ * @param obj The grid object
+ * @param clear If true, it will delete just removed children
+ *
+ * @ingroup Grid
+ */
EAPI void elm_grid_clear(Evas_Object *obj, Eina_Bool clear);
+
+ /**
+ * Set packing of an existing child at to position and size
+ *
+ * @param subobj The child to set packing of
+ * @param x The virtual x coord at which to pack it
+ * @param y The virtual y coord at which to pack it
+ * @param w The virtual width at which to pack it
+ * @param h The virtual height at which to pack it
+ *
+ * @ingroup Grid
+ */
EAPI void elm_grid_pack_set(Evas_Object *subobj, int x, int y, int w, int h);
+
+ /**
+ * get packing of a child
+ *
+ * @param subobj The child to query
+ * @param x Pointer to integer to store the virtual x coord
+ * @param y Pointer to integer to store the virtual y coord
+ * @param w Pointer to integer to store the virtual width
+ * @param h Pointer to integer to store the virtual height
+ *
+ * @ingroup Grid
+ */
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_factory_add(Evas_Object *parent);
+ EAPI void elm_factory_content_set(Evas_Object *obj, Evas_Object *content);
+ EAPI Evas_Object *elm_factory_content_get(const Evas_Object *obj);
+ EAPI void elm_factory_maxmin_mode_set(Evas_Object *obj, Eina_Bool enabled);
+ EAPI Eina_Bool elm_factory_maxmin_mode_get(const Evas_Object *obj);
+ EAPI void elm_factory_maxmin_reset_set(Evas_Object *obj);
+ /**
+ * @defgroup Video Video
+ *
+ * This object display an player that let you control an Elm_Video
+ * object. It take care of updating it's content according to what is
+ * going on inside the Emotion object. It does activate the remember
+ * function on the linked Elm_Video object.
+ *
+ * Signals that you can add callback for are :
+ *
+ * "forward,clicked" - the user clicked the forward button.
+ * "info,clicked" - the user clicked the info button.
+ * "next,clicked" - the user clicked the next button.
+ * "pause,clicked" - the user clicked the pause button.
+ * "play,clicked" - the user clicked the play button.
+ * "prev,clicked" - the user clicked the prev button.
+ * "rewind,clicked" - the user clicked the rewind button.
+ * "stop,clicked" - the user clicked the stop button.
+ */
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_player_add(Evas_Object *parent);
EAPI void elm_player_video_set(Evas_Object *player, Evas_Object *video);
- /* naviframe */
+ /**
+ * @defgroup Naviframe Naviframe
+ *
+ * @brief Naviframe is a kind of view manager for the applications.
+ *
+ * Naviframe provides functions to switch different pages with stack
+ * mechanism. It means if one page(item) needs to be changed to the new one,
+ * then naviframe would push the new page to it's internal stack. Of course,
+ * it can be back to the previous page by popping the top page. Naviframe
+ * provides some transition effect while the pages are switching (same as
+ * pager).
+ *
+ * Since each item could keep the different styles, users could keep the
+ * same look & feel for the pages or different styles for the items in it's
+ * application.
+ *
+ * Signals that you can add callback for are:
+ *
+ * @li "transition,finished" - When the transition is finished in changing
+ * the item
+ * @li "title,clicked" - User clicked title area
+ *
+ * Default contents parts for the naviframe items that you can use for are:
+ *
+ * @li "elm.swallow.content" - The main content of the page
+ * @li "elm.swallow.prev_btn" - The button to go to the previous page
+ * @li "elm.swallow.next_btn" - The button to go to the next page
+ *
+ * Default text parts of naviframe items that you can be used are:
+ *
+ * @li "elm.text.title" - The title label in the title area
+ *
+ * @ref tutorial_naviframe gives a good overview of the usage of the API.
+ * @{
+ */
+ /**
+ * @brief Add a new Naviframe object to the parent.
+ *
+ * @param parent Parent object
+ * @return New object or @c NULL, if it cannot be created
+ */
EAPI Evas_Object *elm_naviframe_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Push a new item to the top of the naviframe stack (and show it).
+ *
+ * @param obj The naviframe object
+ * @param title_label The label in the title area. The name of the title
+ * label part is "elm.text.title"
+ * @param prev_btn The button to go to the previous item. If it is NULL,
+ * then naviframe will create a back button automatically. The name of
+ * the prev_btn part is "elm.swallow.prev_btn"
+ * @param next_btn The button to go to the next item. Or It could be just an
+ * extra function button. The name of the next_btn part is
+ * "elm.swallow.next_btn"
+ * @param content The main content object. The name of content part is
+ * "elm.swallow.content"
+ * @param item_style The current item style name. @c NULL would be default.
+ * @return The created item or @c NULL upon failure.
+ *
+ * The item pushed becomes one page of the naviframe, this item will be
+ * deleted when it is popped.
+ *
+ * @see also elm_naviframe_item_style_set()
+ *
+ * The following styles are available for this item:
+ * @li @c "default"
+ */
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);
+ /**
+ * @brief Pop an item that is on top of the stack
+ *
+ * @param obj The naviframe object
+ * @return @c NULL or the content object(if the
+ * elm_naviframe_content_preserve_on_pop_get is true).
+ *
+ * This pops an item that is on the top(visible) of the naviframe, makes it
+ * disappear, then deletes the item. The item that was underneath it on the
+ * stack will become visible.
+ *
+ * @see also elm_naviframe_content_preserve_on_pop_get()
+ */
EAPI Evas_Object *elm_naviframe_item_pop(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Pop the items between the top and the above one on the given item.
+ *
+ * @param it The naviframe item
+ */
+ EAPI void elm_naviframe_item_pop_to(Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+ /**
+ * @brief preserve the content objects when items are popped.
+ *
+ * @param obj The naviframe object
+ * @param preserve Enable the preserve mode if EINA_TRUE, disable otherwise
+ *
+ * @see also elm_naviframe_content_preserve_on_pop_get()
+ */
EAPI void elm_naviframe_content_preserve_on_pop_set(Evas_Object *obj, Eina_Bool preserve) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Get a value whether preserve mode is enabled or not.
+ *
+ * @param obj The naviframe object
+ * @return If @c EINA_TRUE, preserve mode is enabled
+ *
+ * @see also elm_naviframe_content_preserve_on_pop_set()
+ */
EAPI Eina_Bool elm_naviframe_content_preserve_on_pop_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
- EAPI void elm_naviframe_item_title_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1);
- EAPI const char *elm_naviframe_item_title_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
- EAPI void elm_naviframe_item_subtitle_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1);
- EAPI const char *elm_naviframe_item_subtitle_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Get a top item on the naviframe stack
+ *
+ * @param obj The naviframe object
+ * @return The top item on the naviframe stack or @c NULL, if the stack is
+ * empty
+ */
EAPI Elm_Object_Item *elm_naviframe_top_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Get a bottom item on the naviframe stack
+ *
+ * @param obj The naviframe object
+ * @return The bottom item on the naviframe stack or @c NULL, if the stack is
+ * empty
+ */
EAPI Elm_Object_Item *elm_naviframe_bottom_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Set an item style
+ *
+ * @param obj The naviframe item
+ * @param item_style The current item style name. @c NULL would be default
+ *
+ * The following styles are available for this item:
+ * @li @c "default"
+ *
+ * @see also elm_naviframe_item_style_get()
+ */
EAPI void elm_naviframe_item_style_set(Elm_Object_Item *it, const char *item_style) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Get an item style
+ *
+ * @param obj The naviframe item
+ * @return The current item style name
+ *
+ * @see also elm_naviframe_item_style_set()
+ */
EAPI const char *elm_naviframe_item_style_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Show/Hide the title area
+ *
+ * @param it The naviframe item
+ * @param visible If @c EINA_TRUE, title area will be visible, hidden
+ * otherwise
+ *
+ * When the title area is invisible, then the controls would be hidden so as * to expand the content area to full-size.
+ *
+ * @see also elm_naviframe_item_title_visible_get()
+ */
EAPI void elm_naviframe_item_title_visible_set(Elm_Object_Item *it, Eina_Bool visible) EINA_ARG_NONNULL(1);
+ /**
+ * @brief Get a value whether title area is visible or not.
+ *
+ * @param it The naviframe item
+ * @return If @c EINA_TRUE, title area is visible
+ *
+ * @see also elm_naviframe_item_title_visible_set()
+ */
EAPI Eina_Bool elm_naviframe_item_title_visible_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+ /**
+ * @}
+ */
+
#ifdef __cplusplus
}
#endif