代码之家  ›  专栏  ›  技术社区  ›  sqram

Gedit无法获取有关窗口创建(插件开发)的视图

  •  2
  • sqram  · 技术社区  · 14 年前

    我正在为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(打开任意数量的选项卡)时,我看不到“reach here”。但是,如果我进入插件菜单,禁用并重新启用我的插件,我会打印‘到达这里’(无论打开多少个标签,都会打印多少次)

    我还需要get_views(),因为我需要使用“saved”事件处理程序。(最终,我试图在保存文档时执行某些操作)

    那么,为什么当Gedit第一次打开时window.get_views()不返回任何视图?(而且只有在我禁用并重新启用插件时才会这样做)

    另外,如果我执行“print window.get_views(),也会发生同样的事情。它将打印一个空列表,但如果它禁用/重新启用插件,我会得到一个包含所有视图的列表。

    1 回复  |  直到 14 年前
        1
  •  4
  •   nosklo    14 年前

    这是因为当你的插件被激活时,你还没有任何标签。创建选项卡 之后 插件激活。你可能想听听 "tab-added" "tab-removed" 信号来解决这个问题。