Здравствуйте, Саша Козловский.
> Я имею ввиду,к примеру,какие методы основного класса нужно
> переопределить,чтобы при загрузке или выгрузке nvda происходило
> какое-либо действие
Как я уже сказал, смотрите модуль Core и решайте, куда именно вам удобнее
вклиниваться для ваших задач. Тут главное не влезть раньше инициализации тех
модулей, на которые вы будите опираться, ну типа не пытаться сказать фразу
раньше инициализации модуля вывода речи.
> Обоснуйте пожалуйста почему.
Во-первых, NVDA есть не у всех.
Во-вторых, вы собираетесь перегружать своим излишним кодом основной
инструмент доступности, а у NVDA итак есть проблемы с производительностью.
В-третьих, вы претендуете на чрезмерное доверие к вам, как к поставщику
программы, так как ваш код будет исполняться под процессом NVDA и со всеми
правами NVDA.
В-четвёртых, ошибка в вашем стороннем приложении, исполняющемся на NVDA,
может положить вам весь инструмент доступности.
В-пятых, это неправильно, так как NVDA для этого не предназначена. Это
просто вопрос культуры разработки. Все мы, конечно, её когда-то нарушаем, но
зачем делать это лишний раз?
> Дело в том,что в python некоторые вещи
> гораздо легче делать чем,к примеру,в c# или java,но python не у всех
> незрячих стоит
А как по-вашему справляется сама NVDA?
Вам ничего не мешает писать на Python нативные приложения. Существует py2exe
и прочее.
> А куда можно закинуть библиотеки,чтобы они работали для всех плагинов?
Куда угодно, например, в общую директорию пользовательских настроек NVDA.
Только стандартный установщик NVDA строго распаковывает каждое дополнение в
собственную директорию, поэтому либо вручную, либо в дополнении можно
прописать процедуру, отрабатывающую при установке, которая и будет
разбрасывать общие библиотеки. Однако вам придётся хорошо поработать над
архитектурой, чтобы управлять версионированием общих библиотек и прочим.
> Вообще,когда я импортирую модули,где nvda ищет их,т.е в каких
> директориях.
У себя в скомпилированном ядре и по пользовательским и системным папкам
модулей. Там есть нюансы с функциональным назначением конкретных директорий.
Я сейчас точно не помню, да и прикладных задач в этом направлении не решал,
так что могу вообще всего не знать, так что обо всех подводных камнях
предупредить не смогу. Экспериментируйте и читайте исходники.
> Я хочу озвучить меню screamer версия 044 (это программа для
> прослушивания интернет радио).
Мне это ни о чём не говорит, а ставить не готов, извините.
> символ подчёркивания перед
> скобками со строковыми аргументами встречался в коде дополнения
> captchaSolver.
Если вы о чём-то типа
printf(_("Hello World!"), hello);
то это gettext - такая специальная система локализации строковых ресурсов.
> можно ли как-то сразу проговаривать строку на
> русском,или её обязательно нужно декодировать в utf-8,как это делаю я?
Вообще с Unicode-строками надо работать как с u'Привет!', но пока займитесь
другим.
Почитайте сперва про тот самый gettext. По-хорошему все строки ваших
сообщений должны быть вынесены именно в po-файлы системы gettext.
Без этого вы толком ни один свой плагин локализовать и выложить для
международного сообщества не сможете.
> функция dir,конечно,выдаёт мне кое-какую информацию,а вот при вызове
> функции help ничего не происходит. А структурированной и очень подробной
> документации,как я понял,нет.
Есть та, которая прописана как справка внутри кода.
help(modules) - получаете список всех модулей
help('module') - получаете справку по модулю module
dir('module') - получаете список всех функций модуля module
help('module.function') - получаете справку по функции function модуля
module
В общем я понимаю вашу горячность, но наверное имеет смысл ещё немного
подтянуть Python как таковой. Вам самому после этого будет проще.
> Надеюсь,что-то полезное будет в
> документации исходников nvda
Кроме того, что вы сможете получить вышеупомянутыми методами, там будут
разве что комментарии кода в некоторых местах.
Исходники, конечно, полезно читать, но это больше для общего знакомства, вот
как с вашей задачей по вклиниванию в загрузку и выгрузку. Тут полезно просто
открыть core.py и почитать сплошняком.
Успехов. Никита.
P.S. Кстати, существует специальный список рассылки по разработки плагинов
для NVDA, но он англоязычный. Если нужно, то могу поискать адрес подписки.