summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastien Estienne <sebastien.estienne@gmail.com>2006-08-06 23:52:31 +0000
committerSebastien Estienne <sebastien.estienne@gmail.com>2006-08-06 23:52:31 +0000
commit27c6fade238336c61a5a01d22fe767bf664ca010 (patch)
treeab199c4381c7753a23c89289a698f15351764e96
parentd9313c80245a75e3b023a729eacec454e580b7a8 (diff)
display error messages when something goes wrong in plugins
git-svn-id: file:///home/lennart/svn/public/service-discovery-applet/trunk@115 3be567f1-68ff-0310-b24a-ad7cc433fd2f
-rw-r--r--Makefile.am2
-rw-r--r--configure.ac9
-rw-r--r--plugins/Makefile.am29
-rw-r--r--plugins/ekiga.py.in (renamed from plugins/ekiga.py)2
-rw-r--r--plugins/gconfterminal.py.in (renamed from plugins/gconfterminal.py)4
-rw-r--r--plugins/nautilus.py.in (renamed from plugins/nautilus.py)0
-rw-r--r--plugins/xvncviewer.py.in (renamed from plugins/xvncviewer.py)2
-rw-r--r--po/POTFILES.in10
-rw-r--r--po/service-discovery-applet.pot176
-rw-r--r--tools/Makefile.am14
-rw-r--r--tools/exec_wrapper.in58
11 files changed, 119 insertions, 187 deletions
diff --git a/Makefile.am b/Makefile.am
index 38eb740..653a6c0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -5,8 +5,10 @@ SUBDIRS = \
schemas \
servers \
plugins \
+ tools \
po
EXTRA_DIST = README INSTALL AUTHORS COPYING TODO \
intltool-extract.in intltool-merge.in intltool-update.in
+
DISTCLEANFILES = intltool-extract intltool-merge intltool-update
diff --git a/configure.ac b/configure.ac
index 7675f91..3de47f0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
AC_PREREQ(2.59)
-AC_INIT([service-discovery-applet],[0.4.1],[sebastien (dot) estienne (at) gmail (dot) com])
+AC_INIT([service-discovery-applet],[0.4.2],[sebastien (dot) estienne (at) gmail (dot) com])
AC_CONFIG_SRCDIR([src/service-discovery-applet.in])
AM_INIT_AUTOMAKE([foreign 1.9 -Wall])
AC_CONFIG_MACRO_DIR([common])
@@ -27,6 +27,12 @@ PLUGINSDIR="\$(pkgdatadir)/plugins/"
AC_SUBST(PLUGINSDIR)
dnl ========================================================
+dnl Directory where services' tools will be installed
+dnl ========================================================
+TOOLSDIR="\$(pkgdatadir)/tools/"
+AC_SUBST(TOOLSDIR)
+
+dnl ========================================================
dnl Directory where services' icons will be installed
dnl ========================================================
ICONSDIR="\$(pkgdatadir)/icons/"
@@ -68,6 +74,7 @@ AC_CONFIG_FILES([
src/Makefile
src/modules/Makefile
plugins/Makefile
+ tools/Makefile
po/Makefile.in
])
AC_OUTPUT
diff --git a/plugins/Makefile.am b/plugins/Makefile.am
index d0b4e7b..893cc07 100644
--- a/plugins/Makefile.am
+++ b/plugins/Makefile.am
@@ -1,10 +1,37 @@
pluginsdir = $(PLUGINSDIR)
+plugins = \
+ gconfterminal.py.in \
+ nautilus.py.in \
+ xvncviewer.py.in \
+ ekiga.py.in
+
plugins_DATA = \
gconfterminal.py \
nautilus.py \
xvncviewer.py \
ekiga.py
+gconfterminal.py: gconfterminal.py.in
+ sed \
+ -e 's,@toolsdir\@,$(TOOLSDIR),g' \
+ $< > $@
+
+nautilus.py: nautilus.py.in
+ sed \
+ -e 's,@toolsdir\@,$(TOOLSDIR),g' \
+ $< > $@
+
+xvncviewer.py: xvncviewer.py.in
+ sed \
+ -e 's,@toolsdir\@,$(TOOLSDIR),g' \
+ $< > $@
+
+ekiga.py: ekiga.py.in
+ sed \
+ -e 's,@toolsdir\@,$(TOOLSDIR),g' \
+ $< > $@
+
+EXTRA_DIST = $(plugins)
-EXTRA_DIST = $(plugins_DATA)
+CLEANFILES = $(plugins_DATA)
diff --git a/plugins/ekiga.py b/plugins/ekiga.py.in
index 7b920e4..26b37fa 100644
--- a/plugins/ekiga.py
+++ b/plugins/ekiga.py.in
@@ -25,7 +25,7 @@ class plugin_ekiga:
if use_host_names == True:
address = hostname
print "connecting using ekiga"
- cmdline = ["ekiga"]
+ cmdline = ["@toolsdir@/exec_wrapper", "ekiga"]
if stype == "_sip._udp":
cmdline += ["-c", "sip:%s:%s" % (address, port)]
else:
diff --git a/plugins/gconfterminal.py b/plugins/gconfterminal.py.in
index 92b9abb..8dbaef8 100644
--- a/plugins/gconfterminal.py
+++ b/plugins/gconfterminal.py.in
@@ -113,9 +113,9 @@ class plugin_gnometerminal:
if stype == "_ssh._tcp":
- scheme = "ssh -X"
+ scheme = "@toolsdir@/exec_wrapper ssh -X"
else:
- scheme = "sftp"
+ scheme = "@toolsdir@/exec_wrapper sftp"
if username == None:
return
elif username != "":
diff --git a/plugins/nautilus.py b/plugins/nautilus.py.in
index 6783bbe..6783bbe 100644
--- a/plugins/nautilus.py
+++ b/plugins/nautilus.py.in
diff --git a/plugins/xvncviewer.py b/plugins/xvncviewer.py.in
index ee51d54..a6e614d 100644
--- a/plugins/xvncviewer.py
+++ b/plugins/xvncviewer.py.in
@@ -23,7 +23,7 @@ class plugin_xvncviewer:
def connect(self, use_host_names, name, stype, hostname, address, port, txts):
print "connecting using xvncviewer"
- cmdline = ["xvncviewer", "-xrm", "*passwordDialog:true", hostname ]
+ cmdline = ["@toolsdir@/exec_wrapper", "xvncviewer", "-xrm", "*passwordDialog:true", hostname ]
print cmdline
pid = subprocess.Popen(cmdline, close_fds=True).pid
diff --git a/po/POTFILES.in b/po/POTFILES.in
index b58afe6..9f82a30 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -2,12 +2,12 @@
# List of source files containing translatable strings.
# Please keep this file sorted alphabetically.
-plugins/ekiga.py
-plugins/gconfterminal.py
-plugins/nautilus.py
-plugins/xvncviewer.py
+plugins/ekiga.py.in
+plugins/gconfterminal.py.in
+plugins/nautilus.py.in
+plugins/xvncviewer.py.in
schemas/service-discovery-applet.schemas.in
-servers/GNOME_ServiceDiscoveryApplet.server.in
+servers/GNOME_ServiceDiscoveryApplet.server.in.in
src/service-discovery-applet.in
src/service-discovery-config.glade
src/service-discovery-config.in
diff --git a/po/service-discovery-applet.pot b/po/service-discovery-applet.pot
deleted file mode 100644
index 8a5cc33..0000000
--- a/po/service-discovery-applet.pot
+++ /dev/null
@@ -1,176 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-06-29 23:12+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../plugins/gconfterminal.py:31 ../src/service-discovery-applet.in:50
-#: ../src/service-discovery-config.in:41
-#, c-format, python-format
-msgid ""
-"A required python module is missing!\n"
-"%s"
-msgstr ""
-
-#: ../plugins/gconfterminal.py:43
-msgid "SSH Connection"
-msgstr ""
-
-#: ../plugins/gconfterminal.py:53
-#, python-format
-msgid ""
-"Connecting to <b>%s</b>.\n"
-"Please enter your <b>login</b>:"
-msgstr ""
-
-#: ../schemas/service-discovery-applet.schemas.in.h:1
-msgid "Browse for your own services"
-msgstr ""
-
-#: ../schemas/service-discovery-applet.schemas.in.h:2
-msgid "Display notifications"
-msgstr ""
-
-#: ../schemas/service-discovery-applet.schemas.in.h:3
-msgid "First time you start the app?"
-msgstr ""
-
-#: ../schemas/service-discovery-applet.schemas.in.h:4
-msgid ""
-"Use the notification deamon to notify the user when a service is discovered"
-msgstr ""
-
-#: ../servers/GNOME_ServiceDiscoveryApplet.server.in.h:1
-msgid ""
-"Show Zeroconf Services on your local network and allow accessing them easily"
-msgstr ""
-
-#: ../servers/GNOME_ServiceDiscoveryApplet.server.in.h:2
-#: ../src/service-discovery-applet.in:174
-#: ../src/service-discovery-applet.in:215
-#: ../src/service-discovery-applet.in:398
-#: ../src/service-discovery-applet.in:520
-msgid "Zeroconf Service Discovery"
-msgstr ""
-
-#: ../src/service-discovery-applet.in:105
-#: ../src/service-discovery-applet.in:422
-msgid "You need at least avahi 0.6.9"
-msgstr ""
-
-#: ../src/service-discovery-applet.in:162
-#, c-format
-msgid ""
-"<b>Name :</b> %s\n"
-"<b>Type : </b> %s <i>(%s)</i>"
-msgstr ""
-
-#: ../src/service-discovery-applet.in:165
-msgid "New service found"
-msgstr ""
-
-#: ../src/service-discovery-applet.in:167
-msgid "Service disappeared"
-msgstr ""
-
-#: ../src/service-discovery-applet.in:228
-msgid "_About"
-msgstr ""
-
-#: ../src/service-discovery-applet.in:228
-msgid "_Preferences"
-msgstr ""
-
-#: ../src/service-discovery-applet.in:385
-msgid "No services found"
-msgstr ""
-
-#: ../src/service-discovery-applet.in:399
-msgid "Copyright (C) 2005 Sebastien Estienne"
-msgstr ""
-
-#: ../src/service-discovery-applet.in:400
-msgid ""
-"Shows Zeroconf Services on your local network and allows accessing them "
-"easily"
-msgstr ""
-
-#: ../src/service-discovery-applet.in:402
-msgid "translator-credits"
-msgstr ""
-
-#: ../src/service-discovery-applet.in:416
-msgid "Already Discovering"
-msgstr ""
-
-#: ../src/service-discovery-applet.in:426
-msgid "Error Detected!"
-msgstr ""
-
-#: ../src/service-discovery-applet.in:426
-msgid "Check that the Avahi daemon is running!"
-msgstr ""
-
-#: ../src/service-discovery-applet.in:429
-msgid "Starting discovery"
-msgstr ""
-
-#: ../src/service-discovery-applet.in:444
-msgid "Discovery already stopped"
-msgstr ""
-
-#: ../src/service-discovery-applet.in:450
-msgid "Discovery stopped"
-msgstr ""
-
-#: ../src/service-discovery-config.glade.h:1
-msgid "<b>Advanced options:</b>"
-msgstr ""
-
-#: ../src/service-discovery-config.glade.h:2
-msgid "<b>Service types that will be browsed:</b>"
-msgstr ""
-
-#: ../src/service-discovery-config.glade.h:3
-msgid "Advanced"
-msgstr ""
-
-#: ../src/service-discovery-config.glade.h:4
-msgid "Services"
-msgstr ""
-
-#: ../src/service-discovery-config.glade.h:5
-msgid "Zeroconf Service Discovery Preferences"
-msgstr ""
-
-#: ../src/service-discovery-config.glade.h:6
-msgid "_Browse services published on this machine"
-msgstr ""
-
-#: ../src/service-discovery-config.glade.h:7
-msgid "_Display notifications"
-msgstr ""
-
-#: ../src/service-discovery-config.glade.h:8
-msgid "services informations"
-msgstr ""
-
-#: ../src/service-discovery-config.in:95
-msgid "Enabled"
-msgstr ""
-
-#: ../src/service-discovery-config.in:107
-msgid "Service type"
-msgstr ""
diff --git a/tools/Makefile.am b/tools/Makefile.am
new file mode 100644
index 0000000..3cd6b4e
--- /dev/null
+++ b/tools/Makefile.am
@@ -0,0 +1,14 @@
+toolsdir = $(TOOLSDIR)
+
+tools_SCRIPTS = \
+ exec_wrapper
+
+exec_wrapper: exec_wrapper.in
+ sed \
+ -e 's,@PYTHON\@,$(PYTHON),g' \
+ $< > $@
+ chmod +x $@
+
+EXTRA_DIST = exec_wrapper.in
+
+CLEANFILES = exec_wrapper
diff --git a/tools/exec_wrapper.in b/tools/exec_wrapper.in
new file mode 100644
index 0000000..c9d85ac
--- /dev/null
+++ b/tools/exec_wrapper.in
@@ -0,0 +1,58 @@
+#!@PYTHON@
+# -*- coding: UTF-8 -*-
+# -*- python -*-
+# Copyright (C) 2006 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$
+#
+
+import sys
+import os
+import pygtk
+import gtk
+
+
+from subprocess import *
+from string import join, replace
+
+pygtk.require('2.0')
+
+def error_msg(msg):
+ d = gtk.MessageDialog(parent=None, flags=gtk.DIALOG_MODAL,
+ type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_OK)
+ d.set_markup(msg)
+ d.show_all()
+ d.run()
+ d.destroy()
+
+def remove_markup(msg):
+ msg = replace(msg, "&" , "&amp;")
+ msg = replace(msg, "<" , "&lt;")
+ msg = replace(msg, ">" , "&gt;")
+ return msg
+
+def main(argv):
+ if len(argv) < 2:
+ print "Not enought arguments."
+ sys.exit(1)
+
+ argv.pop(0)
+
+ try:
+ p = Popen(argv, close_fds=True, stderr = PIPE)
+ except OSError, e:
+ error_msg("<b>An error has occured!</b>\n\nCommand: %s\nError: %s" % (join(argv, " "), e))
+ else:
+ status = os.waitpid(p.pid, 0)
+ if status[1] != 0:
+ error_msg(remove_markup(p.stderr.read()))
+
+if __name__ == "__main__":
+ main(sys.argv)