def __init__(self, parent=None, fact_date=None, fact_id=None): gobject.GObject.__init__(self) self._gui = load_ui_file("edit_activity.ui") self.window = self.get_widget('custom_fact_window') self.window.set_size_request(600, 200) self.parent, self.fact_id = parent, fact_id #TODO - should somehow hint that time is not welcome here self.activity = widgets.ActivityEntry() self.activity.connect("changed", self.on_activity_changed) self.get_widget("activity_box").add(self.activity) day_start = conf.get("day_start_minutes") self.day_start = dt.time(day_start / 60, day_start % 60) self.date = fact_date if not self.date: self.date = (dt.datetime.now() - dt.timedelta(hours=self.day_start.hour, minutes=self.day_start.minute)).date() self.dayline = widgets.DayLine() self._gui.get_object("day_preview").add(self.dayline) self.activity.grab_focus() if fact_id: fact = runtime.storage.get_fact(fact_id) label = fact.start_time.strftime("%H:%M") if fact.end_time: label += fact.end_time.strftime(" %H:%M") label += " " + fact.serialized_name() with self.activity.handler_block(self.activity.checker): self.activity.set_text(label) self.activity.select_region(len(label) - len(fact.serialized_name()), -1) buf = gtk.TextBuffer() buf.set_text(fact.description or "") self.get_widget('description').set_buffer(buf) self.get_widget("save_button").set_label("gtk-save") self.window.set_title(_("Update activity")) else: self.get_widget("delete_button").set_sensitive(False) self._gui.connect_signals(self) self.validate_fields() self.window.show_all()
def __init__(self, parent=None, fact_date=None, fact_id=None): gtk.Object.__init__(self) self._gui = load_ui_file("edit_activity.ui") self.window = self.get_widget('custom_fact_window') self.parent, self.fact_id = parent, fact_id start_date, end_date = None, None #TODO - should somehow hint that time is not welcome here self.new_name = widgets.ActivityEntry() self.get_widget("activity_box").add(self.new_name) self.new_tags = widgets.TagsEntry() self.get_widget("tags_box").add(self.new_tags) day_start = conf.get("day_start_minutes") self.day_start = dt.time(day_start / 60, day_start % 60) if fact_id: fact = runtime.storage.get_fact(fact_id) label = fact.activity if fact.category != _("Unsorted"): label += "@%s" % fact.category self.new_name.set_text(label) self.new_tags.set_text(", ".join(fact.tags)) start_date = fact.start_time end_date = fact.end_time buf = gtk.TextBuffer() buf.set_text(fact.description or "") self.get_widget('description').set_buffer(buf) self.get_widget("save_button").set_label("gtk-save") self.window.set_title(_("Update activity")) else: self.get_widget("delete_button").set_sensitive(False) # if there is previous activity with end time - attach to it # otherwise let's start at 8am (unless it is today - in that case # we will assume that the user wants to start from this moment) fact_date = fact_date or dt.date.today() last_activity = runtime.storage.get_facts(fact_date) if last_activity and last_activity[-1].end_time: start_date = last_activity[-1].end_time if fact_date != dt.date.today(): end_date = start_date + dt.timedelta(minutes=30) else: if fact_date == dt.date.today(): start_date = dt.datetime.now() else: start_date = dt.datetime(fact_date.year, fact_date.month, fact_date.day, 8) if not end_date: self.get_widget("in_progress").set_active(True) if (dt.datetime.now() - start_date).days == 0: end_date = dt.datetime.now() start_date = start_date or dt.datetime.now() end_date = end_date or start_date + dt.timedelta(minutes=30) self.start_date = widgets.DateInput(start_date) self.get_widget("start_date_placeholder").add(self.start_date) self.start_time = widgets.TimeInput(start_date) self.get_widget("start_time_placeholder").add(self.start_time) self.end_time = widgets.TimeInput(end_date, start_date) self.get_widget("end_time_placeholder").add(self.end_time) self.set_end_date_label(end_date) self.dayline = widgets.DayLine() self.dayline.connect("on-time-chosen", self.update_time) self._gui.get_object("day_preview").add(self.dayline) self.on_in_progress_toggled(self.get_widget("in_progress")) self.start_date.connect("date-entered", self.on_start_date_entered) self.start_time.connect("time-entered", self.on_start_time_entered) self.new_name.connect("changed", self.on_new_name_changed) self.end_time.connect("time-entered", self.on_end_time_entered) self._gui.connect_signals(self) self.window.show_all()