diff options
Diffstat (limited to 'src/lib/elc_fileselector.h')
-rw-r--r-- | src/lib/elc_fileselector.h | 285 |
1 files changed, 259 insertions, 26 deletions
diff --git a/src/lib/elc_fileselector.h b/src/lib/elc_fileselector.h index 9ecd5610e..ff76b30e5 100644 --- a/src/lib/elc_fileselector.h +++ b/src/lib/elc_fileselector.h @@ -1,6 +1,7 @@ /** + * @internal * @defgroup Fileselector File Selector - * @ingroup Elementary + * @ingroup elm_widget_group * * @image html fileselector_inheritance_tree.png * @image latex fileselector_inheritance_tree.eps @@ -34,47 +35,279 @@ * library, the second form of view will display preview thumbnails * of files which it supports. * - * This widget inherits from the Layout one, so that all the + * This widget inherits from the @ref Layout one, so that all the * functions acting on it also work for file selector objects. * * This widget emits the following signals, besides the ones sent from - * @ref Layout: - * - @c "activated" - the user activated a file. This can happen by - * double-clicking or pressing Enter key. (@p event_info is a - * pointer to the activated file path) + * @ref Layout : * - @c "selected" - the user has clicked on a file (when not in * folders-only mode) or directory (when in folders-only mode) - * - @c "selected,invalid" - the user has tried to access wrong path - * which does not exist. * - @c "directory,open" - the list has been populated with new - * content (@p event_info is a pointer to the directory's + * content (@c event_info is a pointer to the directory's * path, a @b stringshared string) * - @c "done" - the user has clicked on the "ok" or "cancel" - * buttons (@p event_info is a pointer to the selection's + * buttons (@c event_info is a pointer to the selection's * path, a @b stringshared string) - * - @c "focused" - When the fileselector has received focus. (since 1.9) - * - @c "unfocused" - When the fileselector has lost focus. (since 1.9) * - * For text, elm_layout_text_set() will work here on: - * @li @c "ok" - OK button label if the ok button is set. @since 1.8 - * @li @c "cancel" - Cancel button label if the cancel button is set. @since 1.8 + * @{ + */ + +/** + * Defines how a file selector widget is to layout its contents + * (file system entries). + */ +typedef enum +{ + ELM_FILESELECTOR_LIST = 0, /**< layout as a list */ + ELM_FILESELECTOR_GRID, /**< layout as a grid */ + ELM_FILESELECTOR_LAST /**< sentinel (helper) value, not used */ +} Elm_Fileselector_Mode; + +/** + * Add a new file selector widget to the given parent Elementary + * (container) object * - * Here is an example on its usage: - * @li @ref fileselector_example + * @param[in] parent The parent object + * @return a new file selector widget handle or @c NULL, on errors + * + * This function inserts a new file selector widget on the canvas. + * + * @ingroup Fileselector */ +EAPI Evas_Object *elm_fileselector_add(Evas_Object *parent); /** - * @addtogroup Fileselector - * @{ + * Enable/disable the file name entry box where the user can type + * in a name for a file, in a given file selector widget + * + * @param[in] obj The file selector object + * @param[in] is_save @c EINA_TRUE to make the file selector a "saving + * dialog", @c EINA_FALSE otherwise + * + * Having the entry editable is useful on file saving dialogs on + * applications, where one gives a file name to save contents to, + * in a given directory in the system. This custom file name will + * be reported on the @c "done" smart callback. + * + * @see elm_fileselector_is_save_get() + * + * @ingroup Fileselector + */ +EAPI void elm_fileselector_is_save_set(Evas_Object *obj, Eina_Bool is_save); + +/** + * Get whether the given file selector is in "saving dialog" mode + * + * @param[in] obj The file selector object + * @return @c EINA_TRUE, if the file selector is in "saving dialog" + * mode, @c EINA_FALSE otherwise (and on errors) + * + * @see elm_fileselector_is_save_set() for more details + * + * @ingroup Fileselector + */ +EAPI Eina_Bool elm_fileselector_is_save_get(const Evas_Object *obj); + +/** + * Enable/disable folder-only view for a given file selector widget + * + * @param[in] obj The file selector object + * @param[in] only @c EINA_TRUE to make @p obj only display + * directories, @c EINA_FALSE to make files to be displayed in it + * too + * + * If enabled, the widget's view will only display folder items, + * naturally. + * + * @see elm_fileselector_folder_only_get() + * + * @ingroup Fileselector + */ +EAPI void elm_fileselector_folder_only_set(Evas_Object *obj, Eina_Bool only); + +/** + * Get whether folder-only view is set for a given file selector + * widget + * + * @param[in] obj The file selector object + * @return only @c EINA_TRUE if @p obj is only displaying + * directories, @c EINA_FALSE if files are being displayed in it + * too (and on errors) + * + * @see elm_fileselector_folder_only_get() + * + * @ingroup Fileselector + */ +EAPI Eina_Bool elm_fileselector_folder_only_get(const Evas_Object *obj); + +/** + * Enable/disable the "ok" and "cancel" buttons on a given file + * selector widget + * + * @param[in] obj The file selector object + * @param[in] buttons @c EINA_TRUE to show buttons, @c EINA_FALSE to hide. + * + * @note A file selector without those buttons will never emit the + * @c "done" smart event, and is only usable if one is just hooking + * to the other two events. + * + * @see elm_fileselector_buttons_ok_cancel_get() + * + * @ingroup Fileselector + */ +EAPI void elm_fileselector_buttons_ok_cancel_set(Evas_Object *obj, Eina_Bool buttons); + +/** + * Get whether the "ok" and "cancel" buttons on a given file + * selector widget are being shown. + * + * @param[in] obj The file selector object + * @return @c EINA_TRUE if they are being shown, @c EINA_FALSE + * otherwise (and on errors) + * + * @see elm_fileselector_buttons_ok_cancel_set() for more details + * + * @ingroup Fileselector + */ +EAPI Eina_Bool elm_fileselector_buttons_ok_cancel_get(const Evas_Object *obj); + +/** + * Enable/disable a tree view in the given file selector widget, + * <b>if it's in @c #ELM_FILESELECTOR_LIST mode</b> + * + * @param[in] obj The file selector object + * @param[in] expand @c EINA_TRUE to enable tree view, @c EINA_FALSE to + * disable + * + * In a tree view, arrows are created on the sides of directories, + * allowing them to expand in place. + * + * @note If it's in other mode, the changes made by this function + * will only be visible when one switches back to "list" mode. + * + * @see elm_fileselector_expandable_get() + * + * @ingroup Fileselector + */ +EAPI void elm_fileselector_expandable_set(Evas_Object *obj, Eina_Bool expand); + +/** + * Get whether tree view is enabled for the given file selector + * widget + * + * @param[in] obj The file selector object + * @return @c EINA_TRUE if @p obj is in tree view, @c EINA_FALSE + * otherwise (and or errors) + * + * @see elm_fileselector_expandable_set() for more details + * + * @ingroup Fileselector + */ +EAPI Eina_Bool elm_fileselector_expandable_get(const Evas_Object *obj); + +/** + * Set, programmatically, the @b directory that a given file + * selector widget will display contents from + * + * @param[in] obj The file selector object + * @param[in] path The path to display in @p obj + * + * This will change the @b directory that @p obj is displaying. It + * will also clear the text entry area on the @p obj object, which + * displays select files' names. + * + * @see elm_fileselector_path_get() + * + * @ingroup Fileselector + */ +EAPI void elm_fileselector_path_set(Evas_Object *obj, const char *path); + +/** + * Get the parent directory's path that a given file selector + * widget is displaying + * + * @param[in] obj The file selector object + * @return The (full) path of the directory the file selector is + * displaying, a @b stringshared string + * + * @see elm_fileselector_path_set() + * + * @ingroup Fileselector + */ +EAPI const char *elm_fileselector_path_get(const Evas_Object *obj); + +/** + * Set, programmatically, the currently selected file/directory in + * the given file selector widget + * + * @param[in] obj The file selector object + * @param[in] path The (full) path to a file or directory + * @return @c EINA_TRUE on success, @c EINA_FALSE on failure. The + * latter case occurs if the directory or file pointed to do not + * exist. + * + * @see elm_fileselector_selected_get() + * + * @ingroup Fileselector + */ +EAPI Eina_Bool elm_fileselector_selected_set(Evas_Object *obj, const char *path); + +/** + * Get the currently selected item's (full) path, in the given file + * selector widget + * + * @param[in] obj The file selector object + * @return The absolute path of the selected item, a @b + * stringshared string + * + * @note Custom editions on @p obj object's text entry, if made, + * will appear on the return string of this function, naturally. + * + * @see elm_fileselector_selected_set() for more details + * + * @ingroup Fileselector + */ +EAPI const char *elm_fileselector_selected_get(const Evas_Object *obj); + +/** + * Set the mode in which a given file selector widget will display + * (layout) file system entries in its view + * + * @param[in] obj The file selector object + * @param[in] mode The mode of the fileselector, being it one of #ELM_FILESELECTOR_LIST + * (default) or #ELM_FILESELECTOR_GRID. The first one, naturally, will display + * the files in a list. The latter will make the widget to display its entries + * in a grid form. + * + * @note By using elm_fileselector_expandable_set(), the user may + * trigger a tree view for that list. + * + * @note If Elementary is built with support of the Ethumb + * thumbnailing library, the second form of view will display + * preview thumbnails of files which it supports. You must have + * elm_need_ethumb() called in your Elementary for thumbnailing to + * work, though. + * + * @see elm_fileselector_expandable_set(). + * @see elm_fileselector_mode_get(). + * + * @ingroup Fileselector + */ +EAPI void elm_fileselector_mode_set(Evas_Object *obj, Elm_Fileselector_Mode mode); + +/** + * Get the mode in which a given file selector widget is displaying + * (layouting) file system entries in its view + * + * @param[in] obj The fileselector object + * @return The mode in which the fileselector is at + * + * @see elm_fileselector_mode_set() for more details + * + * @ingroup Fileselector */ +EAPI Elm_Fileselector_Mode elm_fileselector_mode_get(const Evas_Object *obj); -#include "elc_fileselector_common.h" -#ifdef EFL_EO_API_SUPPORT -#include "elc_fileselector_eo.h" -#endif -#ifndef EFL_NOLEGACY_API_SUPPORT -#include "elc_fileselector_legacy.h" -#endif /** * @} */ |