diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/Makefile.am | 8 | ||||
-rw-r--r-- | plugins/gnometerminal.py | 126 | ||||
-rw-r--r-- | plugins/nautilus.py | 48 |
3 files changed, 182 insertions, 0 deletions
diff --git a/plugins/Makefile.am b/plugins/Makefile.am new file mode 100644 index 0000000..37902fb --- /dev/null +++ b/plugins/Makefile.am @@ -0,0 +1,8 @@ +pluginsdir = $(PLUGINSDIR) + +plugins_DATA = \ + gnometerminal.py \ + nautilus.py + + +EXTRA_DIST = $(plugins_DATA) diff --git a/plugins/gnometerminal.py b/plugins/gnometerminal.py new file mode 100644 index 0000000..d97a320 --- /dev/null +++ b/plugins/gnometerminal.py @@ -0,0 +1,126 @@ +# -*- coding: UTF-8 -*- +# -*- python -*- +# Copyright (C) 2005 by Sebastien Estienne +# +# This file may be distributed and/or modified under the terms of +# the GNU General Public License version 2 as published by +# the Free Software Foundation. +# This file is distributed without any warranty; without even the implied +# warranty of merchantability or fitness for a particular purpose. +# See "COPYING" in the source distribution for more information. +# +# $id$ +# + +from sdapplet.pluginutils import * + +try: + import gettext + gettext.bindtextdomain("service-discovery-applet", "/usr/share/locale") + gettext.textdomain("service-discovery-applet") + _ = gettext.gettext + import pygtk + pygtk.require('2.0') + import gtk + import os + import pwd + import subprocess + import gnome +except ImportError, e: + error_msg(_("A required python module is missing!\n%s") % (e)) + sys.exit() + +class plugin_gnometerminal: + def __init__(self): + self.service_type = ["_ssh._tcp", "_sftp-ssh._tcp" ] + self.author = "Sébastien Estienne" + + def enter_callback(self, widget, win): + win.response(gtk.RESPONSE_OK) + + def SshLogin(self, hostname, username = None): + self.win = gtk.Dialog(_("SSH Connection"), None, + gtk.DIALOG_MODAL, + (gtk.STOCK_OK, gtk.RESPONSE_OK, + gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)) + + vbox = gtk.VBox(False, 5) + self.win.vbox.pack_start(vbox, True, True, 0) + vbox.set_border_width(5) + + label = gtk.Label() + label.set_markup(_("Connecting to <b>%s</b>.\nPlease enter your <b>login</b>:") % (hostname)) + + vbox.pack_start(label, False, False, 0) + + # Create our entry + entry = gtk.Entry() + if username!= None: + entry.set_text(username) + entry.connect("activate", self.enter_callback, self.win) + vbox.pack_start(entry, False, False, 0) + + # Create the completion object + completion = gtk.EntryCompletion() + + # Assign the completion to the entry + entry.set_completion(completion) + + # Create a tree model and use it as the completion model + completion_model = self.__create_completion_model() + completion.set_model(completion_model) + + # Use model column 0 as the text column + completion.set_text_column(0) + + self.win.show_all() + if self.win.run() == gtk.RESPONSE_OK: + self.win.destroy() + return entry.get_text() + else: + self.win.destroy() + return None + + def __create_completion_model(self): + ''' Creates a tree model containing the completions. + ''' + store = gtk.ListStore(str) + + iter = store.append() + store.set(iter, 0, "root") + + current_user = pwd.getpwuid(os.getuid())[0] + iter = store.append() + store.set(iter, 0, current_user) + + return store + + def connect(self, name, stype, hostname, address, port, txts): + print "connecting using gnometerminal" + if txts.has_key("u"): + username = self.SshLogin(name, txts["u"]) + else: + username = self.SshLogin(name) + + + if stype == "_ssh._tcp": + scheme = "ssh" + else: + scheme = "sftp" + if username == None: + return + elif username != "": + sshline = "%s -p %i %s@%s" % (scheme, port, username, address) + else: + sshline = "%s -p %i %s " % (scheme, port, address) + + cmdline = [] + cmdline.append("gnome-terminal") + cmdline.append("--tab") + cmdline.append("-t %s" % name) + cmdline.append("-e %s" % sshline) + print cmdline + pid = subprocess.Popen(cmdline).pid + +def load(): + return plugin_gnometerminal() diff --git a/plugins/nautilus.py b/plugins/nautilus.py new file mode 100644 index 0000000..e208a8c --- /dev/null +++ b/plugins/nautilus.py @@ -0,0 +1,48 @@ +# -*- coding: UTF-8 -*- +# -*- python -*- +# Copyright (C) 2005 by Sebastien Estienne +# +# This file may be distributed and/or modified under the terms of +# the GNU General Public License version 2 as published by +# the Free Software Foundation. +# This file is distributed without any warranty; without even the implied +# warranty of merchantability or fitness for a particular purpose. +# See "COPYING" in the source distribution for more information. +# +# $id$ +# + +from sdapplet.pluginutils import * + +import gnome + +class plugin_nautilus: + def __init__(self): + self.service_type = ["_http._tcp", "_ftp._tcp" , "_https._tcp", "_ftps._tcp" , "_webdav._tcp", "_webdav._tcp", "_sftp-ssh._tcp"] + self.author = "Sébastien Estienne" + self.description = "Accessing zeroconf services using Nautilus" + + def connect(self, name, stype, hostname, address, port, txts): + print "connecting using nautilus" + path = get_txt_value(txts,"path") + username = get_txt_value(txts,"u") + password = get_txt_value(txts,"p") + if stype == "_http._tcp": + url = build_url("http",address,port, path, username,password) + if stype == "_https._tcp": + url = build_url("https",address,port, path, username,password) + if stype == "_ftp._tcp": + url = build_url("ftp",address,port, path, username,password) + if stype == "_ftps._tcp": + url = build_url("ftps",address,port, path, username,password) + if stype == "_sftp-ssh._tcp": + url = build_url("sftp",address,port, path, username,password) + if stype == "_webdav._tcp": + url = build_url("webdav",address,port, path, username,password) + if stype == "_webdavs._tcp": + url = build_url("webdavs",address,port, path, username,password) + gnome.url_show(url) + + +def load(): + return plugin_nautilus() |