def create_dialog(self): super().create_dialog() self.earliest_date_entry = AlexDateEntry(self.interior, label=_("Earliest Date")) self.earliest_date_entry.grid(row=3, column=0, sticky=W, pady=5, columnspan=2) self.latest_date_entry = AlexDateEntry(self.interior, label=_("Latest Date")) self.latest_date_entry.grid(row=4, column=0, sticky=W, pady=5, columnspan=2) AlexLabel(self.interior, text=_("Only local events")).grid(row=5, column=0, sticky=W, pady=5) self.local_only_checkbox = AlexCheckBox(self.interior) self.local_only_checkbox.grid(row=5, column=1, sticky=W, pady=5) AlexLabel(self.interior, text=_("Only unverified events")).grid(row=6, column=0, sticky=W, pady=5) self.unverified_only_checkbox = AlexCheckBox(self.interior) self.unverified_only_checkbox.grid(row=6, column=1, sticky=W, pady=5)
class EventConfirmationDialogTest(DialogTest): def __init__(self, window_manager): super().__init__(window_manager) self.name = "Event confirmation" def start_dialog(self): try: date = self.date_entry.get() except: return if date is None: return event_list = (Event(date.as_key(1)), Event(date.as_key(2))) event_list[0].description = "%s: Event 1" % date event_list[1].description = "%s: Event 2" % date presenter = AbstractInputDialogPresenter() dialog = EventConfirmationDialog(self.window_manager, presenter) dialog.activate(self.callback, event_list=event_list, date=date) def callback(self, value): self.message_label.set("%s (%s)" % (value, type(value))) def test_component(self, master, message_label): self.message_label = message_label self.date_entry = AlexDateEntry(master) self.date_entry.pack() Button(master, text="Start dialog", command=self.start_dialog).pack()
def _add_date_entry_content(self): date_entry_frame = Frame(self.page(0)) self.add_page_body(date_entry_frame) self.date_entry = AlexDateEntry( parent=date_entry_frame, label=_("Please enter the event date:"), labelwidth=25) if self.default_date is not None: self.date_entry.set(self.default_date) self.date_entry.pack(side=TOP)
def create_dialog(self): super().create_dialog() # Wizard page 1 Label(self.pages[0], text=_("Start creating a CD")).pack(padx=5, pady=5) Label(self.pages[0], text=_("Enter a name for the CD:")).pack() self.name_entry = AlexEntry(self.pages[0]) self.name_entry.pack() # Wizard page 2 Label(self.pages[1], text=_("Start page as markdown:")).pack(padx=5, pady=5) self.start_page_entry = AlexText(self.pages[1]) self.start_page_entry.pack() # Wizard page 3 Label(self.pages[2], text=_("Impressum as markdown:")).pack(padx=5, pady=5) self.imprint_entry = AlexText(self.pages[2]) self.imprint_entry.pack() # Wizard page 4 Label(self.pages[3], text=_("Please enter a data range:")).pack(padx=5, pady=5) self.start_date_entry = AlexDateEntry(self.pages[3]) self.start_date_entry.label = _("Enter start date:") self.start_date_entry.pack() self.end_date_entry = AlexDateEntry(self.pages[3]) self.end_date_entry.label = _("Enter end date:") self.end_date_entry.pack() # Wizard page 5 Label(self.pages[4], text=_("Please select a signature")).pack(padx=5, pady=5) self.signature_button = AlexButton( self.pages[4], command=lambda: self.signature_dialog.activate( self._signature_callback, label=_("Select a signature"))) self.signature_button.pack() # Wizard page 6 Label(self.pages[5], text=_("Please select a title image")).pack(padx=5, pady=5) self.start_image_button = AlexButton( self.pages[5], command=self._get_start_image_file) self.start_image_button.pack()
class EventFilterDialog(GenericFilterDialog): @inject def __init__(self, window_manager: guiinjectorkeys.WINDOW_MANAGER_KEY, presenter: guiinjectorkeys.EVENT_FILTER_DIALOG_PRESENTER_KEY): super().__init__(window_manager, presenter) def create_dialog(self): super().create_dialog() self.earliest_date_entry = AlexDateEntry(self.interior, label=_("Earliest Date")) self.earliest_date_entry.grid(row=3, column=0, sticky=W, pady=5, columnspan=2) self.latest_date_entry = AlexDateEntry(self.interior, label=_("Latest Date")) self.latest_date_entry.grid(row=4, column=0, sticky=W, pady=5, columnspan=2) AlexLabel(self.interior, text=_("Only local events")).grid(row=5, column=0, sticky=W, pady=5) self.local_only_checkbox = AlexCheckBox(self.interior) self.local_only_checkbox.grid(row=5, column=1, sticky=W, pady=5) AlexLabel(self.interior, text=_("Only unverified events")).grid(row=6, column=0, sticky=W, pady=5) self.unverified_only_checkbox = AlexCheckBox(self.interior) self.unverified_only_checkbox.grid(row=6, column=1, sticky=W, pady=5) def _clear_filter_form(self): super()._clear_filter_form() self.earliest_date_entry.set(None) self.latest_date_entry.set(None) self.local_only_checkbox.set(False) self.unverified_only_checkbox.set(False) earliest_date = property( lambda self: self.earliest_date_entry.get(), lambda self, value: self.earliest_date_entry.set(value)) latest_date = property( lambda self: self.latest_date_entry.get(), lambda self, value: self.latest_date_entry.set(value)) local_only = property( lambda self: self.local_only_checkbox.get(), lambda self, value: self.local_only_checkbox.set(value)) unverified_only = property( lambda self: self.unverified_only_checkbox.get(), lambda self, value: self.unverified_only_checkbox.set(value))
class AlexDateEntryTest(AbstractComponentTest): def __init__(self): super().__init__() self.name = "Date entry widget" def test_component(self, master, message_label): super().test_component(master, message_label) self.entry_widget = AlexDateEntry(self.master) self.entry_widget.pack(side=TOP, fill=BOTH, expand=TRUE) AlexButton(self.master, text="Get entry", command=self._show_result).pack(side=TOP) def _show_result(self): try: date = self.entry_widget.get() self.message_label.set(date) except InvalidDateException as e: self.message_label.set(e)
def test_component(self, master, message_label): super().test_component(master, message_label) self.entry_widget = AlexDateEntry(self.master) self.entry_widget.pack(side=TOP, fill=BOTH, expand=TRUE) AlexButton(self.master, text="Get entry", command=self._show_result).pack(side=TOP)
class EventSelectionWizard(Wizard): @inject def __init__( self, window_manager: guiinjectorkeys.WINDOW_MANAGER_KEY, presenter: guiinjectorkeys.EVENT_SELECTION_DIALOG_PRESENTER_KEY): self.selected_event = None self.date_entry = None self.default_date = None self._event_list = [] super().__init__(window_manager, presenter, number_of_pages=2) def _add_all_content(self): self._add_date_entry_content() self._add_page1_content() def _add_date_entry_content(self): date_entry_frame = Frame(self.page(0)) self.add_page_body(date_entry_frame) self.date_entry = AlexDateEntry( parent=date_entry_frame, label=_("Please enter the event date:"), labelwidth=25) if self.default_date is not None: self.date_entry.set(self.default_date) self.date_entry.pack(side=TOP) def _add_page1_content(self): event_selection_frame = Frame(self.page(1)) self.add_page_body(event_selection_frame) AlexLabel(event_selection_frame, text=_("Please select an event:")).pack(side=TOP) self.event_list_box = AlexListBox(event_selection_frame, width=50, height=5) # @UndefinedVariable self.event_list_box.pack(fill=BOTH) def _add_actions(self): self.actions[1] = self.presenter.update_event_list def _get_event_list(self): return self._event_list def _set_event_list(self, event_list): self._event_list = event_list self.event_list_box.set_items(event_list) def _get_selected_event(self): return self.event_list_box.get() def activate(self, callback, default_event=None, exclude_list=[]): self.callback = callback self.presenter.exclude_list = exclude_list if default_event is not None: self.default_date = default_event.daterange.start_date self.create_dialog() self._add_all_content() self._add_actions() super().activate(callback) date = property(lambda self: self.date_entry.get()) event_list = property(_get_event_list, _set_event_list) input = property(_get_selected_event)
def test_component(self, master, message_label): self.message_label = message_label self.date_entry = AlexDateEntry(master) self.date_entry.pack() Button(master, text="Start dialog", command=self.start_dialog).pack()
class ExportInfoWizard(Wizard): NO_SIGNATURE_SELECTED = _('No signature selected') NO_IMAGE_SELECTED = _('No title image selected') @inject def __init__(self, window_manager: guiinjectorkeys.WINDOW_MANAGER_KEY, presenter: EXPORT_INFO_WIZARD_PRESENTER, signature_dialog: SYSTEMATIC_POINT_SELECTION_DIALOG_KEY): super().__init__(window_manager, presenter, number_of_pages=6, geometry="500x200") self.signature_dialog = signature_dialog def create_dialog(self): super().create_dialog() # Wizard page 1 Label(self.pages[0], text=_("Start creating a CD")).pack(padx=5, pady=5) Label(self.pages[0], text=_("Enter a name for the CD:")).pack() self.name_entry = AlexEntry(self.pages[0]) self.name_entry.pack() # Wizard page 2 Label(self.pages[1], text=_("Start page as markdown:")).pack(padx=5, pady=5) self.start_page_entry = AlexText(self.pages[1]) self.start_page_entry.pack() # Wizard page 3 Label(self.pages[2], text=_("Impressum as markdown:")).pack(padx=5, pady=5) self.imprint_entry = AlexText(self.pages[2]) self.imprint_entry.pack() # Wizard page 4 Label(self.pages[3], text=_("Please enter a data range:")).pack(padx=5, pady=5) self.start_date_entry = AlexDateEntry(self.pages[3]) self.start_date_entry.label = _("Enter start date:") self.start_date_entry.pack() self.end_date_entry = AlexDateEntry(self.pages[3]) self.end_date_entry.label = _("Enter end date:") self.end_date_entry.pack() # Wizard page 5 Label(self.pages[4], text=_("Please select a signature")).pack(padx=5, pady=5) self.signature_button = AlexButton( self.pages[4], command=lambda: self.signature_dialog.activate( self._signature_callback, label=_("Select a signature"))) self.signature_button.pack() # Wizard page 6 Label(self.pages[5], text=_("Please select a title image")).pack(padx=5, pady=5) self.start_image_button = AlexButton( self.pages[5], command=self._get_start_image_file) self.start_image_button.pack() def config_dialog(self, export_info=None): self.export_info = export_info def _signature_callback(self, signature): if signature is not None: self.signature_button.set(signature) def _get_start_image_file(self): self.window.attributes('-topmost', False) new_start_image = askopenfilename(filetypes=[(_("Image file"), ".jpg")]) self.window.attributes('-topmost', True) if new_start_image: self.start_image = new_start_image def _select_signature(self): self.signature_dialog.activate(self, self._select_signature_callback) def _select_signature_callback(self, signature): if signature: self.signature = self.signature_service.object_to_id(signature) def _get_export_info(self): export_info = ExportInfo() export_info.cd_name = self.name_entry.get() export_info.start_date = self.start_date_entry.get() export_info.end_date = self.end_date_entry.get() export_info.signature = self.signature export_info.start_image = self.start_image export_info.pagecontent['startpage'] = self.start_page_entry.get() export_info.pagecontent['imprint'] = self.imprint_entry.get() return export_info def _set_export_info(self, export_info): self.name_entry.set(export_info.cd_name) self.start_date_entry.set(export_info.start_date) self.end_date_entry.set(export_info.end_date) self.signature = export_info.signature self.start_image = export_info.start_image self.start_page_entry.set(export_info.pagecontent['startpage']) self.imprint_entry.set(export_info.pagecontent['imprint']) def _get_signature(self): signature = self.signature_button.get() if "%s" % signature == self.NO_SIGNATURE_SELECTED: return None return signature def _set_signature(self, signature): if signature is None: self.signature_button.set(self.NO_SIGNATURE_SELECTED) else: self.signature_button.set(signature) def _get_start_image(self): start_image = self.start_image_button.get() if start_image == self.NO_IMAGE_SELECTED: return None return start_image def _set_start_image(self, start_image): if start_image is None: self.start_image_button.set(self.NO_IMAGE_SELECTED) else: self.start_image_button.set(start_image) signature = property(_get_signature, _set_signature) start_image = property(_get_start_image, _set_start_image) export_info = property(_get_export_info, _set_export_info)