Tizen Native API
5.0
|
Copy and paste feature implementations.
Implements the following functionality a. select, copy/cut and paste b. clipboard c. drag and drop in order to share data across application windows.
Contains functions to select text or a portion of data, send it to a buffer, and paste the data into a target.
elm_cnp provides a generic copy and paste facility based on its windowing system. It is not necessary to know the details of each windowing system, but some terms and behavior are common. Currently the X11 window system is widely used, and only X11 functionality is implemented.
In X11R6 window system, CopyPaste works like a peer-to-peer communication. Copying is an operation on an object in an X server. X11 calls those objects 'selections' which have names. Generally, two selection types are needed for copy and paste: The Primary selection and the Clipboard selection. Primary selection is for selecting text (that means highlighted text). Clipboard selection is for explicit copying behavior (such as ctrl+c, or 'copy' in a menu). Thus, in applications most cases only use the clipboard selection. As stated before, taking ownership of a selection doesn't move any actual data. Copying and Pasting is described as follows: 1. Copy text in Program A : Program A takes ownership of the selection 2. Paste text in Program B : Program B notes that Program A owns the selection 3. Program B asks A for the text 4. Program A responds and sends the text to program B 5. Program B pastes the response More information is on
- http://www.jwz.org/doc/x-cut-and-paste.html
- X11R6 Inter-Client Communication Conventions Manual, section 2
TODO: add for other window system.
Functions | |
Eina_Bool | elm_cnp_selection_set (Evas_Object *obj, Elm_Sel_Type selection, Elm_Sel_Format format, const void *buf, size_t buflen) |
Set copy data for a widget. | |
Eina_Bool | elm_cnp_selection_get (const Evas_Object *obj, Elm_Sel_Type selection, Elm_Sel_Format format, Elm_Drop_Cb datacb, void *udata) |
Get data from a widget that has a selection. | |
Eina_Bool | elm_object_cnp_selection_clear (Evas_Object *obj, Elm_Sel_Type selection) |
Clear the selection data of a widget. | |
void | elm_cnp_selection_loss_callback_set (Evas_Object *obj, Elm_Sel_Type selection, Elm_Selection_Loss_Cb func, const void *data) |
Set a function to be called when a selection is lost. | |
Eina_Bool | elm_cnp_clipboard_selection_has_owner (Evas_Object *win) |
Determine whether the clipboard selection has an owner. | |
Eina_Bool | elm_drop_target_add (Evas_Object *obj, Elm_Sel_Format format, Elm_Drag_State entercb, void *enterdata, Elm_Drag_State leavecb, void *leavedata, Elm_Drag_Pos poscb, void *posdata, Elm_Drop_Cb dropcb, void *dropdata) |
Set the given object as a target for drops for drag-and-drop. | |
Eina_Bool | elm_drop_target_del (Evas_Object *obj, Elm_Sel_Format format, Elm_Drag_State entercb, void *enterdata, Elm_Drag_State leavecb, void *leavedata, Elm_Drag_Pos poscb, void *posdata, Elm_Drop_Cb dropcb, void *dropdata) |
Deletes the drop target status of an object. | |
Eina_Bool | elm_drag_start (Evas_Object *obj, Elm_Sel_Format format, const char *data, Elm_Xdnd_Action action, Elm_Drag_Icon_Create_Cb createicon, void *createdata, Elm_Drag_Pos dragpos, void *dragdata, Elm_Drag_Accept acceptcb, void *acceptdata, Elm_Drag_State dragdone, void *donecbdata) |
Begins a drag given a source object. | |
Eina_Bool | elm_drag_cancel (Evas_Object *obj) |
Cancels the current drag operation. | |
Eina_Bool | elm_drag_action_set (Evas_Object *obj, Elm_Xdnd_Action action) |
Changes the current drag action. | |
Eina_Bool | elm_drag_item_container_add (Evas_Object *obj, double tm_to_anim, double tm_to_drag, Elm_Xy_Item_Get_Cb itemgetcb, Elm_Item_Container_Data_Get_Cb data_get) |
Set a item container (list, genlist, grid) as source of drag. | |
Eina_Bool | elm_drag_item_container_del (Evas_Object *obj) |
Deletes a item container from drag-source list. | |
Eina_Bool | elm_drop_item_container_add (Evas_Object *obj, Elm_Sel_Format format, Elm_Xy_Item_Get_Cb itemgetcb, Elm_Drag_State entercb, void *enterdata, Elm_Drag_State leavecb, void *leavedata, Elm_Drag_Item_Container_Pos poscb, void *posdata, Elm_Drop_Item_Container_Cb dropcb, void *dropdata) |
Set a item container (list, genlist, grid) as target for drop. | |
Eina_Bool | elm_drop_item_container_del (Evas_Object *obj) |
Removes a container from list of drop targets. | |
Typedefs | |
typedef Efl_Selection_Type | Elm_Sel_Type |
typedef Efl_Selection_Format | Elm_Sel_Format |
typedef struct Elm_Cnp_Event_Selection_Changed | Elm_Cnp_Event_Selection_Changed |
typedef Eina_Bool(* | Elm_Drop_Cb )(void *data, Evas_Object *obj, Elm_Selection_Data *ev) |
typedef Elm_Object_Item *(* | Elm_Xy_Item_Get_Cb )(Evas_Object *obj, Evas_Coord x, Evas_Coord y, int *xposret, int *yposret) |
typedef void(* | Elm_Selection_Loss_Cb )(void *data, Elm_Sel_Type selection) |
typedef Evas_Object *(* | Elm_Drag_Icon_Create_Cb )(void *data, Evas_Object *win, Evas_Coord *xoff, Evas_Coord *yoff) |
typedef void(* | Elm_Drag_State )(void *data, Evas_Object *obj) |
typedef void(* | Elm_Drag_Done )(void *data, Evas_Object *obj, Eina_Bool accepted) |
typedef void(* | Elm_Drag_Accept )(void *data, Evas_Object *obj, Eina_Bool doaccept) |
typedef void(* | Elm_Drag_Pos )(void *data, Evas_Object *obj, Evas_Coord x, Evas_Coord y, Elm_Xdnd_Action action) |
typedef void(* | Elm_Drag_Start )(void *data, Evas_Object *obj) |
typedef void(* | Elm_Drag_Item_Container_Pos )(void *data, Evas_Object *cont, Elm_Object_Item *it, Evas_Coord x, Evas_Coord y, int xposret, int yposret, Elm_Xdnd_Action action) |
typedef Eina_Bool(* | Elm_Drop_Item_Container_Cb )(void *data, Evas_Object *obj, Elm_Object_Item *it, Elm_Selection_Data *ev, int xposret, int yposret) |
typedef struct _Elm_Drag_User_Info | Elm_Drag_User_Info |
typedef Eina_Bool(* | Elm_Item_Container_Data_Get_Cb )(Evas_Object *obj, Elm_Object_Item *it, Elm_Drag_User_Info *info) |
Typedef Documentation
typedef struct Elm_Cnp_Event_Selection_Changed Elm_Cnp_Event_Selection_Changed |
Event to notify when a display server's selection has changed Only sent for PRIMARY and CLIPBOARD selections
- Since (EFL) :
- 1.20
typedef void(* Elm_Drag_Accept)(void *data, Evas_Object *obj, Eina_Bool doaccept) |
Callback called when a drag is responded to with an accept or deny
- Parameters:
-
data Application specific data obj The object where the drag started doaccept A boolean as to if the target accepts the drag or not
- Since (EFL) :
- 1.8
typedef void(* Elm_Drag_Done)(void *data, Evas_Object *obj, Eina_Bool accepted) |
Callback called when a drag is finished.
- Parameters:
-
data Application specific data obj The object where the drag started accepted TRUE if the droppped-data is accepted on drop
- Since (EFL) :
- 1.8
typedef Evas_Object*(* Elm_Drag_Icon_Create_Cb)(void *data, Evas_Object *win, Evas_Coord *xoff, Evas_Coord *yoff) |
Callback called to create a drag icon object
- Parameters:
-
data Application specific data win The window to create the objects relative to xoff A return coordinate for the X offset at which to place the drag icon object relative to the source drag object yoff A return coordinate for the Y offset at which to place the drag icon object relative to the source drag object
- Returns:
- An object to fill the drag window with or NULL if not needed
- Since (EFL) :
- 1.8
typedef void(* Elm_Drag_Item_Container_Pos)(void *data, Evas_Object *cont, Elm_Object_Item *it, Evas_Coord x, Evas_Coord y, int xposret, int yposret, Elm_Xdnd_Action action) |
Callback called when a drag is over an object
- Parameters:
-
data Application specific data cont The container object where the drag started it The object item in container where mouse-over x The X coordinate relative to the top-left of the object y The Y coordinate relative to the top-left of the object xposret Position relative to item (left (-1), middle (0), right (1) yposret Position relative to item (upper (-1), middle (0), bottom (1) action The drag action to be done
- Since (EFL) :
- 1.8
typedef void(* Elm_Drag_Pos)(void *data, Evas_Object *obj, Evas_Coord x, Evas_Coord y, Elm_Xdnd_Action action) |
Callback called when a drag is over an object, and gives object-relative coordinates
- Parameters:
-
data Application specific data obj The object where the drag started x The X coordinate relative to the top-left of the object y The Y coordinate relative to the top-left of the object
- Since (EFL) :
- 1.8
typedef void(* Elm_Drag_Start)(void *data, Evas_Object *obj) |
Callback called when a drag starts from an item container
- Parameters:
-
data Application specific data obj The object where the drag started
- Since (EFL) :
- 1.8
typedef void(* Elm_Drag_State)(void *data, Evas_Object *obj) |
Callback called when a drag is finished, enters, or leaves an object
- Parameters:
-
data Application specific data obj The object where the drag started
- Since (EFL) :
- 1.8
typedef struct _Elm_Drag_User_Info Elm_Drag_User_Info |
Structure describing user information for the drag process.
- Parameters:
-
format The drag formats supported by the data (output) data The drag data itself (a string) (output) icons if value not NULL, play default anim (output) action The drag action to be done (output) createicon Function to call to create a drag object, or NULL if not wanted (output) createdata Application data passed to createicon
(output)dragpos Function called with each position of the drag, x, y being screen coordinates if possible, and action being the current action. (output) dragdata Application data passed to dragpos
(output)acceptcb Function called indicating if drop target accepts (or does not) the drop data while dragging (output) acceptdata Application data passed to acceptcb
(output)dragdone Function to call when drag is done (output) donecbdata Application data to pass to dragdone
(output)
typedef Eina_Bool(* Elm_Drop_Cb)(void *data, Evas_Object *obj, Elm_Selection_Data *ev) |
Callback invoked in when the selected data is 'dropped' at its destination.
- Parameters:
-
data Application specific data obj The evas object where selected data is 'dropped'. ev struct holding information about selected data FIXME: this should probably be a smart callback
typedef Eina_Bool(* Elm_Drop_Item_Container_Cb)(void *data, Evas_Object *obj, Elm_Object_Item *it, Elm_Selection_Data *ev, int xposret, int yposret) |
Callback invoked in when the selected data is 'dropped' on container.
- Parameters:
-
data Application specific data obj The evas object where selected data is 'dropped'. it The item in container where drop-cords ev struct holding information about selected data xposret Position relative to item (left (-1), middle (0), right (1) yposret Position relative to item (upper (-1), middle (0), bottom (1)
typedef Eina_Bool(* Elm_Item_Container_Data_Get_Cb)(Evas_Object *obj, Elm_Object_Item *it, Elm_Drag_User_Info *info) |
Callback invoked when starting to drag for a container.
- Parameters:
-
obj The container object it The Elm_Object_Item pointer where drag-start
- Returns:
- Returns
EINA_TRUE
, if successful, orEINA_FALSE
if not.
typedef Efl_Selection_Format Elm_Sel_Format |
Defines the types of content.
typedef Efl_Selection_Type Elm_Sel_Type |
Defines the types of selection property names.
- See also:
- http://www.x.org/docs/X11/xlib.pdf for more details.
typedef void(* Elm_Selection_Loss_Cb)(void *data, Elm_Sel_Type selection) |
Callback invoked in when the selection ownership for a given selection is lost.
- Parameters:
-
data Application specific data selection The selection that is lost
- Since (EFL) :
- 1.7
typedef Elm_Object_Item*(* Elm_Xy_Item_Get_Cb)(Evas_Object *obj, Evas_Coord x, Evas_Coord y, int *xposret, int *yposret) |
Callback invoked to find out what object is under (x,y) coords
- Parameters:
-
obj The container object x cord to check y cord to check xposret Position relative to item (left (-1), middle (0), right (1) yposret Position relative to item (upper (-1), middle (0), bottom (1)
- Returns:
- object under x,y cords or NULL if not found.
Enumeration Type Documentation
enum Elm_Xdnd_Action |
Defines the kind of action associated with the drop data if for XDND
- Since (EFL) :
- 1.8
- Enumerator:
Function Documentation
Determine whether the clipboard selection has an owner.
- Parameters:
-
win The window object to check for
- Returns:
EINA_TRUE
if the clipboard has a selection
- Since (EFL) :
- 1.20
Eina_Bool elm_cnp_selection_get | ( | const Evas_Object * | obj, |
Elm_Sel_Type | selection, | ||
Elm_Sel_Format | format, | ||
Elm_Drop_Cb | datacb, | ||
void * | udata | ||
) |
Get data from a widget that has a selection.
Get the current selection data from a widget. The widget input here will usually be elm_entry, in which case datacb
and udata
can be NULL. If a different widget is passed, datacb
and udata
are used for retrieving data.
- See also:
- also elm_cnp_selection_set()
- Parameters:
-
selection Selection type for copying and pasting format Selection format obj The source widget datacb The user data callback if the target widget isn't elm_entry udata The user data pointer for datacb
- Returns:
- If
EINA_TRUE
, getting selection data was successful.
- Since :
- 2.4
void elm_cnp_selection_loss_callback_set | ( | Evas_Object * | obj, |
Elm_Sel_Type | selection, | ||
Elm_Selection_Loss_Cb | func, | ||
const void * | data | ||
) |
Set a function to be called when a selection is lost.
The function func
is set of be called when selection selection
is lost to another process or when elm_cnp_selection_set() is called. If func
is NULL then it is not called. data
is passed as the data parameter to the callback functions and selection is passed in as the selection that has been lost.
elm_cnp_selection_set() and elm_object_cnp_selection_clear() automatically set this los callback to NULL when called. If you wish to take the selection and then be notified of loss please do this (for example):
elm_cnp_selection_set(obj, ELM_SEL_TYPE_PRIMARY, ELM_SEL_FORMAT_TEXT, "hello", strlen(hello)); elm_cnp_selection_loss_callback_set(obj, ELM_SEL_TYPE_PRIMARY, loss_cb, NULL);
- See also:
- also elm_cnp_selection_set()
- Parameters:
-
obj The object to indicate the window target/display system. selection Selection to be notified of for loss func The function to call data The data pointer passed to the function.
- Since (EFL) :
- 1.7
- Since :
- 2.4
Eina_Bool elm_cnp_selection_set | ( | Evas_Object * | obj, |
Elm_Sel_Type | selection, | ||
Elm_Sel_Format | format, | ||
const void * | buf, | ||
size_t | buflen | ||
) |
Set copy data for a widget.
Set copy data and take ownership of selection. Format is used for specifying the selection type, and this is used during pasting.
- Parameters:
-
selection Selection type for copying and pasting obj The source widget pointer format Selection format buf The data selected buflen The size of buf
- Returns:
- If
EINA_TRUE
, setting data was successful.
- Since :
- 2.4
Eina_Bool elm_drag_action_set | ( | Evas_Object * | obj, |
Elm_Xdnd_Action | action | ||
) |
Changes the current drag action.
- Parameters:
-
obj The source of a drag if a drag is underway action The drag action to be done
- Returns:
- Returns
EINA_TRUE
, if successful, orEINA_FALSE
if not.
- Since (EFL) :
- 1.8
- Since :
- 2.4
Eina_Bool elm_drag_cancel | ( | Evas_Object * | obj | ) |
Cancels the current drag operation.
It can only be initiated from the source window.
- Parameters:
-
obj The source of the current drag.
- Returns:
- Returns
EINA_TRUE
, if successful, orEINA_FALSE
if not.
- Since (EFL) :
- 1.9
- Since :
- 2.4
Eina_Bool elm_drag_item_container_add | ( | Evas_Object * | obj, |
double | tm_to_anim, | ||
double | tm_to_drag, | ||
Elm_Xy_Item_Get_Cb | itemgetcb, | ||
Elm_Item_Container_Data_Get_Cb | data_get | ||
) |
Set a item container (list, genlist, grid) as source of drag.
- Parameters:
-
obj The container object. tm_to_anim Time period to wait before start animation. tm_to_drag Time period to wait before start dragging. itemgetcb Callback to get Evas_Object pointer for item at (x,y) data_get Callback to get drag info
- Returns:
- Returns
EINA_TRUE
, if successful, orEINA_FALSE
if not.
- Since (EFL) :
- 1.8
- Since :
- 2.4
Deletes a item container from drag-source list.
- Parameters:
-
obj The target object
- Returns:
- Returns
EINA_TRUE
, if successful, orEINA_FALSE
if not.
- Since (EFL) :
- 1.8
- Since :
- 2.4
Eina_Bool elm_drag_start | ( | Evas_Object * | obj, |
Elm_Sel_Format | format, | ||
const char * | data, | ||
Elm_Xdnd_Action | action, | ||
Elm_Drag_Icon_Create_Cb | createicon, | ||
void * | createdata, | ||
Elm_Drag_Pos | dragpos, | ||
void * | dragdata, | ||
Elm_Drag_Accept | acceptcb, | ||
void * | acceptdata, | ||
Elm_Drag_State | dragdone, | ||
void * | donecbdata | ||
) |
Begins a drag given a source object.
- Parameters:
-
obj The source object format The drag formats supported by the data data The drag data itself (a string) action The drag action to be done createicon Function to call to create a drag object, or NULL if not wanted createdata Application data passed to createicon
dragpos Function called with each position of the drag, x, y being screen coordinates if possible, and action being the current action. dragdata Application data passed to dragpos
acceptcb Function called indicating if drop target accepts (or does not) the drop data while dragging acceptdata Application data passed to acceptcb
dragdone Function to call when drag is done donecbdata Application data to pass to dragdone
- Returns:
- Returns
EINA_TRUE
, if successful, orEINA_FALSE
if not.
- Since (EFL) :
- 1.8
- Since :
- 2.4
Eina_Bool elm_drop_item_container_add | ( | Evas_Object * | obj, |
Elm_Sel_Format | format, | ||
Elm_Xy_Item_Get_Cb | itemgetcb, | ||
Elm_Drag_State | entercb, | ||
void * | enterdata, | ||
Elm_Drag_State | leavecb, | ||
void * | leavedata, | ||
Elm_Drag_Item_Container_Pos | poscb, | ||
void * | posdata, | ||
Elm_Drop_Item_Container_Cb | dropcb, | ||
void * | dropdata | ||
) |
Set a item container (list, genlist, grid) as target for drop.
- Parameters:
-
obj The container object. format The formats supported for dropping itemgetcb Callback to get Evas_Object pointer for item at (x,y) entercb The function to call when the object is entered with a drag enterdata The application data to pass to enterdata leavecb The function to call when the object is left with a drag leavedata The application data to pass to leavedata poscb The function to call when the object has a drag over it posdata The application data to pass to posdata dropcb The function to call when a drop has occurred dropdata The application data to pass to dropcb
- Returns:
- Returns
EINA_TRUE
, if successful, orEINA_FALSE
if not.
- Since (EFL) :
- 1.8
- Since :
- 2.4
Removes a container from list of drop targets.
- Parameters:
-
obj The container object
- Returns:
- Returns EINA_TRUE, if successful, or
EINA_FALSE
if not.
- Since (EFL) :
- 1.8
- Since :
- 2.4
Eina_Bool elm_drop_target_add | ( | Evas_Object * | obj, |
Elm_Sel_Format | format, | ||
Elm_Drag_State | entercb, | ||
void * | enterdata, | ||
Elm_Drag_State | leavecb, | ||
void * | leavedata, | ||
Elm_Drag_Pos | poscb, | ||
void * | posdata, | ||
Elm_Drop_Cb | dropcb, | ||
void * | dropdata | ||
) |
Set the given object as a target for drops for drag-and-drop.
- Parameters:
-
obj The target object format The formats supported for dropping entercb The function to call when the object is entered with a drag enterdata The application data to pass to enterdata leavecb The function to call when the object is left with a drag leavedata The application data to pass to leavedata poscb The function to call when the object has a drag over it posdata The application data to pass to posdata dropcb The function to call when a drop has occurred dropdata The application data to pass to dropcb
- Returns:
- Returns
EINA_TRUE
, if successful, orEINA_FALSE
if not.
- Since (EFL) :
- 1.8
- Since :
- 2.4
Eina_Bool elm_drop_target_del | ( | Evas_Object * | obj, |
Elm_Sel_Format | format, | ||
Elm_Drag_State | entercb, | ||
void * | enterdata, | ||
Elm_Drag_State | leavecb, | ||
void * | leavedata, | ||
Elm_Drag_Pos | poscb, | ||
void * | posdata, | ||
Elm_Drop_Cb | dropcb, | ||
void * | dropdata | ||
) |
Deletes the drop target status of an object.
- Parameters:
-
obj The target object format The formats supported for dropping entercb The function to call when the object is entered with a drag enterdata The application data to pass to enterdata leavecb The function to call when the object is left with a drag leavedata The application data to pass to leavedata poscb The function to call when the object has a drag over it posdata The application data to pass to posdata dropcb The function to call when a drop has occurred dropdata The application data to pass to dropcb
- Returns:
- Returns
EINA_TRUE
, if successful, orEINA_FALSE
if not.
- Since (EFL) :
- 1.8
- Since :
- 2.4
Eina_Bool elm_object_cnp_selection_clear | ( | Evas_Object * | obj, |
Elm_Sel_Type | selection | ||
) |
Clear the selection data of a widget.
Clear all data from the selection which is owned by a widget.
- See also:
- also elm_cnp_selection_set()
- Parameters:
-
obj The source widget selection Selection type for copying and pasting
- Returns:
- If
EINA_TRUE
, clearing data was successful.
- Since :
- 2.4
Variable Documentation
Event notifying that the selection has changed
- See also:
- Elm_Cnp_Event_Selection_Changed
- Since (EFL) :
- 1.20