diff --git a/src/Makefile_Elementary.am b/src/Makefile_Elementary.am index ba07090c2e..f16b37c9dc 100644 --- a/src/Makefile_Elementary.am +++ b/src/Makefile_Elementary.am @@ -186,7 +186,6 @@ elm_private_eolian_files = \ # Legacy classes - not part of public EO API elm_legacy_eolian_files = \ lib/elementary/efl_ui_clock_legacy.eo \ - lib/elementary/elm_interface_fileselector.eo \ lib/elementary/elm_label.eo \ lib/elementary/elm_list.eo \ lib/elementary/elm_map.eo \ @@ -362,6 +361,7 @@ lib/elementary/elm_index_eo.c \ lib/elementary/elm_index_eo.legacy.c \ lib/elementary/elm_index_item_eo.c \ lib/elementary/elm_index_item_eo.legacy.c \ +lib/elementary/elm_interface_fileselector_eo.c \ $(NULL) elm_legacy_eo_headers = \ @@ -487,6 +487,8 @@ lib/elementary/elm_index_eo.h \ lib/elementary/elm_index_eo.legacy.h \ lib/elementary/elm_index_item_eo.h \ lib/elementary/elm_index_item_eo.legacy.h \ +lib/elementary/elm_interface_fileselector_eo.h \ +lib/elementary/elm_interface_fileselector_eo.legacy.h \ $(NULL) diff --git a/src/lib/elementary/elc_fileselector_legacy.h b/src/lib/elementary/elc_fileselector_legacy.h index abc15a862e..252767ecea 100644 --- a/src/lib/elementary/elc_fileselector_legacy.h +++ b/src/lib/elementary/elc_fileselector_legacy.h @@ -1,4 +1,4 @@ -#include "elm_interface_fileselector.eo.legacy.h" +#include "elm_interface_fileselector_eo.legacy.h" /** * Add a new file selector widget to the given parent Elementary * (container) object diff --git a/src/lib/elementary/elm_interface_fileselector.c b/src/lib/elementary/elm_interface_fileselector.c index cd2c1957c6..1ccf3b159a 100644 --- a/src/lib/elementary/elm_interface_fileselector.c +++ b/src/lib/elementary/elm_interface_fileselector.c @@ -8,4 +8,4 @@ #include "elm_interface_fileselector.h" -#include "elm_interface_fileselector.eo.c" +#include "elm_interface_fileselector_eo.c" diff --git a/src/lib/elementary/elm_interface_fileselector.eo b/src/lib/elementary/elm_interface_fileselector.eo deleted file mode 100644 index 1bdd24c5f5..0000000000 --- a/src/lib/elementary/elm_interface_fileselector.eo +++ /dev/null @@ -1,173 +0,0 @@ -type Elm_Fileselector_Filter_Func: __undefined_type; [[Elementary fileselector filter function type]] - -enum Elm.Fileselector.Mode -{ - [[Defines how a file selector widget is to layout its contents - (file system entries). - ]] - legacy: elm_fileselector; - list = 0, [[Layout as a list.]] - grid, [[Layout as a grid.]] - last [[Sentinel value to indicate last enum field during iteration]] -} - -enum Elm.Fileselector.Sort -{ - [[Fileselector sorting modes]] - by_filename_asc = 0, [[Alphabetical sort by ascending filename, default]] - by_filename_desc, [[Alphabetical sorting by descending filename]] - by_type_asc, [[Sort by file type]] - by_type_desc, [[Sort by file type description]] - by_size_asc, [[Sort by ascending file size]] - by_size_desc, [[Sort by descending file size]] - by_modified_asc, [[Sort by ascending modified date]] - by_modified_desc, [[Sort by descending modified date]] - last [[Sentinel value to indicate last enum field during iteration]] -} - -interface Elm.Interface.Fileselector extends Efl.Ui.View -{ - [[Elementary fileselector interface]] - eo_prefix: elm_interface_fileselector; - methods { - @property folder_only { - set { - [[Enable/disable folder-only view for a given file selector widget]] - } - get { - [[Get whether folder-only view is set for a given file selector]] - } - values { - only: bool; [[$true if folder view is set, $false otherwise]] - } - } - @property thumbnail_size { - set { - [[Set the size for the thumbnail of the file selector widget's view.]] - } - get { - [[Get the size for the thumbnail of a given file selector widget]] - } - values { - w: int; [[Width]] - h: int; [[Height]] - } - } - @property hidden_visible { - set { - [[Enable or disable visibility of hidden files/directories in the file selector widget.]] - } - get { - [[Get if hiden files/directories in the file selector are visible or not.]] - } - values { - hidden: bool; [[$true if hidden files are visible, $false otherwise]] - } - } - @property sort_method { - set { - [[Set the sort method of the file selector widget.]] - } - get { - [[Get the sort method of the file selector widget.]] - } - values { - sort: Elm.Fileselector.Sort; [[Sort method]] - } - } - @property multi_select { - set { - [[Enable or disable multi-selection in the fileselector]] - } - get { - [[Gets if multi-selection in fileselector is enabled or disabled.]] - } - values { - multi: bool; [[$true if multiselection is enabled, $false otherwise]] - } - } - @property expandable { - set { - [[Enable/disable a tree view in the given file selector widget, if it's in]] - } - get { - [[Get whether tree view is enabled for the given file selector]] - } - values { - expand: bool; [[$true if tree view is expanded, $false otherwise]] - } - } - @property mode { - set { - [[Set the mode in which a given file selector widget will display (layout) file system entries in its view]] - } - get { - [[Get the mode in which a given file selector widget is displaying]] - } - values { - mode: Elm.Fileselector.Mode; [[Fileselector mode]] - } - } - @property is_save { - set { - [[Enable/disable the file name entry box where the user can type in a name for a file, in a given file selector widget]] - } - get { - [[Get whether the given file selector is in "saving dialog" mode]] - } - values { - is_save: bool; [[$true if in saving mode, $false otherwise]] - } - } - @property selected_models { - get { - [[Get a list of models selected in the fileselector.]] - } - values { - ret: const(list); [[List of selected models]] - } - } - @property current_name { - [[ The filename that will be displayed in the filename entry]] - set { - } - get { - } - values { - name: string; [[Name]] - } - } - @property selected_model @beta { - set { - [[Set, programmatically, the currently selected file/directory in the given file selector widget]] - return: bool; [[$true on success, $false otherwise]] - } - get { - [[Get the currently selected item's model, in the given file the given file selector widget]] - } - values { - model: Efl.Io.Model; [[Model to be set, NULL reset it.]] - } - } - custom_filter_append { - [[Append custom filter into filter list]] - params { - @in func: Elm_Fileselector_Filter_Func; [[Filter function]] - @in data: void_ptr; [[Data pointer]] - @in filter_name: string; [[Filter name]] - } - return: bool; [[$true on success, $false otherwise]] - } - filters_clear { - [[Clear all filters registered]] - } - mime_types_filter_append { - [[Append mime type based filter into filter list]] - params { - @in mime_types: string; [[Mime types]] - @in filter_name: string; [[Filter name]] - } - return: bool; [[$true on success, $false otherwise]] - } - } -} diff --git a/src/lib/elementary/elm_interface_fileselector.h b/src/lib/elementary/elm_interface_fileselector.h index 3938e113b6..2e01555324 100644 --- a/src/lib/elementary/elm_interface_fileselector.h +++ b/src/lib/elementary/elm_interface_fileselector.h @@ -2,10 +2,10 @@ #define ELM_INTEFARCE_FILESELECTOR_H #ifdef EFL_EO_API_SUPPORT -#include "elm_interface_fileselector.eo.h" +#include "elm_interface_fileselector_eo.h" #endif #ifndef EFL_NOLEGACY_API_SUPPORT -#include "elm_interface_fileselector.eo.legacy.h" +#include "elm_interface_fileselector_eo.legacy.h" #endif #define ELM_FILESELECTOR_INTERFACE_CHECK(obj, ...) \ diff --git a/src/lib/elementary/elm_interface_fileselector_eo.c b/src/lib/elementary/elm_interface_fileselector_eo.c new file mode 100644 index 0000000000..d24b1dc54d --- /dev/null +++ b/src/lib/elementary/elm_interface_fileselector_eo.c @@ -0,0 +1,236 @@ + +static Eina_Error +__eolian_elm_interface_fileselector_folder_only_set_reflect(Eo *obj, Eina_Value val) +{ + Eina_Error r = 0; Eina_Bool cval; + if (!eina_value_bool_convert(&val, &cval)) + { + r = EINA_ERROR_VALUE_FAILED; + goto end; + } + elm_interface_fileselector_folder_only_set(obj, cval); + end: + eina_value_flush(&val); + return r; +} + +EOAPI EFL_VOID_FUNC_BODYV(elm_interface_fileselector_folder_only_set, EFL_FUNC_CALL(only), Eina_Bool only); + +static Eina_Value +__eolian_elm_interface_fileselector_folder_only_get_reflect(Eo *obj) +{ + Eina_Bool val = elm_interface_fileselector_folder_only_get(obj); + return eina_value_bool_init(val); +} + +EOAPI EFL_FUNC_BODY_CONST(elm_interface_fileselector_folder_only_get, Eina_Bool, 0); +EOAPI EFL_VOID_FUNC_BODYV(elm_interface_fileselector_thumbnail_size_set, EFL_FUNC_CALL(w, h), int w, int h); +EOAPI EFL_VOID_FUNC_BODYV_CONST(elm_interface_fileselector_thumbnail_size_get, EFL_FUNC_CALL(w, h), int *w, int *h); + +static Eina_Error +__eolian_elm_interface_fileselector_hidden_visible_set_reflect(Eo *obj, Eina_Value val) +{ + Eina_Error r = 0; Eina_Bool cval; + if (!eina_value_bool_convert(&val, &cval)) + { + r = EINA_ERROR_VALUE_FAILED; + goto end; + } + elm_interface_fileselector_hidden_visible_set(obj, cval); + end: + eina_value_flush(&val); + return r; +} + +EOAPI EFL_VOID_FUNC_BODYV(elm_interface_fileselector_hidden_visible_set, EFL_FUNC_CALL(hidden), Eina_Bool hidden); + +static Eina_Value +__eolian_elm_interface_fileselector_hidden_visible_get_reflect(Eo *obj) +{ + Eina_Bool val = elm_interface_fileselector_hidden_visible_get(obj); + return eina_value_bool_init(val); +} + +EOAPI EFL_FUNC_BODY_CONST(elm_interface_fileselector_hidden_visible_get, Eina_Bool, 0); +EOAPI EFL_VOID_FUNC_BODYV(elm_interface_fileselector_sort_method_set, EFL_FUNC_CALL(sort), Elm_Fileselector_Sort sort); +EOAPI EFL_FUNC_BODY_CONST(elm_interface_fileselector_sort_method_get, Elm_Fileselector_Sort, 0); + +static Eina_Error +__eolian_elm_interface_fileselector_multi_select_set_reflect(Eo *obj, Eina_Value val) +{ + Eina_Error r = 0; Eina_Bool cval; + if (!eina_value_bool_convert(&val, &cval)) + { + r = EINA_ERROR_VALUE_FAILED; + goto end; + } + elm_interface_fileselector_multi_select_set(obj, cval); + end: + eina_value_flush(&val); + return r; +} + +EOAPI EFL_VOID_FUNC_BODYV(elm_interface_fileselector_multi_select_set, EFL_FUNC_CALL(multi), Eina_Bool multi); + +static Eina_Value +__eolian_elm_interface_fileselector_multi_select_get_reflect(Eo *obj) +{ + Eina_Bool val = elm_interface_fileselector_multi_select_get(obj); + return eina_value_bool_init(val); +} + +EOAPI EFL_FUNC_BODY_CONST(elm_interface_fileselector_multi_select_get, Eina_Bool, 0); + +static Eina_Error +__eolian_elm_interface_fileselector_expandable_set_reflect(Eo *obj, Eina_Value val) +{ + Eina_Error r = 0; Eina_Bool cval; + if (!eina_value_bool_convert(&val, &cval)) + { + r = EINA_ERROR_VALUE_FAILED; + goto end; + } + elm_interface_fileselector_expandable_set(obj, cval); + end: + eina_value_flush(&val); + return r; +} + +EOAPI EFL_VOID_FUNC_BODYV(elm_interface_fileselector_expandable_set, EFL_FUNC_CALL(expand), Eina_Bool expand); + +static Eina_Value +__eolian_elm_interface_fileselector_expandable_get_reflect(Eo *obj) +{ + Eina_Bool val = elm_interface_fileselector_expandable_get(obj); + return eina_value_bool_init(val); +} + +EOAPI EFL_FUNC_BODY_CONST(elm_interface_fileselector_expandable_get, Eina_Bool, 0); +EOAPI EFL_VOID_FUNC_BODYV(elm_interface_fileselector_mode_set, EFL_FUNC_CALL(mode), Elm_Fileselector_Mode mode); +EOAPI EFL_FUNC_BODY_CONST(elm_interface_fileselector_mode_get, Elm_Fileselector_Mode, 0); + +static Eina_Error +__eolian_elm_interface_fileselector_is_save_set_reflect(Eo *obj, Eina_Value val) +{ + Eina_Error r = 0; Eina_Bool cval; + if (!eina_value_bool_convert(&val, &cval)) + { + r = EINA_ERROR_VALUE_FAILED; + goto end; + } + elm_interface_fileselector_is_save_set(obj, cval); + end: + eina_value_flush(&val); + return r; +} + +EOAPI EFL_VOID_FUNC_BODYV(elm_interface_fileselector_is_save_set, EFL_FUNC_CALL(is_save), Eina_Bool is_save); + +static Eina_Value +__eolian_elm_interface_fileselector_is_save_get_reflect(Eo *obj) +{ + Eina_Bool val = elm_interface_fileselector_is_save_get(obj); + return eina_value_bool_init(val); +} + +EOAPI EFL_FUNC_BODY_CONST(elm_interface_fileselector_is_save_get, Eina_Bool, 0); +EOAPI EFL_FUNC_BODY_CONST(elm_interface_fileselector_selected_models_get, const Eina_List *, NULL); + +static Eina_Error +__eolian_elm_interface_fileselector_current_name_set_reflect(Eo *obj, Eina_Value val) +{ + Eina_Error r = 0; const char *cval; + if (!eina_value_string_convert(&val, &cval)) + { + r = EINA_ERROR_VALUE_FAILED; + goto end; + } + elm_interface_fileselector_current_name_set(obj, cval); + end: + eina_value_flush(&val); + return r; +} + +EOAPI EFL_VOID_FUNC_BODYV(elm_interface_fileselector_current_name_set, EFL_FUNC_CALL(name), const char *name); + +static Eina_Value +__eolian_elm_interface_fileselector_current_name_get_reflect(Eo *obj) +{ + const char *val = elm_interface_fileselector_current_name_get(obj); + return eina_value_string_init(val); +} + +EOAPI EFL_FUNC_BODY_CONST(elm_interface_fileselector_current_name_get, const char *, NULL); +EOAPI EFL_FUNC_BODYV(elm_interface_fileselector_selected_model_set, Eina_Bool, 0, EFL_FUNC_CALL(model), Efl_Io_Model *model); +EOAPI EFL_FUNC_BODY_CONST(elm_interface_fileselector_selected_model_get, Efl_Io_Model *, NULL); +EOAPI EFL_FUNC_BODYV(elm_interface_fileselector_custom_filter_append, Eina_Bool, 0, EFL_FUNC_CALL(func, data, filter_name), Elm_Fileselector_Filter_Func func, void *data, const char *filter_name); +EOAPI EFL_VOID_FUNC_BODY(elm_interface_fileselector_filters_clear); +EOAPI EFL_FUNC_BODYV(elm_interface_fileselector_mime_types_filter_append, Eina_Bool, 0, EFL_FUNC_CALL(mime_types, filter_name), const char *mime_types, const char *filter_name); + +static Eina_Bool +_elm_interface_fileselector_class_initializer(Efl_Class *klass) +{ + const Efl_Object_Ops *opsp = NULL; + + const Efl_Object_Property_Reflection_Ops *ropsp = NULL; + +#ifndef ELM_INTERFACE_FILESELECTOR_EXTRA_OPS +#define ELM_INTERFACE_FILESELECTOR_EXTRA_OPS +#endif + + EFL_OPS_DEFINE(ops, + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_folder_only_set, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_folder_only_get, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_thumbnail_size_set, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_thumbnail_size_get, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_hidden_visible_set, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_hidden_visible_get, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_sort_method_set, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_sort_method_get, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_multi_select_set, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_multi_select_get, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_expandable_set, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_expandable_get, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_mode_set, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_mode_get, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_is_save_set, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_is_save_get, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_selected_models_get, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_current_name_set, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_current_name_get, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_selected_model_set, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_selected_model_get, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_custom_filter_append, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_filters_clear, NULL), + EFL_OBJECT_OP_FUNC(elm_interface_fileselector_mime_types_filter_append, NULL), + ELM_INTERFACE_FILESELECTOR_EXTRA_OPS + ); + opsp = &ops; + + static const Efl_Object_Property_Reflection refl_table[] = { + {"folder_only", __eolian_elm_interface_fileselector_folder_only_set_reflect, __eolian_elm_interface_fileselector_folder_only_get_reflect}, + {"hidden_visible", __eolian_elm_interface_fileselector_hidden_visible_set_reflect, __eolian_elm_interface_fileselector_hidden_visible_get_reflect}, + {"multi_select", __eolian_elm_interface_fileselector_multi_select_set_reflect, __eolian_elm_interface_fileselector_multi_select_get_reflect}, + {"expandable", __eolian_elm_interface_fileselector_expandable_set_reflect, __eolian_elm_interface_fileselector_expandable_get_reflect}, + {"is_save", __eolian_elm_interface_fileselector_is_save_set_reflect, __eolian_elm_interface_fileselector_is_save_get_reflect}, + {"current_name", __eolian_elm_interface_fileselector_current_name_set_reflect, __eolian_elm_interface_fileselector_current_name_get_reflect}, + }; + static const Efl_Object_Property_Reflection_Ops rops = { + refl_table, EINA_C_ARRAY_LENGTH(refl_table) + }; + ropsp = &rops; + + return efl_class_functions_set(klass, opsp, ropsp); +} + +static const Efl_Class_Description _elm_interface_fileselector_class_desc = { + EO_VERSION, + "Elm.Interface.Fileselector", + EFL_CLASS_TYPE_INTERFACE, + 0, + _elm_interface_fileselector_class_initializer, + NULL, + NULL +}; + +EFL_DEFINE_CLASS(elm_interface_fileselector_interface_get, &_elm_interface_fileselector_class_desc, NULL, EFL_UI_VIEW_INTERFACE, NULL); diff --git a/src/lib/elementary/elm_interface_fileselector_eo.h b/src/lib/elementary/elm_interface_fileselector_eo.h new file mode 100644 index 0000000000..f0996f18ae --- /dev/null +++ b/src/lib/elementary/elm_interface_fileselector_eo.h @@ -0,0 +1,326 @@ +#ifndef _ELM_INTERFACE_FILESELECTOR_EO_H_ +#define _ELM_INTERFACE_FILESELECTOR_EO_H_ + +#ifndef _ELM_INTERFACE_FILESELECTOR_EO_CLASS_TYPE +#define _ELM_INTERFACE_FILESELECTOR_EO_CLASS_TYPE + +typedef Eo Elm_Interface_Fileselector; + +#endif + +#ifndef _ELM_INTERFACE_FILESELECTOR_EO_TYPES +#define _ELM_INTERFACE_FILESELECTOR_EO_TYPES + +/** Defines how a file selector widget is to layout its contents (file system + * entries). + * + * @ingroup Elm_Fileselector + */ +typedef enum +{ + ELM_FILESELECTOR_LIST = 0, /**< Layout as a list. */ + ELM_FILESELECTOR_GRID, /**< Layout as a grid. */ + ELM_FILESELECTOR_LAST /**< Sentinel value to indicate last enum field during + * iteration */ +} Elm_Fileselector_Mode; + +/** Fileselector sorting modes + * + * @ingroup Elm_Fileselector + */ +typedef enum +{ + ELM_FILESELECTOR_SORT_BY_FILENAME_ASC = 0, /**< Alphabetical sort by ascending + * filename, default */ + ELM_FILESELECTOR_SORT_BY_FILENAME_DESC, /**< Alphabetical sorting by + * descending filename */ + ELM_FILESELECTOR_SORT_BY_TYPE_ASC, /**< Sort by file type */ + ELM_FILESELECTOR_SORT_BY_TYPE_DESC, /**< Sort by file type description */ + ELM_FILESELECTOR_SORT_BY_SIZE_ASC, /**< Sort by ascending file size */ + ELM_FILESELECTOR_SORT_BY_SIZE_DESC, /**< Sort by descending file size */ + ELM_FILESELECTOR_SORT_BY_MODIFIED_ASC, /**< Sort by ascending modified date */ + ELM_FILESELECTOR_SORT_BY_MODIFIED_DESC, /**< Sort by descending modified date + */ + ELM_FILESELECTOR_SORT_LAST /**< Sentinel value to indicate last enum field + * during iteration */ +} Elm_Fileselector_Sort; + + +#endif +/** Elementary fileselector interface + * + * @ingroup Elm_Interface_Fileselector + */ +#define ELM_INTERFACE_FILESELECTOR_INTERFACE elm_interface_fileselector_interface_get() + +EWAPI const Efl_Class *elm_interface_fileselector_interface_get(void); + +/** + * @brief Enable/disable folder-only view for a given file selector widget + * + * @param[in] obj The object. + * @param[in] only @c true if folder view is set, @c false otherwise + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI void elm_interface_fileselector_folder_only_set(Eo *obj, Eina_Bool only); + +/** + * @brief Get whether folder-only view is set for a given file selector + * + * @param[in] obj The object. + * + * @return @c true if folder view is set, @c false otherwise + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI Eina_Bool elm_interface_fileselector_folder_only_get(const Eo *obj); + +/** + * @brief Set the size for the thumbnail of the file selector widget's view. + * + * @param[in] obj The object. + * @param[in] w Width + * @param[in] h Height + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI void elm_interface_fileselector_thumbnail_size_set(Eo *obj, int w, int h); + +/** + * @brief Get the size for the thumbnail of a given file selector widget + * + * @param[in] obj The object. + * @param[out] w Width + * @param[out] h Height + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI void elm_interface_fileselector_thumbnail_size_get(const Eo *obj, int *w, int *h); + +/** + * @brief Enable or disable visibility of hidden files/directories in the file + * selector widget. + * + * @param[in] obj The object. + * @param[in] hidden @c true if hidden files are visible, @c false otherwise + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI void elm_interface_fileselector_hidden_visible_set(Eo *obj, Eina_Bool hidden); + +/** + * @brief Get if hiden files/directories in the file selector are visible or + * not. + * + * @param[in] obj The object. + * + * @return @c true if hidden files are visible, @c false otherwise + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI Eina_Bool elm_interface_fileselector_hidden_visible_get(const Eo *obj); + +/** + * @brief Set the sort method of the file selector widget. + * + * @param[in] obj The object. + * @param[in] sort Sort method + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI void elm_interface_fileselector_sort_method_set(Eo *obj, Elm_Fileselector_Sort sort); + +/** + * @brief Get the sort method of the file selector widget. + * + * @param[in] obj The object. + * + * @return Sort method + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI Elm_Fileselector_Sort elm_interface_fileselector_sort_method_get(const Eo *obj); + +/** + * @brief Enable or disable multi-selection in the fileselector + * + * @param[in] obj The object. + * @param[in] multi @c true if multiselection is enabled, @c false otherwise + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI void elm_interface_fileselector_multi_select_set(Eo *obj, Eina_Bool multi); + +/** + * @brief Gets if multi-selection in fileselector is enabled or disabled. + * + * @param[in] obj The object. + * + * @return @c true if multiselection is enabled, @c false otherwise + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI Eina_Bool elm_interface_fileselector_multi_select_get(const Eo *obj); + +/** + * @brief Enable/disable a tree view in the given file selector widget, if + * it's in + * + * @param[in] obj The object. + * @param[in] expand @c true if tree view is expanded, @c false otherwise + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI void elm_interface_fileselector_expandable_set(Eo *obj, Eina_Bool expand); + +/** + * @brief Get whether tree view is enabled for the given file selector + * + * @param[in] obj The object. + * + * @return @c true if tree view is expanded, @c false otherwise + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI Eina_Bool elm_interface_fileselector_expandable_get(const Eo *obj); + +/** + * @brief Set the mode in which a given file selector widget will display + * (layout) file system entries in its view + * + * @param[in] obj The object. + * @param[in] mode Fileselector mode + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI void elm_interface_fileselector_mode_set(Eo *obj, Elm_Fileselector_Mode mode); + +/** + * @brief Get the mode in which a given file selector widget is displaying + * + * @param[in] obj The object. + * + * @return Fileselector mode + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI Elm_Fileselector_Mode elm_interface_fileselector_mode_get(const Eo *obj); + +/** + * @brief 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 object. + * @param[in] is_save @c true if in saving mode, @c false otherwise + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI void elm_interface_fileselector_is_save_set(Eo *obj, Eina_Bool is_save); + +/** + * @brief Get whether the given file selector is in "saving dialog" mode + * + * @param[in] obj The object. + * + * @return @c true if in saving mode, @c false otherwise + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI Eina_Bool elm_interface_fileselector_is_save_get(const Eo *obj); + +/** + * @brief Get a list of models selected in the fileselector. + * + * @param[in] obj The object. + * + * @return List of selected models + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI const Eina_List *elm_interface_fileselector_selected_models_get(const Eo *obj); + +/** + * @brief The filename that will be displayed in the filename entry + * + * @param[in] obj The object. + * @param[in] name Name + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI void elm_interface_fileselector_current_name_set(Eo *obj, const char *name); + +/** + * @brief The filename that will be displayed in the filename entry + * + * @param[in] obj The object. + * + * @return Name + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI const char *elm_interface_fileselector_current_name_get(const Eo *obj); + +#ifdef EFL_BETA_API_SUPPORT +/** + * @brief Set, programmatically, the currently selected file/directory in the + * given file selector widget + * + * @param[in] obj The object. + * @param[in] model Model to be set, NULL reset it. + * + * @return @c true on success, @c false otherwise + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI Eina_Bool elm_interface_fileselector_selected_model_set(Eo *obj, Efl_Io_Model *model); +#endif /* EFL_BETA_API_SUPPORT */ + +#ifdef EFL_BETA_API_SUPPORT +/** + * @brief Get the currently selected item's model, in the given file the given + * file selector widget + * + * @param[in] obj The object. + * + * @return Model to be set, NULL reset it. + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI Efl_Io_Model *elm_interface_fileselector_selected_model_get(const Eo *obj); +#endif /* EFL_BETA_API_SUPPORT */ + +/** + * @brief Append custom filter into filter list + * + * @param[in] obj The object. + * @param[in] func Filter function + * @param[in] data Data pointer + * @param[in] filter_name Filter name + * + * @return @c true on success, @c false otherwise + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI Eina_Bool elm_interface_fileselector_custom_filter_append(Eo *obj, Elm_Fileselector_Filter_Func func, void *data, const char *filter_name); + +/** Clear all filters registered + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI void elm_interface_fileselector_filters_clear(Eo *obj); + +/** + * @brief Append mime type based filter into filter list + * + * @param[in] obj The object. + * @param[in] mime_types Mime types + * @param[in] filter_name Filter name + * + * @return @c true on success, @c false otherwise + * + * @ingroup Elm_Interface_Fileselector + */ +EOAPI Eina_Bool elm_interface_fileselector_mime_types_filter_append(Eo *obj, const char *mime_types, const char *filter_name); + +#endif diff --git a/src/lib/elementary/elm_interface_fileselector_eo.legacy.h b/src/lib/elementary/elm_interface_fileselector_eo.legacy.h new file mode 100644 index 0000000000..31c7a45dc2 --- /dev/null +++ b/src/lib/elementary/elm_interface_fileselector_eo.legacy.h @@ -0,0 +1,73 @@ +#ifndef _ELM_INTERFACE_FILESELECTOR_EO_LEGACY_H_ +#define _ELM_INTERFACE_FILESELECTOR_EO_LEGACY_H_ + +#ifndef _ELM_INTERFACE_FILESELECTOR_EO_CLASS_TYPE +#define _ELM_INTERFACE_FILESELECTOR_EO_CLASS_TYPE + +typedef Eo Elm_Interface_Fileselector; + +#endif + +#ifndef _ELM_INTERFACE_FILESELECTOR_EO_TYPES +#define _ELM_INTERFACE_FILESELECTOR_EO_TYPES + +/** Defines how a file selector widget is to layout its contents (file system + * entries). + * + * @ingroup Elm_Fileselector + */ +typedef enum +{ + ELM_FILESELECTOR_LIST = 0, /**< Layout as a list. */ + ELM_FILESELECTOR_GRID, /**< Layout as a grid. */ + ELM_FILESELECTOR_LAST /**< Sentinel value to indicate last enum field during + * iteration */ +} Elm_Fileselector_Mode; + +/** Fileselector sorting modes + * + * @ingroup Elm_Fileselector + */ +typedef enum +{ + ELM_FILESELECTOR_SORT_BY_FILENAME_ASC = 0, /**< Alphabetical sort by ascending + * filename, default */ + ELM_FILESELECTOR_SORT_BY_FILENAME_DESC, /**< Alphabetical sorting by + * descending filename */ + ELM_FILESELECTOR_SORT_BY_TYPE_ASC, /**< Sort by file type */ + ELM_FILESELECTOR_SORT_BY_TYPE_DESC, /**< Sort by file type description */ + ELM_FILESELECTOR_SORT_BY_SIZE_ASC, /**< Sort by ascending file size */ + ELM_FILESELECTOR_SORT_BY_SIZE_DESC, /**< Sort by descending file size */ + ELM_FILESELECTOR_SORT_BY_MODIFIED_ASC, /**< Sort by ascending modified date */ + ELM_FILESELECTOR_SORT_BY_MODIFIED_DESC, /**< Sort by descending modified date + */ + ELM_FILESELECTOR_SORT_LAST /**< Sentinel value to indicate last enum field + * during iteration */ +} Elm_Fileselector_Sort; + + +#endif + + + + + + + + + + + + + + + + + + + + + + + +#endif diff --git a/src/lib/elementary/meson.build b/src/lib/elementary/meson.build index 32ed3e8633..3cf8fe8787 100644 --- a/src/lib/elementary/meson.build +++ b/src/lib/elementary/meson.build @@ -1,6 +1,5 @@ pub_legacy_eo_files = [ 'efl_ui_clock_legacy.eo', - 'elm_interface_fileselector.eo', 'elm_label.eo', 'elm_list.eo', 'elm_map.eo', @@ -763,6 +762,8 @@ elementary_pub_headers = [ 'elm_index_eo.legacy.h', 'elm_index_item_eo.h', 'elm_index_item_eo.legacy.h', + 'elm_interface_fileselector_eo.h', + 'elm_interface_fileselector_eo.legacy.h', ] elementary_header_src = [