Developer92
Anmeldungsdatum: 31. Dezember 2008
Beiträge: 4101
|
Hallo, ich habe mir vorgenommen endlich ein kleines PMS zu schreiben. Ich hab ein paar Projekte die immer parallel laufen und wollte eigentlich nur ein kleines Tool um die Projekte auf grundlegendster Ebene zu verwalten. Sprich neues Projekt anlegen, Projekt exportieren/importieren, Projekt klonen, Backup erzeugen und aus Backup wiederherstellen sowie den Punkt Projekt löschen mit automatischem Backup und export (Nicht dass man das Projekt später nochmal braucht). Jedenfalls, die Oberfläche steht im Gesamtkonzept schon nur an der Programmierung hakts. Ich würde die GUI gerne mit Glade realisieren und den Unterbau mit Python. Im Anhang mal das aktuelle Projekt (Einfach die pms.py ausführen und fertig) Wäre schön wenn mir jemand helfen könnte das Projekt zu vervollständigen. Ich denke wir sollten die Probleme mal der Reihe angehen: Es fängt schon mal damit an, dass ich die Pfade (path, backuppath und projectpath) leider als Hardlinks gestalten muss. Ich hätte aber gerne einen relativen Pfad. Also Sprich statt /home/florian/ einfach ~/. Python hat leider rumgezickt und ~ als Ordnernamen angesehen. Leider. Ausserdem ist das nächste was ich brauche auf der linken Seite der GUI wo "Projekte" steht eine Übersicht über alle Projekte. Dass ist eigentlich einfach zu realisieren: Ich hab nen projectpath und darin sind Ordner. Das sind meine Projekte. Und Ordnernamen == Projektnamen. Wie gesagt, wäre schön wenn mir hier jemand helfen könnte. mfg
- PMS_2010_12_26.zip (3.8 KiB)
- Download PMS_2010_12_26.zip
|
BodomBeachTerror
Anmeldungsdatum: 24. März 2008
Beiträge: 788
|
Der Download geht bei mir gar nicht. In Python kann man den Home Pfad eigentlich ganz einfach rausebkommen. EInfach mal bisschen google und die Dokumentation bemühen 😉 | homedir = os.path.expanduser('~')
|
Des weiteren sollte man den Projekte Pfad vom Anwender festlegen lassen.
|
Developer92
(Themenstarter)
Anmeldungsdatum: 31. Dezember 2008
Beiträge: 4101
|
BodomBeachTerror schrieb: Der Download geht bei mir gar nicht. In Python kann man den Home Pfad eigentlich ganz einfach rausebkommen. EInfach mal bisschen google und die Dokumentation bemühen 😉 | homedir = os.path.expanduser('~')
|
Des weiteren sollte man den Projekte Pfad vom Anwender festlegen lassen.
Hab vorhin noch ne andre Datei hochgeladen. Evtl. kannst du sie ja jetz downloaden. Google bemühe ich im übrigen ständig und guck mir auch oft die Doku an, aber manchmal findet man einfach nicht was man will. Auf jeden Fall danke. Dein Tipp wurde soeben ins Programm integriert ☺ mfg
|
BodomBeachTerror
Anmeldungsdatum: 24. März 2008
Beiträge: 788
|
In python gibt es ein logging modul → http://docs.python.org/library/logging.html
Es gibt auch einen ConfigParser, der dir hilft config Dateien zu erstellen. → http://docs.python.org/library/configparser.html
|
Developer92
(Themenstarter)
Anmeldungsdatum: 31. Dezember 2008
Beiträge: 4101
|
@BodomBeachTerror: Danke für den Hinweis, aber ich nutze gerne meine eigenen Funktion dafür ☺ So, wieder ein kleiner Schritt: Das Auslesen des Projekt-Verzeichnisses funktioniert nun endlich. Problem: Ich weiß zwar nun welche Projektordner ich habe, allerdings kann ich sie dem Liststore (also der GUI-Oberfläche quasi) noch nicht hinzufügen. Man, den halben Tag damit verbracht bis ich endlich das Verzeichnis auslesen konnte ☺ Naja, mal gucken, evtl. weiß ja jemand wie das geht mfg UPDATE: Liststore Elemente hinzufügen geht jetzt ☺ Mal gucken was ich jetzt weitermache....
|
BodomBeachTerror
Anmeldungsdatum: 24. März 2008
Beiträge: 788
|
Wozu denn? Die Funktionalität ist in den beiden Python Modulen einfach viel besser als in deinen zwei Funktionen. Wenn dein Programm mal komplexer ist, brauchst du denke ich auch ein gutes logging, welches auch in Dateien schreiben kann und sowas. Das musst du alles erst noch nachbauen, aber ist ist schon bei python dabei, also warum nicht benutzen? Oo Auch der Config File, da sind keine Keys dabei und sonst irgendwas, falls man was per Hand ändern will, weiß man gar nicht was was ist. Des weiteren muss man sich bei ConfigParser nicht darum kümmern ob Einstellungen schon vorhanden sind oder nicht, es ist echt hundert mal einfacher, als jetzt selber sowas zu implementieren. Ist shcon klar, man kann dich nciht zwingen, aber ich würde es dir tunlichst empfehlen. Wenn man dazu ne zusätzlich Abhängigkeit hätte, würde ich es sogar verstehen, aber wenn es bei Pyhton eh immer dabei ist.
|
Developer92
(Themenstarter)
Anmeldungsdatum: 31. Dezember 2008
Beiträge: 4101
|
BodomBeachTerror schrieb: Wozu denn? Die Funktionalität ist in den beiden Python Modulen einfach viel besser als in deinen zwei Funktionen. Wenn dein Programm mal komplexer ist, brauchst du denke ich auch ein gutes logging, welches auch in Dateien schreiben kann und sowas. Das musst du alles erst noch nachbauen, aber ist ist schon bei python dabei, also warum nicht benutzen? Oo Auch der Config File, da sind keine Keys dabei und sonst irgendwas, falls man was per Hand ändern will, weiß man gar nicht was was ist. Des weiteren muss man sich bei ConfigParser nicht darum kümmern ob Einstellungen schon vorhanden sind oder nicht, es ist echt hundert mal einfacher, als jetzt selber sowas zu implementieren. Ist shcon klar, man kann dich nciht zwingen, aber ich würde es dir tunlichst empfehlen. Wenn man dazu ne zusätzlich Abhängigkeit hätte, würde ich es sogar verstehen, aber wenn es bei Pyhton eh immer dabei ist.
Da hast eigentlich Recht. Das mit Config kann ich mir ja mal angucken, des wär echt nicht schlecht. Ich hab eh schon überlegt wie man sowas hinbekommt: height 400
width 300
fullscreen no Aber logging-Modul brauch ich wirklich nicht. Die Funktion log() ist für mich nur zum debuggen gedacht. Damit ich sehe wann was passiert und es nachverfolgen kann. Hab damit heute schon erfolgreich einen Fehler aufgedeckt ☺ EDIT: Hat jemand nen Link wie ich bei der GUI nen gescheiten TreeView mit TreeStore hinbekomm?
|
Developer92
(Themenstarter)
Anmeldungsdatum: 31. Dezember 2008
Beiträge: 4101
|
So, neuer Tag neues Problem: Ich wollte gerade den Button "Neues Projekt" funktionsfähig machen. Aber leider fehlanzeige (Im Anhang ein Bild). Das Problem ist, dass er meinen Textbuffer nicht will. Und ohne Textbuffer kann man leider keinen neuen Projektnamen eingeben. Was an sich sch*** ist, denn schließlich sollte man seine Projektnamen schon selbst wählen können ☺ Und hinzufügen kann ich leider auch keinen (Mist!) mfg EDIT: Backup erstellen funktioniert jetzt. Geht jetzt nach dem Prinzip dateiname_YYYY_MM_DD_index.zip (Eigentlich wollt ich ne *.proj-Datei machen, aber zip erschien mir besser)
- Bilder
|
deadtronic
Anmeldungsdatum: 18. Februar 2010
Beiträge: Zähle...
|
TDeveloper schrieb: EDIT: Hat jemand nen Link wie ich bei der GUI nen gescheiten TreeView mit TreeStore hinbekomm?
http://www.pygtk.org/pygtk2tutorial/ch-TreeViewWidget.html
|
Developer92
(Themenstarter)
Anmeldungsdatum: 31. Dezember 2008
Beiträge: 4101
|
deadtronic schrieb: TDeveloper schrieb: EDIT: Hat jemand nen Link wie ich bei der GUI nen gescheiten TreeView mit TreeStore hinbekomm?
http://www.pygtk.org/pygtk2tutorial/ch-TreeViewWidget.html
Wunderbar! Hab den Code leicht abgeändert und funktioniert wunderbar. Muss jetzt nur noch machen, dass er nicht immer das Beispiel reinschreibt sondern auch wirklich die Ordnerliste. mfg
|
Developer92
(Themenstarter)
Anmeldungsdatum: 31. Dezember 2008
Beiträge: 4101
|
Ich hab da mal eine Fragen (eine Antwort wäre echt gut, sonst kann ich nicht weiter machen): Ich klicke bei einem Treeview auf einen Eintrag. Dieser ist nun selektiert. Ich kann jetzt zum Beispiel den Cursor darauf aulesen (z. B. welche Position das selektierte Element in der Liste hat), aber ich müsste den Inhalt des selektierten Elements auslesen. Ich will ja keinen Index sondern wenn ich auf den Eintrag "Ubuntu" klicke, dann will ich auch "Ubuntu" ausgegeben haben. Bzw. ich wills auslesen. Kann mir jemand verraten wie das geht? Das wärs soweit ☺ mfg EDIT: Hab nen kleinen Workaround, der wunderbar funktioniert. Ausserdem sind jetzt drin ein Ordnerfilter (Ordner wie lost+found und .Trash-1000 werden nicht angezeigt) sowie ein Dateifilter (Wenn man zum Beispiel Endungen wie .blend1 oder .blend2 nicht anzeigen lassen möchte)
|
Developer92
(Themenstarter)
Anmeldungsdatum: 31. Dezember 2008
Beiträge: 4101
|
Irgendwie kann ich meinen bereits geschriebenen Beitrag nicht mehr editieren. Deshalb hier nochmal: Hab nen kleinen Workaround, der wunderbar funktioniert. Ausserdem sind jetzt drin ein Ordnerfilter (Ordner wie lost+found und .Trash-1000 werden nicht angezeigt) sowie ein Dateifilter (Wenn man zum Beispiel Endungen wie .blend1 oder .blend2 nicht anzeigen lassen möchte)
|
Developer92
(Themenstarter)
Anmeldungsdatum: 31. Dezember 2008
Beiträge: 4101
|
Neuer Tag, neue Probleme ☺ Hab mich heute mit den Dialogen in GTK beschäftigt ("neues Projekt", "Restore from Backup", braucht ja alles nen Dialog) und festgestellt, dass ich unfähig bin, Dialoge zu erzeugen. Aus Frustration hab ich deshalb den Dialog "neues Projekt" (welcher jetzt Funktionsfähig ist) direkt integriert und brauche deshalb im Moment noch keinen Dialog. Siehe auch angehängtes Bild unten links ☺ mfg EDIT: Backup erzeugen und automatisch in den UbuntuOne-Ordner kopieren geht jetzt auch. Damit kann mans schön online synchronisieren ☺ EDIT: Projekt löschen, Projekt löschen mit Backup sowie Projekt löschen, Backup erzeugen und mit Ubuntu One synchronisieren geht jetzt auch 😀
- Bilder
|
Developer92
(Themenstarter)
Anmeldungsdatum: 31. Dezember 2008
Beiträge: 4101
|
So, wieder ein Post (sorry, aber ich kann nicht jedes mal meinen Post editieren) Das Problem ist folgendes. Wenn ich im Treeview auf einen Eintrag klicke, dann hätte ich gerne den Text des Eintrags übergeben sowie deren Elternelemente. Angenommen ich hab diese Verzeichnisstruktur: Projekt1
--Unterordner
--Datei1.txt
--Datei2.txt
--Unterordner2
--sinnlos.txt
--Readme.txt Ich klicke auf die Datei1.txt. Dann brauche ich entweder den Pfad der Datei (Projekt1/Unterordner/Datei1.txt) oder eben das Element und dessen Elternelemente (z. B. als Array: ["Projekt1", "Unterordner", "Datei1.txt"]. Eben irgendeine Möglichkeit, um aus dem Treeview wieder den Pfad der Datei zu erzeugen. Der ist nämlich nirgends gespeichert. Ist das Möglich (auf einfache Art und Weise?) mfg EDIT: Hab eben nen Filter eingebaut für spezielle Ordner die zum Beispiel auf "-Dateien" enden. Diese Ordner legt zum Beispiel FireFox an, wenn man eine Website speichert. Ausserdem bastle ich noch an Templates um zum Beispiel direkt die Datei für ein Python-Skript anlegen zu lassen. Schließlich sind Programmierer schreibfaul 😉
|
Developer92
(Themenstarter)
Anmeldungsdatum: 31. Dezember 2008
Beiträge: 4101
|
So, wieder kurz was gemacht: Man kann den Projektordner jetzt per Mausklick neu einlesen (könnte ja sein, dass man händisch ein neues Projekt erstellt hat), sowie das aktuell selektierte Projekt mit Nautilus öffnen, d. h. man kann nun an den Dateien rumspielen. mfg
|