summaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorSebastien Estienne <sebastien.estienne@gmail.com>2005-11-19 00:33:52 +0000
committerSebastien Estienne <sebastien.estienne@gmail.com>2005-11-19 00:33:52 +0000
commit5ce17adcb1ff31ffdc2618fcf4788beecc1e1ff8 (patch)
tree0039768e4f21777c78e1f893c51d5253ed72153a /plugins
parentd8bc0dbb720eefc1d7189c99ae8045524952eb46 (diff)
* added a the begining of a proper plugin architecture
git-svn-id: file:///home/lennart/svn/public/service-discovery-applet/trunk@80 3be567f1-68ff-0310-b24a-ad7cc433fd2f
Diffstat (limited to 'plugins')
-rw-r--r--plugins/Makefile.am8
-rw-r--r--plugins/gnometerminal.py126
-rw-r--r--plugins/nautilus.py48
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()