def __init__(self, parent): """ :param parent: The widget that spawned this pop-up. """ # Construct the Frame location = parent.get_location() super(_TimePickerPopup, self).__init__(parent.frame.screen, parent, location[0] - 1, location[1] - 2, 10 if parent.include_seconds else 7, 5) # Build the widget to display the time selection. self._hours = ListBox(3, [("{:02}".format(x), x) for x in range(24)], centre=True) self._minutes = ListBox(3, [("{:02}".format(x), x) for x in range(60)], centre=True) self._seconds = ListBox(3, [("{:02}".format(x), x) for x in range(60)], centre=True) if self._parent.include_seconds: layout = Layout([2, 1, 2, 1, 2], fill_frame=True) else: layout = Layout([2, 1, 2], fill_frame=True) self.add_layout(layout) layout.add_widget(self._hours, 0) layout.add_widget(Label("\n:", height=3), 1) layout.add_widget(self._minutes, 2) if self._parent.include_seconds: layout.add_widget(Label("\n:", height=3), 3) layout.add_widget(self._seconds, 4) self.fix() # Set up the correct time. self._hours.value = parent.value.hour self._minutes.value = parent.value.minute self._seconds.value = parent.value.second
def __init__(self, parent, year_range=None): """ :param parent: The widget that spawned this pop-up. :param year_range: Optional range to limit the year selection to. """ # Create the lists for each entry. now = parent.value if parent.value else date.today() if year_range is None: year_range = range(now.year - 50, now.year + 50) self._days = ListBox(3, [("{:02}".format(x), x) for x in range(1, 32)], centre=True, validator=self._check_date) self._months = ListBox(3, [(now.replace(day=1, month=x).strftime("%b"), x) for x in range(1, 13)], centre=True, on_change=self._refresh_day) self._years = ListBox(3, [("{:04}".format(x), x) for x in year_range], centre=True, on_change=self._refresh_day) # Construct the Frame location = parent.get_location() super(_DatePickerPopup, self).__init__(parent.frame.screen, parent, location[0] - 1, location[1] - 2, 13, 5) # Build the widget to display the time selection. layout = Layout([2, 1, 3, 1, 4], fill_frame=True) self.add_layout(layout) layout.add_widget(self._days, 0) layout.add_widget(Label("\n/", height=3), 1) layout.add_widget(self._months, 2) layout.add_widget(Label("\n/", height=3), 3) layout.add_widget(self._years, 4) self.fix() # Set up the correct time. self._years.value = parent.value.year self._months.value = parent.value.month self._days.value = parent.value.day
def __init__(self, parent): """ :param parent: The widget that spawned this pop-up. """ # Decide which way to present the list - up or down from the parent widget. location = parent.get_location() if parent.frame.screen.height - location[1] < 3: height = min(len(parent.options) + 4, location[1] + 2) start_line = location[1] - height + 2 reverse = True else: start_line = location[1] - 1 height = min( len(parent.options) + 4, parent.frame.screen.height - location[1] + 1) reverse = False if parent.fit: width = min( max(map(lambda x: len(x[0]), parent.options)) + 4, parent.width) else: width = parent.width # Construct the Frame super(_DropdownPopup, self).__init__(parent.frame.screen, parent, location[0], start_line, width, height) # Build the widget to display the time selection. layout = Layout([1], fill_frame=True) self.add_layout(layout) self._field = Text() self._field.disabled = True divider = Divider() divider.disabled = True self._list = ListBox(Widget.FILL_FRAME, [(" {}".format(i[0]), i[1]) for i in parent.options], add_scroll_bar=len(parent.options) > height - 4, on_select=self.close, on_change=self._link) layout.add_widget(self._list if reverse else self._field, 0) layout.add_widget(divider, 0) layout.add_widget(self._field if reverse else self._list, 0) self.fix() # Set up the correct time. self._list.value = parent.value