Gedit не получает представления о создании окон (разработка плагинов)
Я разрабатываю плагин для Gedit.
import gedit
class ReloadOnSave(gedit.Plugin):
def __init__(self):
gedit.Plugin.__init__(self)
def activate(self, window):
for view in window.get_views():
self.connect_handlers(view)
def connect_handlers(self, view):
print 'Reached here' // This doesnt happen on Gedit startup.
Что происходит, когда я открываю Gedit (с любым количеством открытых вкладок), я не вижу "Достигнуто здесь". Но если я зайду в меню плагинов и отключу и перезапущу свой плагин, я напечатаю "Достигнуто здесь" (столько раз, сколько открытых вкладок)
Мне также нужен get_views(), так как мне нужно использовать обработчик событий "сохранено". (в конечном итоге я пытаюсь что-то сделать, когда документ сохранен)
Итак, почему window.get_views () не возвращает какие-либо представления при первом открытии Gedit? (и делает это только в том случае, если я отключаю и возобновляю плагин)
Кроме того, если я сделаю 'print window.get_views(), произойдет то же самое. Он напечатает пустой список, но если он отключит / повторно включит плагин, я получу список со всеми представлениями.
1 ответ
Это происходит потому, что когда ваш плагин активирован, у вас еще нет вкладок. Вкладки создаются после активации плагина. Вы можете слушать "tab-added"
а также "tab-removed"
сигналы, чтобы исправить это.