Welcome!
This is the community forum for my apps Pythonista and Editorial.
For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.
Form_Dialog datetime type with year
-
For people like @Grun6 who write their own Form_Dialog, the datetime field type does not really allow to select the year, but only month/day/hour/minute.
With this modification, this code creates one date picker AND one time picker and so the user can really also select the year.def show_datepicker(self, mode): ui.end_editing() self.shield_view = ui.View() self.shield_view.flex = 'WH' self.shield_view.frame = (0, 0, self.view.width, self.view.height) self.dismiss_datepicker_button = ui.Button() self.dismiss_datepicker_button.flex = 'WH' self.dismiss_datepicker_button.frame = (0, 0, self.view.width, self.view.height) self.dismiss_datepicker_button.background_color = (0, 0, 0, 0.5) self.dismiss_datepicker_button.action = self.dismiss_datepicker self.dismiss_datepicker_button.alpha = 0.0 self.shield_view.add_subview(self.dismiss_datepicker_button) self.date_picker = ui.DatePicker() self.date_picker.date = self.selected_date_value self.date_picker.background_color = 'white' if mode == ui.DATE_PICKER_MODE_DATE_AND_TIME: self.date_picker.mode = ui.DATE_PICKER_MODE_DATE w = self.shield_view.width/2 else: self.date_picker.mode = mode w = self.shield_view.width self.date_picker.frame = (0, self.shield_view.height - self.date_picker.height, w, self.date_picker.height) self.date_picker.flex = 'TW' self.date_picker.transform = ui.Transform.translation(0, self.date_picker.height) self.shield_view.add_subview(self.date_picker) if mode == ui.DATE_PICKER_MODE_DATE_AND_TIME: self.time_picker = ui.DatePicker() self.time_picker.date = self.selected_date_value self.time_picker.background_color = 'white' self.time_picker.mode = ui.DATE_PICKER_MODE_TIME self.time_picker.frame = (w, self.shield_view.height - self.time_picker.height, w, self.date_picker.height) self.time_picker.flex = 'TW' self.time_picker.transform = ui.Transform.translation(0, self.time_picker.height) self.shield_view.add_subview(self.time_picker) self.container_view.add_subview(self.shield_view) def fade_in(): self.dismiss_datepicker_button.alpha = 1.0 self.date_picker.transform = ui.Transform.translation(0, 0) if hasattr(self,'time_picker'): self.time_picker.transform = ui.Transform.translation(0, 0) ui.animate(fade_in, 0.3) def dismiss_datepicker(self, sender): value = self.date_picker.date if hasattr(self,'time_picker'): value_time = self.time_picker.date # store time of value_time in value date_str = datetime.datetime.strftime(value,'%Y:%m:%d %H:%M:%S') time_str = datetime.datetime.strftime(value_time,'%Y:%m:%d %H:%M:%S') date_str = date_str[:10] + time_str[10:] value = datetime.datetime.strptime(date_str, '%Y:%m:%d %H:%M:%S') if self.selected_date_type == 'date': self.selected_date_cell.detail_text_label.text = value.strftime(self.selected_date_format) elif self.selected_date_type == 'time': self.selected_date_cell.detail_text_label.text = value.strftime(self.selected_date_format) else: self.selected_date_cell.detail_text_label.text = value.strftime(self.selected_date_format) self.values[self.selected_date_key] = value def fade_out(): self.dismiss_datepicker_button.alpha = 0.0 self.date_picker.transform = ui.Transform.translation(0, self.date_picker.height) if hasattr(self,'time_picker'): self.time_picker.transform = ui.Transform.translation(0, self.time_picker.height)
-
Nice modification @cvp