Gedit не получает представления о создании окон (разработка плагинов) - PullRequest
2 голосов
/ 12 ноября 2010

Я разрабатываю плагин для 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 Ответ

4 голосов
/ 12 ноября 2010

Это происходит потому, что когда ваш плагин активирован, у вас еще нет вкладок. Вкладки создаются после активации плагина. Возможно, вы захотите прослушать сигналы "tab-added" и "tab-removed", чтобы это исправить.

...