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.
Wer dieses Feature schon jetzt haben und testen moechte, muss nur die Klasse
App ersetzen:
Code:
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()