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)
예제 #2
0
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)
예제 #4
0
    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)
예제 #9
0
 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()
예제 #10
0
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)