我正在编写gedit 3 plugin,类似于phsilva's PyLint plugin,它调用外部lint程序并突出显示当前文档中的代码行。我的问题是,如果我的插件有run_lint
动作,是否可以将其绑定到gedit中的OnSave
事件?我上面链接的文档中的可用信号列表仍然有一个FIXME
通知,我正在努力找出API文档中可以找到完整列表的位置。
答案 0 :(得分:2)
嗯,没有人回答这个问题,但我终于明白了。当在包含文档的选项卡的窗口中创建新选项卡时,有两个步骤。该文档包含可以连接到操作的loaded
和saved
信号。重要的是要记住每个选项卡都有一个单独的文档,每个文档都需要自己的一组信号和处理程序。
这是一个大纲解决方案,以防对其他人有用:
class FooPlugin(GObject.Object, Gedit.WindowActivatable):
__gtype_name__ = 'Foo'
...
def do_activate(self):
self._add_ui()
self.window.connect('tab-added', self.on_tab_added)
...
return
def on_tab_added(self, window, tab, data=None):
doc = tab.get_document()
doc.connect('saved', self.on_document_saved)
doc.connect('loaded', self.on_document_loaded)
return
def on_document_loaded(self, document, data=None):
# do something here...
return
def on_document_saved(self, document, data=None):
# do something here...
return