Плагин GNAT GPS: получить выбранную линию в локациях

Я делаю плагин Python для GNAT GPS IDE.

Он использует окно Locations для отображения сообщений пользователю, поэтому выделяет строку файла, как это делают ошибки. я использую GPS.Locations.parse() Чтобы добавить такую ​​информацию, (несколько туманная) документация находится здесь.

Затем пользователь может выбрать строку из кода или окна Locations для выполнения действия.

Получить строку из открытого файла это кусок пирога. Но одна вещь, которая все еще ускользает от меня, это то, как я могу узнать, какую строку из окна "Местоположения" выбирает пользователь. Я попробовал GPS.MDI.get("Locations") что приводит меня к лабиринту детских оконных предметов. Я потерялся.

Итак, как я могу получить текст из текущей выбранной строки в Locations?

редактировать

Очевидно, существует MessageContext, который даст мне то, что я хочу, но я получаю сообщение об ошибке, в котором говорится, что такого класса нет, даже когда окно имеет фокус. Поэтому я считаю, что класс не был создан.

AttributeError: 'module' object has no attribute 'MessageContext'

1 ответ

Я только видел эту тему сейчас. Вы должны вызвать GPS.current_context(), который вернет экземпляр GPS.Context или один из его дочерних классов. В этом случае вы можете использовать GPS.current_context(). File().

Похоже, что вы хотите создать запись в контекстном меню в окне Locations. Посмотрите на крючок gps_utils.interactive. Он оборачивает функцию python в действие GPS. Затем это действие может быть привязано к определенному контекстному меню, привязке клавиш, меню, кнопке панели инструментов,... С ним также можно связать фильтр, чтобы контекстное меню также отображалось, когда действие применяется (и для реализации этот фильтр, вы используете выше GPS.current_context().file()

Другие вопросы по тегам