[prg] Вопросы по разработке плагинов и модулей приложений для nvda
Всех приветствую. Я хочу научиться разрабатывать плагины и модули под
приложения для nvda. Прочитал руководство,переведённое Никитой цейковцом
на тифлокомпе,общий принцип понял,но у меня осталось очень много
непонятных мне вопросов.
1. Как отлаживать написанный плагин или модуль,т.е как понять,к
примеру,почему у меня не скомпилировался плагин или модуль,или почему он
скомпилировался,но не работает,т.е где и какой возник exception.
2. Правильно ли я понял,что при написании плагина или модуля
классы,которые наследуются от globalplugin.handler и appmodule.handler
должны называться именно globalplugin или appmodule(Названия всех
классов написаны приблезительно),а остальные классы,т.е пользовательские
классы,которые наследуются от других классов nvda api могут называться
как угодно?
3. Можно ли,и если да,то как,управлять работой плагина или модуля при
загрузке nvda и при завершении её работы?
4. Учитывая,что для написания плагинов и модулей для nvda
используется,как я понял,python 2.7,можно писать плагины,которые могут
служить играми,бизнес приложениями и т.д. Исходя из этого возникает
вопрос,куда загружать дополнительные библиотеки для python 2.7,которые
могут мне понадобиться при необходимости?
5. Как можно подписать элементы меню приложения,поскольку они не
подписаны,т.е какой метод основного класса для модуля приложения лучше
переопределить для этих целей? Как это можно сделать,учитывая,что когда
я,к примеру,нажимаю стрелку вниз от первого столбца меню,который
называется файл,все элементы меню читаются только с использованием
просмотрового курсора nvda,т.е когда я нажимаю клавиши 7 и 9 на
дополнительном блоке с выключенным numlock,т.е как получить список всех
объектов просмотрового курсора nvda?
6. в первом примере руководства nvda,показан пример,позволяющий
генерировать звук при переходе по элементам управления в блокноте. Мне в
нём всё понятно,кроме последней строки переопределённого метода,т.е
зачем мы в конце вызываем функцию nextHandler()?
7. Каким ещё образом,кроме словаря __gestures можно назначать жесты
функциям. Просто очень часто хочется использовать одну и ту же функцию с
разными жестами,при этом,истественно,меняя переменные в зависимости от
жеста,поэтому словарь __gestures тут не подойдёт,поскольку в словаре не
допускаются эдентичные ключи. К примеру,я хочу написать функцию,которая
будет мне проговаривать синус угла 2*pi/functionkey,где functionkey -
Идентификатор функциональной клавиши. Например,если пользователь нажмёт
nvda+shift+f1,то nvda сообщит ему синус угла 2*pi,если вместо f1 будет
f2 - pi,f3 - 2*pi/3,f4 - pi/2,f5 - 2*pi/5: f12 - pi/6. Алгоритм разбора
жеста я уже,думаю,реализовал,вопрос только в том,как теперь назначить
жесты на эту функцию,не используя словаря __gestures?
9. Мне непонятно,почему иногда в кодах плагинов и дополнений nvda,иногда
заключают строки в скобки,при этом ставя перед открывающей скобкой
_,ведь если я в обычном python 2.7 или 3.6 перед скобкой поставлю _,то у
меня будет синтаксическая ошибка. Также у меня не получается корректно
скопировать русскоязычную строку в буфер обмена,хоть я и перевожу строку
в utf-8,используя метод decode строкового объекта. У меня почему-то
копируется в буфер обмена только один странный символ. Я использую
функцию,которая примерно называется copyToClip и которая находится в
модуле api (Эта функция использовалась в дополнении clipcopy). Дайте
пожалуйста ссылку на подробную документацию всех модулей,классов и их
методов,позволяющих разрабатывать плагины и модули под nvda (даже пусть
она будет на английском),просто даже в англоязычном руководстве,по
материалом которого была написана статья на тифлокомпе,нету ссылки на
документацию по api nvda. Заранее благодарю всех за помощь.