Move the base plugin classes to plugin.py for cleaner importing in additional plugins
This commit is contained in:
parent
710b8a4834
commit
0b5cf876ba
|
@ -105,6 +105,31 @@ for %s' % (len(self.instances), capability))
|
||||||
"""Return all plugins"""
|
"""Return all plugins"""
|
||||||
return(self.instances)
|
return(self.instances)
|
||||||
|
|
||||||
|
# This is where we should define a base class for each type of plugin we
|
||||||
|
# support
|
||||||
|
|
||||||
|
# URLHandler - This adds a regex match to the Terminal widget and provides a
|
||||||
|
# callback to turn that into a URL.
|
||||||
|
class URLHandler(Plugin):
|
||||||
|
"""Base class for URL handlers"""
|
||||||
|
capabilities = ['url_handler']
|
||||||
|
handler_name = None
|
||||||
|
match = None
|
||||||
|
|
||||||
|
def callback(self, url):
|
||||||
|
"""Callback to transform the enclosed URL"""
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
# MenuItem - This is able to execute code during the construction of the
|
||||||
|
# context menu of a Terminal.
|
||||||
|
class MenuItem(Plugin):
|
||||||
|
"""Base class for menu items"""
|
||||||
|
capabilities = ['terminal_menu']
|
||||||
|
|
||||||
|
def callback(self, menuitems, menu, terminal):
|
||||||
|
"""Callback to transform the enclosed URL"""
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
import sys
|
import sys
|
||||||
import doctest
|
import doctest
|
||||||
|
|
|
@ -10,15 +10,7 @@ import terminatorlib.plugin as plugin
|
||||||
#available = ['MyFirstMenuItem']
|
#available = ['MyFirstMenuItem']
|
||||||
available = []
|
available = []
|
||||||
|
|
||||||
class MenuItem(plugin.Plugin):
|
class MyFirstMenuItem(plugin.MenuItem):
|
||||||
"""Base class for menu items"""
|
|
||||||
capabilities = ['terminal_menu']
|
|
||||||
|
|
||||||
def callback(self, menuitems, menu, terminal):
|
|
||||||
"""Callback to transform the enclosed URL"""
|
|
||||||
raise NotImplementedError
|
|
||||||
|
|
||||||
class MyFirstMenuItem(MenuItem):
|
|
||||||
"""Simple proof of concept"""
|
"""Simple proof of concept"""
|
||||||
capabilities = ['terminal_menu']
|
capabilities = ['terminal_menu']
|
||||||
|
|
||||||
|
|
|
@ -7,17 +7,7 @@ import terminatorlib.plugin as plugin
|
||||||
# Every plugin you want Terminator to load *must* be listed in 'available'
|
# Every plugin you want Terminator to load *must* be listed in 'available'
|
||||||
available = ['LaunchpadBugURLHandler', 'LaunchpadCodeURLHandler', 'APTURLHandler']
|
available = ['LaunchpadBugURLHandler', 'LaunchpadCodeURLHandler', 'APTURLHandler']
|
||||||
|
|
||||||
class URLHandler(plugin.Plugin):
|
class LaunchpadBugURLHandler(plugin.URLHandler):
|
||||||
"""Base class for URL handlers"""
|
|
||||||
capabilities = ['url_handler']
|
|
||||||
handler_name = None
|
|
||||||
match = None
|
|
||||||
|
|
||||||
def callback(self, url):
|
|
||||||
"""Callback to transform the enclosed URL"""
|
|
||||||
raise NotImplementedError
|
|
||||||
|
|
||||||
class LaunchpadBugURLHandler(URLHandler):
|
|
||||||
"""Launchpad Bug URL handler. If the URL looks like a Launchpad changelog
|
"""Launchpad Bug URL handler. If the URL looks like a Launchpad changelog
|
||||||
closure entry... 'LP: #12345' then it should be transformed into a
|
closure entry... 'LP: #12345' then it should be transformed into a
|
||||||
Launchpad Bug URL"""
|
Launchpad Bug URL"""
|
||||||
|
@ -31,7 +21,7 @@ class LaunchpadBugURLHandler(URLHandler):
|
||||||
url = 'https://bugs.launchpad.net/bugs/%s' % item
|
url = 'https://bugs.launchpad.net/bugs/%s' % item
|
||||||
return(url)
|
return(url)
|
||||||
|
|
||||||
class LaunchpadCodeURLHandler(URLHandler):
|
class LaunchpadCodeURLHandler(plugin.URLHandler):
|
||||||
"""Launchpad Code URL handler. If the URL looks like a Launchpad project or
|
"""Launchpad Code URL handler. If the URL looks like a Launchpad project or
|
||||||
branch entry then it should be transformed into a code.launchpad.net URL"""
|
branch entry then it should be transformed into a code.launchpad.net URL"""
|
||||||
capabilities = ['url_handler']
|
capabilities = ['url_handler']
|
||||||
|
@ -50,7 +40,7 @@ class LaunchpadCodeURLHandler(URLHandler):
|
||||||
url = url[3:]
|
url = url[3:]
|
||||||
return('https://code.launchpad.net/+branch/%s' % url)
|
return('https://code.launchpad.net/+branch/%s' % url)
|
||||||
|
|
||||||
class APTURLHandler(URLHandler):
|
class APTURLHandler(plugin.URLHandler):
|
||||||
"""APT URL handler. If there is a URL that looks like an apturl, handle
|
"""APT URL handler. If there is a URL that looks like an apturl, handle
|
||||||
it appropriately"""
|
it appropriately"""
|
||||||
capabilities = ['url_handler']
|
capabilities = ['url_handler']
|
||||||
|
|
Loading…
Reference in New Issue