ATK-implementation för ett specifikt objekt
- GNOME:s utvecklarguide för hjälpmedelsteknik
- Vad är tillgänglighet?
- Exempel som använder tillgänglighets-API:t
- Implementera ett ATK-objekt
Alla GObject implementerar en get_type()-funktion. Om vi använder exemplet ovan så skulle namnkonventionen för detta funktionsnamn vara myatkimp_mytype_get_type().
I denna funktion anger du vilka gränssnitt som ditt objekt implementerar. Om följande logik skulle inkluderas i denna get_type()-funktion så skulle detta objekt implementera ATK_TEXT-gränssnittet:
Exempel 1-5 Exempel på en get_type()-funktion
static const GInterfaceInfo atk_text_info = { (GInterfaceInitFunc) atk_text_interface_init, (GInterfaceFinalizeFunc) NULL, NULL }; g_type_add_interface_static (type, ATK_TYPE_TEXT, &atk_text_info);
Funktionen atk_text_interface_init(), som har följande prototyp, skulle behöva implementeras:
void atk_text_interface_init (AtkTextIface *iface);
Denna funktion skulle ansluta gränssnittets funktionsanrop till den specifika implementationen enligt följande:
Exempel 1-6 Ansluta anpassade gränssnittsanrop till en AtkObject-implementation
void atk_text_interface_init (AtkTextIface *iface) { g_return_if_fail (iface != NULL); iface->get_text = myatkimp_mytype_get_text; iface->get_character_at_offset = myatkimp_mytype_get_character_at_offset; ... }
Då skulle funktionerna myatkimp_mytype_get_text(), myatkimp_mytype_get_character_at_offset() och resten av ATK_TEXT-gränssnittsfunktionerna behöva implementeras.