Das deutsche Python-Forum Foren-Übersicht Das deutsche Python-Forum
Diskussionen rund um die Programmiersprache Python
 
 FAQFAQ   SuchenSuchen MitgliederlisteMitgliederliste BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 Wiki FAQWiki FAQ WikiWiki ImpressumImpressum
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

simple reminder
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche Python-Forum Foren-Übersicht -> Showcase
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
nkoehring
User


Anmeldungsdatum: 07.02.2007
Beiträge: 543
Wohnort: naehe Halle/Saale

BeitragVerfasst am: Di Jan 08, 2008 04:10    Titel: simple reminder Antworten mit Zitat

Hallo,

ja ich weiß... es gibt sowas schon zu Hauf. Aber ich habe mich trotzdem rangesetzt und heute einen "Reminder" geschrieben, also ein Programm das kleine "Notizzettelchen" auf den Desktop packt, wenn etwas ansteht.

Ich habe es gerade soweit das es benutzbar ist. Eintraege sind erstell- und loeschbar, aber noch nicht editierbar. Es muss im Moment noch mindestens ein Eintrag vorhanden sein, damit das Programm ueberhaupt startet (dieser wird Anfangs automatisch erstellt, wenn noch keine Datenbank vorliegt). Die Eintraege selbst sind in gepickleter Form unter <HEIMVERZEICHNISS>\.reminderdb zu finden. Bisher lese ich nur die Umgebungsvariablen von Windows aus, Linux werde ich morgen oder so nachtragen.

Entwickelt mit Python 2.5.1 und wxPython 2.8

Alles weitere sollte schnell rauszufinden sein, indem man das Programm einfach mal ausfuehrt Wink

Bitteschoen (v0.2.5 development snap vom 10.01.2008):
http://paste.pocoo.org/show/20403/


Gruesse
NKoehring

PS: Ich bitte wie immer um Kritik und Verbesserungsvorschlaege Wink
_________________
~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2


Zuletzt bearbeitet von nkoehring am Do Jan 10, 2008 06:48, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Leonidas
Administrator


Anmeldungsdatum: 20.06.2003
Beiträge: 13442

BeitragVerfasst am: Di Jan 08, 2008 09:49    Titel: Antworten mit Zitat

Komisch, ich dachte Windows hat so etwas wie ``%HOME%``, so dass man nicht den Pfad selbst zusammensetzen muss.
_________________
My god, it's full of CARs!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nkoehring
User


Anmeldungsdatum: 07.02.2007
Beiträge: 543
Wohnort: naehe Halle/Saale

BeitragVerfasst am: Di Jan 08, 2008 10:02    Titel: Antworten mit Zitat

Leonidas hat folgendes geschrieben:
Komisch, ich dachte Windows hat so etwas wie ``%HOME%``, so dass man nicht den Pfad selbst zusammensetzen muss.
Also wenn, dann steht es nicht in os.environ Sad
_________________
~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
mkesper
User


Anmeldungsdatum: 20.11.2006
Beiträge: 547
Wohnort: formerly known as mkallas

BeitragVerfasst am: Di Jan 08, 2008 10:50    Titel: Antworten mit Zitat

Code: (Python)
1
if  now() >= date-daysbefore and now() <= date:

date-daysbefore wirkt für mich wie ein Name.

Code: (Python)
1
self.date = date[:4]+'-'+date[4:6]+'-'+date[6:]+" ("+tage+")"

finde ich so übersichtlicher:
Code: (Python)
1
self.date = '%s-%s-%s (%s)' % (date[:4], date[4:6], date[6:], tage)

ansonsten fände ich auch hier Leerzeichen hilfreich.
_________________
Ich liebe Freie Software!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Leonidas
Administrator


Anmeldungsdatum: 20.06.2003
Beiträge: 13442

BeitragVerfasst am: Di Jan 08, 2008 10:58    Titel: Antworten mit Zitat

nkoehring hat folgendes geschrieben:
Also wenn, dann steht es nicht in os.environ Sad

Du kannst ``os.path.expanduser('~/pfad')`` verwenden.
_________________
My god, it's full of CARs!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nkoehring
User


Anmeldungsdatum: 07.02.2007
Beiträge: 543
Wohnort: naehe Halle/Saale

BeitragVerfasst am: Di Jan 08, 2008 11:35    Titel: Antworten mit Zitat

Leonidas hat folgendes geschrieben:
Du kannst ``os.path.expanduser('~/pfad')`` verwenden.
Oh, das ist natuerlich besser, danke Leonidas Smile


mkallas hat folgendes geschrieben:
Code: (Python)
1
if  now() >= date-daysbefore and now() <= date:

date-daysbefore wirkt f�r mich wie ein Name.
Ja dann zauber ich mal ein paar Leerzeichen dazwischen Embarassed


mkallas hat folgendes geschrieben:
Code: (Python)
1
self.date = date[:4]+'-'+date[4:6]+'-'+date[6:]+" ("+tage+")"

finde ich so �bersichtlicher:
Code: (Python)
1
self.date = '%s-%s-%s (%s)' % (date[:4], date[4:6], date[6:], tage)

ansonsten f�nde ich auch hier Leerzeichen hilfreich.
Weißt du was... das mach ich einfach ganz anders Wink
Code: (Python)
1
2
3
self.date = time.strftime( "%Y-%m-%d", time.strptime(date, "%Y%m%d") )
self.date += " (%s)" %tage
size = wx.Size(self.fullwidth, self.fullheight)


----

Nachher lade ich die aktuelle Version hoch... diese bietet:

  • mehr Konfigurationsmoeglichkeiten (wenn auch noch im Quelltext)
  • ein paar Bugfixes
  • an manchen Stellen etwas schoeneren Code Wink


Gruß
NKoehring
_________________
~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nkoehring
User


Anmeldungsdatum: 07.02.2007
Beiträge: 543
Wohnort: naehe Halle/Saale

BeitragVerfasst am: Di Jan 08, 2008 14:25    Titel: Antworten mit Zitat

Ehm... ich wuerde gern vernuenftig mit dem Datum rechnen... ich koennte schwoeren, es gab hier dazu mal was im Forum, aber ich find es gerade nicht.

Gibt es ein Modul, dass vernuenftige Moeglichkeiten bietet, mit Daten zu rechnen?
Also zB "2008-01-03" - 5 Tage = "2007-12-29" ...
_________________
~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
mkesper
User


Anmeldungsdatum: 20.11.2006
Beiträge: 547
Wohnort: formerly known as mkallas

BeitragVerfasst am: Di Jan 08, 2008 14:50    Titel: Antworten mit Zitat

nkoehring hat folgendes geschrieben:
Gibt es ein Modul, dass vernuenftige Moeglichkeiten bietet, mit Daten zu rechnen?

Vielleicht datetime.timedelta() ?
_________________
Ich liebe Freie Software!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nkoehring
User


Anmeldungsdatum: 07.02.2007
Beiträge: 543
Wohnort: naehe Halle/Saale

BeitragVerfasst am: Di Jan 08, 2008 15:22    Titel: Antworten mit Zitat

Ah das ist genau was ich brauche! Danke mkallas Very Happy
_________________
~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Y0Gi
User


Anmeldungsdatum: 22.09.2006
Beiträge: 1454
Wohnort: ja

BeitragVerfasst am: Di Jan 08, 2008 15:32    Titel: Antworten mit Zitat

timedelta ist 'ne feine Sache, ja. Hätte ich gern (mitsamt Python) vor vielen Jahren schon gehabt Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
birkenfeld
Administrator


Anmeldungsdatum: 20.03.2006
Beiträge: 1592
Wohnort: Die aufstrebende Universitätsstadt bei München

BeitragVerfasst am: Di Jan 08, 2008 17:43    Titel: Antworten mit Zitat

Leonidas hat folgendes geschrieben:
Komisch, ich dachte Windows hat so etwas wie ``%HOME%``, so dass man nicht den Pfad selbst zusammensetzen muss.


Evl. %USERPROFILE%?
_________________
Lieber Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nkoehring
User


Anmeldungsdatum: 07.02.2007
Beiträge: 543
Wohnort: naehe Halle/Saale

BeitragVerfasst am: Di Jan 08, 2008 21:50    Titel: Antworten mit Zitat

birkenfeld hat folgendes geschrieben:
Leonidas hat folgendes geschrieben:
Komisch, ich dachte Windows hat so etwas wie ``%HOME%``, so dass man nicht den Pfad selbst zusammensetzen muss.


Evl. %USERPROFILE%?


Hallo birkenfeld,

ja diese Umgebungsvariable gibt es - jedenfalls in Vista.


Ansonsten hier noch eine Aktualisierte Version des Reminders

Gruß
NKoehring
_________________
~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nkoehring
User


Anmeldungsdatum: 07.02.2007
Beiträge: 543
Wohnort: naehe Halle/Saale

BeitragVerfasst am: Mi Jan 09, 2008 06:41    Titel: TADA! Antworten mit Zitat

Nach vielen Stunden des Programmierens moechte ich nun hier die Freigabe des Reminders v0.2 kund tun!

http://paste.pocoo.org/show/20242/



Edit: Hab ich doch glatt vergessen, den Auto-Refresh einzubauen. Embarassed
Wer dieses Feature schon jetzt haben und testen moechte, muss nur die Klasse App ersetzen:

Code: (Python)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
class App(wx.App):
    def OnInit(self):
        self.SetAppName("Reminder")
       
        # auto refresh
       
self.refresh_timer = wx.Timer()
        self.Bind(wx.EVT_TIMER, self.auto_refresh)
        self.refresh_timer.Start(600000)
       
        # this is needed for quick identification of the current selected note
        # the frame sets it after the mouse entered it
        # then it become a dictionary like
        # {"date": 20080110, "id": 0, "note": "foo and bar...", "daysbefore": 7}
       
self.current_note = None
       
self.note_frames = list()
       
        # we need IDs for the context menu
        # new note, edit note, delete note, exit program
       
self.menu_ids = dict()
        self.menu_ids["new"] = wx.NewId()
        self.menu_ids["edit"] = wx.NewId()
        self.menu_ids["delete"] = wx.NewId()
        self.menu_ids["refresh"] = wx.NewId()
        self.menu_ids["exit"] = wx.NewId()
        self.menu = wx.Menu()
        self.menu.Append(self.menu_ids["new"], "New Note")
        self.menu.Append(self.menu_ids["edit"], "Edit Note")
        self.menu.Append(self.menu_ids["delete"], "Delete Note")
        self.menu.AppendSeparator()
        self.menu.Append(self.menu_ids["refresh"], "Recreate All")
        self.menu.Append(self.menu_ids["exit"], "Exit Program")
       
        self.menu.Bind(wx.EVT_MENU, self.on_click_menu)
       
        return True
       
   
def on_click_menu(self, evt):
        id = evt.GetId()
        if id == self.menu_ids["new"]:
            NoteCreateFrame().Show()
           
        elif id == self.menu_ids["edit"]:
            NoteEditFrame(self.current_note).Show()
           
        elif id == self.menu_ids["delete"]:
            ident = self.current_note.ident
            date = int( ident["date"].isoformat().replace("-", "") )
            reminders.delete_note(date, ident["id"])
            self.full_refresh()
           
        elif id == self.menu_ids["refresh"]:
            self.full_refresh()
           
        elif id == self.menu_ids["exit"]: self.ExitMainLoop()
           
    def auto_refresh(self, evt):
        """ triggers a full refresh if the day has changed """
       
print "autorefreshing..."
       
if hasattr(self, "last_date"):
            if self.last_date != now(): self.full_refresh()
               
        self.last_date = now()
           
    def full_refresh(self):
        """ a full refresh means: close, delete and rebuild all frames """
       
for frame in self.note_frames: frame.Close()
        self.note_frames = list()
        self.current_note = None
       
reminders.create_frames()

_________________
~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Andy
User


Anmeldungsdatum: 01.01.2006
Beiträge: 196
Wohnort: aus dem hohen Norden....

BeitragVerfasst am: Mi Jan 09, 2008 20:05    Titel: Antworten mit Zitat

Hallo nkoehring,

hab´s mal unter XP laufen lassen. Ich kann Deinen Reminder fast gar nicht sehen. Es ist etwa die Hälfte des Datums zu sehen. Habe mal als Test die Taskleisten-Fixierung bei mir aufgehoben. Das hat nicht´s gebracht. Aber es öffnet sich vollständig wenn ich mit der Maus drübersteuer.

Sieht soweit ganz gut aus. Obwohl ich Transparenz lieber mag.

Hab mit der neuen App getestet.

Gruß Andy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nkoehring
User


Anmeldungsdatum: 07.02.2007
Beiträge: 543
Wohnort: naehe Halle/Saale

BeitragVerfasst am: Mi Jan 09, 2008 21:35    Titel: Antworten mit Zitat

Hi Andy,

ja das Problem was du hast fand ich auch erst bei nem Bekannten. Ich hatte naemlich nicht bedacht, dass manche Leute die Taskleiste ja *nicht* automatisch in den Hintergrund rutschen lassen...

Stellst du sie also auf "automatisch im Hintergrund", dann passt das schon. Freilich ist das nicht die optimale Loesung... aber mit ein bissl Gedult und Fantasie kriege ich das schon hin Wink

Danke jedenfalls fuer deine Nachricht.

Gruß
NKoehring
_________________
~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche Python-Forum Foren-Übersicht -> Showcase Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
using CodeBB 1.1