Hier stelle ich euch einen Python IMAP Client vor.
Es ist keineswegs ein vollwertiger Client. Ihr könnt ihn gerne benutzen um euch ein paar Sachen abzuschauen oder auch darüber zu nörgeln.
PythIMAP wurde innerhalb einer Woche von 3 StudentInnen erstellt.
Das Model View Controller Pattern wurde angewendet.
Trolltechs QT wurde verwendet.
Bisher schäme ich mich noch nicht für den Code, aber man sollte erwähnen, dass wir zu dem Zeitpunkt erst vier Vorlesungen zu Python hatten. Benutzung also auf eigene Gefahr. Bei manchen Funktionen nutzen wir leider mehr Python Code als nötig. IMAP selbst bringt schon super Schnittstellen (z.B. zum Suchen) mit.
Features:
* Ordnerinhalt darstellen
* Ordnerlliste darstellen
* Mails lesen
* Ordner de-/abonnieren
* Mail löschen/verschieben
* Statusbar
* Menüleiste
* ...
Screenshots
[Blockierte Grafik: http://torben.bloggt.biz/files/pythimap01.jpg]
[Blockierte Grafik: http://torben.bloggt.biz/files/pythimap02.jpg]
Kompletter Code
easy-coding.de/trac/pythimap
Hier eine kleine Einsicht in die Hauptklassen um sich einen Einblick vom Umfang machen zu können.
Natürlich ist alles selbst geschrieben und OpenSource.
Model
Alles anzeigen
View
Alles anzeigen
Controller
Alles anzeigen
Es ist keineswegs ein vollwertiger Client. Ihr könnt ihn gerne benutzen um euch ein paar Sachen abzuschauen oder auch darüber zu nörgeln.
PythIMAP wurde innerhalb einer Woche von 3 StudentInnen erstellt.
Das Model View Controller Pattern wurde angewendet.
Trolltechs QT wurde verwendet.
Bisher schäme ich mich noch nicht für den Code, aber man sollte erwähnen, dass wir zu dem Zeitpunkt erst vier Vorlesungen zu Python hatten. Benutzung also auf eigene Gefahr. Bei manchen Funktionen nutzen wir leider mehr Python Code als nötig. IMAP selbst bringt schon super Schnittstellen (z.B. zum Suchen) mit.
Features:
* Ordnerinhalt darstellen
* Ordnerlliste darstellen
* Mails lesen

* Ordner de-/abonnieren
* Mail löschen/verschieben
* Statusbar
* Menüleiste
* ...
Screenshots
[Blockierte Grafik: http://torben.bloggt.biz/files/pythimap01.jpg]
[Blockierte Grafik: http://torben.bloggt.biz/files/pythimap02.jpg]
Kompletter Code
easy-coding.de/trac/pythimap
Hier eine kleine Einsicht in die Hauptklassen um sich einen Einblick vom Umfang machen zu können.
Natürlich ist alles selbst geschrieben und OpenSource.
Model
Quellcode
- from imapmodel import *
- from configmodel import *
- from qt import *
- class AppModel(object):
- "Model - Hier finden Zugriffe auf Dateien oder auf Server statt"
- def __init__(self):
- self.config = ConfigModel()
- try:
- self.imap = ImapModel(self.config)
- except:
- self.imap = None
- print "Login nicht erfolgreich"
View
Quellcode
- from qt import *
- from xpmicons import *
- from displayview import *
- from mailsview import *
- from folderview import *
- from searchview import *
- # ... gekuerzt
- class AppView(QApplication):
- "View - hier werden die verarbeiteten Daten dargestellt"
- def __init__(self, ctrl, *args):
- QApplication.__init__(self, *args)
- self.args = args
- self.ctrl = ctrl
- proceed = True
- try:
- self.ctrl.imap.login()
- except:
- self.win = OptionsView(self.ctrl, self)
- proceed = False
- if proceed:
- self.win = MainView(ctrl)
- self.win.show()
- QObject.connect(self, SIGNAL('lastWindowClosed()'), self, SLOT('quit()'))
Controller
Quellcode
- from mailsctl import *
- from displayctl import *
- from configctl import *
- from imapctl import *
- from statusctl import *
- class AppCtrl(object):
- "Controller - hier werden die Daten verarbeitet und an die Ausgabe geschickt"
- def __init__(self, model):
- self.model = model
- self.config = ConfigCtrl(self, model.config)
- self.imap = ImapCtrl(self, model.imap)
- self.status = StatusCtrl(self)
- #Controller fuer die View
- self.folder = FolderCtrl(self)
- self.mails = MailsCtrl(self)
- self.display = DisplayCtrl(self)
- def renew(self):
- self.model.config.renew()
- self.config = ConfigCtrl(self, self.model.config)
- def register_view(self, view):
- AppCtrl.register_view.__init__(self, view)
- self.view = view
- self.view.createActions()
- self.view.createMenus()
- self.view.createToolBar()
- self.view.startup()
- self.status.setText("View geladen")