ObjEnhancer (Усиление объектов)
- Автор: 'Babbage B.V.
- Исходный код дополнения: Посетить Web-сайт objEnhancer
Краткое описание
Дополнение Object Enhancer позволяет изменять способ отображения объектов NVDA на экране с помощью интуитивно понятного интерфейса.
Его можно использовать для изменения метки объекта, но в зависимости от того, как вы его используете, он обладает функциональностью для изменения практически любого свойства объекта.
Сочетание клавиш:
Скопировать хэш SHA1 в кодировке base64 растрового изображения объекта навигатора в буфер обмена - NVDA+control+alt+h.
Настройка свойств объекта навигатора - NVDA+control+shift+tab.
Открыть диалоговое окно Определения усилителя объектов - NVDA+control+shift+tab.
Изменить сочетание клавиш можно в жестах ввода, в подразделе Усилитель объектов.
Основная информация
Название | Версия | Совместимость с API NVDA | Последняя протестированная версия NVDA | Минимальная версия NVDA | Дата загрузки в каталог | Размер | Лицензия |
---|---|---|---|---|---|---|---|
objEnhancer | 2024.1 | 2024.1 | 2024.1 | 2021.1 | 06-10-2024 22:15:50 | 40 Кб. | GPL v2 |
Информация о локализации на русский язык
🔝 Назад к оглавлениюСкачать
ObjEnhancer-V.2024.1.nvda-addon
⬇ Перейти к истории версий 🔝 Назад к оглавлениюРазделы
🔝 Назад к оглавлениюСправка
Подробнее
ObjEnhancer (Усилитель объектов)
- Автор: Babbage B.V. info@babbage.com
Дополнение Object Enhancer позволяет вам изменить то, как NVDA отображает объекты на экране, используя интуитивно понятный интерфейс. Он может быть использован для изменения метки объекта, но в зависимости от того, как вы его используете, имеет функциональность для изменения практически любого свойства объекта.
Изменения объекта сохраняются в определении. Определение содержит:
- Критерии, которые должны применяться для того, чтобы определение соответствовало.
- Изменения атрибутов, которые будут применены к каждому объекту, соответствующему определению.
- Необязательные отношения с другими определениями. Определение может наследовать критерии из других определений.
Создание собственных определений
Object Enhancer имеет графический интерфейс для создания новых и редактирования существующих определений.
Чтобы создать новое определение для текущего объекта навигатора, нажмите NVDA+control+tab. Это откроет диалог нового определения, если для текущего объекта не было найдено определения, и отредактирует существующее определение, если есть определение для редактирования.
NVDA+control+shift+tab открывает основной диалог дополнения, который позволяет искать существующие определения и редактировать существующие.
Обратите внимание, что если вы хотите быстро создать определение, настоятельно рекомендуется создать новое определение с помощью NVDA+control+tab, так как это позволит вам использовать некоторые атрибуты объекта автоматически. Например, при нажатии этой комбинации, когда текущим объектом навигатора является элемент списка, вы можете автоматически добавить в определение текущее имя, роль или местоположение.
Создание или редактирование определения
Диалог создания/редактирования определения состоит из следующих элементов:
Имя определения
Уникальное имя для вашего определения, которое используется для его последующего распознавания, а также для связи с другими определениями при необходимости.
Критерии фильтрации:
Это критерии, которые необходимо использовать для применения определения. Вы можете фильтровать по атрибутам/свойствам объекта.
Чтобы добавить новый критерий, нажмите кнопку "Добавить". Вы можете выбрать из списка соответствующих атрибутов объекта или создать его самостоятельно. Например, вы можете выбрать windowControlID из списка соответствующих атрибутов, что приведет к предварительному заполнению элементов управления редактирования атрибутов и значений. В качестве альтернативы, если вы хотите найти объект с IAccessibleRole = 10 (ROLE_SYSTEM_CLIENT), вы можете сделать это вручную.
Вы также можете изменить текущие критерии фильтрации или добавить дополнительное значение для фильтрации, если, например, вы хотите найти объект с windowControlID, равным 15 или 16.
Изменения атрибутов
В списке с изменениями атрибутов вы можете указать, какие атрибуты объекта должны быть изменены. В большинстве случаев вы, вероятно, захотите изменить атрибуты name или description.
Настройки из определения / Определение абстрактно
Это комбинированное поле и флажок позволяют установить связь между несколькими определениями.
Представьте себе случай, когда вам нужно обозначить несколько кнопок в одном приложении. Все кнопки имеют windowClassName, равное magicButton. Вы можете создать определение, у которого windowClass=magicButton, и установить флажок "Определение является абстрактным, не используйте его напрямую". В последующих определениях вы можете ингерировать параметры из определения magicButton, что позволит новому определению вести себя так, как если бы windowClassName=magicButton было указано в качестве критерия фильтрации.
Обрабатывать критерии расположения объекта как абсолютные координаты экрана.
Когда эта опция включена, критерии местоположения из раздела критериев анализируются как все остальные свойства. Это означает, что если вы определите location = (1, 2, 3, 4), каждый объект, не имеющий такого абсолютного местоположения, не будет соответствовать.
Однако, когда эта опция отключена, она будет иметь большое влияние на определения объектов с более чем одним совпадением свойств местоположения. Предоставленные свойства местоположения, обычно местоположение самого объекта и местоположение одного из его предков или братьев и сестер, будут сравниваться, и будет предполагаться, что расстояние между предоставленными левыми верхними углами будет одинаковым при изменении размеров экрана. Рассмотрим следующий фрагмент определения:
[Пример1]
[[вход]]
location = [(248, 611, 869, 82)]
parent.parent.location = [(245, 399, 875, 297)]
Это определение входа основано на не максимизированном состоянии приложения. Как только приложение будет максимизировано, определение должно быть другим, поэтому оно больше не будет соответствовать объекту:
[Пример2]
[[вход]]
location = [(11, 582, 1344, 101)]
parent.parent.location = [(8, 370, 1350, 316)]
Когда опция абсолютного расположения отключена, первое определение выше все равно будет соответствовать в случае, если свойства объекта равны второму определению, что позволяет опустить второе определение. При этом используется следующая логика:
- Когда объект получает фокус или становится объектом навигатора, происходит оценка определений.
- Когда определены свойства местоположения, вычисляется разница между определенным и фактическим местоположением.
- Если определено несколько местоположений, например, "location" и 'parent.parent.location', логика предполагает, что разница координат левого верхнего угла для предоставленных прямоугольников местоположения одинакова.
Итак, это звучит чрезмерно сложно. Давайте воспользуемся примерами, приведенными выше, чтобы прояснить ситуацию.
- Пример 1:
- определенное местоположение = (248, 611, 869, 82)
- фактическое местоположение = (248, 611, 869, 82)
- Разность координат левого верхнего угла для местоположения: (248-248=0,611-611=0)
- определенное местоположение parent.parent.location = (245, 399, 875, 297)
- фактическое местоположение parent.parent.location = (245, 399, 875, 297)
- Разность левых верхних координат для parent.parent.location: (245-245=0,399-399=0)
- Разности левых верхних координат для местоположения и parent.parent.location равны. Неудивительно, что это абсолютное соответствие
- Пример 2:
- определенное местоположение = (248, 611, 869, 82)
- фактическое местоположение = (11, 582, 1344, 101)
- Различия левых верхних координат для местоположения: (248-11=237,611-582=29)
- определенное местоположение parent.parent.location = (245, 399, 875, 297)
- фактическое местоположение parent.parent.location = (8, 370, 1350, 316)
- Разность левых верхних координат для местоположения: (245-8=237,399-370=29)
- Разности левых верхних координат для местоположения и родительского.родительского.местоположения равны
Если вы все еще не поняли, пожалуйста, обратитесь к исходному коду этого дополнения. Обратите внимание, что отключение этой опции может создавать ложные срабатывания при неправильном использовании. Вы всегда должны отдавать предпочтение другим уникальным свойствам объекта, если таковые имеются. Эта логика используется только для объектов, для которых сопоставление по местоположению является единственным способом.
Обработка ошибок определения
Это комбинированное поле позволяет вам решить, что делать, если возникла ошибка при оценке данного определения:
- Если установлено значение continue, ошибка игнорируется и оценка продолжается.
- Если установлено значение break, оценка прерывается.
- Если установлено значение raise, ошибка, неудачная оценка вызывает отслеживание.
Пожалуйста, не трогайте эту опцию, если вы не разработчик.
Технические детали
Файлы определения объектов разбираются с помощью модуля configobj в режиме unrepr.
Перевод
Примечание:
После версии 2021.2beta1 это всё не официальные версии. Они всё ещё совместимы с последующими версиями NVDA включая API NVDA 2024.1. В них только изменялся манифест и версия во избежания путаницы с со старыми версиями. Репозиторий разработчика