gpyconf - ein Konfigurationsfenster-Generator

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Dann will ich doch auch mal was vorstellen.

gpyconf ist ein Tool, welches aus deklarativer Syntax (ähnlich djangos Models) GTK-Konfigurationsfenster generiert und das komplette Konfig-Management handelt.

Nagut, Code sagt mehr als 1000 Worte, oder wie war das ;)

Code: Alles auswählen

#!/usr/bin/env python
import gpyconf

class EmailSettings(gpyconf.Configuration):
    backend_kwargs = dict(file='email_settings.ini')
    imap = gpyconf.fields.CharField('IMAP server address')
    smtp = gpyconf.fields.CharField('SMTP server address')
    user = gpyconf.fields.CharField('Username for those servers')
    password = gpyconf.fields.PasswordField('Password')
    use_ssl = gpyconf.fields.BooleanField('Use SSL/TLS (recommended)')
    inbox_update = gpyconf.fields.IntegerField('Inbox updating cycle (in minutes)')

config = EmailSettings()
config.show_window()
(Beispiel von der Homepage)

Würde resultieren in:
Bild

Edit: Weiteres Beispiel für ein Fenster (da das obere hässlich ist (wobei, das hier ist auch nicht gerade besser)):
Bild

Benutzt man jetzt `ConfigParser` als Backend, würde die Konfigurationsdatei nach einem Speichern mit den im Bild eingestellten Werte so aussehen:

Code: Alles auswählen

[default]
smtp = smtp.myprovider.tld
user = myusername
inbox_update = 10
use_ssl = 1
password = bXlwYXNzd29yZA==
imap = imap.myprovider.tld
Frontend sowie Backend sind austauschbar, es existieren Base-Klasse, die vererbt werden können.

Das erzeugte Fenster ist z.Zt. noch grottig, was daran liegt, dass ich einfach kein Auge für sowas habe.

Wer sich das Zeugs mal ansehen will:
Feedback aller Art erwünscht :)
Zuletzt geändert von Dauerbaustelle am Montag 16. Februar 2009, 21:27, insgesamt 1-mal geändert.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Nicht alle auf einmal!
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Hallo Dauerbaustelle,

ich hatte und habe Schwierigkeiten zu erkennen, worauf Deine Anwendung abzielt.
Configdaten lesen, generieren, verwalten oder alles? Können die Applikationen darauf zugreifen? Ist mir alles nicht so klar.
Auch mit django Models kann ich erst mal nicht so viel anfangen.

Vielleicht bin ich aber auch nur nicht smart genug.

MfG

/Hendrik
Benutzeravatar
helduel
User
Beiträge: 300
Registriert: Montag 23. Juli 2007, 14:05
Wohnort: Laupheim

Moin,

sieht ganz nett aus. Kann ich einem Feld auch einen Validator mitgeben, um die User-Eingaben zu prüfen?

Gruß,
Manuel
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

helduel hat geschrieben:sieht ganz nett aus. Kann ich einem Feld auch einen Validator mitgeben, um die User-Eingaben zu prüfen?
Die Eingaben werden bereits durch eine Validator-Funktion gejagt. Solltest du aber irgendwelche exotischen Wünsche haben, baust du dir einfach dein eigenes Feld zusammen, indem du zB von `CharField` erbst und die `validated_value`-Funktion überschreibst. In diesem Beispiel (`CharField`) sieht die Validator-Funktion so aus:

Code: Alles auswählen

def validated_value(self, value):
    try:
        return self.use_float_or_int(value)
        # (use_float_or_int schaut einfach nur, ob float nötig ist,
        # ansonsten nimmt es int, wenn nicht kompatibel
        # schmeißt es einen ValueError)
    except ValueError:
        self.validation_error(value)
hendrikS: gpyconf handelt alles: Konfigurations-Speichern, Konfigurationsdialoge in GTK und die Verbindung dazwischen. Du erstellst eine Klasse mit den Konfigurationsoptionen (und -typen) und alles andere wird automatisch generiert. Schau dich doch einfach mal im "tests"-Ordner um, neu dazu gekommen ist "pyroom.remake.py", wo ich mal versucht habe, den Konfigurationsdialog von PyRoom nachzubauen (Schönheitsfehler werden noch ausgemerzt). Oder schau dich auf der Seite die oben verlinkt ist um :)
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

das layout schaut bissi komisch aus. sollte schon alles schoen justiert sein.
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

name hat geschrieben:das layout schaut bissi komisch aus. sollte schon alles schoen justiert sein.
Ja, dazu bin ich allerdings zu doof/ungeschickt/unkreativ...
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Ich denke, wenn du mit einer Tabelle layouten würdest, so dass alle Inputboxen unter einander sitzen, würde es schon besser aussehen.
Musst halt mal testen.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Joa, werd mich da wohl mal ranmachen.

Hab jetzt auch mal den Screenshot im ersten Beitrag ergänzt. Noch einen anderen gibts auch noch auf der gpyconf-Seite.

Weiteres Feedback höre ich gerne :)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

GTK+ hat ein ziemlich angenehm zu nutzenden Layout-Manager in dem man Elemente quasi an einem Grid justiert, gtk.Table.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten