+ if not self.midnight_set:
+ self.update_at_midnight()
+ self.midnight_set = True
+
+ def update_at_midnight(self):
+ next_day = date.today() + timedelta(days=1)
+ diff = time.mktime(next_day.timetuple()) - time.time()
+ diff = int(diff+5)
+ self.midnight_source_id = gobject.timeout_add_seconds(diff, self.midnight_callback, True)
+
+ def stop_midnight_callback(self):
+ if self.midnight_source_id is not None:
+ gobject.source_remove(self.midnight_source_id)
+
+ def midnight_callback(self, first=False):
+ self.load_values()
+ self.notify()
+ if first:
+ self.midnight_source_id = gobject.timeout_add_seconds(24*3600, self.midnight_callback)
+ return False
+ else:
+ return True
+