Отправляет email-рассылки с помощью сервиса Sendsay

За 2017-08-28

[prg] moderatorial Re[5]: Вопросы по разработке плагинов и модулей приложений дл

Здравствуйте, Саша!

28 Августа 2017 года в 16:42 Саша Козловский <k.sasha19***@y*****.ru> пишет
на тему "[prg] Re[4]: Вопросы по разработке плагинов и модулей
приложений для nvda":
> Здравствуйте Никита. Вы писали
>> Как я уже сказал, смотрите модуль Core и решайте, куда именно вам
удобнее...

28 Августа 2017 года в 16:43 Саша Козловский <k.sasha19***@y*****.ru> пишет
на тему "[prg] Re[4]: Вопросы по разработке плагинов и модулей
приложений для nvda":
> Здравствуйте Никита. Вы писали
>> Как я уже сказал, смотрите модуль Core и решайте, куда именно вам
удобнее...

+ - дублирование одного и того же письма.

   2017-08-28 13:04:03 (#3515487)

[prg] Re[4]: Вопросы по разработке плагинов и модулей приложений для nvda

Здравствуйте Никита. Вы писали
> Как я уже сказал, смотрите модуль Core и решайте, куда именно вам удобнее
> вклиниваться для ваших задач. Тут главное не влезть раньше
> инициализации тех
> модулей, на которые вы будите опираться, ну типа не пытаться сказать
> фразу
> раньше инициализации модуля вывода речи.
Я не совсем Вас понял. Вы предлагаете мне создать пользовательский
класс,который наследуется от core и в нём переопределить соответствующие
методы,или Вы предлагаете мне модифицировать этот модуль? Кстати я так и
не понял,как работать с жестами,используя inputCore? Может есть пример
кода,который показывает,как это делать? Ещё Вы пишете
> У себя в скомпилированном ядре и по пользовательским и системным
> папкам модулей
А в каких конкретно папках эти модули хранятся? Я пока что не собираюсь
назначать конкретные директории самостоятельно,поскольку я даже не
нашёл,как это в python делается. Ещё Вы пишете
> help(modules) - получаете список всех модулей
Сначало у меня это не работало,но теперь я понял,что Вы имели в виду
help('modules'),поскольку согласно документации python можно в качестве
аргумента этой функции использовать строки. Но когда я даже в апострофах
или кавычках,к примеру,пишу help('api'),то мне тоже ничего не
проговаривается. А как же мне тогда получить документацию по этому
модулю и по остальным модулям nvda,используя средства python? Кстати я
тут поразмышлял на счёт Вашего первого примера в руководстве на
тифлокомпе. Читая исходники дополнений,я заметил,что в плагинах есть
тоже есть события,связанные с фокусом. В связи с этим у меня возник
вопрос,можно ли,и если да,то как,вызвать функцию nextHandler,к
примеру,только по нажатии какой-то комбинации клавиш? К примеру,я хочу
написать плагин,чтобы при нажатии стрелок nvda что-либо говорила,но не
то,что есть на экране,а при нажатии какой-либо комбинации клавиш nvda бы
снова работала так,как обычно. Я понимаю,что Вы не одобряете эту идею,но
всё же мне очень интересно,как это сделать. Логичнее всего
переопределить соответствующий метод для работы с фокусом,ноу меня
возникает вопрос,с какими аргументами его вызывать. Также мне
непонятно,каким образом при нажатии клавиш вызвать диалог. Как я понял
из исходников дополнения CapchaSolver нужно создать пользовательский
класс,наследующийся от класса соответствующего диалога,но как потом
отобразить этот диалог,я не понял. Я даже не понял,каким образом в этом
дополнении обрабатывалось нажатие на пункт меню,а вот с самим классом
диалога более или менее всё понятно. Также мне непонятно,в каких случаях
нужно предпочесть проговаривать информацию,используя модуль ui ,а в
каких модуль speech?

   2017-08-28 11:43:36 (#3515467)

[prg] Re[4]: Вопросы по разработке плагинов и модулей приложений для nvda

Здравствуйте Никита. Вы писали
> Как я уже сказал, смотрите модуль Core и решайте, куда именно вам удобнее
> вклиниваться для ваших задач. Тут главное не влезть раньше
> инициализации тех
> модулей, на которые вы будите опираться, ну типа не пытаться сказать
> фразу
> раньше инициализации модуля вывода речи.
Я не совсем Вас понял. Вы предлагаете мне создать пользовательский
класс,который наследуется от core и в нём переопределить соответствующие
методы,или Вы предлагаете мне модифицировать этот модуль? Кстати я так и
не понял,как работать с жестами,используя inputCore? Может есть пример
кода,который показывает,как это делать? Ещё Вы пишете
> У себя в скомпилированном ядре и по пользовательским и системным
> папкам модулей
А в каких конкретно папках эти модули хранятся? Я пока что не собираюсь
назначать конкретные директории самостоятельно,поскольку я даже не
нашёл,как это в python делается. Ещё Вы пишете
> help(modules) - получаете список всех модулей
Сначало у меня это не работало,но теперь я понял,что Вы имели в виду
help('modules'),поскольку согласно документации python можно в качестве
аргумента этой функции использовать строки. Но когда я даже в апострофах
или кавычках,к примеру,пишу help('api'),то мне тоже ничего не
проговаривается. А как же мне тогда получить документацию по этому
модулю и по остальным модулям nvda,используя средства python? Кстати я
тут поразмышлял на счёт Вашего первого примера в руководстве на
тифлокомпе. Читая исходники дополнений,я заметил,что в плагинах есть
тоже есть события,связанные с фокусом. В связи с этим у меня возник
вопрос,можно ли,и если да,то как,вызвать функцию nextHandler,к
примеру,только по нажатии какой-то комбинации клавиш? К примеру,я хочу
написать плагин,чтобы при нажатии стрелок nvda что-либо говорила,но не
то,что есть на экране,а при нажатии какой-либо комбинации клавиш nvda бы
снова работала так,как обычно. Я понимаю,что Вы не одобряете эту идею,но
всё же мне очень интересно,как это сделать. Логичнее всего
переопределить соответствующий метод для работы с фокусом,ноу меня
возникает вопрос,с какими аргументами его вызывать. Также мне
непонятно,каким образом при нажатии клавиш вызвать диалог. Как я понял
из исходников дополнения CapchaSolver нужно создать пользовательский
класс,наследующийся от класса соответствующего диалога,но как потом
отобразить этот диалог,я не понял. Я даже не понял,каким образом в этом
дополнении обрабатывалось нажатие на пункт меню,а вот с самим классом
диалога более или менее всё понятно. Также мне непонятно,в каких случаях
нужно предпочесть проговаривать информацию,используя модуль ui ,а в
каких модуль speech?

   2017-08-28 11:43:32 (#3515466)

[prg] Re[3]: Вопросы по разработке плагинов и модулей приложений для nvda

Здравствуйте, Саша Козловский.

> Я имею ввиду,к примеру,какие методы основного класса нужно
> переопределить,чтобы при загрузке или выгрузке 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, но он англоязычный. Если нужно, то могу поискать адрес подписки.

   2017-08-28 00:24:31 (#3515395)