Nautilus-Erweiterung mit Python

Heute gab es bei mir ja schon eine Explorer-Erweiterung mit Python. Das gleiche benötige ich auch am heimischen Rechner – nur unter Nautilus:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib
import easygui
import logging
import nautilus
import os
CCDFOLDERS = [
'source',
'bin',
'build',
'lib',
'resource',
]
class CcdDirStructureExtension(nautilus.MenuProvider):
def __init__(self):
pass
def _alertError(self, message):
easygui.msgbox(message, title='Alert', ok_button='Mist!')
def _create_ccd_structure(self, foldername):
ok = easygui.ynbox(msg=u'wirklich eine CCD-Struktur ersellen in\n' + foldername,
title=u'Erstellen bestägen', choices=('Ja, bitte', 'Nein, danke'))
if ok == 0:
return
if not os.path.isdir(foldername):
self._alertError(foldername + u'\nist kein Verzeichnis. Abgebrochen.')
return
try:
for ccd in CCDFOLDERS:
dir = os.path.join(foldername, ccd)
os.mkdir(dir)
except Exception, e:
self._alertError(e)
raise
def menu_activate(self, menu, file):
"""Called when the user selects the menu."""
filename = urllib.unquote(file.get_uri()[7:])
self._create_ccd_structure(filename)
def get_file_items(self, window, files):
"""Called when the user selects a file in Nautilus."""
if len(files) != 1:
return
file = files[0]
if not file.is_directory() or file.get_uri_scheme() != 'file':
return
return self._get_MenuItemForFile(file)
def get_background_items(self, window, file):
"""Called when the user clicks the background of a Nautilus-Window"""
if not file.is_directory() or file.get_uri_scheme() != 'file':
return
return self._get_MenuItemForFile(file)
def _get_MenuItemForFile(self, file):
item = nautilus.MenuItem("NautilusPython::ccd-dir::create",
"CCD-Struktur",
"erstellt eine CCD-Verzeichnisstruktur in %s" % file.get_name())
item.connect("activate", self.menu_activate, file)
return item,
if __name__ == '__main__':
print 'This is a Nautilus extenion. Copy it to ${HOME}/.nautilus/python-extensions/ and restart Nautilus. Have fun.'

Der Code gehört bei Installierten Nautilus-Python-Bindings nach ${HOME}/.nautilus/python‑extensions/ und sollte ausführbar sein (chmod 755).
Die Dialoge werden von EasyGui erstellt, irgendwie gab es Probleme gtk-Dialoge zu erzeugen