summaryrefslogtreecommitdiff
path: root/src/lib/efl/interfaces/efl_ui_drag.eo
blob: 805f433d13e77c4be1c57358556e81114084d163 (plain) (blame)
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
/* FIXME: "dragable" is not as common as "draggable" outside EFL... */

import efl_ui_drag_types;

interface @beta Efl.Ui.Drag
{
   [[Common interface for draggable objects and parts.
   ]]
   methods {
      @property drag_value {
         [[The draggable object relative location.

           Some parts in Edje can be dragged along the X/Y axes, if the part
           contains a "draggable" section (in EDC). For instance, scroll bars
           can be draggable objects.

           $dx and $dy are real numbers that range from 0 to 1, representing
           the relative position to the draggable area on that axis.

           This value means, for the vertical axis, that 0.0 will be at the top
           if the first parameter of $y in the draggable part theme is 1 and at
           the bottom if it is -1.

           For the horizontal axis, 0.0 means left if the first parameter of $x
           in the draggable part theme is 1, and right if it is -1.
         ]]
         set {
            return: bool; [[$true on success, $false otherwise]]
         }
         get {
            return: bool; [[$true on success, $false otherwise]]
         }
         values {
            dx: double; [[The x relative position, from 0 to 1.]]
            dy: double; [[The y relative position, from 0 to 1.]]
         }
      }
      @property drag_size {
         [[The draggable object relative size.

           Values for $dw and $dh are real numbers that range from 0 to 1,
           representing the relative size of the draggable area on that axis.

           For instance a scroll bar handle size may depend on the size of
           the scroller's content.
         ]]
         set {
            return: bool; [[$true on success, $false otherwise]]
         }
         get {
            return: bool; [[$true on success, $false otherwise]]
         }
         values {
            dw: double; [[The drag relative width, from 0 to 1.]]
            dh: double; [[The drag relative height, from 0 to 1.]]
         }
      }
      @property drag_dir {
         [[Determines the draggable directions (read-only).

           The draggable directions are defined in the EDC file, inside the
           "draggable" section, by the attributes $x and $y. See the EDC
           reference documentation for more information.
         ]]
         get {
            return: Efl.Ui.Drag_Dir; [[The direction(s) premitted for drag.]]
         }
      }
      @property drag_step {
         [[The drag step increment.

           Values for $dx and $dy are real numbers that range from 0 to 1,
           representing the relative size of the draggable area on that axis by
           which the part will be moved.

           This differs from @.drag_page in that this is meant to
           represent a unit increment, like a single line for example.

           See also @.drag_page.
         ]]
         set {
            return: bool; [[$true on success, $false otherwise]]
         }
         get {
            return: bool; [[$true on success, $false otherwise]]
         }
         values {
            dx: double; [[The x step relative amount, from 0 to 1.]]
            dy: double; [[The y step relative amount, from 0 to 1.]]
         }
      }
      drag_step_move {
         [[Moves the draggable by $dx,$dy steps.

           This moves the draggable part by $dx,$dy steps where the step
           increment is the amount set by @.drag_step.set().

           $dx and $dy can be positive or negative numbers, integer values are
           recommended.
         ]]
         return: bool; [[$true on success, $false otherwise]]
         params {
            @in dx: double; [[The number of steps horizontally.]]
            @in dy: double; [[The number of steps vertically.]]
         }
      }
      @property drag_page {
         [[The page step increments.

           Values for $dx and $dy are real numbers that range from 0 to 1,
           representing the relative size of the draggable area on that axis by
           which the part will be moved.

           This differs from @.drag_step in that this is meant to be a
           larger step size, basically an entire page as opposed to a single
           or couple of lines.

           See also @.drag_step.
         ]]
         set {
            return: bool; [[$true on success, $false otherwise]]
         }
         get {
            return: bool; [[$true on success, $false otherwise]]
         }
         values {
            dx: double; [[The x page step increment]]
            dy: double; [[The y page step increment]]
         }
      }
      drag_page_move {
         [[Moves the draggable by $dx,$dy pages.

           This moves the draggable by $dx,$dy pages. The increment is
           defined by @.drag_page.set().

           $dx and $dy can be positive or negative numbers, integer values are
           recommended.

           Warning: Paging is bugged!
         ]]
         return: bool; [[$true on success, $false otherwise]]
         params {
            @in dx: double; [[The number of pages horizontally.]]
            @in dy: double; [[The number of pages vertically.]]
         }
      }
   }
}