示例#1
0
 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()
示例#3
0
    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()
示例#4
0
 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()
示例#5
0
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)
示例#6
0
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()
示例#7
0
 def show_example_date_picker(self):
     dialog = MDDatePicker()
     dialog.bind(on_save=self.set_previous_date)
     dialog.open()
示例#8
0
 def show_datepicker(self):
     picker = MDDatePicker()
     picker.bind(on_save=self.get_date)
     picker.open()
示例#9
0
文件: date.py 项目: flatplanet/kivyMD
 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()