2012-02-18 39 views
1

我正在编写一个gedit 3 plugin,类似于phsilva's PyLint plugin,它调用外部lint程序并突出显示当前文档中的代码行。我的问题是,如果我的插件有run_lint动作,可以将它绑定到gedit中的OnSave事件?我上面链接的文档中的可用信号列表仍然存在FIXME的通知,我正在努力弄清楚API文档的哪些地方可以找到完整列表。Gedit插件可以绑定到OnSave事件吗?

回答

2

好吧,没有人回答这个问题,但我终于找到了答案。有两个步骤,当在包含文档的窗口中创建新选项卡时。该文件有loadedsaved信号可以连接到行动。重要的是要记住,每个选项卡都有一个单独的文档,每个文档都需要自己的一组信号和处理程序。

这里有一个轮廓的解决方案,如果这是对他人有用:

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 
+0

谢谢!正是我需要的! – rpax 2014-06-12 15:32:38

+0

另外,你可以看一下https://github.com/janpecha/gedit-on-save – rpax 2014-06-12 15:33:53