aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormiwi <miwi@FreeBSD.org>2011-06-25 17:49:35 +0800
committermiwi <miwi@FreeBSD.org>2011-06-25 17:49:35 +0800
commit186bf7eb7b971a91a4e6f583976e4ca6eab0ddb5 (patch)
tree40fd192690d4372b85123eaa3fc808b342a53373
parentd224b80f6781b28761ca5ad6e9d61b26f6648079 (diff)
downloadfreebsd-ports-gnome-186bf7eb7b971a91a4e6f583976e4ca6eab0ddb5.tar.gz
freebsd-ports-gnome-186bf7eb7b971a91a4e6f583976e4ca6eab0ddb5.tar.zst
freebsd-ports-gnome-186bf7eb7b971a91a4e6f583976e4ca6eab0ddb5.zip
Turpial is a microblogging client for social networks like Twitter and
Identi.ca. WWW: http://turpial.org.ve/ PR: ports/157840 Submitted by: Olivier Duchateau <duchateau.olivier at gmail.com>
-rw-r--r--net-im/Makefile1
-rw-r--r--net-im/py-turpial/Makefile105
-rw-r--r--net-im/py-turpial/distinfo2
-rw-r--r--net-im/py-turpial/files/extra-patch-argparse-turpial_main.py114
-rw-r--r--net-im/py-turpial/files/extra-patch-optparse-turpial_main.py13
-rw-r--r--net-im/py-turpial/files/patch-turpial.desktop13
-rw-r--r--net-im/py-turpial/files/patch-turpial_api_interfaces_protocol.py11
-rw-r--r--net-im/py-turpial/files/patch-turpial_ui_gtk_about.py35
-rw-r--r--net-im/py-turpial/files/patch-turpial_ui_gtk_statuslist.py129
-rw-r--r--net-im/py-turpial/pkg-descr4
-rw-r--r--net-im/py-turpial/pkg-plist316
-rw-r--r--net-im/turpial/Makefile105
-rw-r--r--net-im/turpial/distinfo2
-rw-r--r--net-im/turpial/files/extra-patch-argparse-turpial_main.py114
-rw-r--r--net-im/turpial/files/extra-patch-optparse-turpial_main.py13
-rw-r--r--net-im/turpial/files/patch-turpial.desktop13
-rw-r--r--net-im/turpial/files/patch-turpial_api_interfaces_protocol.py11
-rw-r--r--net-im/turpial/files/patch-turpial_ui_gtk_about.py35
-rw-r--r--net-im/turpial/files/patch-turpial_ui_gtk_statuslist.py129
-rw-r--r--net-im/turpial/pkg-descr4
-rw-r--r--net-im/turpial/pkg-plist316
21 files changed, 1485 insertions, 0 deletions
diff --git a/net-im/Makefile b/net-im/Makefile
index ddb026f64e11..c613da7e033c 100644
--- a/net-im/Makefile
+++ b/net-im/Makefile
@@ -143,6 +143,7 @@
SUBDIR += py-msnp
SUBDIR += py-punjab
SUBDIR += py-pyxmpp
+ SUBDIR += py-turpial
SUBDIR += py-twistedWords
SUBDIR += py-xmpppy
SUBDIR += py-xmpppy-irc
diff --git a/net-im/py-turpial/Makefile b/net-im/py-turpial/Makefile
new file mode 100644
index 000000000000..5cd992a3b500
--- /dev/null
+++ b/net-im/py-turpial/Makefile
@@ -0,0 +1,105 @@
+# New ports collection makefile for: py-turpial
+# Date created: 2011-02-19
+# Whom: Olivier Duchateau <duchateau.olivier@gmail.com>
+#
+# $FreeBSD$
+#
+
+PORTNAME= turpial
+PORTVERSION= 1.5.0
+CATEGORIES= net-im python
+MASTER_SITES= http://turpial.org.ve/files/sources/%SUBDIR%/
+MASTER_SITE_SUBDIR= stable
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+DISTNAME= ${PORTNAME}-${PORTVERSION}
+
+MAINTAINER= duchateau.olivier@gmail.com
+COMMENT= Twitter and Identi.ca client written in Python
+
+LICENSE= GPLv3
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}Babel>=0.9:${PORTSDIR}/devel/py-babel
+RUN_DEPENDS= ${LOCALBASE}/libdata/pkgconfig/notify-python.pc:${PORTSDIR}/devel/py-notify \
+ ${LOCALBASE}/libdata/pkgconfig/pywebkitgtk-1.0.pc:${PORTSDIR}/www/py-webkitgtk \
+ ${PYTHON_SITELIBDIR}/setproctitle.so:${PORTSDIR}/devel/py-setproctitle \
+ ${PYTHON_SITELIBDIR}/xdg/__init__.py:${PORTSDIR}/devel/py-xdg
+
+USE_PYTHON= yes
+USE_GNOME= pygobject pygtk2 desktopfileutils
+USE_GSTREAMER= python
+
+REINPLACE_ARGS= -i ""
+
+DOCSDIR= ${PREFIX}/share/doc/${PORTNAME}
+DATADIR= ${PREFIX}/share/${PORTNAME}
+
+LOCALES_DIR= ca de en es eu fr gl he it nn pt ru zh_CN zh_TW
+
+.include <bsd.port.pre.mk>
+
+# Since Python > 2.7, optparse module is deprecated
+.if ${PYTHON_REL} >= 270
+EXTRA_PATCHES+= ${FILESDIR}/extra-patch-argparse-turpial_main.py
+.else
+EXTRA_PATCHES+= ${FILESDIR}/extra-patch-optparse-turpial_main.py
+.endif
+
+post-patch:
+ @${FIND} ${WRKSRC}/turpial -type f -regex '.*\.py' \
+ | ${XARGS} ${REINPLACE_CMD} 's|bin/python|bin/env python| ; \
+ s|Linux|FreeBSD|g ; \
+ s|from turpial\.|from |g ; \
+ s|%%PREFIX%%|${PREFIX}|g'
+# Avoid to center on screen the window application
+ ${REINPLACE_CMD} 's|gtk.WIN_POS_CENTER|gtk.WIN_POS_CENTER_ON_PARENT|' \
+ ${WRKSRC}/turpial/ui/gtk/main.py
+
+do-build:
+ @cd ${WRKSRC} && \
+ ${PYTHON_CMD} setup.py compile_catalog --directory turpial/i18n ; \
+ ${PYTHON_CMD} -m compileall ${WRKSRC} ; \
+ ${PYTHON_CMD} -O -m compileall ${WRKSRC}
+
+ @${ECHO_CMD} "#!/bin/sh" >> ${WRKDIR}/run.sh
+ @${ECHO_CMD} "" >> ${WRKDIR}/run.sh
+ @${ECHO_CMD} "cd ${DATADIR} || exit 1" >> ${WRKDIR}/run.sh
+ @${ECHO_CMD} "exec ${PYTHON_CMD} main.py" >> ${WRKDIR}/run.sh
+
+pre-install:
+ @${FIND} ${WRKSRC} -type f -name '*.orig' \
+ -exec ${RM} -f "{}" \;
+
+ @${MKDIR} -p ${DOCSDIR} ${DATADIR} \
+ ${PREFIX}/share/pixmaps \
+ ${PREFIX}/share/applications \
+ ${PREFIX}/bin
+.for LOCALE in ${LOCALES_DIR}
+ @${MKDIR} -p ${PREFIX}/share/locale/${LOCALE}/LC_MESSAGES
+.endfor
+ @cd ${WRKSRC}/turpial && \
+ ${FIND} . -type d \
+ \! -regex '.*i18n.*' -exec ${MKDIR} -p "${DATADIR}/{}" \;
+
+do-install:
+ @cd ${WRKSRC} && \
+ ${INSTALL_DATA} AUTHORS COPYING TRANSLATORS README.rst ${DOCSDIR} ; \
+ ${INSTALL_DATA} turpial/data/pixmaps/turpial.png \
+ ${PREFIX}/share/pixmaps ; \
+ ${INSTALL_DATA} ${PORTNAME}.desktop ${PREFIX}/share/applications
+
+ @cd ${WRKSRC}/turpial/i18n && \
+ ${FIND} . -type f -name '*.mo' \
+ -exec ${INSTALL_DATA} "{}" "${PREFIX}/share/locale/{}" \;
+
+ @cd ${WRKSRC}/turpial && \
+ ${FIND} . -type f \
+ \( ! -name '*.mo' -and ! -name '*.po*' \) \
+ -exec ${INSTALL_DATA} "{}" "${DATADIR}/{}" \;
+
+ ${INSTALL_SCRIPT} ${WRKDIR}/run.sh ${PREFIX}/bin/${PORTNAME}
+
+post-install:
+ @-update-desktop-database
+
+.include <bsd.port.post.mk>
diff --git a/net-im/py-turpial/distinfo b/net-im/py-turpial/distinfo
new file mode 100644
index 000000000000..23c61209247f
--- /dev/null
+++ b/net-im/py-turpial/distinfo
@@ -0,0 +1,2 @@
+SHA256 (turpial-1.5.0.tar.gz) = f0c85cc0639287b66210571841920cb35dc9117bce9a3e37616f29b1f1b4768a
+SIZE (turpial-1.5.0.tar.gz) = 558659
diff --git a/net-im/py-turpial/files/extra-patch-argparse-turpial_main.py b/net-im/py-turpial/files/extra-patch-argparse-turpial_main.py
new file mode 100644
index 000000000000..652ff5ddab9d
--- /dev/null
+++ b/net-im/py-turpial/files/extra-patch-argparse-turpial_main.py
@@ -0,0 +1,114 @@
+--- turpial/main.py.orig 2011-03-23 17:50:07.000000000 +0100
++++ turpial/main.py 2011-03-27 16:33:05.000000000 +0200
+@@ -12,7 +12,7 @@
+ import base64
+ import logging
+ import getpass
+-from optparse import OptionParser
++import argparse
+
+ from turpial.api.servicesapi import HTTPServices
+ from turpial.api.turpialapi import TurpialAPI
+@@ -21,8 +21,8 @@
+
+ try:
+ import ctypes
+- libc = ctypes.CDLL('libc.so.6')
+- libc.prctl(15, 'turpial', 0, 0)
++ libc = ctypes.CDLL(os.path.join('/usr/lib', 'libc.so'))
++ libc.setproctitle('turpial')
+ except ImportError:
+ pass
+
+@@ -44,34 +44,34 @@
+ ui_avail = ui_avail[:-1] + ')'
+ default_ui = INTERFACES[1] if len(INTERFACES) > 1 else ''
+
+- parser = OptionParser()
+- parser.add_option('-d', '--debug', dest='debug', action='store_true',
++ parser = argparse.ArgumentParser()
++ parser.add_argument('-d', '--debug', dest='debug', action='store_true',
+ help='show debug info in shell during execution', default=False)
+- parser.add_option('-i', '--interface', dest='interface',
++ parser.add_argument('-i', '--interface', dest='interface',
+ help='select interface to use %s' % ui_avail, default=default_ui)
+- parser.add_option('-c', '--clean', dest='clean', action='store_true',
++ parser.add_argument('-c', '--clean', dest='clean', action='store_true',
+ help='clean all bytecodes', default=False)
+- parser.add_option('-s', '--save-credentials', dest='save', action='store_true',
++ parser.add_argument('-s', '--save-credentials', dest='save', action='store_true',
+ help='save user credentials', default=False)
+- parser.add_option('--version', dest='version', action='store_true',
++ parser.add_argument('--version', dest='version', action='store_true',
+ help='show the version of Turpial and exit', default=False)
+- parser.add_option('--test', dest='test', action='store_true',
++ parser.add_argument('--test', dest='test', action='store_true',
+ help='only load timeline and friends', default=False)
+- parser.add_option('--no-sound', dest='no_sound', action='store_true',
++ parser.add_argument('--no-sound', dest='no_sound', action='store_true',
+ help='disable the sounds module', default=False)
+- parser.add_option('--no-notif', dest='no_notif', action='store_true',
++ parser.add_argument('--no-notif', dest='no_notif', action='store_true',
+ help='disable the notifications module', default=False)
+
+- (options, args) = parser.parse_args()
++ args = parser.parse_args()
+
+ self.config = None
+ self.global_cfg = ConfigApp()
+ self.protocol_cfg = {}
+ self.profile = None
+- self.testmode = options.test
+- self.interface = options.interface
+- self.no_sound = options.no_sound
+- self.no_notif = options.no_notif
++ self.testmode = args.test
++ self.interface = args.interface
++ self.no_sound = args.no_sound
++ self.no_notif = args.no_notif
+ self.httpserv = None
+ self.api = None
+ self.version = self.global_cfg.read('App', 'version')
+@@ -79,34 +79,34 @@
+ for p in PROTOCOLS:
+ self.protocol_cfg[p] = ConfigProtocol(p)
+
+- if options.debug or options.clean:
++ if args.debug or args.clean:
+ logging.basicConfig(level=logging.DEBUG)
+ else:
+ logging.basicConfig(level=logging.INFO)
+ self.log = logging.getLogger('Controller')
+
+- if options.clean:
++ if args.clean:
+ self.__clean()
+ sys.exit(0)
+
+- if options.version:
++ if args.version:
+ print "Turpial v%s" % self.version
+ print "Python v%X" % sys.hexversion
+ sys.exit(0)
+
+- if options.save:
++ if args.save:
+ try:
+ self.__save_credentials()
+ except KeyboardInterrupt:
+ self.log.debug('Interceptado Keyboard Interrupt')
+ sys.exit(0)
+
+- self.interface = options.interface
+- if options.interface == 'gtk+' and ('gtk+' in INTERFACES):
++ self.interface = args.interface
++ if args.interface == 'gtk+' and ('gtk+' in INTERFACES):
+ self.ui = _GTK(self, extend=True)
+- elif options.interface == 'gtk' and ('gtk' in INTERFACES):
++ elif args.interface == 'gtk' and ('gtk' in INTERFACES):
+ self.ui = _GTK(self)
+- elif options.interface == 'cmd' and ('cmd' in INTERFACES):
++ elif args.interface == 'cmd' and ('cmd' in INTERFACES):
+ self.ui = _CMD(self, args)
+ else:
+ print 'No existe una interfaz válida. Las interfaces válidas son: %s' % INTERFACES
diff --git a/net-im/py-turpial/files/extra-patch-optparse-turpial_main.py b/net-im/py-turpial/files/extra-patch-optparse-turpial_main.py
new file mode 100644
index 000000000000..430b4e14a0ac
--- /dev/null
+++ b/net-im/py-turpial/files/extra-patch-optparse-turpial_main.py
@@ -0,0 +1,13 @@
+--- turpial/main.py.orig 2011-03-23 17:50:07.000000000 +0100
++++ turpial/main.py 2011-03-27 11:35:32.000000000 +0200
+@@ -21,8 +21,8 @@
+
+ try:
+ import ctypes
+- libc = ctypes.CDLL('libc.so.6')
+- libc.prctl(15, 'turpial', 0, 0)
++ libc = ctypes.CDLL(os.path.join('/usr/lib', 'libc.so'))
++ libc.setproctitle('turpial')
+ except ImportError:
+ pass
+
diff --git a/net-im/py-turpial/files/patch-turpial.desktop b/net-im/py-turpial/files/patch-turpial.desktop
new file mode 100644
index 000000000000..90e4aeeacd9f
--- /dev/null
+++ b/net-im/py-turpial/files/patch-turpial.desktop
@@ -0,0 +1,13 @@
+--- turpial.desktop.orig 2011-01-22 22:05:07.000000000 +0100
++++ turpial.desktop 2011-02-18 23:38:51.000000000 +0100
+@@ -3,8 +3,10 @@
+ Encoding=UTF-8
+ Name=Turpial
+ Name[es]=Turpial
++Name[fr]=Turpial
+ GenericName=Twitter client
+ GenericName[es]=Cliente Twitter
++GenericName[fr]=Client pour Twitter et Identi.ca
+ Comment=Twitter client written in Python
+ Comment[es]=Cliente Twitter escrito en Python
+ Exec=turpial
diff --git a/net-im/py-turpial/files/patch-turpial_api_interfaces_protocol.py b/net-im/py-turpial/files/patch-turpial_api_interfaces_protocol.py
new file mode 100644
index 000000000000..fc29f287b776
--- /dev/null
+++ b/net-im/py-turpial/files/patch-turpial_api_interfaces_protocol.py
@@ -0,0 +1,11 @@
+--- turpial/api/interfaces/protocol.py.orig 2011-03-23 17:50:07.000000000 +0100
++++ turpial/api/interfaces/protocol.py 2011-05-07 22:14:22.000000000 +0200
+@@ -280,7 +280,7 @@
+
+ def get_str_time(self, strdate):
+ t = self.convert_time(strdate)
+- return time.strftime('%b %d, %I:%M %p', t)
++ return time.strftime('%Y-%m-%d @ %H:%M', t)
+
+ def get_int_time(self, strdate):
+ t = self.convert_time(strdate)
diff --git a/net-im/py-turpial/files/patch-turpial_ui_gtk_about.py b/net-im/py-turpial/files/patch-turpial_ui_gtk_about.py
new file mode 100644
index 000000000000..9e10547f2371
--- /dev/null
+++ b/net-im/py-turpial/files/patch-turpial_ui_gtk_about.py
@@ -0,0 +1,35 @@
+--- turpial/ui/gtk/about.py.orig 2011-01-22 22:05:08.000000000 +0100
++++ turpial/ui/gtk/about.py 2011-02-18 23:35:39.000000000 +0100
+@@ -22,8 +22,8 @@
+ about.set_website('http://turpial.org.ve')
+
+ try:
+- path = os.path.realpath(os.path.join(os.path.dirname(__file__),
+- '..', '..', '..', 'COPYING'))
++ path = os.path.realpath(os.path.join('%%PREFIX%%', 'share', 'doc',
++ 'turpial', 'COPYING'))
+ lic = file(path, 'r')
+ license = lic.read()
+ lic.close()
+@@ -39,8 +39,8 @@
+ about.set_license(license)
+ authors = []
+ try:
+- path = os.path.realpath(os.path.join(os.path.dirname(__file__),
+- '..', '..', '..', 'AUTHORS'))
++ path = os.path.realpath(os.path.join('%%PREFIX%%', 'share', 'doc',
++ 'turpial', 'AUTHORS'))
+ f = file(path, 'r')
+ for line in f:
+ authors.append(line.strip('\n'))
+@@ -51,8 +51,8 @@
+
+ translators = ''
+ try:
+- path = os.path.realpath(os.path.join(os.path.dirname(__file__),
+- '..', '..', '..', 'TRANSLATORS'))
++ path = os.path.realpath(os.path.join('%%PREFIX%%', 'share', 'doc',
++ 'turpial', 'TRANSLATORS'))
+ f = file(path, 'r')
+ translators = f.read()
+ f.close()
diff --git a/net-im/py-turpial/files/patch-turpial_ui_gtk_statuslist.py b/net-im/py-turpial/files/patch-turpial_ui_gtk_statuslist.py
new file mode 100644
index 000000000000..4e43fc88e91d
--- /dev/null
+++ b/net-im/py-turpial/files/patch-turpial_ui_gtk_statuslist.py
@@ -0,0 +1,129 @@
+--- turpial/ui/gtk/statuslist.py.orig 2011-05-08 05:01:09.000000000 +0200
++++ turpial/ui/gtk/statuslist.py 2011-06-12 19:55:15.000000000 +0200
+@@ -5,6 +5,7 @@
+ # Author: Wil Alvarez (aka Satanas)
+ # Jun 25, 2009
+
++import sys
+ import gtk
+ import pango
+ import gobject
+@@ -81,14 +82,14 @@
+ if len(hashtags) == 0: return text
+
+ for h in hashtags:
+- torep = '%s' % h
++ torep = u'%s' % h
+ try:
+- cad = '<span foreground="%s">%s</span>' % (
++ cad = u'<span foreground="%s">%s</span>' % (
+ self.mainwin.link_color, h
+ )
+ text = text.replace(torep, cad)
+ except:
+- log.debug('Problemas para resaltar el hashtag: %s' % h)
++ log.debug(u'Problemas para resaltar el hashtag: %s' % h)
+ return text
+
+ def __highlight_groups(self, text):
+@@ -99,14 +100,14 @@
+ if len(groups) == 0: return text
+
+ for h in groups:
+- torep = '%s' % h
++ torep = u'%s' % h
+ try:
+- cad = '<span foreground="%s">%s</span>' % (
++ cad = u'<span foreground="%s">%s</span>' % (
+ self.mainwin.link_color, h
+ )
+ text = text.replace(torep, cad)
+ except:
+- log.debug('Problemas para resaltar el grupo: %s' % h)
++ log.debug(u'Problemas para resaltar el grupo: %s' % h)
+ return text
+
+ def __highlight_mentions(self, text):
+@@ -117,8 +118,8 @@
+ for h in mentions:
+ if len(h) == 1:
+ continue
+- torep = '%s' % h
+- cad = '<span foreground="%s">%s</span>' % (
++ torep = u'%s' % h
++ cad = u'<span foreground="%s">%s</span>' % (
+ self.mainwin.link_color, h
+ )
+ text = text.replace(torep, cad)
+@@ -128,7 +129,7 @@
+ #if len(urls) == 0: return text
+
+ for u in urls:
+- cad = '<span foreground="%s">%s</span>' % (
++ cad = u'<span foreground="%s">%s</span>' % (
+ self.mainwin.link_color, u
+ )
+ text = text.replace(u, cad)
+@@ -180,8 +181,17 @@
+ amarillo = gtk.gdk.Color(253 * 257, 255 * 257, 229 * 257)
+ naranja = gtk.gdk.Color(255 * 257, 240 * 257, 229 * 257)
+ '''
+- me = '@'+self.mainwin.me.lower()
+- mention = True if msg.lower().find(me) >= 0 else False
++ me = unichr(64) + self.mainwin.me.lower()
++ if sys.getfilesystemencoding() != 'UTF-8':
++ if msg.startswith(me):
++ mention = True
++ else:
++ mention = False
++ else:
++ if msg.lower().startswith(me):
++ mention = True
++ else:
++ mention = False
+
+ if new:
+ color = self.mainwin.get_gdk_color_from_base('unread')
+@@ -206,15 +216,15 @@
+ pango_twt = util.unescape_text(status.text)
+ pango_twt = gobject.markup_escape_text(pango_twt)
+
+- user = '<span size="9000" foreground="%s"><b>%s</b></span> ' % (
++ user = u'<span size="9000" foreground="%s"><b>%s</b></span> ' % (
+ self.mainwin.link_color, status.username
+ )
+- pango_twt = '<span size="9000">%s</span>' % pango_twt
++ pango_twt = u'<span size="9000">%s</span>' % pango_twt
+ pango_twt = self.__highlight_hashtags(pango_twt)
+ pango_twt = self.__highlight_groups(pango_twt)
+ pango_twt = self.__highlight_mentions(pango_twt)
+ pango_twt = self.__highlight_urls(urls, pango_twt)
+- pango_twt += '<span size="2000">\n\n</span>'
++ pango_twt += u'<span size="2000">\n\n</span>'
+
+ try:
+ pango_twt = user + pango_twt
+@@ -227,17 +237,17 @@
+ except UnicodeDecodeError:
+ invalid_chars.append(c)
+ clear_txt += '?'
+- log.debug('Problema con caracteres inválidos en un tweet: %s' % invalid_chars)
++ log.debug(u'Problema con caracteres inválidos en un tweet: %s' % invalid_chars)
+ pango_twt = clear_txt
+
+- footer = '<span size="small" foreground="#999">%s' % status.datetime
++ footer = u'<span size="small" foreground="#999">%s' % status.datetime
+ if status.source:
+- footer += ' %s %s' % (_('from'), status.source)
++ footer += u' %s %s' % (_('from'), status.source)
+ if status.in_reply_to_user:
+- footer += ' %s %s' % (_('in reply to'), status.in_reply_to_user)
++ footer += u' %s %s' % (_('in reply to'), status.in_reply_to_user)
+ if status.retweet_by:
+- footer += '\n%s %s' % (_('Retweeted by'), status.retweet_by)
+- footer += '</span>'
++ footer += u'\n%s %s' % (_('Retweeted by'), status.retweet_by)
++ footer += u'</span>'
+ pango_twt += footer
+
+ return pango_twt
diff --git a/net-im/py-turpial/pkg-descr b/net-im/py-turpial/pkg-descr
new file mode 100644
index 000000000000..7dea65f32bef
--- /dev/null
+++ b/net-im/py-turpial/pkg-descr
@@ -0,0 +1,4 @@
+Turpial is a microblogging client for social networks like Twitter and
+Identi.ca.
+
+WWW: http://turpial.org.ve/
diff --git a/net-im/py-turpial/pkg-plist b/net-im/py-turpial/pkg-plist
new file mode 100644
index 000000000000..1506934deb01
--- /dev/null
+++ b/net-im/py-turpial/pkg-plist
@@ -0,0 +1,316 @@
+bin/turpial
+share/applications/turpial.desktop
+%%DOCSDIR%%/AUTHORS
+%%DOCSDIR%%/COPYING
+%%DOCSDIR%%/README.rst
+%%DOCSDIR%%/TRANSLATORS
+share/locale/ca/LC_MESSAGES/turpial.mo
+share/locale/de/LC_MESSAGES/turpial.mo
+share/locale/en/LC_MESSAGES/turpial.mo
+share/locale/es/LC_MESSAGES/turpial.mo
+share/locale/eu/LC_MESSAGES/turpial.mo
+share/locale/fr/LC_MESSAGES/turpial.mo
+share/locale/gl/LC_MESSAGES/turpial.mo
+share/locale/he/LC_MESSAGES/turpial.mo
+share/locale/it/LC_MESSAGES/turpial.mo
+share/locale/nn/LC_MESSAGES/turpial.mo
+share/locale/pt/LC_MESSAGES/turpial.mo
+share/locale/ru/LC_MESSAGES/turpial.mo
+share/locale/zh_CN/LC_MESSAGES/turpial.mo
+share/locale/zh_TW/LC_MESSAGES/turpial.mo
+share/pixmaps/turpial.png
+%%DATADIR%%/__init__.py
+%%DATADIR%%/__init__.pyc
+%%DATADIR%%/__init__.pyo
+%%DATADIR%%/api/__init__.py
+%%DATADIR%%/api/__init__.pyc
+%%DATADIR%%/api/__init__.pyo
+%%DATADIR%%/api/interfaces/__init__.py
+%%DATADIR%%/api/interfaces/__init__.pyc
+%%DATADIR%%/api/interfaces/__init__.pyo
+%%DATADIR%%/api/interfaces/http.py
+%%DATADIR%%/api/interfaces/http.pyc
+%%DATADIR%%/api/interfaces/http.pyo
+%%DATADIR%%/api/interfaces/post.py
+%%DATADIR%%/api/interfaces/post.pyc
+%%DATADIR%%/api/interfaces/post.pyo
+%%DATADIR%%/api/interfaces/protocol.py
+%%DATADIR%%/api/interfaces/protocol.pyc
+%%DATADIR%%/api/interfaces/protocol.pyo
+%%DATADIR%%/api/interfaces/service.py
+%%DATADIR%%/api/interfaces/service.pyc
+%%DATADIR%%/api/interfaces/service.pyo
+%%DATADIR%%/api/protocols/__init__.py
+%%DATADIR%%/api/protocols/__init__.pyc
+%%DATADIR%%/api/protocols/__init__.pyo
+%%DATADIR%%/api/protocols/identica/__init__.py
+%%DATADIR%%/api/protocols/identica/__init__.pyc
+%%DATADIR%%/api/protocols/identica/__init__.pyo
+%%DATADIR%%/api/protocols/identica/globals.py
+%%DATADIR%%/api/protocols/identica/globals.pyc
+%%DATADIR%%/api/protocols/identica/globals.pyo
+%%DATADIR%%/api/protocols/identica/http.py
+%%DATADIR%%/api/protocols/identica/http.pyc
+%%DATADIR%%/api/protocols/identica/http.pyo
+%%DATADIR%%/api/protocols/identica/identica.py
+%%DATADIR%%/api/protocols/identica/identica.pyc
+%%DATADIR%%/api/protocols/identica/identica.pyo
+%%DATADIR%%/api/protocols/twitter/__init__.py
+%%DATADIR%%/api/protocols/twitter/__init__.pyc
+%%DATADIR%%/api/protocols/twitter/__init__.pyo
+%%DATADIR%%/api/protocols/twitter/globals.py
+%%DATADIR%%/api/protocols/twitter/globals.pyc
+%%DATADIR%%/api/protocols/twitter/globals.pyo
+%%DATADIR%%/api/protocols/twitter/http.py
+%%DATADIR%%/api/protocols/twitter/http.pyc
+%%DATADIR%%/api/protocols/twitter/http.pyo
+%%DATADIR%%/api/protocols/twitter/oauth.py
+%%DATADIR%%/api/protocols/twitter/oauth.pyc
+%%DATADIR%%/api/protocols/twitter/oauth.pyo
+%%DATADIR%%/api/protocols/twitter/twitter.py
+%%DATADIR%%/api/protocols/twitter/twitter.pyc
+%%DATADIR%%/api/protocols/twitter/twitter.pyo
+%%DATADIR%%/api/services/__init__.py
+%%DATADIR%%/api/services/__init__.pyc
+%%DATADIR%%/api/services/__init__.pyo
+%%DATADIR%%/api/services/shorturl/__init__.py
+%%DATADIR%%/api/services/shorturl/__init__.pyc
+%%DATADIR%%/api/services/shorturl/__init__.pyo
+%%DATADIR%%/api/services/shorturl/bitly.py
+%%DATADIR%%/api/services/shorturl/bitly.pyc
+%%DATADIR%%/api/services/shorturl/bitly.pyo
+%%DATADIR%%/api/services/shorturl/cligs.py
+%%DATADIR%%/api/services/shorturl/cligs.pyc
+%%DATADIR%%/api/services/shorturl/cligs.pyo
+%%DATADIR%%/api/services/shorturl/isgd.py
+%%DATADIR%%/api/services/shorturl/isgd.pyc
+%%DATADIR%%/api/services/shorturl/isgd.pyo
+%%DATADIR%%/api/services/shorturl/smlkes.py
+%%DATADIR%%/api/services/shorturl/smlkes.pyc
+%%DATADIR%%/api/services/shorturl/smlkes.pyo
+%%DATADIR%%/api/services/shorturl/supr.py
+%%DATADIR%%/api/services/shorturl/supr.pyc
+%%DATADIR%%/api/services/shorturl/supr.pyo
+%%DATADIR%%/api/services/shorturl/tinyurl.py
+%%DATADIR%%/api/services/shorturl/tinyurl.pyc
+%%DATADIR%%/api/services/shorturl/tinyurl.pyo
+%%DATADIR%%/api/services/shorturl/trim.py
+%%DATADIR%%/api/services/shorturl/trim.pyc
+%%DATADIR%%/api/services/shorturl/trim.pyo
+%%DATADIR%%/api/services/shorturl/unu.py
+%%DATADIR%%/api/services/shorturl/unu.pyc
+%%DATADIR%%/api/services/shorturl/unu.pyo
+%%DATADIR%%/api/services/shorturl/ur1ca.py
+%%DATADIR%%/api/services/shorturl/ur1ca.pyc
+%%DATADIR%%/api/services/shorturl/ur1ca.pyo
+%%DATADIR%%/api/services/shorturl/zima.py
+%%DATADIR%%/api/services/shorturl/zima.pyc
+%%DATADIR%%/api/services/shorturl/zima.pyo
+%%DATADIR%%/api/services/uploadpic/__init__.py
+%%DATADIR%%/api/services/uploadpic/__init__.pyc
+%%DATADIR%%/api/services/uploadpic/__init__.pyo
+%%DATADIR%%/api/services/uploadpic/imgly.py
+%%DATADIR%%/api/services/uploadpic/imgly.pyc
+%%DATADIR%%/api/services/uploadpic/imgly.pyo
+%%DATADIR%%/api/services/uploadpic/mobypicture.py
+%%DATADIR%%/api/services/uploadpic/mobypicture.pyc
+%%DATADIR%%/api/services/uploadpic/mobypicture.pyo
+%%DATADIR%%/api/services/uploadpic/posterous.py
+%%DATADIR%%/api/services/uploadpic/posterous.pyc
+%%DATADIR%%/api/services/uploadpic/posterous.pyo
+%%DATADIR%%/api/services/uploadpic/pyTweetPhoto.py
+%%DATADIR%%/api/services/uploadpic/pyTweetPhoto.pyc
+%%DATADIR%%/api/services/uploadpic/pyTweetPhoto.pyo
+%%DATADIR%%/api/services/uploadpic/tweetphoto.py
+%%DATADIR%%/api/services/uploadpic/tweetphoto.pyc
+%%DATADIR%%/api/services/uploadpic/tweetphoto.pyo
+%%DATADIR%%/api/services/uploadpic/twitgoo.py
+%%DATADIR%%/api/services/uploadpic/twitgoo.pyc
+%%DATADIR%%/api/services/uploadpic/twitgoo.pyo
+%%DATADIR%%/api/services/uploadpic/twitpic.py
+%%DATADIR%%/api/services/uploadpic/twitpic.pyc
+%%DATADIR%%/api/services/uploadpic/twitpic.pyo
+%%DATADIR%%/api/services/uploadpic/yfrog.py
+%%DATADIR%%/api/services/uploadpic/yfrog.pyc
+%%DATADIR%%/api/services/uploadpic/yfrog.pyo
+%%DATADIR%%/api/servicesapi.py
+%%DATADIR%%/api/servicesapi.pyc
+%%DATADIR%%/api/servicesapi.pyo
+%%DATADIR%%/api/turpialapi.py
+%%DATADIR%%/api/turpialapi.pyc
+%%DATADIR%%/api/turpialapi.pyo
+%%DATADIR%%/config.py
+%%DATADIR%%/config.pyc
+%%DATADIR%%/config.pyo
+%%DATADIR%%/data/pixmaps/action-add-friends.png
+%%DATADIR%%/data/pixmaps/action-autoscroll.png
+%%DATADIR%%/data/pixmaps/action-clear.png
+%%DATADIR%%/data/pixmaps/action-mark-all.png
+%%DATADIR%%/data/pixmaps/action-refresh.png
+%%DATADIR%%/data/pixmaps/dock-about.png
+%%DATADIR%%/data/pixmaps/dock-favorites.png
+%%DATADIR%%/data/pixmaps/dock-follow.png
+%%DATADIR%%/data/pixmaps/dock-home.png
+%%DATADIR%%/data/pixmaps/dock-profile.png
+%%DATADIR%%/data/pixmaps/dock-settings.png
+%%DATADIR%%/data/pixmaps/dock-update.png
+%%DATADIR%%/data/pixmaps/dock-uploadpic.png
+%%DATADIR%%/data/pixmaps/identica.png
+%%DATADIR%%/data/pixmaps/logo.png
+%%DATADIR%%/data/pixmaps/logo2.png
+%%DATADIR%%/data/pixmaps/turpial-notification.png
+%%DATADIR%%/data/pixmaps/turpial-tray-update.png
+%%DATADIR%%/data/pixmaps/turpial-tray.png
+%%DATADIR%%/data/pixmaps/turpial.png
+%%DATADIR%%/data/pixmaps/twitter.png
+%%DATADIR%%/data/pixmaps/unknown.png
+%%DATADIR%%/data/pixmaps/wait-error.png
+%%DATADIR%%/data/pixmaps/wait10.png
+%%DATADIR%%/data/pixmaps/wait11.png
+%%DATADIR%%/data/pixmaps/wait12.png
+%%DATADIR%%/data/pixmaps/wait13.png
+%%DATADIR%%/data/pixmaps/wait14.png
+%%DATADIR%%/data/pixmaps/wait15.png
+%%DATADIR%%/data/pixmaps/wait16.png
+%%DATADIR%%/data/pixmaps/wait17.png
+%%DATADIR%%/data/pixmaps/wait18.png
+%%DATADIR%%/data/pixmaps/wait19.png
+%%DATADIR%%/data/pixmaps/wait2.png
+%%DATADIR%%/data/pixmaps/wait20.png
+%%DATADIR%%/data/pixmaps/wait21.png
+%%DATADIR%%/data/pixmaps/wait22.png
+%%DATADIR%%/data/pixmaps/wait23.png
+%%DATADIR%%/data/pixmaps/wait24.png
+%%DATADIR%%/data/pixmaps/wait25.png
+%%DATADIR%%/data/pixmaps/wait26.png
+%%DATADIR%%/data/pixmaps/wait27.png
+%%DATADIR%%/data/pixmaps/wait28.png
+%%DATADIR%%/data/pixmaps/wait29.png
+%%DATADIR%%/data/pixmaps/wait3.png
+%%DATADIR%%/data/pixmaps/wait30.png
+%%DATADIR%%/data/pixmaps/wait31.png
+%%DATADIR%%/data/pixmaps/wait32.png
+%%DATADIR%%/data/pixmaps/wait4.png
+%%DATADIR%%/data/pixmaps/wait5.png
+%%DATADIR%%/data/pixmaps/wait6.png
+%%DATADIR%%/data/pixmaps/wait7.png
+%%DATADIR%%/data/pixmaps/wait8.png
+%%DATADIR%%/data/pixmaps/wait9.png
+%%DATADIR%%/data/sounds/cambur_pinton.ogg
+%%DATADIR%%/data/sounds/mencion.ogg
+%%DATADIR%%/data/sounds/mencion2.ogg
+%%DATADIR%%/data/sounds/mencion3.ogg
+%%DATADIR%%/data/sounds/turpial.ogg
+%%DATADIR%%/data/themes/default/style.css
+%%DATADIR%%/data/themes/default/tweet.html
+%%DATADIR%%/data/themes/default/tweet_template.html
+%%DATADIR%%/main.py
+%%DATADIR%%/main.pyc
+%%DATADIR%%/main.pyo
+%%DATADIR%%/notification.py
+%%DATADIR%%/notification.pyc
+%%DATADIR%%/notification.pyo
+%%DATADIR%%/sound.py
+%%DATADIR%%/sound.pyc
+%%DATADIR%%/sound.pyo
+%%DATADIR%%/ui/__init__.py
+%%DATADIR%%/ui/__init__.pyc
+%%DATADIR%%/ui/__init__.pyo
+%%DATADIR%%/ui/base_ui.py
+%%DATADIR%%/ui/base_ui.pyc
+%%DATADIR%%/ui/base_ui.pyo
+%%DATADIR%%/ui/cmd/__init__.py
+%%DATADIR%%/ui/cmd/__init__.pyc
+%%DATADIR%%/ui/cmd/__init__.pyo
+%%DATADIR%%/ui/cmd/main.py
+%%DATADIR%%/ui/cmd/main.pyc
+%%DATADIR%%/ui/cmd/main.pyo
+%%DATADIR%%/ui/gtk/__init__.py
+%%DATADIR%%/ui/gtk/__init__.pyc
+%%DATADIR%%/ui/gtk/__init__.pyo
+%%DATADIR%%/ui/gtk/about.py
+%%DATADIR%%/ui/gtk/about.pyc
+%%DATADIR%%/ui/gtk/about.pyo
+%%DATADIR%%/ui/gtk/columns.py
+%%DATADIR%%/ui/gtk/columns.pyc
+%%DATADIR%%/ui/gtk/columns.pyo
+%%DATADIR%%/ui/gtk/conversation.py
+%%DATADIR%%/ui/gtk/conversation.pyc
+%%DATADIR%%/ui/gtk/conversation.pyo
+%%DATADIR%%/ui/gtk/dock.py
+%%DATADIR%%/ui/gtk/dock.pyc
+%%DATADIR%%/ui/gtk/dock.pyo
+%%DATADIR%%/ui/gtk/errorbox.py
+%%DATADIR%%/ui/gtk/errorbox.pyc
+%%DATADIR%%/ui/gtk/errorbox.pyo
+%%DATADIR%%/ui/gtk/follow.py
+%%DATADIR%%/ui/gtk/follow.pyc
+%%DATADIR%%/ui/gtk/follow.pyo
+%%DATADIR%%/ui/gtk/friendwin.py
+%%DATADIR%%/ui/gtk/friendwin.pyc
+%%DATADIR%%/ui/gtk/friendwin.pyo
+%%DATADIR%%/ui/gtk/home.py
+%%DATADIR%%/ui/gtk/home.pyc
+%%DATADIR%%/ui/gtk/home.pyo
+%%DATADIR%%/ui/gtk/login.py
+%%DATADIR%%/ui/gtk/login.pyc
+%%DATADIR%%/ui/gtk/login.pyo
+%%DATADIR%%/ui/gtk/loginlabel.py
+%%DATADIR%%/ui/gtk/loginlabel.pyc
+%%DATADIR%%/ui/gtk/loginlabel.pyo
+%%DATADIR%%/ui/gtk/main.py
+%%DATADIR%%/ui/gtk/main.pyc
+%%DATADIR%%/ui/gtk/main.pyo
+%%DATADIR%%/ui/gtk/menu.py
+%%DATADIR%%/ui/gtk/menu.pyc
+%%DATADIR%%/ui/gtk/menu.pyo
+%%DATADIR%%/ui/gtk/preferences.py
+%%DATADIR%%/ui/gtk/preferences.pyc
+%%DATADIR%%/ui/gtk/preferences.pyo
+%%DATADIR%%/ui/gtk/profile.py
+%%DATADIR%%/ui/gtk/profile.pyc
+%%DATADIR%%/ui/gtk/profile.pyo
+%%DATADIR%%/ui/gtk/statuslist.py
+%%DATADIR%%/ui/gtk/statuslist.pyc
+%%DATADIR%%/ui/gtk/statuslist.pyo
+%%DATADIR%%/ui/gtk/tweetslistwk.py
+%%DATADIR%%/ui/gtk/tweetslistwk.pyc
+%%DATADIR%%/ui/gtk/tweetslistwk.pyo
+%%DATADIR%%/ui/gtk/updatebox.py
+%%DATADIR%%/ui/gtk/updatebox.pyc
+%%DATADIR%%/ui/gtk/updatebox.pyo
+%%DATADIR%%/ui/gtk/uploadpicbox.py
+%%DATADIR%%/ui/gtk/uploadpicbox.pyc
+%%DATADIR%%/ui/gtk/uploadpicbox.pyo
+%%DATADIR%%/ui/gtk/userform.py
+%%DATADIR%%/ui/gtk/userform.pyc
+%%DATADIR%%/ui/gtk/userform.pyo
+%%DATADIR%%/ui/gtk/waiting.py
+%%DATADIR%%/ui/gtk/waiting.pyc
+%%DATADIR%%/ui/gtk/waiting.pyo
+%%DATADIR%%/ui/gtk/wrapper.py
+%%DATADIR%%/ui/gtk/wrapper.pyc
+%%DATADIR%%/ui/gtk/wrapper.pyo
+%%DATADIR%%/ui/util.py
+%%DATADIR%%/ui/util.pyc
+%%DATADIR%%/ui/util.pyo
+@dirrm %%DATADIR%%/ui/gtk
+@dirrm %%DATADIR%%/ui/cmd
+@dirrm %%DATADIR%%/ui
+@dirrm %%DATADIR%%/data/themes/default
+@dirrm %%DATADIR%%/data/themes
+@dirrm %%DATADIR%%/data/sounds
+@dirrm %%DATADIR%%/data/pixmaps
+@dirrm %%DATADIR%%/data
+@dirrm %%DATADIR%%/api/services/uploadpic
+@dirrm %%DATADIR%%/api/services/shorturl
+@dirrm %%DATADIR%%/api/services
+@dirrm %%DATADIR%%/api/protocols/twitter
+@dirrm %%DATADIR%%/api/protocols/identica
+@dirrm %%DATADIR%%/api/protocols
+@dirrm %%DATADIR%%/api/interfaces
+@dirrm %%DATADIR%%/api
+@dirrm %%DATADIR%%
+@dirrm %%DOCSDIR%%
+@exec %%LOCALBASE%%/bin/update-desktop-database > /dev/null || /usr/bin/true
+@unexec %%LOCALBASE%%/bin/update-desktop-database > /dev/null || /usr/bin/true
diff --git a/net-im/turpial/Makefile b/net-im/turpial/Makefile
new file mode 100644
index 000000000000..5cd992a3b500
--- /dev/null
+++ b/net-im/turpial/Makefile
@@ -0,0 +1,105 @@
+# New ports collection makefile for: py-turpial
+# Date created: 2011-02-19
+# Whom: Olivier Duchateau <duchateau.olivier@gmail.com>
+#
+# $FreeBSD$
+#
+
+PORTNAME= turpial
+PORTVERSION= 1.5.0
+CATEGORIES= net-im python
+MASTER_SITES= http://turpial.org.ve/files/sources/%SUBDIR%/
+MASTER_SITE_SUBDIR= stable
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+DISTNAME= ${PORTNAME}-${PORTVERSION}
+
+MAINTAINER= duchateau.olivier@gmail.com
+COMMENT= Twitter and Identi.ca client written in Python
+
+LICENSE= GPLv3
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}Babel>=0.9:${PORTSDIR}/devel/py-babel
+RUN_DEPENDS= ${LOCALBASE}/libdata/pkgconfig/notify-python.pc:${PORTSDIR}/devel/py-notify \
+ ${LOCALBASE}/libdata/pkgconfig/pywebkitgtk-1.0.pc:${PORTSDIR}/www/py-webkitgtk \
+ ${PYTHON_SITELIBDIR}/setproctitle.so:${PORTSDIR}/devel/py-setproctitle \
+ ${PYTHON_SITELIBDIR}/xdg/__init__.py:${PORTSDIR}/devel/py-xdg
+
+USE_PYTHON= yes
+USE_GNOME= pygobject pygtk2 desktopfileutils
+USE_GSTREAMER= python
+
+REINPLACE_ARGS= -i ""
+
+DOCSDIR= ${PREFIX}/share/doc/${PORTNAME}
+DATADIR= ${PREFIX}/share/${PORTNAME}
+
+LOCALES_DIR= ca de en es eu fr gl he it nn pt ru zh_CN zh_TW
+
+.include <bsd.port.pre.mk>
+
+# Since Python > 2.7, optparse module is deprecated
+.if ${PYTHON_REL} >= 270
+EXTRA_PATCHES+= ${FILESDIR}/extra-patch-argparse-turpial_main.py
+.else
+EXTRA_PATCHES+= ${FILESDIR}/extra-patch-optparse-turpial_main.py
+.endif
+
+post-patch:
+ @${FIND} ${WRKSRC}/turpial -type f -regex '.*\.py' \
+ | ${XARGS} ${REINPLACE_CMD} 's|bin/python|bin/env python| ; \
+ s|Linux|FreeBSD|g ; \
+ s|from turpial\.|from |g ; \
+ s|%%PREFIX%%|${PREFIX}|g'
+# Avoid to center on screen the window application
+ ${REINPLACE_CMD} 's|gtk.WIN_POS_CENTER|gtk.WIN_POS_CENTER_ON_PARENT|' \
+ ${WRKSRC}/turpial/ui/gtk/main.py
+
+do-build:
+ @cd ${WRKSRC} && \
+ ${PYTHON_CMD} setup.py compile_catalog --directory turpial/i18n ; \
+ ${PYTHON_CMD} -m compileall ${WRKSRC} ; \
+ ${PYTHON_CMD} -O -m compileall ${WRKSRC}
+
+ @${ECHO_CMD} "#!/bin/sh" >> ${WRKDIR}/run.sh
+ @${ECHO_CMD} "" >> ${WRKDIR}/run.sh
+ @${ECHO_CMD} "cd ${DATADIR} || exit 1" >> ${WRKDIR}/run.sh
+ @${ECHO_CMD} "exec ${PYTHON_CMD} main.py" >> ${WRKDIR}/run.sh
+
+pre-install:
+ @${FIND} ${WRKSRC} -type f -name '*.orig' \
+ -exec ${RM} -f "{}" \;
+
+ @${MKDIR} -p ${DOCSDIR} ${DATADIR} \
+ ${PREFIX}/share/pixmaps \
+ ${PREFIX}/share/applications \
+ ${PREFIX}/bin
+.for LOCALE in ${LOCALES_DIR}
+ @${MKDIR} -p ${PREFIX}/share/locale/${LOCALE}/LC_MESSAGES
+.endfor
+ @cd ${WRKSRC}/turpial && \
+ ${FIND} . -type d \
+ \! -regex '.*i18n.*' -exec ${MKDIR} -p "${DATADIR}/{}" \;
+
+do-install:
+ @cd ${WRKSRC} && \
+ ${INSTALL_DATA} AUTHORS COPYING TRANSLATORS README.rst ${DOCSDIR} ; \
+ ${INSTALL_DATA} turpial/data/pixmaps/turpial.png \
+ ${PREFIX}/share/pixmaps ; \
+ ${INSTALL_DATA} ${PORTNAME}.desktop ${PREFIX}/share/applications
+
+ @cd ${WRKSRC}/turpial/i18n && \
+ ${FIND} . -type f -name '*.mo' \
+ -exec ${INSTALL_DATA} "{}" "${PREFIX}/share/locale/{}" \;
+
+ @cd ${WRKSRC}/turpial && \
+ ${FIND} . -type f \
+ \( ! -name '*.mo' -and ! -name '*.po*' \) \
+ -exec ${INSTALL_DATA} "{}" "${DATADIR}/{}" \;
+
+ ${INSTALL_SCRIPT} ${WRKDIR}/run.sh ${PREFIX}/bin/${PORTNAME}
+
+post-install:
+ @-update-desktop-database
+
+.include <bsd.port.post.mk>
diff --git a/net-im/turpial/distinfo b/net-im/turpial/distinfo
new file mode 100644
index 000000000000..23c61209247f
--- /dev/null
+++ b/net-im/turpial/distinfo
@@ -0,0 +1,2 @@
+SHA256 (turpial-1.5.0.tar.gz) = f0c85cc0639287b66210571841920cb35dc9117bce9a3e37616f29b1f1b4768a
+SIZE (turpial-1.5.0.tar.gz) = 558659
diff --git a/net-im/turpial/files/extra-patch-argparse-turpial_main.py b/net-im/turpial/files/extra-patch-argparse-turpial_main.py
new file mode 100644
index 000000000000..652ff5ddab9d
--- /dev/null
+++ b/net-im/turpial/files/extra-patch-argparse-turpial_main.py
@@ -0,0 +1,114 @@
+--- turpial/main.py.orig 2011-03-23 17:50:07.000000000 +0100
++++ turpial/main.py 2011-03-27 16:33:05.000000000 +0200
+@@ -12,7 +12,7 @@
+ import base64
+ import logging
+ import getpass
+-from optparse import OptionParser
++import argparse
+
+ from turpial.api.servicesapi import HTTPServices
+ from turpial.api.turpialapi import TurpialAPI
+@@ -21,8 +21,8 @@
+
+ try:
+ import ctypes
+- libc = ctypes.CDLL('libc.so.6')
+- libc.prctl(15, 'turpial', 0, 0)
++ libc = ctypes.CDLL(os.path.join('/usr/lib', 'libc.so'))
++ libc.setproctitle('turpial')
+ except ImportError:
+ pass
+
+@@ -44,34 +44,34 @@
+ ui_avail = ui_avail[:-1] + ')'
+ default_ui = INTERFACES[1] if len(INTERFACES) > 1 else ''
+
+- parser = OptionParser()
+- parser.add_option('-d', '--debug', dest='debug', action='store_true',
++ parser = argparse.ArgumentParser()
++ parser.add_argument('-d', '--debug', dest='debug', action='store_true',
+ help='show debug info in shell during execution', default=False)
+- parser.add_option('-i', '--interface', dest='interface',
++ parser.add_argument('-i', '--interface', dest='interface',
+ help='select interface to use %s' % ui_avail, default=default_ui)
+- parser.add_option('-c', '--clean', dest='clean', action='store_true',
++ parser.add_argument('-c', '--clean', dest='clean', action='store_true',
+ help='clean all bytecodes', default=False)
+- parser.add_option('-s', '--save-credentials', dest='save', action='store_true',
++ parser.add_argument('-s', '--save-credentials', dest='save', action='store_true',
+ help='save user credentials', default=False)
+- parser.add_option('--version', dest='version', action='store_true',
++ parser.add_argument('--version', dest='version', action='store_true',
+ help='show the version of Turpial and exit', default=False)
+- parser.add_option('--test', dest='test', action='store_true',
++ parser.add_argument('--test', dest='test', action='store_true',
+ help='only load timeline and friends', default=False)
+- parser.add_option('--no-sound', dest='no_sound', action='store_true',
++ parser.add_argument('--no-sound', dest='no_sound', action='store_true',
+ help='disable the sounds module', default=False)
+- parser.add_option('--no-notif', dest='no_notif', action='store_true',
++ parser.add_argument('--no-notif', dest='no_notif', action='store_true',
+ help='disable the notifications module', default=False)
+
+- (options, args) = parser.parse_args()
++ args = parser.parse_args()
+
+ self.config = None
+ self.global_cfg = ConfigApp()
+ self.protocol_cfg = {}
+ self.profile = None
+- self.testmode = options.test
+- self.interface = options.interface
+- self.no_sound = options.no_sound
+- self.no_notif = options.no_notif
++ self.testmode = args.test
++ self.interface = args.interface
++ self.no_sound = args.no_sound
++ self.no_notif = args.no_notif
+ self.httpserv = None
+ self.api = None
+ self.version = self.global_cfg.read('App', 'version')
+@@ -79,34 +79,34 @@
+ for p in PROTOCOLS:
+ self.protocol_cfg[p] = ConfigProtocol(p)
+
+- if options.debug or options.clean:
++ if args.debug or args.clean:
+ logging.basicConfig(level=logging.DEBUG)
+ else:
+ logging.basicConfig(level=logging.INFO)
+ self.log = logging.getLogger('Controller')
+
+- if options.clean:
++ if args.clean:
+ self.__clean()
+ sys.exit(0)
+
+- if options.version:
++ if args.version:
+ print "Turpial v%s" % self.version
+ print "Python v%X" % sys.hexversion
+ sys.exit(0)
+
+- if options.save:
++ if args.save:
+ try:
+ self.__save_credentials()
+ except KeyboardInterrupt:
+ self.log.debug('Interceptado Keyboard Interrupt')
+ sys.exit(0)
+
+- self.interface = options.interface
+- if options.interface == 'gtk+' and ('gtk+' in INTERFACES):
++ self.interface = args.interface
++ if args.interface == 'gtk+' and ('gtk+' in INTERFACES):
+ self.ui = _GTK(self, extend=True)
+- elif options.interface == 'gtk' and ('gtk' in INTERFACES):
++ elif args.interface == 'gtk' and ('gtk' in INTERFACES):
+ self.ui = _GTK(self)
+- elif options.interface == 'cmd' and ('cmd' in INTERFACES):
++ elif args.interface == 'cmd' and ('cmd' in INTERFACES):
+ self.ui = _CMD(self, args)
+ else:
+ print 'No existe una interfaz válida. Las interfaces válidas son: %s' % INTERFACES
diff --git a/net-im/turpial/files/extra-patch-optparse-turpial_main.py b/net-im/turpial/files/extra-patch-optparse-turpial_main.py
new file mode 100644
index 000000000000..430b4e14a0ac
--- /dev/null
+++ b/net-im/turpial/files/extra-patch-optparse-turpial_main.py
@@ -0,0 +1,13 @@
+--- turpial/main.py.orig 2011-03-23 17:50:07.000000000 +0100
++++ turpial/main.py 2011-03-27 11:35:32.000000000 +0200
+@@ -21,8 +21,8 @@
+
+ try:
+ import ctypes
+- libc = ctypes.CDLL('libc.so.6')
+- libc.prctl(15, 'turpial', 0, 0)
++ libc = ctypes.CDLL(os.path.join('/usr/lib', 'libc.so'))
++ libc.setproctitle('turpial')
+ except ImportError:
+ pass
+
diff --git a/net-im/turpial/files/patch-turpial.desktop b/net-im/turpial/files/patch-turpial.desktop
new file mode 100644
index 000000000000..90e4aeeacd9f
--- /dev/null
+++ b/net-im/turpial/files/patch-turpial.desktop
@@ -0,0 +1,13 @@
+--- turpial.desktop.orig 2011-01-22 22:05:07.000000000 +0100
++++ turpial.desktop 2011-02-18 23:38:51.000000000 +0100
+@@ -3,8 +3,10 @@
+ Encoding=UTF-8
+ Name=Turpial
+ Name[es]=Turpial
++Name[fr]=Turpial
+ GenericName=Twitter client
+ GenericName[es]=Cliente Twitter
++GenericName[fr]=Client pour Twitter et Identi.ca
+ Comment=Twitter client written in Python
+ Comment[es]=Cliente Twitter escrito en Python
+ Exec=turpial
diff --git a/net-im/turpial/files/patch-turpial_api_interfaces_protocol.py b/net-im/turpial/files/patch-turpial_api_interfaces_protocol.py
new file mode 100644
index 000000000000..fc29f287b776
--- /dev/null
+++ b/net-im/turpial/files/patch-turpial_api_interfaces_protocol.py
@@ -0,0 +1,11 @@
+--- turpial/api/interfaces/protocol.py.orig 2011-03-23 17:50:07.000000000 +0100
++++ turpial/api/interfaces/protocol.py 2011-05-07 22:14:22.000000000 +0200
+@@ -280,7 +280,7 @@
+
+ def get_str_time(self, strdate):
+ t = self.convert_time(strdate)
+- return time.strftime('%b %d, %I:%M %p', t)
++ return time.strftime('%Y-%m-%d @ %H:%M', t)
+
+ def get_int_time(self, strdate):
+ t = self.convert_time(strdate)
diff --git a/net-im/turpial/files/patch-turpial_ui_gtk_about.py b/net-im/turpial/files/patch-turpial_ui_gtk_about.py
new file mode 100644
index 000000000000..9e10547f2371
--- /dev/null
+++ b/net-im/turpial/files/patch-turpial_ui_gtk_about.py
@@ -0,0 +1,35 @@
+--- turpial/ui/gtk/about.py.orig 2011-01-22 22:05:08.000000000 +0100
++++ turpial/ui/gtk/about.py 2011-02-18 23:35:39.000000000 +0100
+@@ -22,8 +22,8 @@
+ about.set_website('http://turpial.org.ve')
+
+ try:
+- path = os.path.realpath(os.path.join(os.path.dirname(__file__),
+- '..', '..', '..', 'COPYING'))
++ path = os.path.realpath(os.path.join('%%PREFIX%%', 'share', 'doc',
++ 'turpial', 'COPYING'))
+ lic = file(path, 'r')
+ license = lic.read()
+ lic.close()
+@@ -39,8 +39,8 @@
+ about.set_license(license)
+ authors = []
+ try:
+- path = os.path.realpath(os.path.join(os.path.dirname(__file__),
+- '..', '..', '..', 'AUTHORS'))
++ path = os.path.realpath(os.path.join('%%PREFIX%%', 'share', 'doc',
++ 'turpial', 'AUTHORS'))
+ f = file(path, 'r')
+ for line in f:
+ authors.append(line.strip('\n'))
+@@ -51,8 +51,8 @@
+
+ translators = ''
+ try:
+- path = os.path.realpath(os.path.join(os.path.dirname(__file__),
+- '..', '..', '..', 'TRANSLATORS'))
++ path = os.path.realpath(os.path.join('%%PREFIX%%', 'share', 'doc',
++ 'turpial', 'TRANSLATORS'))
+ f = file(path, 'r')
+ translators = f.read()
+ f.close()
diff --git a/net-im/turpial/files/patch-turpial_ui_gtk_statuslist.py b/net-im/turpial/files/patch-turpial_ui_gtk_statuslist.py
new file mode 100644
index 000000000000..4e43fc88e91d
--- /dev/null
+++ b/net-im/turpial/files/patch-turpial_ui_gtk_statuslist.py
@@ -0,0 +1,129 @@
+--- turpial/ui/gtk/statuslist.py.orig 2011-05-08 05:01:09.000000000 +0200
++++ turpial/ui/gtk/statuslist.py 2011-06-12 19:55:15.000000000 +0200
+@@ -5,6 +5,7 @@
+ # Author: Wil Alvarez (aka Satanas)
+ # Jun 25, 2009
+
++import sys
+ import gtk
+ import pango
+ import gobject
+@@ -81,14 +82,14 @@
+ if len(hashtags) == 0: return text
+
+ for h in hashtags:
+- torep = '%s' % h
++ torep = u'%s' % h
+ try:
+- cad = '<span foreground="%s">%s</span>' % (
++ cad = u'<span foreground="%s">%s</span>' % (
+ self.mainwin.link_color, h
+ )
+ text = text.replace(torep, cad)
+ except:
+- log.debug('Problemas para resaltar el hashtag: %s' % h)
++ log.debug(u'Problemas para resaltar el hashtag: %s' % h)
+ return text
+
+ def __highlight_groups(self, text):
+@@ -99,14 +100,14 @@
+ if len(groups) == 0: return text
+
+ for h in groups:
+- torep = '%s' % h
++ torep = u'%s' % h
+ try:
+- cad = '<span foreground="%s">%s</span>' % (
++ cad = u'<span foreground="%s">%s</span>' % (
+ self.mainwin.link_color, h
+ )
+ text = text.replace(torep, cad)
+ except:
+- log.debug('Problemas para resaltar el grupo: %s' % h)
++ log.debug(u'Problemas para resaltar el grupo: %s' % h)
+ return text
+
+ def __highlight_mentions(self, text):
+@@ -117,8 +118,8 @@
+ for h in mentions:
+ if len(h) == 1:
+ continue
+- torep = '%s' % h
+- cad = '<span foreground="%s">%s</span>' % (
++ torep = u'%s' % h
++ cad = u'<span foreground="%s">%s</span>' % (
+ self.mainwin.link_color, h
+ )
+ text = text.replace(torep, cad)
+@@ -128,7 +129,7 @@
+ #if len(urls) == 0: return text
+
+ for u in urls:
+- cad = '<span foreground="%s">%s</span>' % (
++ cad = u'<span foreground="%s">%s</span>' % (
+ self.mainwin.link_color, u
+ )
+ text = text.replace(u, cad)
+@@ -180,8 +181,17 @@
+ amarillo = gtk.gdk.Color(253 * 257, 255 * 257, 229 * 257)
+ naranja = gtk.gdk.Color(255 * 257, 240 * 257, 229 * 257)
+ '''
+- me = '@'+self.mainwin.me.lower()
+- mention = True if msg.lower().find(me) >= 0 else False
++ me = unichr(64) + self.mainwin.me.lower()
++ if sys.getfilesystemencoding() != 'UTF-8':
++ if msg.startswith(me):
++ mention = True
++ else:
++ mention = False
++ else:
++ if msg.lower().startswith(me):
++ mention = True
++ else:
++ mention = False
+
+ if new:
+ color = self.mainwin.get_gdk_color_from_base('unread')
+@@ -206,15 +216,15 @@
+ pango_twt = util.unescape_text(status.text)
+ pango_twt = gobject.markup_escape_text(pango_twt)
+
+- user = '<span size="9000" foreground="%s"><b>%s</b></span> ' % (
++ user = u'<span size="9000" foreground="%s"><b>%s</b></span> ' % (
+ self.mainwin.link_color, status.username
+ )
+- pango_twt = '<span size="9000">%s</span>' % pango_twt
++ pango_twt = u'<span size="9000">%s</span>' % pango_twt
+ pango_twt = self.__highlight_hashtags(pango_twt)
+ pango_twt = self.__highlight_groups(pango_twt)
+ pango_twt = self.__highlight_mentions(pango_twt)
+ pango_twt = self.__highlight_urls(urls, pango_twt)
+- pango_twt += '<span size="2000">\n\n</span>'
++ pango_twt += u'<span size="2000">\n\n</span>'
+
+ try:
+ pango_twt = user + pango_twt
+@@ -227,17 +237,17 @@
+ except UnicodeDecodeError:
+ invalid_chars.append(c)
+ clear_txt += '?'
+- log.debug('Problema con caracteres inválidos en un tweet: %s' % invalid_chars)
++ log.debug(u'Problema con caracteres inválidos en un tweet: %s' % invalid_chars)
+ pango_twt = clear_txt
+
+- footer = '<span size="small" foreground="#999">%s' % status.datetime
++ footer = u'<span size="small" foreground="#999">%s' % status.datetime
+ if status.source:
+- footer += ' %s %s' % (_('from'), status.source)
++ footer += u' %s %s' % (_('from'), status.source)
+ if status.in_reply_to_user:
+- footer += ' %s %s' % (_('in reply to'), status.in_reply_to_user)
++ footer += u' %s %s' % (_('in reply to'), status.in_reply_to_user)
+ if status.retweet_by:
+- footer += '\n%s %s' % (_('Retweeted by'), status.retweet_by)
+- footer += '</span>'
++ footer += u'\n%s %s' % (_('Retweeted by'), status.retweet_by)
++ footer += u'</span>'
+ pango_twt += footer
+
+ return pango_twt
diff --git a/net-im/turpial/pkg-descr b/net-im/turpial/pkg-descr
new file mode 100644
index 000000000000..7dea65f32bef
--- /dev/null
+++ b/net-im/turpial/pkg-descr
@@ -0,0 +1,4 @@
+Turpial is a microblogging client for social networks like Twitter and
+Identi.ca.
+
+WWW: http://turpial.org.ve/
diff --git a/net-im/turpial/pkg-plist b/net-im/turpial/pkg-plist
new file mode 100644
index 000000000000..1506934deb01
--- /dev/null
+++ b/net-im/turpial/pkg-plist
@@ -0,0 +1,316 @@
+bin/turpial
+share/applications/turpial.desktop
+%%DOCSDIR%%/AUTHORS
+%%DOCSDIR%%/COPYING
+%%DOCSDIR%%/README.rst
+%%DOCSDIR%%/TRANSLATORS
+share/locale/ca/LC_MESSAGES/turpial.mo
+share/locale/de/LC_MESSAGES/turpial.mo
+share/locale/en/LC_MESSAGES/turpial.mo
+share/locale/es/LC_MESSAGES/turpial.mo
+share/locale/eu/LC_MESSAGES/turpial.mo
+share/locale/fr/LC_MESSAGES/turpial.mo
+share/locale/gl/LC_MESSAGES/turpial.mo
+share/locale/he/LC_MESSAGES/turpial.mo
+share/locale/it/LC_MESSAGES/turpial.mo
+share/locale/nn/LC_MESSAGES/turpial.mo
+share/locale/pt/LC_MESSAGES/turpial.mo
+share/locale/ru/LC_MESSAGES/turpial.mo
+share/locale/zh_CN/LC_MESSAGES/turpial.mo
+share/locale/zh_TW/LC_MESSAGES/turpial.mo
+share/pixmaps/turpial.png
+%%DATADIR%%/__init__.py
+%%DATADIR%%/__init__.pyc
+%%DATADIR%%/__init__.pyo
+%%DATADIR%%/api/__init__.py
+%%DATADIR%%/api/__init__.pyc
+%%DATADIR%%/api/__init__.pyo
+%%DATADIR%%/api/interfaces/__init__.py
+%%DATADIR%%/api/interfaces/__init__.pyc
+%%DATADIR%%/api/interfaces/__init__.pyo
+%%DATADIR%%/api/interfaces/http.py
+%%DATADIR%%/api/interfaces/http.pyc
+%%DATADIR%%/api/interfaces/http.pyo
+%%DATADIR%%/api/interfaces/post.py
+%%DATADIR%%/api/interfaces/post.pyc
+%%DATADIR%%/api/interfaces/post.pyo
+%%DATADIR%%/api/interfaces/protocol.py
+%%DATADIR%%/api/interfaces/protocol.pyc
+%%DATADIR%%/api/interfaces/protocol.pyo
+%%DATADIR%%/api/interfaces/service.py
+%%DATADIR%%/api/interfaces/service.pyc
+%%DATADIR%%/api/interfaces/service.pyo
+%%DATADIR%%/api/protocols/__init__.py
+%%DATADIR%%/api/protocols/__init__.pyc
+%%DATADIR%%/api/protocols/__init__.pyo
+%%DATADIR%%/api/protocols/identica/__init__.py
+%%DATADIR%%/api/protocols/identica/__init__.pyc
+%%DATADIR%%/api/protocols/identica/__init__.pyo
+%%DATADIR%%/api/protocols/identica/globals.py
+%%DATADIR%%/api/protocols/identica/globals.pyc
+%%DATADIR%%/api/protocols/identica/globals.pyo
+%%DATADIR%%/api/protocols/identica/http.py
+%%DATADIR%%/api/protocols/identica/http.pyc
+%%DATADIR%%/api/protocols/identica/http.pyo
+%%DATADIR%%/api/protocols/identica/identica.py
+%%DATADIR%%/api/protocols/identica/identica.pyc
+%%DATADIR%%/api/protocols/identica/identica.pyo
+%%DATADIR%%/api/protocols/twitter/__init__.py
+%%DATADIR%%/api/protocols/twitter/__init__.pyc
+%%DATADIR%%/api/protocols/twitter/__init__.pyo
+%%DATADIR%%/api/protocols/twitter/globals.py
+%%DATADIR%%/api/protocols/twitter/globals.pyc
+%%DATADIR%%/api/protocols/twitter/globals.pyo
+%%DATADIR%%/api/protocols/twitter/http.py
+%%DATADIR%%/api/protocols/twitter/http.pyc
+%%DATADIR%%/api/protocols/twitter/http.pyo
+%%DATADIR%%/api/protocols/twitter/oauth.py
+%%DATADIR%%/api/protocols/twitter/oauth.pyc
+%%DATADIR%%/api/protocols/twitter/oauth.pyo
+%%DATADIR%%/api/protocols/twitter/twitter.py
+%%DATADIR%%/api/protocols/twitter/twitter.pyc
+%%DATADIR%%/api/protocols/twitter/twitter.pyo
+%%DATADIR%%/api/services/__init__.py
+%%DATADIR%%/api/services/__init__.pyc
+%%DATADIR%%/api/services/__init__.pyo
+%%DATADIR%%/api/services/shorturl/__init__.py
+%%DATADIR%%/api/services/shorturl/__init__.pyc
+%%DATADIR%%/api/services/shorturl/__init__.pyo
+%%DATADIR%%/api/services/shorturl/bitly.py
+%%DATADIR%%/api/services/shorturl/bitly.pyc
+%%DATADIR%%/api/services/shorturl/bitly.pyo
+%%DATADIR%%/api/services/shorturl/cligs.py
+%%DATADIR%%/api/services/shorturl/cligs.pyc
+%%DATADIR%%/api/services/shorturl/cligs.pyo
+%%DATADIR%%/api/services/shorturl/isgd.py
+%%DATADIR%%/api/services/shorturl/isgd.pyc
+%%DATADIR%%/api/services/shorturl/isgd.pyo
+%%DATADIR%%/api/services/shorturl/smlkes.py
+%%DATADIR%%/api/services/shorturl/smlkes.pyc
+%%DATADIR%%/api/services/shorturl/smlkes.pyo
+%%DATADIR%%/api/services/shorturl/supr.py
+%%DATADIR%%/api/services/shorturl/supr.pyc
+%%DATADIR%%/api/services/shorturl/supr.pyo
+%%DATADIR%%/api/services/shorturl/tinyurl.py
+%%DATADIR%%/api/services/shorturl/tinyurl.pyc
+%%DATADIR%%/api/services/shorturl/tinyurl.pyo
+%%DATADIR%%/api/services/shorturl/trim.py
+%%DATADIR%%/api/services/shorturl/trim.pyc
+%%DATADIR%%/api/services/shorturl/trim.pyo
+%%DATADIR%%/api/services/shorturl/unu.py
+%%DATADIR%%/api/services/shorturl/unu.pyc
+%%DATADIR%%/api/services/shorturl/unu.pyo
+%%DATADIR%%/api/services/shorturl/ur1ca.py
+%%DATADIR%%/api/services/shorturl/ur1ca.pyc
+%%DATADIR%%/api/services/shorturl/ur1ca.pyo
+%%DATADIR%%/api/services/shorturl/zima.py
+%%DATADIR%%/api/services/shorturl/zima.pyc
+%%DATADIR%%/api/services/shorturl/zima.pyo
+%%DATADIR%%/api/services/uploadpic/__init__.py
+%%DATADIR%%/api/services/uploadpic/__init__.pyc
+%%DATADIR%%/api/services/uploadpic/__init__.pyo
+%%DATADIR%%/api/services/uploadpic/imgly.py
+%%DATADIR%%/api/services/uploadpic/imgly.pyc
+%%DATADIR%%/api/services/uploadpic/imgly.pyo
+%%DATADIR%%/api/services/uploadpic/mobypicture.py
+%%DATADIR%%/api/services/uploadpic/mobypicture.pyc
+%%DATADIR%%/api/services/uploadpic/mobypicture.pyo
+%%DATADIR%%/api/services/uploadpic/posterous.py
+%%DATADIR%%/api/services/uploadpic/posterous.pyc
+%%DATADIR%%/api/services/uploadpic/posterous.pyo
+%%DATADIR%%/api/services/uploadpic/pyTweetPhoto.py
+%%DATADIR%%/api/services/uploadpic/pyTweetPhoto.pyc
+%%DATADIR%%/api/services/uploadpic/pyTweetPhoto.pyo
+%%DATADIR%%/api/services/uploadpic/tweetphoto.py
+%%DATADIR%%/api/services/uploadpic/tweetphoto.pyc
+%%DATADIR%%/api/services/uploadpic/tweetphoto.pyo
+%%DATADIR%%/api/services/uploadpic/twitgoo.py
+%%DATADIR%%/api/services/uploadpic/twitgoo.pyc
+%%DATADIR%%/api/services/uploadpic/twitgoo.pyo
+%%DATADIR%%/api/services/uploadpic/twitpic.py
+%%DATADIR%%/api/services/uploadpic/twitpic.pyc
+%%DATADIR%%/api/services/uploadpic/twitpic.pyo
+%%DATADIR%%/api/services/uploadpic/yfrog.py
+%%DATADIR%%/api/services/uploadpic/yfrog.pyc
+%%DATADIR%%/api/services/uploadpic/yfrog.pyo
+%%DATADIR%%/api/servicesapi.py
+%%DATADIR%%/api/servicesapi.pyc
+%%DATADIR%%/api/servicesapi.pyo
+%%DATADIR%%/api/turpialapi.py
+%%DATADIR%%/api/turpialapi.pyc
+%%DATADIR%%/api/turpialapi.pyo
+%%DATADIR%%/config.py
+%%DATADIR%%/config.pyc
+%%DATADIR%%/config.pyo
+%%DATADIR%%/data/pixmaps/action-add-friends.png
+%%DATADIR%%/data/pixmaps/action-autoscroll.png
+%%DATADIR%%/data/pixmaps/action-clear.png
+%%DATADIR%%/data/pixmaps/action-mark-all.png
+%%DATADIR%%/data/pixmaps/action-refresh.png
+%%DATADIR%%/data/pixmaps/dock-about.png
+%%DATADIR%%/data/pixmaps/dock-favorites.png
+%%DATADIR%%/data/pixmaps/dock-follow.png
+%%DATADIR%%/data/pixmaps/dock-home.png
+%%DATADIR%%/data/pixmaps/dock-profile.png
+%%DATADIR%%/data/pixmaps/dock-settings.png
+%%DATADIR%%/data/pixmaps/dock-update.png
+%%DATADIR%%/data/pixmaps/dock-uploadpic.png
+%%DATADIR%%/data/pixmaps/identica.png
+%%DATADIR%%/data/pixmaps/logo.png
+%%DATADIR%%/data/pixmaps/logo2.png
+%%DATADIR%%/data/pixmaps/turpial-notification.png
+%%DATADIR%%/data/pixmaps/turpial-tray-update.png
+%%DATADIR%%/data/pixmaps/turpial-tray.png
+%%DATADIR%%/data/pixmaps/turpial.png
+%%DATADIR%%/data/pixmaps/twitter.png
+%%DATADIR%%/data/pixmaps/unknown.png
+%%DATADIR%%/data/pixmaps/wait-error.png
+%%DATADIR%%/data/pixmaps/wait10.png
+%%DATADIR%%/data/pixmaps/wait11.png
+%%DATADIR%%/data/pixmaps/wait12.png
+%%DATADIR%%/data/pixmaps/wait13.png
+%%DATADIR%%/data/pixmaps/wait14.png
+%%DATADIR%%/data/pixmaps/wait15.png
+%%DATADIR%%/data/pixmaps/wait16.png
+%%DATADIR%%/data/pixmaps/wait17.png
+%%DATADIR%%/data/pixmaps/wait18.png
+%%DATADIR%%/data/pixmaps/wait19.png
+%%DATADIR%%/data/pixmaps/wait2.png
+%%DATADIR%%/data/pixmaps/wait20.png
+%%DATADIR%%/data/pixmaps/wait21.png
+%%DATADIR%%/data/pixmaps/wait22.png
+%%DATADIR%%/data/pixmaps/wait23.png
+%%DATADIR%%/data/pixmaps/wait24.png
+%%DATADIR%%/data/pixmaps/wait25.png
+%%DATADIR%%/data/pixmaps/wait26.png
+%%DATADIR%%/data/pixmaps/wait27.png
+%%DATADIR%%/data/pixmaps/wait28.png
+%%DATADIR%%/data/pixmaps/wait29.png
+%%DATADIR%%/data/pixmaps/wait3.png
+%%DATADIR%%/data/pixmaps/wait30.png
+%%DATADIR%%/data/pixmaps/wait31.png
+%%DATADIR%%/data/pixmaps/wait32.png
+%%DATADIR%%/data/pixmaps/wait4.png
+%%DATADIR%%/data/pixmaps/wait5.png
+%%DATADIR%%/data/pixmaps/wait6.png
+%%DATADIR%%/data/pixmaps/wait7.png
+%%DATADIR%%/data/pixmaps/wait8.png
+%%DATADIR%%/data/pixmaps/wait9.png
+%%DATADIR%%/data/sounds/cambur_pinton.ogg
+%%DATADIR%%/data/sounds/mencion.ogg
+%%DATADIR%%/data/sounds/mencion2.ogg
+%%DATADIR%%/data/sounds/mencion3.ogg
+%%DATADIR%%/data/sounds/turpial.ogg
+%%DATADIR%%/data/themes/default/style.css
+%%DATADIR%%/data/themes/default/tweet.html
+%%DATADIR%%/data/themes/default/tweet_template.html
+%%DATADIR%%/main.py
+%%DATADIR%%/main.pyc
+%%DATADIR%%/main.pyo
+%%DATADIR%%/notification.py
+%%DATADIR%%/notification.pyc
+%%DATADIR%%/notification.pyo
+%%DATADIR%%/sound.py
+%%DATADIR%%/sound.pyc
+%%DATADIR%%/sound.pyo
+%%DATADIR%%/ui/__init__.py
+%%DATADIR%%/ui/__init__.pyc
+%%DATADIR%%/ui/__init__.pyo
+%%DATADIR%%/ui/base_ui.py
+%%DATADIR%%/ui/base_ui.pyc
+%%DATADIR%%/ui/base_ui.pyo
+%%DATADIR%%/ui/cmd/__init__.py
+%%DATADIR%%/ui/cmd/__init__.pyc
+%%DATADIR%%/ui/cmd/__init__.pyo
+%%DATADIR%%/ui/cmd/main.py
+%%DATADIR%%/ui/cmd/main.pyc
+%%DATADIR%%/ui/cmd/main.pyo
+%%DATADIR%%/ui/gtk/__init__.py
+%%DATADIR%%/ui/gtk/__init__.pyc
+%%DATADIR%%/ui/gtk/__init__.pyo
+%%DATADIR%%/ui/gtk/about.py
+%%DATADIR%%/ui/gtk/about.pyc
+%%DATADIR%%/ui/gtk/about.pyo
+%%DATADIR%%/ui/gtk/columns.py
+%%DATADIR%%/ui/gtk/columns.pyc
+%%DATADIR%%/ui/gtk/columns.pyo
+%%DATADIR%%/ui/gtk/conversation.py
+%%DATADIR%%/ui/gtk/conversation.pyc
+%%DATADIR%%/ui/gtk/conversation.pyo
+%%DATADIR%%/ui/gtk/dock.py
+%%DATADIR%%/ui/gtk/dock.pyc
+%%DATADIR%%/ui/gtk/dock.pyo
+%%DATADIR%%/ui/gtk/errorbox.py
+%%DATADIR%%/ui/gtk/errorbox.pyc
+%%DATADIR%%/ui/gtk/errorbox.pyo
+%%DATADIR%%/ui/gtk/follow.py
+%%DATADIR%%/ui/gtk/follow.pyc
+%%DATADIR%%/ui/gtk/follow.pyo
+%%DATADIR%%/ui/gtk/friendwin.py
+%%DATADIR%%/ui/gtk/friendwin.pyc
+%%DATADIR%%/ui/gtk/friendwin.pyo
+%%DATADIR%%/ui/gtk/home.py
+%%DATADIR%%/ui/gtk/home.pyc
+%%DATADIR%%/ui/gtk/home.pyo
+%%DATADIR%%/ui/gtk/login.py
+%%DATADIR%%/ui/gtk/login.pyc
+%%DATADIR%%/ui/gtk/login.pyo
+%%DATADIR%%/ui/gtk/loginlabel.py
+%%DATADIR%%/ui/gtk/loginlabel.pyc
+%%DATADIR%%/ui/gtk/loginlabel.pyo
+%%DATADIR%%/ui/gtk/main.py
+%%DATADIR%%/ui/gtk/main.pyc
+%%DATADIR%%/ui/gtk/main.pyo
+%%DATADIR%%/ui/gtk/menu.py
+%%DATADIR%%/ui/gtk/menu.pyc
+%%DATADIR%%/ui/gtk/menu.pyo
+%%DATADIR%%/ui/gtk/preferences.py
+%%DATADIR%%/ui/gtk/preferences.pyc
+%%DATADIR%%/ui/gtk/preferences.pyo
+%%DATADIR%%/ui/gtk/profile.py
+%%DATADIR%%/ui/gtk/profile.pyc
+%%DATADIR%%/ui/gtk/profile.pyo
+%%DATADIR%%/ui/gtk/statuslist.py
+%%DATADIR%%/ui/gtk/statuslist.pyc
+%%DATADIR%%/ui/gtk/statuslist.pyo
+%%DATADIR%%/ui/gtk/tweetslistwk.py
+%%DATADIR%%/ui/gtk/tweetslistwk.pyc
+%%DATADIR%%/ui/gtk/tweetslistwk.pyo
+%%DATADIR%%/ui/gtk/updatebox.py
+%%DATADIR%%/ui/gtk/updatebox.pyc
+%%DATADIR%%/ui/gtk/updatebox.pyo
+%%DATADIR%%/ui/gtk/uploadpicbox.py
+%%DATADIR%%/ui/gtk/uploadpicbox.pyc
+%%DATADIR%%/ui/gtk/uploadpicbox.pyo
+%%DATADIR%%/ui/gtk/userform.py
+%%DATADIR%%/ui/gtk/userform.pyc
+%%DATADIR%%/ui/gtk/userform.pyo
+%%DATADIR%%/ui/gtk/waiting.py
+%%DATADIR%%/ui/gtk/waiting.pyc
+%%DATADIR%%/ui/gtk/waiting.pyo
+%%DATADIR%%/ui/gtk/wrapper.py
+%%DATADIR%%/ui/gtk/wrapper.pyc
+%%DATADIR%%/ui/gtk/wrapper.pyo
+%%DATADIR%%/ui/util.py
+%%DATADIR%%/ui/util.pyc
+%%DATADIR%%/ui/util.pyo
+@dirrm %%DATADIR%%/ui/gtk
+@dirrm %%DATADIR%%/ui/cmd
+@dirrm %%DATADIR%%/ui
+@dirrm %%DATADIR%%/data/themes/default
+@dirrm %%DATADIR%%/data/themes
+@dirrm %%DATADIR%%/data/sounds
+@dirrm %%DATADIR%%/data/pixmaps
+@dirrm %%DATADIR%%/data
+@dirrm %%DATADIR%%/api/services/uploadpic
+@dirrm %%DATADIR%%/api/services/shorturl
+@dirrm %%DATADIR%%/api/services
+@dirrm %%DATADIR%%/api/protocols/twitter
+@dirrm %%DATADIR%%/api/protocols/identica
+@dirrm %%DATADIR%%/api/protocols
+@dirrm %%DATADIR%%/api/interfaces
+@dirrm %%DATADIR%%/api
+@dirrm %%DATADIR%%
+@dirrm %%DOCSDIR%%
+@exec %%LOCALBASE%%/bin/update-desktop-database > /dev/null || /usr/bin/true
+@unexec %%LOCALBASE%%/bin/update-desktop-database > /dev/null || /usr/bin/true