/usr/include/elementary-1/elm_prefs_common.h is in libelementary-dev 1.8.5-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 | /**
* Modes of resetting a prefs widget.
*
* @see elm_prefs_reset()
*
* @since 1.8
*/
typedef enum
{
ELM_PREFS_RESET_DEFAULTS, /** reset to default values, declared in its @b .epb file */
ELM_PREFS_RESET_LAST /** prefs will keep a small history of changes, so this resets back to last batch of changes on the UI elements. it does @b not work on autosave mode */
} Elm_Prefs_Reset_Mode;
/**
* @brief Add a new prefs widget
*
* @param parent The parent widget to hold the new one
* @return The new object or @c NULL, on errors
*
* @since 1.8
*/
EAPI Evas_Object *elm_prefs_add(Evas_Object *parent);
/* API for prefs interface modules, from now on */
typedef struct _Elm_Prefs_Item_Spec_Void
{
} Elm_Prefs_Item_Spec_Void;
typedef struct _Elm_Prefs_Item_Spec_Bool
{
Eina_Bool def;
} Elm_Prefs_Item_Spec_Bool;
typedef struct _Elm_Prefs_Item_Spec_Int
{
int def, min, max;
} Elm_Prefs_Item_Spec_Int;
typedef struct _Elm_Prefs_Item_Spec_Float
{
float def, min, max;
} Elm_Prefs_Item_Spec_Float;
typedef struct _Elm_Prefs_Item_Spec_String
{
const char *def;
const char *placeholder;
const char *accept;
const char *deny;
struct
{
int min, max;
} length;
} Elm_Prefs_Item_Spec_String;
typedef struct _Elm_Prefs_Item_Spec_Date
{
struct
{
unsigned char d; /* day*/
unsigned char m; /* month*/
unsigned short y; /* year */
} def;
struct
{
unsigned char d; /* day*/
unsigned char m; /* month*/
unsigned short y; /* year */
} min;
struct
{
unsigned char d; /* day*/
unsigned char m; /* month*/
unsigned short y; /* year */
} max;
} Elm_Prefs_Item_Spec_Date;
typedef struct _Elm_Prefs_Item_Spec_Page
{
const char *source;
} Elm_Prefs_Item_Spec_Page;
typedef union _Elm_Prefs_Item_Spec
{
Elm_Prefs_Item_Spec_Void v;
Elm_Prefs_Item_Spec_Bool b;
Elm_Prefs_Item_Spec_Int i;
Elm_Prefs_Item_Spec_Float f;
Elm_Prefs_Item_Spec_String s;
Elm_Prefs_Item_Spec_Date d;
Elm_Prefs_Item_Spec_Page p;
} Elm_Prefs_Item_Spec;
typedef struct _Elm_Prefs_Item_Iface Elm_Prefs_Item_Iface;
/**
* Convenience struct used to mass-register widgets implementing
* prefs @b items interfaces.
*
* To be used with elm_prefs_item_iface_register() and
* elm_prefs_item_iface_unregister().
*/
struct _Elm_Prefs_Item_Iface_Info
{
const char *widget_name; /**< The name of the widget implementing the interface, to be exposed on the prefs collections language. */
const Elm_Prefs_Item_Iface *info; /**< The type interface's implementation. */
};
typedef struct _Elm_Prefs_Item_Iface_Info Elm_Prefs_Item_Iface_Info;
typedef void (*Elm_Prefs_Item_Changed_Cb)(Evas_Object *it_obj); /**< Elementary prefs' item widget changed function signature */
/**
* @struct _Elm_Prefs_Item_Iface
*
* @brief Interface between items of the @ref elm-prefs-widget widget
* and the real widgets implementing them.
*
* This structure defines the interface between the
* @ref elm-prefs-widget widget's items (all item types in Elementary prefs
* collections but the @c PAGE one) and Elementary widgets
* implementing them. @c add() is the only mandatory function an
* item widget has to implement.
*
* @note For items of type @c PAGE, refer to #Elm_Prefs_Page_Iface.
*
* @since 1.8
*/
struct _Elm_Prefs_Item_Iface
{
#define ELM_PREFS_ITEM_IFACE_ABI_VERSION (1)
unsigned int abi_version; /**< always use:
* - #ELM_PREFS_ITEM_IFACE_ABI_VERSION to declare.
* - elm_prefs_widget_iface_abi_version_get() to check.
*/
const Elm_Prefs_Item_Type *types; /**< types of prefs items supported by the widget, #ELM_PREFS_TYPE_UNKNOWN terminated */
Evas_Object * (*add)(const Elm_Prefs_Item_Iface * iface,
Evas_Object * prefs,
const Elm_Prefs_Item_Type type,
const Elm_Prefs_Item_Spec spec,
Elm_Prefs_Item_Changed_Cb it_changed_cb); /**< Function to instantiate the item widget. It must return the widget handle, which should be the @c obj argument on the functions which follow. That object argument, by the way, should always have their respective #Elm_Prefs_Item_Node handle accessible via a @c "prefs_item" Evas object data value. The return value of the following functions should be @c EINA_TRUE, on success or @c EINA_FALSE, otherwise. */
Eina_Bool (*value_set)(Evas_Object *obj,
Eina_Value *value); /**< Function to set the value on the item widget. Note that for items of type #ELM_PREFS_TYPE_SEPARATOR, this function has a special meaning of making the separator widget a @b horizontal one */
Eina_Bool (*value_get)(Evas_Object *obj,
Eina_Value *value); /**< Function to set the value on the item widget. Note that for items of type #ELM_PREFS_TYPE_SEPARATOR, this function has a special meaning of making the separator widget a @b vertical one */
Eina_Bool (*value_validate)(Evas_Object *obj); /** < Function to validate the value from the item widget before saving it. The return value of the following function should be @c EINA_TRUE, if the value conforms with the expected or @c EINA_FALSE, otherwise. */
Eina_Bool (*label_set)(Evas_Object *obj,
const char *label); /**< function to set a label on the item widget */
Eina_Bool (*icon_set)(Evas_Object *obj,
const char *icon); /**< function to set an icon on the item widget */
Eina_Bool (*editable_set)(Evas_Object *obj,
Eina_Bool val); /**< function to set an item widget as editable or not */
Eina_Bool (*editable_get)(Evas_Object *obj); /**< function to retrieve whether an item widget is editable or not */
Eina_Bool (*expand_want)(Evas_Object *obj); /**< function to get wether the item implementation needs to be expanded in the page's longitudinal axis or not */
};
/**
* Mass-register widgets implementing prefs @b items interfaces.
*
* @param array An array of #Elm_Prefs_Iface_Info structs, @c NULL
* terminated.
*
* This will register all item interfaces declared on @a array in
* Elementary, so that the prefs widget will recognize them on @c .epc
* files @c 'widget:' (item) declarations.
*
* @see elm_prefs_item_iface_unregister()
*
* @since 1.8
*/
EAPI void elm_prefs_item_iface_register(const Elm_Prefs_Item_Iface_Info *array);
/**
* Mass-unregister widgets implementing prefs @b items interfaces.
*
* @param array An array of #Elm_Prefs_Iface_Info structs, @c NULL
* terminated.
*
* This will unregister all item interfaces declared on @a array in
* Elementary, given they had been previously registered.
*
* @see elm_prefs_item_iface_register() for more details
*
* @since 1.8
*/
EAPI void elm_prefs_item_iface_unregister(const Elm_Prefs_Item_Iface_Info *array);
EAPI Eina_Bool elm_prefs_item_widget_common_add(Evas_Object *prefs,
Evas_Object *obj);
typedef struct _Elm_Prefs_Page_Iface Elm_Prefs_Page_Iface;
/**
* Convenience struct used to mass-register widgets implementing
* prefs @b pages interfaces.
*
* To be used with elm_prefs_page_iface_register() and
* elm_prefs_page_iface_unregister().
*/
struct _Elm_Prefs_Page_Iface_Info
{
const char *widget_name; /**< The name of the widget implementing the interface, to be exposed on the prefs collections language. */
const Elm_Prefs_Page_Iface *info; /**< The interface's implementation. */
};
typedef struct _Elm_Prefs_Page_Iface_Info Elm_Prefs_Page_Iface_Info;
/**
* @struct _Elm_Prefs_Page_Iface
*
* @brief Interface between pages of the @ref elm-prefs-widget widget
* and the real widgets implementing them.
*
* This structure defines the interface between the
* @ref elm-prefs-widget widget's pages and Elementary widgets
* implementing them.
*
* It is @b mandatory that the following functions be implemented, at
* least, for a page widget:
*
* - #Elm_Prefs_Page_Iface::add
* - #Elm_Prefs_Page_Iface::item_pack
* - #Elm_Prefs_Page_Iface::item_unpack
* - #Elm_Prefs_Page_Iface::item_pack_before
* - #Elm_Prefs_Page_Iface::item_pack_after
*
* @note For regular, non-page prefs items, refer to #Elm_Prefs_Item_Iface.
*
* @since 1.8
*/
struct _Elm_Prefs_Page_Iface
{
#define ELM_PREFS_PAGE_IFACE_ABI_VERSION (1)
unsigned int abi_version; /**< always use:
* - #ELM_PREFS_PAGE_IFACE_ABI_VERSION to declare.
* - elm_prefs_widget_iface_abi_version_get() to check.
*/
Evas_Object * (*add)(const Elm_Prefs_Page_Iface * iface,
Evas_Object * prefs); /**< Function to instantiate the page widget. It must return the widget handle, which should be the @c obj argument on the functions which follow. That object argument, by the way, should always have their respective #Elm_Prefs_Page_Node handle accessible via a @c "prefs_page" Evas object data value. The return value of the following functions should be @c EINA_TRUE, on success or @c EINA_FALSE, otherwise. */
Eina_Bool (*title_set)(Evas_Object *obj,
const char *title); /**< function to set a title on the page widget */
Eina_Bool (*sub_title_set)(Evas_Object *obj,
const char *sub_title); /**< function to set a sub-title on the page widget */
Eina_Bool (*icon_set)(Evas_Object *obj,
const char *icon); /**< function to set an icon on the page widget */
Eina_Bool (*item_pack)(Evas_Object *obj,
Evas_Object *it,
const Elm_Prefs_Item_Type type,
const Elm_Prefs_Item_Iface *iface); /**< function to pack an item (widget) on the page widget */
Eina_Bool (*item_unpack)(Evas_Object *obj,
Evas_Object *it); /**< function to unpack an item (widget) on the page widget */
Eina_Bool (*item_pack_before)(Evas_Object *obj,
Evas_Object *it,
Evas_Object *it_before,
const Elm_Prefs_Item_Type type,
const Elm_Prefs_Item_Iface *iface); /**< function to pack an item (widget) on the page widget, before a pre-existing, referential, packed one */
Eina_Bool (*item_pack_after)(Evas_Object *obj,
Evas_Object *it,
Evas_Object *it_after, /**< function to pack an item (widget) on the page widget, after a pre-existing, referential, packed one */
const Elm_Prefs_Item_Type type,
const Elm_Prefs_Item_Iface *iface);
};
/**
* Mass-register widgets implementing prefs @b pages interfaces.
*
* @param array An array of #Elm_Prefs_Iface_Info structs, @c NULL
* terminated.
*
* This will register all page interfaces declared on @a array in
* Elementary, so that the prefs widget will recognize them on @c .epc
* files @c 'widget:' (page) declarations.
*
* @see elm_prefs_page_iface_unregister()
*
* @since 1.8
*/
EAPI void elm_prefs_page_iface_register(const Elm_Prefs_Page_Iface_Info *array);
/**
* Mass-unregister widgets implementing prefs @b pages interfaces.
*
* @param array An array of #Elm_Prefs_Iface_Info structs, @c NULL
* terminated.
*
* This will unregister all page interfaces declared on @a array in
* Elementary, given they had been previously registered.
*
* @see elm_prefs_page_iface_register() for more details
*
* @since 1.8
*/
EAPI void elm_prefs_page_iface_unregister(const Elm_Prefs_Page_Iface_Info *array);
|