1 /*
2  * This file is part of gtkD.
3  *
4  * gtkD is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License
6  * as published by the Free Software Foundation; either version 3
7  * of the License, or (at your option) any later version, with
8  * some exceptions, please read the COPYING file.
9  *
10  * gtkD is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with gtkD; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
18  */
19  
20 // generated automatically - do not change
21 // find conversion definition on APILookup.txt
22 // implement new conversion functionalities on the wrap.utils pakage
23 
24 module gtkc.atktypes;
25 
26 
27 public import gtkc.glibtypes;
28 public import gtkc.gobjecttypes;
29 
30 
31 /**
32  * typedef guint64 AtkState;
33  */
34 public alias ulong AtkState;
35 
36 /**
37  * typedef GSList AtkAttributeSet;
38  * This is a singly-linked list (a GSList) of AtkAttribute. It is
39  * used by atk_text_get_run_attributes(), atk_text_get_default_attributes()
40  * and atk_editable_text_set_run_attributes()
41  */
42 public alias GSList AtkAttributeSet;
43 /**
44  * Describes the type of link
45  * ATK_HYPERLINK_IS_INLINE
46  * Link is inline
47  */
48 public enum AtkHyperlinkStateFlags
49 {
50 	IS_INLINE = 1 << 0
51 }
52 /**
53  * Describes the role of an object
54  * These are the built-in enumerated roles that UI components can have in
55  * ATK. Other roles may be added at runtime, so an AtkRole >=
56  * ATK_ROLE_LAST_DEFINED is not necessarily an error.
57  * ATK_ROLE_INVALID
58  * Invalid role
59  * ATK_ROLE_ACCEL_LABEL
60  * A label which represents an accelerator
61  * ATK_ROLE_ALERT
62  * An object which is an alert to the user. Assistive Technologies typically respond to ATK_ROLE_ALERT by reading the entire onscreen contents of containers advertising this role. Should be used for warning dialogs, etc.
63  * ATK_ROLE_ANIMATION
64  * An object which is an animated image
65  * ATK_ROLE_ARROW
66  * An arrow in one of the four cardinal directions
67  * ATK_ROLE_CALENDAR
68  * An object that displays a calendar and allows the user to select a date
69  * ATK_ROLE_CANVAS
70  * An object that can be drawn into and is used to trap events
71  * ATK_ROLE_CHECK_BOX
72  * A choice that can be checked or unchecked and provides a separate indicator for the current state
73  * ATK_ROLE_CHECK_MENU_ITEM
74  * A menu item with a check box
75  * ATK_ROLE_COLOR_CHOOSER
76  * A specialized dialog that lets the user choose a color
77  * ATK_ROLE_COLUMN_HEADER
78  * The header for a column of data
79  * ATK_ROLE_COMBO_BOX
80  * A collapsible list of choices the user can select from
81  * ATK_ROLE_DATE_EDITOR
82  * An object whose purpose is to allow a user to edit a date
83  * ATK_ROLE_DESKTOP_ICON
84  * An inconifed internal frame within a DESKTOP_PANE
85  * ATK_ROLE_DESKTOP_FRAME
86  * A pane that supports internal frames and iconified versions of those internal frames
87  * ATK_ROLE_DIAL
88  * An object whose purpose is to allow a user to set a value
89  * ATK_ROLE_DIALOG
90  * A top level window with title bar and a border
91  * ATK_ROLE_DIRECTORY_PANE
92  * A pane that allows the user to navigate through and select the contents of a directory
93  * ATK_ROLE_DRAWING_AREA
94  * An object used for drawing custom user interface elements
95  * ATK_ROLE_FILE_CHOOSER
96  * A specialized dialog that lets the user choose a file
97  * ATK_ROLE_FILLER
98  * A object that fills up space in a user interface
99  * ATK_ROLE_FONT_CHOOSER
100  * A specialized dialog that lets the user choose a font
101  * ATK_ROLE_FRAME
102  * A top level window with a title bar, border, menubar, etc.
103  * ATK_ROLE_GLASS_PANE
104  * A pane that is guaranteed to be painted on top of all panes beneath it
105  * ATK_ROLE_HTML_CONTAINER
106  * A document container for HTML, whose children represent the document content
107  * ATK_ROLE_ICON
108  * A small fixed size picture, typically used to decorate components
109  * ATK_ROLE_IMAGE
110  * An object whose primary purpose is to display an image
111  * ATK_ROLE_INTERNAL_FRAME
112  * A frame-like object that is clipped by a desktop pane
113  * ATK_ROLE_LABEL
114  * An object used to present an icon or short string in an interface
115  * ATK_ROLE_LAYERED_PANE
116  * A specialized pane that allows its children to be drawn in layers, providing a form of stacking order
117  * ATK_ROLE_LIST
118  * An object that presents a list of objects to the user and allows the user to select one or more of them
119  * ATK_ROLE_LIST_ITEM
120  * An object that represents an element of a list
121  * ATK_ROLE_MENU
122  * An object usually found inside a menu bar that contains a list of actions the user can choose from
123  * ATK_ROLE_MENU_BAR
124  * An object usually drawn at the top of the primary dialog box of an application that contains a list of menus the user can choose from
125  * ATK_ROLE_MENU_ITEM
126  * An object usually contained in a menu that presents an action the user can choose
127  * ATK_ROLE_OPTION_PANE
128  * A specialized pane whose primary use is inside a DIALOG
129  * ATK_ROLE_PAGE_TAB
130  * An object that is a child of a page tab list
131  * ATK_ROLE_PAGE_TAB_LIST
132  * An object that presents a series of panels (or page tabs), one at a time, through some mechanism provided by the object
133  * ATK_ROLE_PANEL
134  * A generic container that is often used to group objects
135  * ATK_ROLE_PASSWORD_TEXT
136  * A text object uses for passwords, or other places where the text content is not shown visibly to the user
137  * ATK_ROLE_POPUP_MENU
138  * A temporary window that is usually used to offer the user a list of choices, and then hides when the user selects one of those choices
139  * ATK_ROLE_PROGRESS_BAR
140  * An object used to indicate how much of a task has been completed
141  * ATK_ROLE_PUSH_BUTTON
142  * An object the user can manipulate to tell the application to do something
143  * ATK_ROLE_RADIO_BUTTON
144  * A specialized check box that will cause other radio buttons in the same group to become unchecked when this one is checked
145  * ATK_ROLE_RADIO_MENU_ITEM
146  * A check menu item which belongs to a group. At each instant exactly one of the radio menu items from a group is selected
147  * ATK_ROLE_ROOT_PANE
148  * A specialized pane that has a glass pane and a layered pane as its children
149  * ATK_ROLE_ROW_HEADER
150  * The header for a row of data
151  * ATK_ROLE_SCROLL_BAR
152  * An object usually used to allow a user to incrementally view a large amount of data.
153  * ATK_ROLE_SCROLL_PANE
154  * An object that allows a user to incrementally view a large amount of information
155  * ATK_ROLE_SEPARATOR
156  * An object usually contained in a menu to provide a visible and logical separation of the contents in a menu
157  * ATK_ROLE_SLIDER
158  * An object that allows the user to select from a bounded range
159  * ATK_ROLE_SPLIT_PANE
160  * A specialized panel that presents two other panels at the same time
161  * ATK_ROLE_SPIN_BUTTON
162  * An object used to get an integer or floating point number from the user
163  * ATK_ROLE_STATUSBAR
164  * An object which reports messages of minor importance to the user
165  * ATK_ROLE_TABLE
166  * An object used to represent information in terms of rows and columns
167  * ATK_ROLE_TABLE_CELL
168  * A cell in a table
169  * ATK_ROLE_TABLE_COLUMN_HEADER
170  * The header for a column of a table
171  * ATK_ROLE_TABLE_ROW_HEADER
172  * The header for a row of a table
173  * ATK_ROLE_TEAR_OFF_MENU_ITEM
174  * A menu item used to tear off and reattach its menu
175  * ATK_ROLE_TERMINAL
176  * An object that represents an accessible terminal. Since: ATK-0.6
177  * ATK_ROLE_TEXT
178  * An object that presents text to the user
179  * ATK_ROLE_TOGGLE_BUTTON
180  * A specialized push button that can be checked or unchecked, but does not provide a separate indicator for the current state
181  * ATK_ROLE_TOOL_BAR
182  * A bar or palette usually composed of push buttons or toggle buttons
183  * ATK_ROLE_TOOL_TIP
184  * An object that provides information about another object
185  * ATK_ROLE_TREE
186  * An object used to represent hierarchical information to the user
187  * ATK_ROLE_TREE_TABLE
188  * An object capable of expanding and collapsing rows as well as showing multiple columns of data. Since: ATK-0.7
189  * ATK_ROLE_UNKNOWN
190  * The object contains some Accessible information, but its role is not known
191  * ATK_ROLE_VIEWPORT
192  * An object usually used in a scroll pane
193  * ATK_ROLE_WINDOW
194  * A top level window with no title or border.
195  * ATK_ROLE_HEADER
196  * An object that serves as a document header. Since: ATK-1.1.1
197  * ATK_ROLE_FOOTER
198  * An object that serves as a document footer. Since: ATK-1.1.1
199  * ATK_ROLE_PARAGRAPH
200  * An object which is contains a paragraph of text content. Since: ATK-1.1.1
201  * ATK_ROLE_RULER
202  * An object which describes margins and tab stops, etc. for text objects which it controls (should have CONTROLLER_FOR relation to such). Since: ATK-1.1.1
203  * ATK_ROLE_APPLICATION
204  * The object is an application object, which may contain ATK_ROLE_FRAME objects or other types of accessibles. The root accessible of any application's ATK hierarchy should have ATK_ROLE_APPLICATION. Since: ATK-1.1.4
205  * ATK_ROLE_AUTOCOMPLETE
206  * The object is a dialog or list containing items for insertion into an entry widget, for instance a list of words for completion of a text entry. Since: ATK-1.3
207  * ATK_ROLE_EDITBAR
208  * The object is an editable text object in a toolbar. Since: ATK-1.5
209  * ATK_ROLE_EMBEDDED
210  * The object is an embedded container within a document or panel. This role is a grouping "hint" indicating that the contained objects share a context. Since: ATK-1.7.2
211  * ATK_ROLE_ENTRY
212  * The object is a component whose textual content may be entered or modified by the user, provided ATK_STATE_EDITABLE is present. Since: ATK-1.11
213  * ATK_ROLE_CHART
214  * The object is a graphical depiction of quantitative data. It may contain multiple subelements whose attributes and/or description may be queried to obtain both the quantitative data and information about how the data is being presented. The LABELLED_BY relation is particularly important in interpreting objects of this type, as is the accessible-description property. Since: ATK-1.11
215  * ATK_ROLE_CAPTION
216  * The object contains descriptive information, usually textual, about another user interface element such as a table, chart, or image. Since: ATK-1.11
217  * ATK_ROLE_DOCUMENT_FRAME
218  * The object is a visual frame or container which contains a view of document content. Document frames may occur within another Document instance, in which case the second document may be said to be embedded in the containing instance. HTML frames are often ROLE_DOCUMENT_FRAME. Either this object, or a singleton descendant, should implement the Document interface. Since: ATK-1.11
219  * ATK_ROLE_HEADING
220  * The object serves as a heading for content which follows it in a document. The 'heading level' of the heading, if availabe, may be obtained by querying the object's attributes.
221  * ATK_ROLE_PAGE
222  * The object is a containing instance which encapsulates a page of information. ATK_ROLE_PAGE is used in documents and content which support a paginated navigation model. Since: ATK-1.11
223  * ATK_ROLE_SECTION
224  * The object is a containing instance of document content which constitutes a particular 'logical' section of the document. The type of content within a section, and the nature of the section division itself, may be obtained by querying the object's attributes. Sections may be nested. Since: ATK-1.11
225  * ATK_ROLE_REDUNDANT_OBJECT
226  * The object is redundant with another object in the hierarchy, and is exposed for purely technical reasons. Objects of this role should normally be ignored by clients. Since: ATK-1.11
227  * ATK_ROLE_FORM
228  * The object is a container for form controls, for instance as part of a
229  * web form or user-input form within a document. This role is primarily a tag/convenience for
230  * clients when navigating complex documents, it is not expected that ordinary GUI containers will
231  * always have ATK_ROLE_FORM. Since: ATK-1.12.0
232  * ATK_ROLE_LINK
233  * The object is a hypertext anchor, i.e. a "link" in a
234  * hypertext document. Such objects are distinct from 'inline'
235  * content which may also use the Hypertext/Hyperlink interfaces
236  * to indicate the range/location within a text object where
237  * an inline or embedded object lies. Since: ATK-1.12.1
238  * ATK_ROLE_INPUT_METHOD_WINDOW
239  * The object is a window or similar viewport
240  * which is used to allow composition or input of a 'complex character',
241  * in other words it is an "input method window." Since: ATK-1.12.1
242  * ATK_ROLE_TABLE_ROW
243  * A row in a table. Since: ATK-2.1.0
244  * ATK_ROLE_TREE_ITEM
245  * An object that represents an element of a tree. Since: ATK-2.1.0
246  * ATK_ROLE_DOCUMENT_SPREADSHEET
247  * A document frame which contains a spreadsheet. Since: ATK-2.1.0
248  * ATK_ROLE_DOCUMENT_PRESENTATION
249  * A document frame which contains a presentation or slide content. Since: ATK-2.1.0
250  * ATK_ROLE_DOCUMENT_TEXT
251  * A document frame which contains textual content, such as found in a word processing application. Since: ATK-2.1.0
252  * ATK_ROLE_DOCUMENT_WEB
253  * A document frame which contains HTML or other markup suitable for display in a web browser. Since: ATK-2.1.0
254  * ATK_ROLE_DOCUMENT_EMAIL
255  * A document frame which contains email content to be displayed or composed either in plain text or HTML. Since: ATK-2.1.0
256  * ATK_ROLE_COMMENT
257  * An object found within a document and designed to present a comment, note, or other annotation. In some cases, this object might not be visible until activated. Since: ATK-2.1.0
258  * ATK_ROLE_LIST_BOX
259  * A non-collapsible list of choices the user can select from. Since: ATK-2.1.0
260  * ATK_ROLE_GROUPING
261  * A group of related widgets. This group typically has a label. Since: ATK-2.1.0
262  * ATK_ROLE_IMAGE_MAP
263  * An image map object. Usually a graphic with multiple hotspots, where each hotspot can be activated resulting in the loading of another document or section of a document. Since: ATK-2.1.0
264  * ATK_ROLE_NOTIFICATION
265  * A transitory object designed to present a message to the user, typically at the desktop level rather than inside a particular application. Since: ATK-2.1.0
266  * ATK_ROLE_INFO_BAR
267  * An object designed to present a message to the user within an existing window. Since: ATK-2.1.0
268  * ATK_ROLE_LEVEL_BAR
269  * A bar that serves as a level indicator to, for instance, show the strength of a password or the state of a battery. Since: ATK-2.7.3
270  * ATK_ROLE_LAST_DEFINED
271  * not a valid role, used for finding end of the enumeration
272  */
273 public enum AtkRole
274 {
275 	INVALID = 0,
276 	ACCEL_LABEL, /+*<nick= accelerator-label>+/
277 	ALERT,
278 	ANIMATION,
279 	ARROW,
280 	CALENDAR,
281 	CANVAS,
282 	CHECK_BOX,
283 	CHECK_MENU_ITEM,
284 	COLOR_CHOOSER,
285 	COLUMN_HEADER,
286 	COMBO_BOX,
287 	DATE_EDITOR,
288 	DESKTOP_ICON,
289 	DESKTOP_FRAME,
290 	DIAL,
291 	DIALOG,
292 	DIRECTORY_PANE,
293 	DRAWING_AREA,
294 	FILE_CHOOSER,
295 	FILLER,
296 	FONT_CHOOSER,
297 	FRAME,
298 	GLASS_PANE,
299 	HTML_CONTAINER,
300 	ICON,
301 	IMAGE,
302 	INTERNAL_FRAME,
303 	LABEL,
304 	LAYERED_PANE,
305 	LIST,
306 	LIST_ITEM,
307 	MENU,
308 	MENU_BAR,
309 	MENU_ITEM,
310 	OPTION_PANE,
311 	PAGE_TAB,
312 	PAGE_TAB_LIST,
313 	PANEL,
314 	PASSWORD_TEXT,
315 	POPUP_MENU,
316 	PROGRESS_BAR,
317 	PUSH_BUTTON,
318 	RADIO_BUTTON,
319 	RADIO_MENU_ITEM,
320 	ROOT_PANE,
321 	ROW_HEADER,
322 	SCROLL_BAR,
323 	SCROLL_PANE,
324 	SEPARATOR,
325 	SLIDER,
326 	SPLIT_PANE,
327 	SPIN_BUTTON,
328 	STATUSBAR,
329 	TABLE,
330 	TABLE_CELL,
331 	TABLE_COLUMN_HEADER,
332 	TABLE_ROW_HEADER,
333 	TEAR_OFF_MENU_ITEM,
334 	TERMINAL,
335 	TEXT,
336 	TOGGLE_BUTTON,
337 	TOOL_BAR,
338 	TOOL_TIP,
339 	TREE,
340 	TREE_TABLE,
341 	UNKNOWN,
342 	VIEWPORT,
343 	WINDOW,
344 	HEADER,
345 	FOOTER,
346 	PARAGRAPH,
347 	RULER,
348 	APPLICATION,
349 	AUTOCOMPLETE,
350 	EDITBAR,
351 	EMBEDDED,
352 	ENTRY,
353 	CHART,
354 	CAPTION,
355 	DOCUMENT_FRAME,
356 	HEADING,
357 	PAGE,
358 	SECTION,
359 	REDUNDANT_OBJECT,
360 	FORM,
361 	LINK,
362 	INPUT_METHOD_WINDOW,
363 	TABLE_ROW,
364 	TREE_ITEM,
365 	DOCUMENT_SPREADSHEET,
366 	DOCUMENT_PRESENTATION,
367 	DOCUMENT_TEXT,
368 	DOCUMENT_WEB,
369 	DOCUMENT_EMAIL,
370 	COMMENT,
371 	LIST_BOX,
372 	GROUPING,
373 	IMAGE_MAP,
374 	NOTIFICATION,
375 	INFO_BAR,
376 	LEVEL_BAR,
377 	LAST_DEFINED
378 }
379 /**
380  * Describes the layer of a component
381  * These enumerated "layer values" are used when determining which UI
382  * rendering layer a component is drawn into, which can help in making
383  * determinations of when components occlude one another.
384  * ATK_LAYER_INVALID
385  * The object does not have a layer
386  * ATK_LAYER_BACKGROUND
387  * This layer is reserved for the desktop background
388  * ATK_LAYER_CANVAS
389  * This layer is used for Canvas components
390  * ATK_LAYER_WIDGET
391  * This layer is normally used for components
392  * ATK_LAYER_MDI
393  * This layer is used for layered components
394  * ATK_LAYER_POPUP
395  * This layer is used for popup components, such as menus
396  * ATK_LAYER_OVERLAY
397  * This layer is reserved for future use.
398  * ATK_LAYER_WINDOW
399  * This layer is used for toplevel windows.
400  */
401 public enum AtkLayer
402 {
403 	INVALID,
404 	BACKGROUND,
405 	CANVAS,
406 	WIDGET,
407 	MDI,
408 	POPUP,
409 	OVERLAY,
410 	WINDOW
411 }
412 /**
413  * Describes the type of the relation
414  * ATK_RELATION_NULL
415  * Not used, represens "no relationship" or an error condition.
416  * ATK_RELATION_CONTROLLED_BY
417  * Indicates an object controlled by one or more target objects.
418  * ATK_RELATION_CONTROLLER_FOR
419  * Indicates an object is an controller for one or more target objects.
420  * ATK_RELATION_LABEL_FOR
421  * Indicates an object is a label for one or more target objects.
422  * ATK_RELATION_LABELLED_BY
423  * Indicates an object is labelled by one or more target objects.
424  * ATK_RELATION_MEMBER_OF
425  * Indicates an object is a member of a group of one or more target objects.
426  * ATK_RELATION_NODE_CHILD_OF
427  * Indicates an object is a cell in a treetable which is displayed because a cell in the same column is expanded and identifies that cell.
428  * ATK_RELATION_FLOWS_TO
429  * Indicates that the object has content that flows logically to another
430  *  AtkObject in a sequential way, (for instance text-flow).
431  * ATK_RELATION_FLOWS_FROM
432  * Indicates that the object has content that flows logically from
433  *  another AtkObject in a sequential way, (for instance text-flow).
434  * ATK_RELATION_SUBWINDOW_OF
435  * Indicates a subwindow attached to a component but otherwise has no connection in the UI heirarchy to that component.
436  * ATK_RELATION_EMBEDS
437  * Indicates that the object visually embeds
438  *  another object's content, i.e. this object's content flows around
439  *  another's content.
440  * ATK_RELATION_EMBEDDED_BY
441  * Inverse of ATK_RELATION_EMBEDS, indicates that
442  *  this object's content is visualy embedded in another object.
443  * ATK_RELATION_POPUP_FOR
444  * Indicates that an object is a popup for another object.
445  * ATK_RELATION_PARENT_WINDOW_OF
446  * Indicates that an object is a parent window of another object.
447  * ATK_RELATION_DESCRIBED_BY
448  * Indicates that another object provides descriptive information about this object; more verbose than ATK_RELATION_LABELLED_BY.
449  * ATK_RELATION_DESCRIPTION_FOR
450  * Indicates that an object provides descriptive information about another object; more verbose than ATK_RELATION_LABEL_FOR.
451  * ATK_RELATION_NODE_PARENT_OF
452  * Indicates an object is a cell in a treetable and is expanded to display other cells in the same column.
453  * ATK_RELATION_LAST_DEFINED
454  * Not used, this value indicates the end of the enumeration.
455  */
456 public enum AtkRelationType
457 {
458 	NULL = 0,
459 	CONTROLLED_BY,
460 	CONTROLLER_FOR,
461 	LABEL_FOR,
462 	LABELLED_BY,
463 	MEMBER_OF,
464 	NODE_CHILD_OF,
465 	FLOWS_TO,
466 	FLOWS_FROM,
467 	SUBWINDOW_OF,
468 	EMBEDS,
469 	EMBEDDED_BY,
470 	POPUP_FOR,
471 	PARENT_WINDOW_OF,
472 	DESCRIBED_BY,
473 	DESCRIPTION_FOR,
474 	NODE_PARENT_OF,
475 	LAST_DEFINED
476 }
477 /**
478  * The possible types of states of an object
479  * ATK_STATE_INVALID
480  * Indicates an invalid state - probably an error condition.
481  * ATK_STATE_ACTIVE
482  * Indicates a window is currently the active window, or is an active subelement within a container or table
483  * ATK_STATE_ARMED
484  * Indicates that the object is 'armed', i.e. will be activated by if a pointer button-release event occurs within its bounds. Buttons often enter this state when a pointer click occurs within their bounds, as a precursor to activation.
485  * ATK_STATE_BUSY
486  * Indicates the current object is busy, i.e. onscreen representation is in the process of changing, or the object is temporarily unavailable for interaction due to activity already in progress. This state may be used by implementors of Document to indicate that content loading is underway. It also may indicate other 'pending' conditions; clients may wish to interrogate this object when the ATK_STATE_BUSY flag is removed.
487  * ATK_STATE_CHECKED
488  * Indicates this object is currently checked, for instance a checkbox is 'non-empty'.
489  * ATK_STATE_DEFUNCT
490  * Indicates that this object no longer has a valid backing widget (for instance, if its peer object has been destroyed)
491  * ATK_STATE_EDITABLE
492  * Indicates the user can change the contents of this object
493  * ATK_STATE_ENABLED
494  * Indicates that this object is enabled, i.e. that it currently reflects some application state. Objects that are "greyed out" may lack this state, and may lack the STATE_SENSITIVE if direct user interaction cannot cause them to acquire STATE_ENABLED. See also: ATK_STATE_SENSITIVE
495  * ATK_STATE_EXPANDABLE
496  * Indicates this object allows progressive disclosure of its children
497  * ATK_STATE_EXPANDED
498  * Indicates this object its expanded - see ATK_STATE_EXPANDABLE above
499  * ATK_STATE_FOCUSABLE
500  * Indicates this object can accept keyboard focus, which means all events resulting from typing on the keyboard will normally be passed to it when it has focus
501  * ATK_STATE_FOCUSED
502  * Indicates this object currently has the keyboard focus
503  * ATK_STATE_HORIZONTAL
504  * Indicates the orientation of this object is horizontal; used, for instance, by objects of ATK_ROLE_SCROLL_BAR. For objects where vertical/horizontal orientation is especially meaningful.
505  * ATK_STATE_ICONIFIED
506  * Indicates this object is minimized and is represented only by an icon
507  * ATK_STATE_MODAL
508  * Indicates something must be done with this object before the user can interact with an object in a different window
509  * ATK_STATE_MULTI_LINE
510  * Indicates this (text) object can contain multiple lines of text
511  * ATK_STATE_MULTISELECTABLE
512  * Indicates this object allows more than one of its children to be selected at the same time, or in the case of text objects, that the object supports non-contiguous text selections.
513  * ATK_STATE_OPAQUE
514  * Indicates this object paints every pixel within its rectangular region.
515  * ATK_STATE_PRESSED
516  * Indicates this object is currently pressed; c.f. ATK_STATE_ARMED
517  * ATK_STATE_RESIZABLE
518  * Indicates the size of this object is not fixed
519  * ATK_STATE_SELECTABLE
520  * Indicates this object is the child of an object that allows its children to be selected and that this child is one of those children that can be selected
521  * ATK_STATE_SELECTED
522  * Indicates this object is the child of an object that allows its children to be selected and that this child is one of those children that has been selected
523  * ATK_STATE_SENSITIVE
524  * Indicates this object is sensitive, e.g. to user interaction.
525  * STATE_SENSITIVE usually accompanies STATE_ENABLED for user-actionable controls,
526  * but may be found in the absence of STATE_ENABLED if the current visible state of the
527  * control is "disconnected" from the application state. In such cases, direct user interaction
528  * can often result in the object gaining STATE_SENSITIVE, for instance if a user makes
529  * an explicit selection using an object whose current state is ambiguous or undefined.
530  * see STATE_ENABLED, STATE_INDETERMINATE.
531  * ATK_STATE_SHOWING
532  * Indicates this object, the object's parent, the object's parent's parent, and so on,
533  * are all 'shown' to the end-user, i.e. subject to "exposure" if blocking or obscuring objects do not interpose
534  * between this object and the top of the window stack.
535  * ATK_STATE_SINGLE_LINE
536  * Indicates this (text) object can contain only a single line of text
537  * ATK_STATE_STALE
538  * Indicates that the information returned for this object may no longer be
539  * synchronized with the application state. This is implied if the object has STATE_TRANSIENT,
540  * and can also occur towards the end of the object peer's lifecycle. It can also be used to indicate that
541  * the index associated with this object has changed since the user accessed the object (in lieu of
542  * "index-in-parent-changed" events).
543  * ATK_STATE_TRANSIENT
544  * Indicates this object is transient, i.e. a snapshot which may not emit events when its
545  * state changes. Data from objects with ATK_STATE_TRANSIENT should not be cached, since there may be no
546  * notification given when the cached data becomes obsolete.
547  * ATK_STATE_VERTICAL
548  * Indicates the orientation of this object is vertical
549  * ATK_STATE_VISIBLE
550  * Indicates this object is visible, e.g. has been explicitly marked for exposure to the user.
551  * ATK_STATE_MANAGES_DESCENDANTS
552  * Indicates that "active-descendant-changed" event
553  * is sent when children become 'active' (i.e. are selected or navigated to onscreen).
554  * Used to prevent need to enumerate all children in very large containers, like tables.
555  * The presence of STATE_MANAGES_DESCENDANTS is an indication to the client.
556  * that the children should not, and need not, be enumerated by the client.
557  * Objects implementing this state are expected to provide relevant state
558  * notifications to listening clients, for instance notifications of visibility
559  * changes and activation of their contained child objects, without the client
560  * having previously requested references to those children.
561  * ATK_STATE_INDETERMINATE
562  * Indicates that a check box is in a state other than checked or not checked.
563  * This usually means that the boolean value reflected or
564  * controlled by the object does not apply consistently to the entire current context.
565  * For example, a checkbox for the "Bold" attribute of text may have STATE_INDETERMINATE
566  * if the currently selected text contains a mixture of weight attributes.
567  * In many cases interacting with a STATE_INDETERMINATE object will cause
568  * the context's corresponding boolean attribute to be homogenized, whereupon the object
569  * will lose STATE_INDETERMINATE and a corresponding state-changed event will be fired.
570  * ATK_STATE_TRUNCATED
571  * Indicates that an object is truncated, e.g. a text value in a speradsheet cell.
572  * ATK_STATE_REQUIRED
573  * Indicates that explicit user interaction with an object is required by the user interface, e.g. a required field in a "web-form" interface.
574  * ATK_STATE_INVALID_ENTRY
575  * Indicates that the object has encountered an error condition due to failure of input validation. For instance, a form control may acquire this state in response to invalid or malformed user input.
576  * ATK_STATE_SUPPORTS_AUTOCOMPLETION
577  * Indicates that the object in question implements some form of ¨typeahead¨ or
578  * pre-selection behavior whereby entering the first character of one or more sub-elements
579  * causes those elements to scroll into view or become selected. Subsequent character input
580  * may narrow the selection further as long as one or more sub-elements match the string.
581  * This state is normally only useful and encountered on objects that implement Selection.
582  * In some cases the typeahead behavior may result in full or partial ¨completion¨ of
583  * the data in the input field, in which case these input events may trigger text-changed
584  * events from the AtkText interface. This state supplants ATK_ROLE_AUTOCOMPLETE.
585  * ATK_STATE_SELECTABLE_TEXT
586  * Indicates that the object in question supports text selection. It should only be exposed on objects which implement the Text interface, in order to distinguish this state from ATK_STATE_SELECTABLE, which infers that the object in question is a selectable child of an object which implements Selection. While similar, text selection and subelement selection are distinct operations.
587  * ATK_STATE_DEFAULT
588  * Indicates that the object is the "default" active component, i.e. the object which is activated by an end-user press of the "Enter" or "Return" key. Typically a "close" or "submit" button.
589  * ATK_STATE_ANIMATED
590  * Indicates that the object changes its appearance dynamically as an inherent part of its presentation. This state may come and go if an object is only temporarily animated on the way to a 'final' onscreen presentation.
591  * note some applications, notably content viewers, may not be able to detect
592  * all kinds of animated content. Therefore the absence of this state should not
593  * be taken as definitive evidence that the object's visual representation is
594  * static; this state is advisory.
595  * ATK_STATE_VISITED
596  * Indicates that the object (typically a hyperlink) has already been 'activated', and/or its backing data has already been downloaded, rendered, or otherwise "visited".
597  * ATK_STATE_LAST_DEFINED
598  * Not a valid state, used for finding end of enumeration
599  */
600 public enum AtkStateType
601 {
602 	INVALID,
603 	ACTIVE,
604 	ARMED,
605 	BUSY,
606 	CHECKED,
607 	DEFUNCT,
608 	EDITABLE,
609 	ENABLED,
610 	EXPANDABLE,
611 	EXPANDED,
612 	FOCUSABLE,
613 	FOCUSED,
614 	HORIZONTAL,
615 	ICONIFIED,
616 	MODAL,
617 	MULTI_LINE,
618 	MULTISELECTABLE,
619 	OPAQUE,
620 	PRESSED,
621 	RESIZABLE,
622 	SELECTABLE,
623 	SELECTED,
624 	SENSITIVE,
625 	SHOWING,
626 	SINGLE_LINE,
627 	STALE,
628 	TRANSIENT,
629 	VERTICAL,
630 	VISIBLE,
631 	MANAGES_DESCENDANTS,
632 	INDETERMINATE,
633 	TRUNCATED,
634 	REQUIRED,
635 	INVALID_ENTRY,
636 	SUPPORTS_AUTOCOMPLETION,
637 	SELECTABLE_TEXT,
638 	DEFAULT,
639 	ANIMATED,
640 	VISITED,
641 	LAST_DEFINED
642 }
643 /**
644  * Text boundary types used for specifying boundaries for regions of text.
645  * This enumerationis deprecated since 2.9.4 and should not be used. Use
646  * AtkTextGranularity with atk_text_get_string_at_offset instead.
647  * ATK_TEXT_BOUNDARY_CHAR
648  * Boundary is the boundary between characters
649  * (including non-printing characters)
650  * ATK_TEXT_BOUNDARY_WORD_START
651  * Boundary is the start (i.e. first character) of a word.
652  * ATK_TEXT_BOUNDARY_WORD_END
653  * Boundary is the end (i.e. last
654  * character) of a word.
655  * ATK_TEXT_BOUNDARY_SENTENCE_START
656  * Boundary is the first character in a sentence.
657  * ATK_TEXT_BOUNDARY_SENTENCE_END
658  * Boundary is the last (terminal)
659  * character in a sentence; in languages which use "sentence stop"
660  * punctuation such as English, the boundary is thus the '.', '?', or
661  * similar terminal punctuation character.
662  * ATK_TEXT_BOUNDARY_LINE_START
663  * Boundary is the initial character of the content or a
664  * character immediately following a newline, linefeed, or return character.
665  * ATK_TEXT_BOUNDARY_LINE_END
666  * Boundary is the linefeed, or return
667  * character.
668  */
669 public enum AtkTextBoundary
670 {
671 	CHAR,
672 	WORD_START,
673 	WORD_END,
674 	SENTENCE_START,
675 	SENTENCE_END,
676 	LINE_START,
677 	LINE_END
678 }
679 /**
680  * Text granularity types used for specifying the granularity of the region of
681  * text we are interested in.
682  * ATK_TEXT_GRANULARITY_CHAR
683  * Granularity is defined by the boundaries between characters
684  * (including non-printing characters)
685  * ATK_TEXT_GRANULARITY_WORD
686  * Granularity is defined by the boundaries of a word,
687  * starting at the beginning of the current word and finishing at the beginning of
688  * the following one, if present.
689  * ATK_TEXT_GRANULARITY_SENTENCE
690  * Granularity is defined by the boundaries of a sentence,
691  * starting at the beginning of the current sentence and finishing at the beginning of
692  * the following one, if present.
693  * ATK_TEXT_GRANULARITY_LINE
694  * Granularity is defined by the boundaries of a line,
695  * starting at the beginning of the current line and finishing at the beginning of
696  * the following one, if present.
697  * ATK_TEXT_GRANULARITY_PARAGRAPH
698  * Granularity is defined by the boundaries of a paragraph,
699  * starting at the beginning of the current paragraph and finishing at the beginning of
700  * the following one, if present.
701  */
702 public enum AtkTextGranularity
703 {
704 	CHAR,
705 	WORD,
706 	SENTENCE,
707 	LINE,
708 	PARAGRAPH
709 }
710 /**
711  * Describes the type of clipping required.
712  * ATK_TEXT_CLIP_NONE
713  * No clipping to be done
714  * ATK_TEXT_CLIP_MIN
715  * Text clipped by min coordinate is omitted
716  * ATK_TEXT_CLIP_MAX
717  * Text clipped by max coordinate is omitted
718  * ATK_TEXT_CLIP_BOTH
719  * Only text fully within mix/max bound is retained
720  */
721 public enum AtkTextClipType
722 {
723 	NONE,
724 	MIN,
725 	MAX,
726 	BOTH
727 }
728 /**
729  * Describes the text attributes supported
730  * ATK_TEXT_ATTR_INVALID
731  * Invalid attribute
732  * ATK_TEXT_ATTR_LEFT_MARGIN
733  * The pixel width of the left margin
734  * ATK_TEXT_ATTR_RIGHT_MARGIN
735  * The pixel width of the right margin
736  * ATK_TEXT_ATTR_INDENT
737  * The number of pixels that the text is indented
738  * ATK_TEXT_ATTR_INVISIBLE
739  * Either "true" or "false" indicating whether text is visible or not
740  * ATK_TEXT_ATTR_EDITABLE
741  * Either "true" or "false" indicating whether text is editable or not
742  * ATK_TEXT_ATTR_PIXELS_ABOVE_LINES
743  * Pixels of blank space to leave above each newline-terminated line.
744  * ATK_TEXT_ATTR_PIXELS_BELOW_LINES
745  * Pixels of blank space to leave below each newline-terminated line.
746  * ATK_TEXT_ATTR_PIXELS_INSIDE_WRAP
747  * Pixels of blank space to leave between wrapped lines inside the same newline-terminated line (paragraph).
748  * ATK_TEXT_ATTR_BG_FULL_HEIGHT
749  * "true" or "false" whether to make the background color for each character the height of the highest font used on the current line, or the height of the font used for the current character.
750  * ATK_TEXT_ATTR_RISE
751  * Number of pixels that the characters are risen above the baseline
752  * ATK_TEXT_ATTR_UNDERLINE
753  * "none", "single", "double", "low", or "error"
754  * ATK_TEXT_ATTR_STRIKETHROUGH
755  * "true" or "false" whether the text is strikethrough
756  * ATK_TEXT_ATTR_SIZE
757  * The size of the characters.
758  * ATK_TEXT_ATTR_SCALE
759  * The scale of the characters. The value is a string representation of a double
760  * ATK_TEXT_ATTR_WEIGHT
761  * The weight of the characters.
762  * ATK_TEXT_ATTR_LANGUAGE
763  * The language used
764  * ATK_TEXT_ATTR_FAMILY_NAME
765  * The font family name
766  * ATK_TEXT_ATTR_BG_COLOR
767  * The background color. The value is an RGB value of the format "u,u,u"
768  * ATK_TEXT_ATTR_FG_COLOR
769  * The foreground color. The value is an RGB value of the format "u,u,u"
770  * ATK_TEXT_ATTR_BG_STIPPLE
771  * "true" if a GdkBitmap is set for stippling the background color.
772  * ATK_TEXT_ATTR_FG_STIPPLE
773  * "true" if a GdkBitmap is set for stippling the foreground color.
774  * ATK_TEXT_ATTR_WRAP_MODE
775  * The wrap mode of the text, if any. Values are "none", "char", "word", or "word_char".
776  * ATK_TEXT_ATTR_DIRECTION
777  * The direction of the text, if set. Values are "none", "ltr" or "rtl"
778  * ATK_TEXT_ATTR_JUSTIFICATION
779  * The justification of the text, if set. Values are "left", "right", "center" or "fill"
780  * ATK_TEXT_ATTR_STRETCH
781  * The stretch of the text, if set. Values are "ultra_condensed", "extra_condensed", "condensed", "semi_condensed", "normal", "semi_expanded", "expanded", "extra_expanded" or "ultra_expanded"
782  * ATK_TEXT_ATTR_VARIANT
783  * The capitalization variant of the text, if set. Values are "normal" or "small_caps"
784  * ATK_TEXT_ATTR_STYLE
785  * The slant style of the text, if set. Values are "normal", "oblique" or "italic"
786  * ATK_TEXT_ATTR_LAST_DEFINED
787  * not a valid text attribute, used for finding end of enumeration
788  */
789 public enum AtkTextAttribute
790 {
791 	INVALID = 0,
792 	LEFT_MARGIN,
793 	RIGHT_MARGIN,
794 	INDENT,
795 	INVISIBLE,
796 	EDITABLE,
797 	PIXELS_ABOVE_LINES,
798 	PIXELS_BELOW_LINES,
799 	PIXELS_INSIDE_WRAP,
800 	BG_FULL_HEIGHT,
801 	RISE,
802 	UNDERLINE,
803 	STRIKETHROUGH,
804 	SIZE,
805 	SCALE,
806 	WEIGHT,
807 	LANGUAGE,
808 	FAMILY_NAME,
809 	BG_COLOR,
810 	FG_COLOR,
811 	BG_STIPPLE,
812 	FG_STIPPLE,
813 	WRAP_MODE,
814 	DIRECTION,
815 	JUSTIFICATION,
816 	STRETCH,
817 	VARIANT,
818 	STYLE,
819 	LAST_DEFINED
820 }
821 /**
822  * Specifies how xy coordinates are to be interpreted. Used by functions such
823  * as atk_component_get_position() and atk_text_get_character_extents()
824  * ATK_XY_SCREEN
825  * specifies xy coordinates relative to the screen
826  * ATK_XY_WINDOW
827  * specifies xy coordinates relative to the widget's
828  * top-level window
829  */
830 public enum AtkCoordType
831 {
832 	XY_SCREEN,
833 	XY_WINDOW
834 }
835 /**
836  * Specifies the type of a keyboard evemt.
837  * ATK_KEY_EVENT_PRESS
838  * specifies a key press event
839  * ATK_KEY_EVENT_RELEASE
840  * specifies a key release event
841  * ATK_KEY_EVENT_LAST_DEFINED
842  * Not a valid value; specifies end of enumeration
843  */
844 public enum AtkKeyEventType
845 {
846 	PRESS,
847 	RELEASE,
848 	LAST_DEFINED
849 }
850 
851 /**
852  * Main Gtk struct.
853  */
854 public struct AtkAction{}
855 
856 
857 public struct AtkActionIface
858 {
859 	GTypeInterface parent;
860 	extern(C) int function(AtkAction* action, int i) doAction;
861 	extern(C) int function(AtkAction* action) getNActions;
862 	extern(C) char* function(AtkAction* action, int i) getDescription;
863 	extern(C) char* function(AtkAction* action, int i) getName;
864 	extern(C) char* function(AtkAction* action, int i) getKeybinding;
865 	extern(C) int function(AtkAction* action, int i, char* desc) setDescription;
866 	extern(C) char* function(AtkAction* action, int i) getLocalizedName;
867 }
868 
869 
870 /**
871  * Main Gtk struct.
872  */
873 public struct AtkComponent{}
874 
875 
876 /**
877  * GTypeInterface parent;
878  * add_focus_handler ()
879  * This virtual function is deprecated since 2.9.4
880  * and it should not be overriden. See
881  * atk_component_add_focus_handler() for more information.
882  * contains ()
883  * ref_accessible_at_point ()
884  * get_extents ()
885  * get_position ()
886  * get_size ()
887  * grab_focus ()
888  * remove_focus_handler ()
889  * This virtual function is deprecated since
890  * 2.9.4 and it should not be overriden. See
891  * atk_component_remove_focus_handler() for more information.
892  * set_extents ()
893  * set_position ()
894  * set_size ()
895  * get_layer ()
896  * get_mdi_zorder ()
897  * bounds_changed ()
898  * get_alpha ()
899  */
900 public struct AtkComponentIface
901 {
902 	GTypeInterface parent;
903 	extern(C) uint function(AtkComponent* component, AtkFocusHandler handler)  addFocusHandler;
904 	extern(C) int function(AtkComponent* component, int x, int y, AtkCoordType coordType)  contains;
905 	extern(C) AtkObject* function(AtkComponent* component, int x, int y, AtkCoordType coordType)  refAccessibleAtPoint;
906 	extern(C) void function(AtkComponent* component, int* x, int* y, int* width, int* height, AtkCoordType coordType)  getExtents;
907 	extern(C) void function(AtkComponent* component, int* x, int* y, AtkCoordType coordType)  getPosition;
908 	extern(C) void function(AtkComponent* component, int* width, int* height)  getSize;
909 	extern(C) int function(AtkComponent* component)  grabFocus;
910 	extern(C) void function(AtkComponent* component, uint handlerId)  removeFocusHandler;
911 	extern(C) int function(AtkComponent* component, int x, int y, int width, int height, AtkCoordType coordType)  setExtents;
912 	extern(C) int function(AtkComponent* component, int x, int y, AtkCoordType coordType)  setPosition;
913 	extern(C) int function(AtkComponent* component, int width, int height)  setSize;
914 	extern(C) AtkLayer function(AtkComponent* component)  getLayer;
915 	extern(C) int function(AtkComponent* component)  getMdiZorder;
916 	/+*
917 	 * signal handlers
918 	+/
919 	extern(C) void function(AtkComponent* component, AtkRectangle* bounds)  boundsChanged;
920 	extern(C) double function(AtkComponent* component)  getAlpha;
921 }
922 
923 
924 /**
925  * A data structure for holding a rectangle. Those coordinates are
926  * relative to the component top-level parent.
927  * gint x;
928  * X coordinate of the left side of the rectangle.
929  * gint y;
930  * Y coordinate of the top side of the rectangle.
931  * gint width;
932  * width of the rectangle.
933  * gint height;
934  * height of the rectangle.
935  */
936 public struct AtkRectangle
937 {
938 	int x;
939 	int y;
940 	int width;
941 	int height;
942 }
943 
944 
945 /**
946  * Main Gtk struct.
947  */
948 public struct AtkDocument{}
949 
950 
951 /**
952  * GTypeInterface parent;
953  * get_document_type ()
954  * get_document ()
955  * get_document_locale ()
956  * gets locale. This virtual function is
957  * deprecated since 2.7.90 and it should not be overriden.
958  * get_document_attributes ()
959  * get_document_attribute_value ()
960  * set_document_attribute ()
961  */
962 public struct AtkDocumentIface
963 {
964 	GTypeInterface parent;
965 	extern(C) char* function(AtkDocument* document) getDocumentType;
966 	extern(C) void* function(AtkDocument* document) getDocument;
967 	extern(C) char* function(AtkDocument* document) getDocumentLocale;
968 	extern(C) AtkAttributeSet * function(AtkDocument* document) getDocumentAttributes;
969 	extern(C) char* function(AtkDocument* document, char* attributeName) getDocumentAttributeValue;
970 	extern(C) int function(AtkDocument* document, char* attributeName, char* attributeValue) setDocumentAttribute;
971 }
972 
973 
974 /**
975  * Main Gtk struct.
976  */
977 public struct AtkEditableText{}
978 
979 
980 /**
981  * Main Gtk struct.
982  */
983 public struct AtkGObjectAccessible{}
984 
985 
986 /**
987  * Main Gtk struct.
988  */
989 public struct AtkHyperlink{}
990 
991 
992 /**
993  * Main Gtk struct.
994  */
995 public struct AtkHypertext{}
996 
997 
998 /**
999  * Main Gtk struct.
1000  */
1001 public struct AtkImage{}
1002 
1003 
1004 /**
1005  * Main Gtk struct.
1006  */
1007 public struct AtkNoOpObject{}
1008 
1009 
1010 /**
1011  * Main Gtk struct.
1012  */
1013 public struct AtkNoOpObjectFactory{}
1014 
1015 
1016 /**
1017  * Main Gtk struct.
1018  */
1019 public struct AtkObject{}
1020 
1021 
1022 public struct AtkImplementor{}
1023 
1024 
1025 /**
1026  * Note: for most properties the old_value field of AtkPropertyValues
1027  * will not contain a valid value.
1028  * Currently, the only property for which old_value is used is
1029  * accessible-state; for instance if there is a focus state the
1030  * property change handler will be called for the object which lost the focus
1031  * with the old_value containing an AtkState value corresponding to focused
1032  * and the property change handler will be called for the object which
1033  * received the focus with the new_value containing an AtkState value
1034  * corresponding to focused.
1035  * const gchar *property_name;
1036  * The name of the ATK property which is being presented or which has been changed.
1037  * GValue old_value;
1038  * The old property value, NULL; in some contexts this value is undefined (see note below).
1039  * GValue new_value;
1040  * The new value of the named property.
1041  */
1042 public struct AtkPropertyValues
1043 {
1044 	char *propertyName;
1045 	GValue oldValue;
1046 	GValue newValue;
1047 }
1048 
1049 
1050 /**
1051  * Main Gtk struct.
1052  */
1053 public struct AtkObjectFactory{}
1054 
1055 
1056 /**
1057  * Main Gtk struct.
1058  */
1059 public struct AtkRegistry{}
1060 
1061 
1062 /**
1063  * Main Gtk struct.
1064  */
1065 public struct AtkRelation{}
1066 
1067 
1068 /**
1069  * Main Gtk struct.
1070  */
1071 public struct AtkRelationSet{}
1072 
1073 
1074 /**
1075  * Main Gtk struct.
1076  */
1077 public struct AtkSelection{}
1078 
1079 
1080 /**
1081  * Main Gtk struct.
1082  */
1083 public struct AtkStateSet{}
1084 
1085 
1086 /**
1087  * Main Gtk struct.
1088  */
1089 public struct AtkStreamableContent{}
1090 
1091 
1092 /**
1093  * Main Gtk struct.
1094  */
1095 public struct AtkTable{}
1096 
1097 
1098 /**
1099  * Main Gtk struct.
1100  */
1101 public struct AtkText{}
1102 
1103 
1104 /**
1105  * GTypeInterface parent;
1106  * get_text ()
1107  * get_text_after_offset ()
1108  * Gets specified text. This virtual function
1109  * is deprecated and it should not be overridden.
1110  * get_text_at_offset ()
1111  * Gets specified text. This virtual function
1112  * is deprecated and it should not be overridden.
1113  * get_character_at_offset ()
1114  * get_text_before_offset ()
1115  * Gets specified text. This virtual function
1116  * is deprecated and it should not be overridden.
1117  * get_caret_offset ()
1118  * get_run_attributes ()
1119  * get_default_attributes ()
1120  * get_character_extents ()
1121  * get_character_count ()
1122  * get_offset_at_point ()
1123  * get_n_selections ()
1124  * get_selection ()
1125  * add_selection ()
1126  * remove_selection ()
1127  * set_selection ()
1128  * set_caret_offset ()
1129  * text_changed ()
1130  * the signal handler which is executed when there is a
1131  * text change. This virtual function is deprecated sice 2.9.4 and
1132  * it should not be overriden.
1133  * text_caret_moved ()
1134  * text_selection_changed ()
1135  * text_attributes_changed ()
1136  * get_range_extents ()
1137  * get_bounded_ranges ()
1138  * get_string_at_offset ()
1139  * Gets a portion of the text exposed through
1140  * an AtkText according to a given offset and a specific
1141  * granularity, along with the start and end offsets defining the
1142  * boundaries of such a portion of text.
1143  */
1144 public struct AtkTextIface
1145 {
1146 	GTypeInterface parent;
1147 	extern(C) char* function(AtkText* text, int startOffset, int endOffset)  getText;
1148 	extern(C) char* function(AtkText* text, int offset, AtkTextBoundary boundaryType, int* startOffset, int* endOffset)  getTextAfterOffset;
1149 	extern(C) char* function(AtkText* text, int offset, AtkTextBoundary boundaryType, int* startOffset, int* endOffset)  getTextAtOffset;
1150 	extern(C) gunichar function(AtkText* text, int offset)  getCharacterAtOffset;
1151 	extern(C) char* function(AtkText* text, int offset, AtkTextBoundary boundaryType, int* startOffset, int* endOffset)  getTextBeforeOffset;
1152 	extern(C) int function(AtkText* text)  getCaretOffset;
1153 	extern(C) AtkAttributeSet* function(AtkText* text, int offset, int* startOffset, int* endOffset)  getRunAttributes;
1154 	extern(C) AtkAttributeSet* function(AtkText* text)  getDefaultAttributes;
1155 	extern(C) void function(AtkText* text, int offset, int* x, int* y, int* width, int* height, AtkCoordType coords)  getCharacterExtents;
1156 	extern(C) int function(AtkText* text)  getCharacterCount;
1157 	extern(C) int function(AtkText* text, int x, int y, AtkCoordType coords)  getOffsetAtPoint;
1158 	extern(C) int function(AtkText* text)  getNSelections;
1159 	extern(C) char* function(AtkText* text, int selectionNum, int* startOffset, int* endOffset)  getSelection;
1160 	extern(C) int function(AtkText* text, int startOffset, int endOffset)  addSelection;
1161 	extern(C) int function(AtkText* text, int selectionNum)  removeSelection;
1162 	extern(C) int function(AtkText* text, int selectionNum, int startOffset, int endOffset)  setSelection;
1163 	extern(C) int function(AtkText* text, int offset)  setCaretOffset;
1164 	/+*
1165 	 * signal handlers
1166 	+/
1167 	extern(C) void function(AtkText* text, int position, int length)  textChanged;
1168 	extern(C) void function(AtkText* text, int location)  textCaretMoved;
1169 	extern(C) void function(AtkText* text)  textSelectionChanged;
1170 	extern(C) void function(AtkText* text)  textAttributesChanged;
1171 	extern(C) void function(AtkText* text, int startOffset, int endOffset, AtkCoordType coordType, AtkTextRectangle* rect)  getRangeExtents;
1172 	extern(C) AtkTextRange** function(AtkText* text, AtkTextRectangle* rect, AtkCoordType coordType, AtkTextClipType xClipType, AtkTextClipType yClipType)  getBoundedRanges;
1173 	extern(C) char* function(AtkText* text, int offset, AtkTextGranularity granularity, int* startOffset, int* endOffset)  getStringAtOffset;
1174 }
1175 
1176 
1177 /**
1178  * A structure used to describe a text range.
1179  * AtkTextRectangle bounds;
1180  * A rectangle giving the bounds of the text range
1181  * gint start_offset;
1182  * The start offset of a AtkTextRange
1183  * gint end_offset;
1184  * The end offset of a AtkTextRange
1185  * gchar *content;
1186  * The text in the text range
1187  */
1188 public struct AtkTextRange
1189 {
1190 	AtkTextRectangle bounds;
1191 	int startOffset;
1192 	int endOffset;
1193 	char* content;
1194 }
1195 
1196 
1197 /**
1198  * A structure used to store a rectangle used by AtkText.
1199  * gint x;
1200  * The horizontal coordinate of a rectangle
1201  * gint y;
1202  * The vertical coordinate of a rectangle
1203  * gint width;
1204  * The width of a rectangle
1205  * gint height;
1206  * The height of a rectangle
1207  */
1208 public struct AtkTextRectangle
1209 {
1210 	int x;
1211 	int y;
1212 	int width;
1213 	int height;
1214 }
1215 
1216 
1217 /**
1218  * A string name/value pair representing a text attribute.
1219  * gchar *name;
1220  * The attribute name. Call atk_text_attr_get_name()
1221  * gchar *value;
1222  * the value of the attribute, represented as a string.
1223  * Call atk_text_attr_get_value() for those which are strings.
1224  * For values which are numbers, the string representation of the number
1225  * is in value.
1226  */
1227 public struct AtkAttribute
1228 {
1229 	char* name;
1230 	char* value;
1231 }
1232 
1233 
1234 public struct AtkUtil{}
1235 
1236 
1237 /**
1238  * Encapsulates information about a key event.
1239  * gint type;
1240  * An AtkKeyEventType, generally one of ATK_KEY_EVENT_PRESS or ATK_KEY_EVENT_RELEASE
1241  * guint state;
1242  * A bitmask representing the state of the modifier keys immediately after the event takes place.
1243  * The meaning of the bits is currently defined to match the bitmask used by GDK in
1244  * GdkEventType.state, see
1245  * http://developer.gnome.org/doc/API/2.0/gdk/gdk-Event-Structures.htmlGdkEventKey
1246  * guint keyval;
1247  * A guint representing a keysym value corresponding to those used by GDK and X11: see
1248  * /usr/X11/include/keysymdef.h.
1249  * gint length;
1250  * The length of member string.
1251  * gchar *string;
1252  * A string containing one of the following: either a string approximating the text that would
1253  * result from this keypress, if the key is a control or graphic character, or a symbolic name for this keypress.
1254  * Alphanumeric and printable keys will have the symbolic key name in this string member, for instance "A". "0",
1255  * "semicolon", "aacute". Keypad keys have the prefix "KP".
1256  * guint16 keycode;
1257  * The raw hardware code that generated the key event. This field is raraly useful.
1258  * guint32 timestamp;
1259  * A timestamp in milliseconds indicating when the event occurred.
1260  * These timestamps are relative to a starting point which should be considered arbitrary,
1261  * and only used to compare the dispatch times of events to one another.
1262  */
1263 public struct AtkKeyEventStruct
1264 {
1265 	int type;
1266 	uint state;
1267 	uint keyval;
1268 	int length;
1269 	char *string;
1270 	ushort keycode;
1271 	uint timestamp;
1272 }
1273 
1274 
1275 /**
1276  * Main Gtk struct.
1277  */
1278 public struct AtkValue{}
1279 
1280 
1281 /*
1282  * A convenience macro for type ATK implementations, which declares a class
1283  * initialization function, an instance initialization function (see GTypeInfo
1284  * for information about these) and a static variable named
1285  * t_n _parent_class pointing to the parent class. Furthermore, it
1286  * defines a _get_type() function.
1287  * TN :
1288  * The name of the new type, in Camel case.
1289  * t_n :
1290  * The name of the new type, in lowercase, with words separated by '_'.
1291  * T_P :
1292  * The GType of the parent type.
1293  * Since 1.22
1294  */
1295 // TODO
1296 // #define ATK_DEFINE_TYPE(TN, t_n, T_P)			 ATK_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, 0, {})
1297 
1298 /*
1299  * The most general convenience macro for ATK type implementations, on which
1300  * ATK_DEFINE_TYPE(), etc are based.
1301  * TN :
1302  * The name of the new type, in Camel case.
1303  * t_n :
1304  * The name of the new type, in lowercase, with words separated by '_'.
1305  * T_P :
1306  * The GType of the parent type.
1307  * _f_ :
1308  * GTypeFlags to pass to g_type_register_static()
1309  * _C_ :
1310  * Custom code that gets inserted in the _get_type() function.
1311  * Since 1.22
1312  */
1313 // TODO
1314 // #define ATK_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_) _ATK_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _ATK_DEFINE_TYPE_EXTENDED_END()
1315 
1316 /*
1317  * A convenience macro for ATK type implementations.
1318  * Similar to ATK_DEFINE_TYPE(), but allows you to insert custom code into the
1319  * _get_type() function, e.g. interface implementations via G_IMPLEMENT_INTERFACE().
1320  * TN :
1321  * The name of the new type, in Camel case.
1322  * t_n :
1323  * The name of the new type in lowercase, with words separated by '_'.
1324  * T_P :
1325  * The GType of the parent type.
1326  * _C_ :
1327  * Custom code that gets inserted in the _get_type() function.
1328  * Since 1.22
1329  */
1330 // TODO
1331 // #define ATK_DEFINE_TYPE_WITH_CODE(TN, t_n, T_P, _C_)	 _ATK_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, 0) {_C_;} _ATK_DEFINE_TYPE_EXTENDED_END()
1332 
1333 /*
1334  * A convenience macro for ATK type implementations.
1335  * Similar to ATK_DEFINE_TYPE(), but defines an abstract type.
1336  * TN :
1337  * The name of the new type, in Camel case.
1338  * t_n :
1339  * The name of the new type, in lowercase, with words separated by '_'.
1340  * T_P :
1341  * The GType of the parent type.
1342  * Since 1.22
1343  */
1344 // TODO
1345 // #define ATK_DEFINE_ABSTRACT_TYPE(TN, t_n, T_P)		 ATK_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT, {})
1346 
1347 /*
1348  * A convenience macro for ATK type implementations.
1349  * Similar to ATK_DEFINE_TYPE_WITH_CODE(), but defines an abstract type.
1350  * TN :
1351  * The name of the new type, in Camel case.
1352  * t_n :
1353  * The name of the new type, in lowercase, with words separated by '_'.
1354  * T_P :
1355  * The GType of the parent type.
1356  * _C_ :
1357  * Custom code that gets inserted in the _get_type() function.
1358  * Since 1.22
1359  */
1360 // TODO
1361 // #define ATK_DEFINE_ABSTRACT_TYPE_WITH_CODE(TN, t_n, T_P, _C_) _ATK_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT) {_C_;} _ATK_DEFINE_TYPE_EXTENDED_END()
1362 
1363 /*
1364  * Warning
1365  * AtkFocusHandler is deprecated and should not be used in newly-written code. This type is deprecated since ATK version 2.9.4. as
1366  * atk_component_add_focus_handler() and
1367  * atk_component_remove_focus_handler() are deprecated. See those
1368  * methods for more information.
1369  * The type of callback function used for
1370  * atk_component_add_focus_handler() and
1371  * atk_component_remove_focus_handler()
1372  * object :
1373  * the AtkObject that receives/lose the focus
1374  * focus_in :
1375  * TRUE if the object receives the focus
1376  */
1377 // void (*AtkFocusHandler) (AtkObject *object,  gboolean focus_in);
1378 public alias extern(C) void function(AtkObject* object, int focusIn) AtkFocusHandler;
1379 
1380 /*
1381  * An AtkFunction is a function definition used for padding which has
1382  * been added to class and interface structures to allow for expansion
1383  * in the future.
1384  * user_data :
1385  * custom data defined by the user
1386  * Returns :
1387  * not used
1388  */
1389 // gboolean (*AtkFunction) (gpointer user_data);
1390 public alias extern(C) int function(void* userData) AtkFunction;
1391 
1392 /*
1393  * An AtkPropertyChangeHandler is a function which is executed when an
1394  * AtkObject's property changes value. It is specified in a call to
1395  * atk_object_connect_property_change_handler().
1396  * obj :
1397  * atkobject which property changes
1398  * vals :
1399  * values changed
1400  */
1401 // void (*AtkPropertyChangeHandler) (AtkObject *obj,  AtkPropertyValues *vals);
1402 public alias extern(C) void function(AtkObject* obj, AtkPropertyValues* vals) AtkPropertyChangeHandler;
1403 
1404 /*
1405  * A function which is called when an object emits a matching event,
1406  * as used in atk_add_focus_tracker.
1407  * Currently the only events for which object-specific handlers are
1408  * supported are events of type "focus:". Most clients of ATK will prefer to
1409  * attach signal handlers for the various ATK signals instead.
1410  * see atk_add_focus_tracker.
1411  * obj :
1412  * An AtkObject instance for whom the callback will be called when
1413  * the specified event (e.g. 'focus:') takes place.
1414  */
1415 // void (*AtkEventListener) (AtkObject *obj);
1416 public alias extern(C) void function(AtkObject* obj) AtkEventListener;
1417 
1418 /*
1419  * An AtkEventListenerInit function is a special function that is
1420  * called in order to initialize the per-object event registration system
1421  * used by AtkEventListener, if any preparation is required.
1422  * see atk_focus_tracker_init.
1423  */
1424 // void (*AtkEventListenerInit) (void);
1425 public alias extern(C) void function() AtkEventListenerInit;
1426 
1427 /*
1428  * An AtkKeySnoopFunc is a type of callback which is called whenever a key event occurs,
1429  * if registered via atk_add_key_event_listener. It allows for pre-emptive
1430  * interception of key events via the return code as described below.
1431  * event :
1432  * an AtkKeyEventStruct containing information about the key event for which
1433  * notification is being given.
1434  * user_data :
1435  * a block of data which will be passed to the event listener, on notification.
1436  * Returns :
1437  * TRUE (nonzero) if the event emission should be stopped and the event
1438  * discarded without being passed to the normal GUI recipient; FALSE (zero) if the
1439  * event dispatch to the client application should proceed as normal.
1440  * see atk_add_key_event_listener.
1441  */
1442 // gint (*AtkKeySnoopFunc) (AtkKeyEventStruct *event,  gpointer user_data);
1443 public alias extern(C) int function(AtkKeyEventStruct* event, void* userData) AtkKeySnoopFunc;