annotate dwt/accessibility/AccessibleFactory.d @ 238:380bad9f6852

reverted char[] to String
author Frank Benoit <benoit@tionex.de>
date Mon, 05 May 2008 00:42:55 +0200
parents de2578a843a7
children 5a30aa9820f3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
72
5899e0b43e5d porting notice
Frank Benoit <benoit@tionex.de>
parents: 71
diff changeset
1 /*******************************************************************************
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2 * Copyright (c) 2000, 2006 IBM Corporation and others.
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
72
5899e0b43e5d porting notice
Frank Benoit <benoit@tionex.de>
parents: 71
diff changeset
10 * Port to the D programming language:
5899e0b43e5d porting notice
Frank Benoit <benoit@tionex.de>
parents: 71
diff changeset
11 * Frank Benoit <benoit@tionex.de>
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 *******************************************************************************/
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 module dwt.accessibility.AccessibleFactory;
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 158
diff changeset
15 import dwt.dwthelper.utils;
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 158
diff changeset
16
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 import dwt.internal.accessibility.gtk.ATK;
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 import dwt.internal.gtk.OS;
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 import dwt.accessibility.Accessible;
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 import dwt.accessibility.ACC;
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 import dwt.accessibility.AccessibleObject;
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 import dwt.accessibility.AccessibleControlEvent;
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 import dwt.accessibility.AccessibleControlListener;
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
26 import dwt.DWT;
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 import tango.stdc.stringz;
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 import tango.io.Stdout;
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 class AccessibleFactory {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
32 AtkObjectFactory * handle;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
33 uint objectParentType;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
34 char* widgetTypeName;
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
36 //Callback atkObjectFactoryCB_create_accessible;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
37 //Callback gTypeInfo_base_init_factory;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
38 Accessible[GtkWidget*] accessibles;
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 158
diff changeset
40 static long[String] Types;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
41 static AccessibleFactory[long] Factories;
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42
54
8f049b136add first example working
Frank Benoit <benoit@tionex.de>
parents: 42
diff changeset
43 static uint DefaultParentType; //$NON-NLS-1$
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 158
diff changeset
44 static const String FACTORY_PARENTTYPENAME = "AtkObjectFactory";
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 158
diff changeset
45 static const String SWT_TYPE_PREFIX = "DWT";
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 158
diff changeset
46 static const String CHILD_TYPENAME = "Child";
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 158
diff changeset
47 static const String FACTORY_TYPENAME = "SWTFactory";
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
48 static const int[] actionRoles = [
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
49 ACC.ROLE_CHECKBUTTON, ACC.ROLE_COMBOBOX, ACC.ROLE_LINK,
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
50 ACC.ROLE_MENUITEM, ACC.ROLE_PUSHBUTTON, ACC.ROLE_RADIOBUTTON,
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
51 ];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
52 static const int[] hypertextRoles = [ACC.ROLE_LINK];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
53 static const int[] selectionRoles = [
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
54 ACC.ROLE_LIST, ACC.ROLE_TABFOLDER, ACC.ROLE_TABLE, ACC.ROLE_TREE,
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
55 ];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
56 static const int[] textRoles = [
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
57 ACC.ROLE_COMBOBOX, ACC.ROLE_LINK, ACC.ROLE_LABEL, ACC.ROLE_TEXT,
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
58 ];
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
60 /* AT callbacks*/
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
61 /* interface definitions */
104
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
62 private static GTypeInfo* ObjectIfaceDefinition;
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
63 private static GInterfaceInfo* ActionIfaceDefinition;
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
64 private static GInterfaceInfo* ComponentIfaceDefinition;
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
65 private static GInterfaceInfo* HypertextIfaceDefinition;
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
66 private static GInterfaceInfo* SelectionIfaceDefinition;
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
67 private static GInterfaceInfo* TextIfaceDefinition;
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68
104
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
69 private static synchronized void static_this(){
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
70 AccessibleObject.static_this();
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
71 /* Action interface */
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
72 if( ActionIfaceDefinition is null ){
54
8f049b136add first example working
Frank Benoit <benoit@tionex.de>
parents: 42
diff changeset
73 DefaultParentType = OS.g_type_from_name ("GtkAccessible"); //$NON-NLS-1$
8f049b136add first example working
Frank Benoit <benoit@tionex.de>
parents: 42
diff changeset
74 ActionIfaceDefinition = cast(GInterfaceInfo*)OS.g_malloc (GInterfaceInfo.sizeof);
8f049b136add first example working
Frank Benoit <benoit@tionex.de>
parents: 42
diff changeset
75 ActionIfaceDefinition.interface_init = &AccessibleFactory.initActionIfaceCB;
104
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
76 }
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
77 /* Component interface */
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
78 if( ComponentIfaceDefinition is null ){
54
8f049b136add first example working
Frank Benoit <benoit@tionex.de>
parents: 42
diff changeset
79 ComponentIfaceDefinition = cast(GInterfaceInfo*)OS.g_malloc (GInterfaceInfo.sizeof);
8f049b136add first example working
Frank Benoit <benoit@tionex.de>
parents: 42
diff changeset
80 ComponentIfaceDefinition.interface_init = &AccessibleFactory.initComponentIfaceCB;
104
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
81 }
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
82 /* Hypertext interface */
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
83 if( HypertextIfaceDefinition is null ){
54
8f049b136add first example working
Frank Benoit <benoit@tionex.de>
parents: 42
diff changeset
84 HypertextIfaceDefinition = cast(GInterfaceInfo*)OS.g_malloc (GInterfaceInfo.sizeof);
8f049b136add first example working
Frank Benoit <benoit@tionex.de>
parents: 42
diff changeset
85 HypertextIfaceDefinition.interface_init = &AccessibleFactory.initHypertextIfaceCB;
104
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
86 }
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
87 /* Selection interface */
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
88 if( SelectionIfaceDefinition is null ){
54
8f049b136add first example working
Frank Benoit <benoit@tionex.de>
parents: 42
diff changeset
89 SelectionIfaceDefinition = cast(GInterfaceInfo*)OS.g_malloc (GInterfaceInfo.sizeof);
8f049b136add first example working
Frank Benoit <benoit@tionex.de>
parents: 42
diff changeset
90 SelectionIfaceDefinition.interface_init = &AccessibleFactory.initSelectionIfaceCB;
104
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
91 }
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
92 /* Text interface */
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
93 if( TextIfaceDefinition is null ){
54
8f049b136add first example working
Frank Benoit <benoit@tionex.de>
parents: 42
diff changeset
94 TextIfaceDefinition =cast(GInterfaceInfo*) OS.g_malloc (GInterfaceInfo.sizeof);
8f049b136add first example working
Frank Benoit <benoit@tionex.de>
parents: 42
diff changeset
95 TextIfaceDefinition.interface_init = &AccessibleFactory.initTextIfaceCB;
104
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
96 }
54
8f049b136add first example working
Frank Benoit <benoit@tionex.de>
parents: 42
diff changeset
97 }
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
99 private this (int /*long*/ widgetType) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
100 widgetTypeName = OS.g_type_name (widgetType);
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 158
diff changeset
101 String factoryName = FACTORY_TYPENAME ~ fromStringz( widgetTypeName ) ~ \0;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
102 if (OS.g_type_from_name (factoryName.ptr) is 0) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
103 /* register the factory */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
104 auto registry = ATK.atk_get_default_registry ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
105 auto previousFactory = ATK.atk_registry_get_factory (registry, widgetType);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
106 objectParentType = ATK.atk_object_factory_get_accessible_type (previousFactory);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
107 if (objectParentType is 0) objectParentType = DefaultParentType;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
108 auto factoryParentType = OS.g_type_from_name (FACTORY_PARENTTYPENAME.ptr);
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 auto typeInfo = cast(GTypeInfo*) OS.g_malloc (GTypeInfo.sizeof);
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 typeInfo.base_init = &gTypeInfo_base_init_factory;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
111 typeInfo.class_size = AtkObjectFactoryClass.sizeof;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
112 typeInfo.instance_size = AtkObjectFactory.sizeof;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
113 auto swtFactoryType = OS.g_type_register_static (factoryParentType, factoryName.ptr, typeInfo, 0);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
114 ATK.atk_registry_set_factory_type (registry, widgetType, swtFactoryType);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
115 handle = ATK.atk_registry_get_factory (registry, widgetType);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
116 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
117 }
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
119 void addAccessible (Accessible accessible) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
120 auto controlHandle = accessible.getControlHandle ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
121 accessibles[controlHandle] = accessible;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
122 ATK.atk_object_factory_create_accessible (handle, cast(GObject*)controlHandle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
123 }
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
125 private static extern(C) AtkObject* atkObjectFactory_create_accessible (GObject* widget) {
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 auto widgetType = OS.G_OBJECT_TYPE ( cast(GTypeInstance*)widget);
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 if( auto factory = widgetType in Factories ){
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 with( *factory ){
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 Accessible accessible = accessibles[ cast(GtkWidget*) widget ];
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 if (accessible is null) {
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 /*
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 * we don't care about this control, so create it with the parent's
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 * type so that its accessibility callbacks will not pass though here
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 */
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 auto result = cast(AtkObject*) OS.g_object_new (objectParentType, null);
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 ATK.atk_object_initialize (result, cast(void*)widget);
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 return result;
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 }
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 /* if an atk object has already been created for this widget then just return it */
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 if (accessible.accessibleObject !is null) {
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 return accessible.accessibleObject.handle;
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 }
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 158
diff changeset
143 String buffer = fromStringz( widgetTypeName ).dup;
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 auto type = getType (buffer, accessible, objectParentType, ACC.CHILDID_SELF);
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 AccessibleObject object = new AccessibleObject (type, cast(GtkWidget*)widget, accessible, objectParentType, false);
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 accessible.accessibleObject = object;
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147 return object.handle;
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
148 }
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
149 }
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
150 else{
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151 Stdout.formatln( "AccessibleFactory.atkObjectFactoryCB_create_accessible cannot find factory instance" );
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 }
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
153 }
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
155 static int /*long*/ getChildType (Accessible accessible, int childIndex) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
156 return getType (CHILD_TYPENAME, accessible, DefaultParentType, childIndex);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
157 }
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
159 static int /*long*/ getDefaultParentType () {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
160 return DefaultParentType;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
161 }
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 158
diff changeset
163 static int /*long*/ getType (String widgetTypeName, Accessible accessible, int /*long*/ parentType, int childId) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
164 AccessibleControlEvent event = new AccessibleControlEvent (accessible);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
165 event.childID = childId;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
166 AccessibleControlListener[] listeners = accessible.getControlListeners ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
167 for (int i = 0; i < listeners.length; i++) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
168 listeners [i].getRole (event);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
169 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
170 bool action = false, hypertext = false, selection = false, text = false;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
171 if (event.detail !is 0) { /* a role was specified */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
172 for (int i = 0; i < actionRoles.length; i++) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
173 if (event.detail is actionRoles [i]) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
174 action = true;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
175 break;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
176 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
177 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
178 for (int i = 0; i < hypertextRoles.length; i++) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
179 if (event.detail is hypertextRoles [i]) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
180 hypertext = true;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
181 break;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
182 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
183 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
184 for (int i = 0; i < selectionRoles.length; i++) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
185 if (event.detail is selectionRoles [i]) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
186 selection = true;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
187 break;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
188 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
189 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
190 for (int i = 0; i < textRoles.length; i++) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
191 if (event.detail is textRoles [i]) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
192 text = true;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
193 break;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
194 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
195 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
196 } else {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
197 action = hypertext = selection = text = true;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
198 }
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 158
diff changeset
199 String swtTypeName = SWT_TYPE_PREFIX.dup;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
200 swtTypeName ~= widgetTypeName;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
201 if (action) swtTypeName ~= "Action"; //$NON-NLS-1$
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
202 if (hypertext) swtTypeName ~= "Hypertext"; //$NON-NLS-1$
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
203 if (selection) swtTypeName ~= "Selection"; //$NON-NLS-1$
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
204 if (text) swtTypeName ~= "Text"; //$NON-NLS-1$
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
206 int /*long*/ type = 0;
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 if (swtTypeName in Types ) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
208 type = Types[swtTypeName];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
209 } else {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
210 /* define the type */
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 GTypeQuery* query = new GTypeQuery ();
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
212 OS.g_type_query (parentType, query);
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214 GTypeInfo* typeInfo = new GTypeInfo ();
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
215 typeInfo.base_init = &gTypeInfo_base_init_type;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
216 typeInfo.class_size = query.class_size;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
217 typeInfo.instance_size = query.instance_size;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
218 ObjectIfaceDefinition = typeInfo;
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
220 type = OS.g_type_register_static (parentType, toStringz( swtTypeName ), ObjectIfaceDefinition, 0);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
221 OS.g_type_add_interface_static (type, AccessibleObject.ATK_COMPONENT_TYPE, ComponentIfaceDefinition);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
222 if (action) OS.g_type_add_interface_static (type, AccessibleObject.ATK_ACTION_TYPE, ActionIfaceDefinition);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
223 if (hypertext) OS.g_type_add_interface_static (type, AccessibleObject.ATK_HYPERTEXT_TYPE, HypertextIfaceDefinition);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
224 if (selection) OS.g_type_add_interface_static (type, AccessibleObject.ATK_SELECTION_TYPE, SelectionIfaceDefinition);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
225 if (text) OS.g_type_add_interface_static (type, AccessibleObject.ATK_TEXT_TYPE, TextIfaceDefinition);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
226 Types[swtTypeName] = type;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
227 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
228 return type;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
229 }
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
230
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
231 private static extern(C) void gTypeInfo_base_init_factory (void* klass) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
232 auto atkObjectFactoryClass = ATK.ATK_OBJECT_FACTORY_CLASS (klass);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
233 atkObjectFactoryClass.create_accessible = &atkObjectFactory_create_accessible;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
234 }
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
236 private static extern(C) void gTypeInfo_base_init_type (void* klass) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
237 auto objectClass = cast(AtkObjectClass*)klass;
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238 objectClass.get_name = &AccessibleObject.atkObject_get_name;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
239 objectClass.get_description = &AccessibleObject.atkObject_get_description;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
240 objectClass.get_n_children = &AccessibleObject.atkObject_get_n_children;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
241 objectClass.get_role = &AccessibleObject.atkObject_get_role;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
242 objectClass.get_parent = &AccessibleObject.atkObject_get_parent;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
243 objectClass.ref_state_set = &AccessibleObject.atkObject_ref_state_set;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
244 objectClass.get_index_in_parent = &AccessibleObject.atkObject_get_index_in_parent;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
245 objectClass.ref_child = &AccessibleObject.atkObject_ref_child;
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
246
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247 GObjectClass* gObjectClass = OS.G_OBJECT_CLASS ( cast(GTypeClass*)klass);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
248 gObjectClass.finalize = &AccessibleObject.gObjectClass_finalize;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
249 }
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
250
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
251 private static extern(C) void initActionIfaceCB ( void* g_iface, void* iface_data ) {
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
252 auto iface = cast(AtkActionIface*)g_iface;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
253 iface.get_keybinding = &AccessibleObject.atkAction_get_keybinding;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
254 iface.get_name = &AccessibleObject.atkAction_get_name;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
255 }
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
256
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
257 private static extern(C) void initComponentIfaceCB ( void* g_iface, void* iface_data ) {
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
258 auto iface = cast(AtkComponentIface*)g_iface;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
259 iface.get_extents = &AccessibleObject.atkComponent_get_extents;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
260 iface.get_position = &AccessibleObject.atkComponent_get_position;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
261 iface.get_size = &AccessibleObject.atkComponent_get_size;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
262 iface.ref_accessible_at_point = &AccessibleObject.atkComponent_ref_accessible_at_point;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
263 }
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
264
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
265 private static extern(C) void initHypertextIfaceCB ( void* g_iface, void* iface_data ) {
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
266 auto iface = cast(AtkHypertextIface*)g_iface;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
267 iface.get_link = &AccessibleObject.atkHypertext_get_link;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
268 iface.get_link_index = &AccessibleObject.atkHypertext_get_link_index;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
269 iface.get_n_links = &AccessibleObject.atkHypertext_get_n_links;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
270 }
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
271
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
272 private static extern(C) void initSelectionIfaceCB ( void* g_iface, void* iface_data ) {
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
273 auto iface = cast(AtkSelectionIface*)g_iface;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
274 iface.is_child_selected = &AccessibleObject.atkSelection_is_child_selected;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
275 iface.ref_selection = &AccessibleObject.atkSelection_ref_selection;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
276 }
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
277
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
278 private static extern(C) void initTextIfaceCB ( void* g_iface, void* iface_data ) {
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
279 auto iface = cast(AtkTextIface*)g_iface;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
280 iface.get_caret_offset = &AccessibleObject.atkText_get_caret_offset;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
281 iface.get_character_at_offset = &AccessibleObject.atkText_get_character_at_offset;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
282 iface.get_character_count = &AccessibleObject.atkText_get_character_count;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
283 iface.get_n_selections = &AccessibleObject.atkText_get_n_selections;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
284 iface.get_selection = &AccessibleObject.atkText_get_selection;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
285 iface.get_text = &AccessibleObject.atkText_get_text;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
286 iface.get_text_after_offset = &AccessibleObject.atkText_get_text_after_offset;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
287 iface.get_text_at_offset = &AccessibleObject.atkText_get_text_at_offset;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
288 iface.get_text_before_offset = &AccessibleObject.atkText_get_text_before_offset;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
289 }
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
290
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
291 static void registerAccessible (Accessible accessible) {
104
62a654ba5276 optimation of static ctors
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
292 static_this();
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
293 /* If DefaultParentType is 0 then OS accessibility is not active */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
294 if (DefaultParentType is 0) return;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
295 auto controlHandle = accessible.getControlHandle ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
296 auto widgetType = OS.G_OBJECT_TYPE ( cast(GTypeInstance*)controlHandle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
297 AccessibleFactory factory = Factories[widgetType];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
298 if (factory is null) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
299 factory = new AccessibleFactory (widgetType);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
300 Factories[widgetType] = factory;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
301 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
302 factory.addAccessible (accessible);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
303 }
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
304
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
305 void removeAccessible (Accessible accessible) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
306 accessibles.remove (accessible.getControlHandle ());
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
307 }
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
308
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
309 static void unregisterAccessible (Accessible accessible) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
310 auto controlHandle = accessible.getControlHandle ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
311 auto widgetType = OS.G_OBJECT_TYPE (cast(GTypeInstance*)controlHandle);
140
c3880d67f906 more tabs
Frank Benoit <benoit@tionex.de>
parents: 104
diff changeset
312 if ( auto factory = widgetType in Factories ) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
313 factory.removeAccessible (accessible);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
314 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 54
diff changeset
315 }
42
787b5413b0ce accessibility package
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
316 }