GithubHelp home page GithubHelp logo

isabella232 / uia2atk Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mono/uia2atk

0.0 0.0 0.0 18.93 MB

Accessibility bridge between UIA and Gnome's ATK

Home Page: http://www.mono-project.com/Accessibility:_Getting_Started_With_Development

License: Other

C# 73.70% C 0.52% Shell 0.40% JavaScript 0.05% Python 22.42% C++ 0.01% HTML 0.15% Makefile 1.63% CSS 0.04% XSLT 0.67% M4 0.31% Rich Text Format 0.11%

uia2atk's Introduction

Current state

  • Pure UIA API (no ATK) works for:
    • Standart WinForms controls;
    • Custom controls if one implements theirs Providers.
  • ATK API isn't updated at this time.
  • Tests aren't updated too.

Pure UIA case

Simplified diagram


   +-------+                                                                                             +--------+
   |  App  |                                                                                             |  Test  |
   +---+---+                                                                                             +---+----+
       |                                                                                                     |
  +----+---+  +----------------------+                                                             +---------+----------+
  |  Mono  +--+ UIAutomationWinforms |                                                             | UIAutomationClient |
  |WinForms|  |       (dll)          |                                                             |       (dll)        |
  +--------+  +----------+-----------+                        +-----------+                        +---------+----------+
              +----------+-----------++---------------+       |           |       +---------------++---------+----------+
              |  UIAutomationBridge  ++ UiaDbusBridge |<----->|   D-Bus   |<----->| UiaDbusSource ++ UIAutomationSource |
              |       (dll)          ||     (dll)     |       |           |       |     (dll)     ||       (dll)        |
              +----------------------++---------------+       +-----------+       +---------------++--------------------+
 \                                                      /                       \                                         /
  \                                                    /                         \                                       /
   ----------------------------------------------------                           ---------------------------------------
               Mono process of an Application                                             Mono process of a Test

How to build

In-system build

One can build the following projects:

  • UIAutomation
  • UIAutomationWinforms
  • UiaDbus

To do this visit correspondent directories and execute there:

cd "${ProjectDirectory}"
./autogen.sh --prefix=/usr --disable-tests
make

Wuth --prefix=/usr one can install assemblies to the local GAC. To do it just execute as superuser (Debian example):

cd "${ProjectDirectory}"
sudo make install

To build in Debian 9 one need to install the following packages:

sudo apt install \
    mono-complete \
    intltool libtool-bin \
    libglib2.0-cil-dev libglib3.0-cil-dev \
    libgtk2.0-cil-dev libgtk3.0-cil-dev \
    libdbus-glib2.0-cil-dev \

How to use

  1. Make UIA API assemblies are available for Mono. There are some ways:

    • Install assemblies to the local GAC. See "In-system build" section above.
    • Store assemblies in some directory ${assemblies_dir} and update environment:
      export MONO_PATH="${assemblies_dir}:${MONO_PATH}"
      
  2. Run your application.

    • To avoid errors related with ATK one can update environment:
      export MONO_UIA_BRIDGE="UiaDbusBridge, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f4ceacb585d99812"
      
  3. Run test. See "Examples" section below.

    • Update environment to avoid ATK related errors:
      export MONO_UIA_SOURCE="UiaDbusSource, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f4ceacb585d99812"
      

Examples

Please, refer to the test/pure-uia/ReadMe.md. Couple Python examples are described there.

Tune UIA API behaviour

Some UIA API setting may be changes by means of environment variables. One may refer to the EnvironmentVaribles class for more details.

Current available settings:

  • MONO_UIA_ENABLED={0,1}: API switcher.
  • MONO_UIA_UISYNCCONTEXT={0,1}: Thread safety setting.
  • MONO_UIA_BRIDGE: Application side bridges to be used.
  • MONO_UIA_SOURCE: Test side sources to be used.
  • MONO_UIA_NAVIGATION_TREE_ERR: Usefull to debug some API errors.
  • MONO_UIA_LOG_LEVEL
  • ...

Additional requirements

Mono`s UIA API uses dbus-sharp project. Unfortunately there are some issues not fixed yet (PRs #71, #72, #73). To solve this one can build library from the 'axxon' branch of this fork.

Old README from the 2010s

Home of effort to implement UI Automation (UIA) on Linux.

Summary (from http://www.mono-project.com/Accessibility )
=========================================================

    * Project Goals
          o Make WinForms accessible
          o Make Moonlight accessible
          o Allow UI Automation based Accessibility Technologies to run on Linux 

UI Automation: The User Interface Automation (UIA) specification is an advanced
accessibility framework that Microsoft has released to the community including
an irrevocable pledge of patent rights for anyone implementing the specification.
This [project includes] work to build a Linux implementation of the UIA and an
adapter to make it work well with Linux accessibility projects. 


Directory Layout
================

AtspiUiaSource: AT-SPI2 realization of UIA D-Bus interfaces.
MoonAtkBridge: UIA providers for silverlight controls and components.
UiaAtkBridge: Bridge between UIA providers and ATK.
UiaDbus: D-Bus interface to UIA.
UIAutomation: Implementation of Microsoft UIA assemblies.
UIAutomationWinforms: UIA providers for winforms controls and components.

uia2atk.mdw: MonoDevelop solution for code in above projects.

test: Samples, tests, and other QA resources.
build: Package build scripts and resources.

uia2atk's People

Contributors

btaylor avatar decriptor avatar feliciamu avatar jasonjgw avatar knocte avatar mariocarrion avatar mgorse avatar nvoronchev avatar sandyarmstrong avatar terrajobst avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.