Skip navigation.

Fredo's Blog

Humanities, Social Sciences and Free Software

Posts tagged with "Python"

Deskbook: Deskbar meets Adressbuchsuche

, , ,

Der einen oder dem anderen ist die Deskbar sicherlich ein Begriff: Jenes kleine Panel-Applet, hinter dem sich eine universelle Suchleiste verbirgt. Damit lassen sich Dateien finden (unter anderem über Tracker), Programme starten, Übersetzungen nachschlagen und vieles mehr.

Unter anderem ist auch eine Adressbuchsuche enthalten, die die Evolution-Adressbücher durchsucht, so dass man schnell eine E-Mail an eine bestimmte Person erstellen kann. Das war mir aber zu wenig, denn – kaum zu glauben, aber wahr – es gibt noch andere Kontaktmöglichkeiten außer E-Mails. So habe ich nie die Telefonnummern der Kollegen im Kopf, und deswegen schlage ich die relativ häufig nach.

Zu diesem Zweck gibt es das Panel-Applet »Adressbuchsuche« (contact-lookup-applet). Es fügt eine kleine Suchleiste ins Panel ein und zeigt gefundene Kontakte in einem übersichtlichen Fenster als »Adresskarte« an. Auch von dort aus lassen sich dann leicht Mails erstellen.

Aber ich bin kein großer Freund von Suchleisten im Panel, die nehmen mir zu viel Platz weg, dafür dass sie doch nur einem sehr eingegrenzten Zweck dienen. Daher dachte ich mir, es wäre ganz hübsch, die Funktionalität der Adressbuchsuche (und vor allem die Ergebnisdarstellung) in der Deskbar zu haben. Da das ja ein begrenzt komplexes Unterfangen ist, habe ich es einfach zu meiner Abendbeschäftigung erklärt. Und nun ist es langsam fertig, die Adressbuchsuche in der Deskbar:





Da das contact-lookup-applet in C geschrieben ist, die Deskbar aber in Python, habe ich den Dialog nach Python portiert. Daher wird das Paket python-gnome2-desktop benötigt, das die Evolution-Anbindung für Python bereitstellt. Ansonsten sollte es für die Installation reichen, das Plugin-Paket in die Pluginliste der Deskbar (zu finden unter »Einstellungen«) zu ziehen.

deskbook.tar.bz2

Viel Spaß damit!

Update 2. Nov. 2009: Unter Karmic gab es ein ein kleines Problemchen mit dem Plugin. Deswegen habe ich eine neue Version hochgeladen, in der der Fehler nicht mehr auftaucht.

Zur Serienreife? Serienbriefe mit LaTeX

, ,

Das Thema Serienbrief bringt mich regelmäßig zur Verzweiflung. OpenOffice.org bietet hier zwar die entsprechenden Funktionen an, aber wirklich reibungslos läuft das bei mir nie. Schon allein eine ODS-Datei mit den Adressen in das Dokument zu laden ist für mich eine Herausforderung.

Außerdem schreibe ich meine Briefe sowieso lieber mit LaTeX. Dort sieht alles ganz schnell so aus, wie es bei einem anständigen Brief sein soll. Also habe ich mich gefragt, ob man mit LaTeX nicht auch Serienbriefe erstellen kann. Und tatsächlich, in der KOMA-Anleitung bin ich fündig geworden. Serienbriefe sind mit scrlttr2 möglich. Allerdings muss man die Adressdaten in einem bestimmten Format haben. Eine Datei mit der Endung .adr soll Einträge in der Form
\adrentry{Name}{Vorname}{Adresse}{Telefon}{F1}{F2}{Kommentar}{Kürzel}

haben. Das ist natürlich eher ungewöhnlich, um nicht zu sagen nervig.

Also habe ich mir ein kleines Skript in Python geschrieben, das eine CSV-Datei in eine adr-Datei umwandeln kann. Dabei kann man die adr-Felder frei aus Feldern in der CSV-Datei zusammensetzen. Oftmals wird man z.B. die Adresse in einzelnen Feldern vorliegen haben, z.B. Straße, PLZ und Ort.

Das Skript gibt’s hier: addressify.py

Ein Aufruf könnte z.B. so aussehen:
python addressify.py -m 'Name=$Nachname' -m 'Vorname=$Vorname' -m 'Adresse=$Strasse\\$PLZ $Ort' -m 'F1=$Geschlecht' -o 'adressen.adr' adressen.csv

Nun hat man eine passende Datei, also steht dem Serienbrief nichts mehr im Weg. Der könnte z.B. so aussehen:

\documentclass[DIN]{scrlttr2}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{mathpazo}

\begin{document}
\newcommand{\Anrede}{}
\renewcommand*{\adrentry}[8]{%
    \if #5w \renewcommand{\Anrede}{Frau} \fi
    \if #5m \renewcommand{\Anrede}{Herrn} \fi
    \begin{letter}{\Anrede\\#2 #1\\#3}
        \if #5w \opening{Sehr geehrte Frau #1,} \fi
        \if #5m \opening{Sehr geehrter Herr #1,} \fi

        Serienbriefe mit \LaTeX{} sind nicht schwer zu realisieren.

        \closing{Mit freundlichen Grüßen,}
    \end{letter}
}

\input{adressen.adr}
\end{document}


Für meine Zwecke reicht das erst einmal, endlich ein verlässlicher Weg, einfache Serienbriefe zu schreiben. Raum für Optimierungen gibt es sicherlich noch, aber das überlasse ich, wie man so schön sagt, dem Leser als Übung.

LaTeX, Zotero und gedit

, , , ...

In der Tat, Zotero hat mich weitgehend überzeugt. Es ist ein recht brauchbares Literaturverwaltungsprogramm, vor allem aber wird es aktiv weiterentwickelt und von etablierten Institutionen unterstützt. Damit ist es eine recht zukunftssichere Wahl, schließlich will ich nicht alles halbe Jahr meine Literaturdatenbank umziehen.

Die Integration in OpenOffice.org ist außerdem wirklich gut. Nur schreibe ich eigentlich lieber mit LaTeX, und hier bietet Zotero von Haus aus keine Unterstützung. Aber gedit, mit dem LaTeX-Plugin mein favorisierter LaTeX-Editor, hat ja eine schöne Python-Plugin-API. Also kann man ja mal versuchen, ein gedit-Plugin für die Zotero-Einbindung zu schreiben…

Read more...

First impressions of AVG

, , , ...

Recently, I discovered AVG (Ain't Vector Graphics). AVG is a platform for developing interactive multimedia applications, e.g. for exhibitions or showrooms. Since a friend of mine told me that he was searching for an open alternative to Macromedia Director, I took a look. And being an SVG enthusiast for quite a while, I was interested in what one could achieve using AVG that one couldn't with SVG and vice versa.

Read more...

Genesis gets you started with SyncEvolution

, , , ...

SyncEvolution isn't actually hard to configure. But it requires the creation of a specific directory structure (unter ~/.sync4j) and the manual editing of configuration files. This is somewhat a hurdle for less tech-savvy users when getting started with SyncEvolution. (It also took me some time before I decided to use SyncEvolution because I found that config-file stuff not very appealing.) Genesis 0.2 is an attempt to change that. It now includes a configuration wizard that helps you create your initial setup.

Read more...

Genesis – A Graphical Frontend for SyncEvolution

, , , ...

I have recently started to use SyncEvolution. This is a commandline driven SyncML client that allows you to synchronize your Evolution data (appointments, addresses, tasks) with a SyncML server like Scheduleworld. I like this concept, because it is based on open standards and free software, and I think this is a better approach than the proprientary client APIs that, for example, Google provides.

Now it's relatively easy to set up and use syncevolution. You have to edit some config files, but they are well documented and easy to understand. And you have to execute a simple command to perform the actual synchronization. Plus, you get detailed information about the actual process. But I mostly don't need that much information (except in the case of failure), and I don't want to open up a terminal every time I sync my data. So I decided to write a simple, small GUI in PyGTK.

Read more...

Check online status with DBUS

,

One of the advantages of NetworkManager is that it's accessible via DBUS. So if your application relies on a network connection, you can easily check the online status before running into problems.

A simple python example that might be sufficient for many applications:

import dbus

NM_STATE_UNKNOWN = 0
NM_STATE_ASLEEP = 1
NM_STATE_CONNECTING = 2
NM_STATE_CONNECTED = 3
NM_STATE_DISCONNECTED = 4

bus = dbus.SystemBus()
nm = bus.get_object('org.freedesktop.NetworkManager',
        '/org/freedesktop/NetworkManager')
if nm.state() == NM_STATE_CONNECTED:
    print 'Network available!'

December 2009
M T W T F S S
November 2009January 2010
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31