def show_date_picker(self, month): year, month = map(int, month.split('-')) date_dialog = MDDatePicker(year=year, month=month, mode="range") date_dialog.bind( on_save=lambda inst, value, date_range: self.add_range( date_range[0].isoformat(), date_range[-1].isoformat())) date_dialog.open()
def on_press(self, **kwargs): date_dialog = MDDatePicker(lambda x: x) # date_dialog = MDDatePicker(lambda x: x, mode = 'range') self.date_dialog = date_dialog self.date_dialog.padding = 10 date_dialog.bind(on_save=self.on_save, on_cancel=self.on_cancel) date_dialog.open()
def select_date(self): print('inside select date') # date_dialog = MDDatePicker( # callback=self.on_save, # min_date=datetime.date(2021, 2, 1), # max_date=datetime.date(2022, 12, 31), # ) # To make the MDDatePicker work and the MDDropDown work install the # pip3 install https://github.com/kivymd/KivyMD/archive/master.zip date_dialog = MDDatePicker() date_dialog.bind(on_save=self.on_save, on_cancel=self.on_cancel) date_dialog.open()
def show_date_picker(self, id): self.current_button_id = id date_dialog = MDDatePicker() date_dialog.bind(on_save=self.on_save_data_picker, on_cancel=self.on_cancel_data_picker) date_dialog.open()
class RepeatDialog(MDScreen): def __init__(self, **kw): super().__init__(**kw) self.rv = CustomRecycle() self.sm = ScreenManager() self.custom = False self.repeat_type = None self.date = MDDatePicker() self.date.bind(on_save=self.on_date_save) self.customrepeat = CustomRepeat(name='custom') self.repeatscreen = MDScreen(name='repeat') self.selectgrid = SelectGrid() self.repeatscreen.add_widget(self.rv) self.sm.add_widget(self.repeatscreen) self.sm.add_widget(self.customrepeat) self.items = [ "Doesn't Repeat", 'Repeat Every Day', 'Repeat Every Week', 'Repeat Every Month', 'Repeat Every Year', 'Custom' ] for item in self.items: rv_item = {"viewclass": 'RepeatItem', 'text': item} self.rv.data.append(rv_item) self.customrepeat.ids.fr.active = False self.add_widget(self.sm) def repeat(self, name): if name == 'Custom': self.sm.transition.direction = 'left' self.sm.current = 'custom' self.customrepeat_type = None self.custom_end = None self.custom = True elif name == "Doesn't Repeat": pass else: self.repeat_type = name.split()[2] self.repeat_dict = {"type": self.repeat_type} def get_repeat(self): if not self.custom: return self.repeat_type if self.custom: return self.customdict def on_all_press(self, text): self.customrepeat_type = text if text == 'Week': try: self.customrepeat.ids.float.add_widget(self.selectgrid) self.days = [] except WidgetException: pass else: self.customrepeat.ids.float.remove_widget(self.selectgrid) def set_list(self, day): if day in self.days: self.days.remove(day) else: self.days.append(day) def on_save(self, text): if text == "": toast('Text Missing!') elif not self.customrepeat_type: toast('Type Missing!') elif self.customrepeat_type == 'Week' and not self.days: self.days = None elif not self.custom_end and not self.customrepeat.ids.fr.active: toast('End Date Missing!') else: self.customdict = {'num': text, 'every': self.customrepeat_type} if self.customrepeat_type == 'Week': self.customdict['days'] = self.days self.customdict['end'] = self.custom_end self.parent.parent.parent.dismiss() def on_date_save(self, instance, value, date_range): iso = datetime.date(datetime.datetime.now().year, datetime.datetime.now().month, datetime.datetime.now().day) if not str(value) > str(iso) or not str(value) < "2071-01-01": toast('Invalid Date! Must be in the future!') if str(value) > str(iso) and str(value) < "2071-01-01": self.custom_end = str(value)
class EventChooser(MDScreen): def __init__(self, **kw): super().__init__(**kw) self.name = 'chooser' self.repeat = RepeatDialog(size_hint_y=None, height=800) self.dialog = MDDialog(title="Repeat", type="custom", content_cls=self.repeat) self.date = MDDatePicker() self.date.bind(on_save=self.on_date_save) self.time = MDTimePicker() self.time.bind(on_save=self.on_time_save) self.ttime, self.ddate = None, None self.dialog.size_hint_x = .9 def on_date_save(self, instance, value, date_range): iso = datetime.date(datetime.datetime.now().year, datetime.datetime.now().month, datetime.datetime.now().day) if not str(value) > str(iso) or not str(value) < "2071-01-01": toast('Invalid Date! Must be in the future!') if str(value) > str(iso) and str(value) < "2071-01-01": self.ddate = str(value) def on_time_save(self, instance, time): self.ttime = str(time) def save_event(self, name, time, date): if not name: toast("Please Enter Event Name!") elif not time and not self.ids.ad.active: toast("Please Choose a time for the Event") elif not date: toast("Please Choose a date for the Event") else: repeat = self.repeat.get_repeat() with open('./lib/data/events.json', 'r') as f: file = json.load(f) file['events'][date] = { "name": name, "time": time, "repeat": repeat } if self.ids.ad.active: file['events'][date] = {"name": name, "repeat": repeat} with open('./lib/data/events.json', 'w') as f: json.dump(file, f) self.parent.transition.direction = 'right' self.parent.current = "home" self.clear() self.snackbar(name, date) self.parent.transition.direction = 'left' def clear(self): self.ttime, self.ddate = None, None self.ids.text_field.text = '' self.ids.ad.active = False self.repeat.custom = False self.repeat.repeat_type = None self.repeat.customdict = {} self.repeat.days = [] self.repeat.custom_end = '' self.repeat.customrepeat.ids.fr.active = False def snackbar(self, text, date): snackbar = CustomSnackbar( text=f"Successfully Created {text}! Date: {date}", icon="information", snackbar_x="10dp", snackbar_y="10dp", ) snackbar.size_hint_x = (Window.width - (snackbar.snackbar_x * 2)) / Window.width snackbar.open()
def show_example_date_picker(self): dialog = MDDatePicker() dialog.bind(on_save=self.set_previous_date) dialog.open()
def show_datepicker(self): picker = MDDatePicker() picker.bind(on_save=self.get_date) picker.open()
def show_date_picker(self): #date_dialog = MDDatePicker(year=2000, month=2, day=14) date_dialog = MDDatePicker(mode="range") date_dialog.bind(on_save=self.on_save, on_cancel=self.on_cancel) date_dialog.open()