[Olpcaustria] XO ImageQuiz Plugin-Architektur

Chris Hager chris at linuxuser.at
Mon Nov 26 23:07:33 CET 2007


Hey Leute!

Ich habe gerade mit der ImageQuiz-Activity in Python begonnen und eine 
Art Plugin-Framework entworfen. Damit das aber nicht in eine falsche 
Richtung läuft, wollte ich euch bitten, einen kurzen Blick darauf zu 
werfen und mir Feedback zu geben.

git clone git://dev.laptop.org/projects/xo-quiz

Relevant ist das Verzeichnis 'ImageQuiz.activity/imagequiz'. Die anderen 
Verzeichnisse für Sugar setze ich gerade auf. Kenne mich auch bei 
Bundles/Sugar noch nicht so toll aus.

Der Code kann mit ./ImageQuiz.py gestartet werden. Es funktioniert aber 
ausser dem Layout und Menü nicht viel, was so gesehen werden kann. 
Allerdings wird das gesamte Menü durch die Plugins aufgebaut, und die 
Buttons verlinken auf Plugin-Funktionen.

Eigentlich ist gedacht, fast alles als Plugins zu machen, auch die 
Single- und Multiplayer Modis. In backend.py gibts die Klasse 
PluginManager, in main.py geladen als plugger. Diese lädt alle .py-Files 
aus plugins/, welche nicht mit '_' beginnen.

Im Prinzip läufts so:
- in main.py wird eine Klasse 'Services' erzeugt
- in diese Klasse werden die Funktionen für die Plugins eingehängt (zB: 
Services.db_query = backend.db.query)
- die Services-Klasse wird dann in die einzelnen Plugins als 
__SERVICES__ eingehängt
- und die Plugins können so auf die verfügbaren Funktionen zugreifen (r 
= __SERVICES__.db_query("WHERE..."))

Eigentlich funktioniert es so total gut. Die Frage ist allerdings, ob es 
effizient genug ist, total katastrophal, oder halt wo dazwischen. Kann 
man das so machen; ist das gut so; wie ginge es besser?

Besten Dank und liebe Grüße,
Chris




More information about the Olpcaustria mailing list