Exemplo n.º 1
0
 def _time_change(self, *args, **kwargs):
     try:
         Reminder._parse_hours_minutes(self.time.get())
         self.time_entry.entry.config(bg=self.time_entry_background_default)
     except ValueError:
         self.time_entry.entry.config(bg='salmon1')
     self._edited(True)
Exemplo n.º 2
0
    def Open(self, *args, **kwargs):
        if not exists(CONFIG_DIR):
            makedirs(CONFIG_DIR)
        file_path = askopenfilename(initialdir=CONFIG_DIR)
        if not file_path:
            return

        try:
            reminder = Reminder.parse_file(file_path)
        except Exception as e:
            tkMessageBox.showerror("Open file", e)
            return

        self.message_entry.delete(1.0, END)
        self.message_entry.insert(1.0, reminder.text, 'center-tag')

        if self.use_24hr_format.get():
            self.time.set(reminder.time.strftime('%H:%M'))
        else:
            self.time.set(reminder.time.strftime('%I:%M %p'))

        self.day_chooser.selection_clear(0, END)
        for day in reminder.days:
            self.day_chooser.selection_set(DAYS.index(day.capitalize()))

        self.font_name.set(reminder.font[0])
        self.font_size.set(reminder.font[1])

        self.warning_time.set(str(reminder.warn))

        self._current_file = file_path
        self.wm_title("Alarm Builder: %s" % self._current_file)

        self._edited(False)
Exemplo n.º 3
0
 def add_reminder(self, start_time, days, end_time=None, interval=None):
     id = len(self.reminders)
     self.reminders[id] = Reminder(self.name,
                                   start_time,
                                   days,
                                   id,
                                   updated=True,
                                   end_time=end_time,
                                   interval=interval)
Exemplo n.º 4
0
    def _seconds_to_next_reminder(self, alarm, days_offset=0):
        now = datetime.datetime.now()
        reminder = alarm['reminder']

        warning_minutes = datetime.timedelta(minutes=reminder.warn)
        days_offset = datetime.timedelta(days=days_offset)
        target_time = (reminder.time - warning_minutes) + days_offset
        target_time = target_time
        current_time = Reminder.make_time().replace(second=now.second)

        return (target_time - current_time).total_seconds()
Exemplo n.º 5
0
    def Save(self, *args, **kwargs):
        if not self._current_file:
            self.Save_as()
            return

        time = Reminder._parse_hours_minutes(self.time.get())

        selection = map(int, self.day_chooser.curselection())
        days = [self.day_chooser.get(day) for day in selection]

        text = self.message_entry.get(1.0, END)
        warn = int(self.warning_time.get())
        font = (self.font_name.get(), int(self.font_size.get()))

        if not days:
            tkMessageBox.showerror(
                "Save file", "Can not save without at least 1 day selected")
            return

        reminder = Reminder.Reminder(time, days, text, warn, font)
        Reminder.serialize_file(reminder, self._current_file)

        self._edited(False)
Exemplo n.º 6
0
    def reload_configs(self):
        now = datetime.datetime.now()

        # grab all the config files
        files = [
            join(self.config_dir, f) for f in listdir(self.config_dir)
            if isfile(join(self.config_dir, f))
        ]

        for path in files:
            checksum = self._file_checksum(path)

            old_alarm = self.alarms.get(path)
            if old_alarm:
                # skip unchanged alarm files
                # TODO: Maybe this should be last access time, it would be cheaper
                if old_alarm['checksum'] == checksum:
                    continue

                # otherwise it changed and we need to unschedule to old alarm
                try:
                    self.cancel(old_alarm['event'])
                except ValueError as e:
                    # the event is already out of the queue (already ran)
                    pass

            reminder = Reminder.parse_file(path)

            alarm = dict(checksum=checksum,
                         reminder=reminder,
                         event=None,
                         path=path)

            alarm['event'] = self.schedule(alarm, False)

            self.alarms[path] = alarm

        # reload every n minutes
        self.enter(60 * self.reload_after_minutes, 1, self.reload_configs, ())
Exemplo n.º 7
0
        if not self.out_of_time:
            delta = reminder.time - datetime.datetime.now()
            delta = delta - datetime.timedelta(microseconds=delta.microseconds,
                                               days=delta.days)

            if delta.total_seconds() > 0:
                countdown_str = str(delta)
            else:
                self.out_of_time = True

            color = None
            if delta.total_seconds() < 300:
                # < 5 minutes
                color = map_yellow_to_red(float(delta.total_seconds() / 300.0))
                for element in (self.time_frame, self.time_label,
                                self.countdown_label, self.button_frame):
                    element.config(bg=color)
                for element in (self.time_label, self.countdown_label):
                    element.config(fg='black')

        self.countdown_str.set(countdown_str + " Left")
        self.time_str.set(strftime("%I:%M:%S %p"))

        self.after(100, self.update)


if __name__ == "__main__":
    reminder = Reminder.parse_file(argv[1])
    root = SuperReminder(reminder)
    root.mainloop()
Exemplo n.º 8
0
import Reminder
from win10toast import ToastNotifier


class Notification(Reminder.Say):
    def __init__(self):
        Reminder.Say.__init__(self)
        self.toast = ToastNotifier()

    def run(self, args=None):
        self.toast.show_toast(self.name, self.message, threaded=True)


class NotificationsFunct(Reminder.ReminderFunct):
    def __init__(self):
        Reminder.ReminderFunct.__init__(self)
        self.action = Notification()


heck = Reminder.Reminders()
Reminder.thing.Funct = NotificationsFunct
Reminder.thing.config = Reminder.getConfig("notifications.conf")
heck.start()