1 #Copyright (C) 2008 Codethink Ltd
3 #This library is free software; you can redistribute it and/or
4 #modify it under the terms of the GNU Lesser General Public
5 #License version 2 as published by the Free Software Foundation.
7 #This program is distributed in the hope that it will be useful,
8 #but WITHOUT ANY WARRANTY; without even the implied warranty of
9 #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 #GNU General Public License for more details.
11 #You should have received a copy of the GNU Lesser General Public License
12 #along with this program; if not, write to the Free Software
13 #Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
16 from base import BaseProxy, Enum
17 from factory import create_accessible, add_accessible_class
19 from dbus.types import Int16
38 #------------------------------------------------------------------------------
40 class CoordType(Enum):
46 XY_SCREEN = CoordType(0)
47 XY_WINDOW = CoordType(1)
49 #------------------------------------------------------------------------------
51 class ComponentLayer(Enum):
61 8:'LAYER_LAST_DEFINED',
64 LAYER_BACKGROUND = ComponentLayer(1)
65 LAYER_CANVAS = ComponentLayer(2)
66 LAYER_INVALID = ComponentLayer(0)
67 LAYER_LAST_DEFINED = ComponentLayer(8)
68 LAYER_MDI = ComponentLayer(4)
69 LAYER_OVERLAY = ComponentLayer(6)
70 LAYER_POPUP = ComponentLayer(5)
71 LAYER_WIDGET = ComponentLayer(3)
72 LAYER_WINDOW = ComponentLayer(7)
74 #------------------------------------------------------------------------------
76 class Component(BaseProxy):
78 The Component interface is implemented by objects which occupy
79 on-screen space, e.g. objects which have onscreen visual representations.
80 The methods in Component allow clients to identify where the
81 objects lie in the onscreen coordinate system, their relative
82 size, stacking order, and position. It also provides a mechanism
83 whereby keyboard focus may be transferred to specific user interface
84 elements programmatically. This is a 2D API, coordinates of 3D
85 objects are projected into the 2-dimensional screen view for
86 purposes of this interface.
89 def contains(self, *args, **kwargs):
91 @return True if the specified point lies within the Component's
92 bounding box, False otherwise.
94 func = self.get_dbus_method("contains")
95 return func(*args, **kwargs)
97 def deregisterFocusHandler(self, *args, **kwargs):
99 Request that an EventListener registered via registerFocusHandler
100 no longer be notified when this object receives keyboard focus.
102 func = self.get_dbus_method("deregisterFocusHandler")
103 return func(*args, **kwargs)
105 def getAccessibleAtPoint(self, *args, **kwargs):
107 @return the Accessible child whose bounding box contains the
110 func = self.get_dbus_method("getAccessibleAtPoint")
111 return func(*args, **kwargs)
113 def getAlpha(self, *args, **kwargs):
115 Obtain the alpha value of the component. An alpha value of 1.0
116 or greater indicates that the object is fully opaque, and an
117 alpha value of 0.0 indicates that the object is fully transparent.
118 Negative alpha values have no defined meaning at this time.
120 func = self.get_dbus_method("getAlpha")
121 return func(*args, **kwargs)
123 def getExtents(self, coord_type):
125 Obtain the Component's bounding box, in pixels, relative to the
126 specified coordinate system.
128 @return a BoundingBox which entirely contains the object's onscreen
129 visual representation.
131 func = self.get_dbus_method("getExtents")
132 return func(Int16(coord_type))
134 def getLayer(self, *args, **kwargs):
136 @return the ComponentLayer in which this object resides.
138 func = self.get_dbus_method("getLayer")
139 return func(*args, **kwargs)
141 def getMDIZOrder(self):
143 Obtain the relative stacking order (i.e. 'Z' order) of an object.
144 Larger values indicate that an object is on "top" of the stack,
145 therefore objects with smaller MDIZOrder may be obscured by objects
146 with a larger MDIZOrder, but not vice-versa.
147 @return an integer indicating the object's place in the stacking
150 func = self.get_dbus_method("getMDIZOrder")
153 def getPosition(self, coord_type):
155 Obtain the position of the current component in the coordinate
156 system specified by coord_type.
159 an out parameter which will be back-filled with the returned
162 an out parameter which will be back-filled with the returned
165 func = self.get_dbus_method("getPosition")
166 return func(Int16(coord_type))
168 def getSize(self, *args, **kwargs):
170 Obtain the size, in the coordinate system specified by coord_type,
171 of the rectangular area which fully contains the object's visual
172 representation, without accounting for viewport clipping.
174 the object's horizontal extents in the specified coordinate system.
176 the object's vertical extents in the specified coordinate system.
178 func = self.get_dbus_method("getSize")
179 return func(*args, **kwargs)
181 def grabFocus(self, *args, **kwargs):
183 Request that the object obtain keyboard focus.
184 @return True if keyboard focus was successfully transferred to
187 func = self.get_dbus_method("grabFocus")
188 return func(*args, **kwargs)
190 def registerFocusHandler(self, *args, **kwargs):
192 Register an EventListener for notification when this object receives
195 func = self.get_dbus_method("registerFocusHandler")
196 return func(*args, **kwargs)
198 # Register the Accessible class with the accessible factory.
199 add_accessible_class(interfaces.ATSPI_COMPONENT, Component)
201 #END----------------------------------------------------------------------------