Пример #1
0
 def __init__(self, options):
     super(Window, self).__init__(800, 600, "Loading...", True, None, False)
     self.slideshow = Slideshow(options)
     self.options = options
     self.printer = Printer()
     self.reader = Reader(self.printer)
     self.setup()
Пример #2
0
 def __init__(self, options):
     super(Window, self).__init__(
         800, 600, "Loading...", True, None, False
     )
     self.slideshow = Slideshow(options)
     self.options = options
     self.printer = Printer()
     self.reader = Reader(self.printer)
     self.setup()
Пример #3
0
class Window(window.Window):
    def __init__(self, options):
        super(Window, self).__init__(800, 600, "Loading...", True, None, False)
        self.slideshow = Slideshow(options)
        self.options = options
        self.printer = Printer()
        self.reader = Reader(self.printer)
        self.setup()

    def setup(self):
        if not self.options.windowed:
            self.toggle_fullscreen()

    def toggle_fullscreen(self):
        self.activate()
        self.set_mouse_visible(self.fullscreen)
        self.set_fullscreen(not self.fullscreen)

    def update_caption(self):
        self.set_caption(
            "ymage [%d/%d]" %
            (self.slideshow.index + 1, len(self.slideshow.slides)))

    # Actions
    def _set_duration(self):
        self.reader.start_reading("Duration", self.slideshow.set_duration)

    def _increase_duration(self):
        self.printer._print("Duration: {}".format(
            self.slideshow.increase_duration()))

    def _decrease_duration(self):
        self.printer._print("Duration: {}".format(
            self.slideshow.decrease_duration()))

    def _previous_slide(self):
        self.slideshow.display(action="previous")

    def _next_slide(self):
        self.slideshow.display(action="next")

    def _toggle_paused(self):
        self.printer._print(self.slideshow.toggle_paused())

    def _random(self):
        self.slideshow.display(action="random", previous=False)

    def _previous_random(self):
        self.slideshow.display(action="random", previous=True)

    def _print_info(self):
        self.printer._print("{} [{}/{}]".format(self.slideshow.get_current(),
                                                self.slideshow.index + 1,
                                                len(self.slideshow.slides)))

    def _search(self, query=None):
        if query is None:
            self.reader.start_reading("Search for", self._search)
        else:
            self.slideshow.display(action="search", query=query)

    def _jump(self, index=None):
        if index is None:
            self.reader.start_reading("Slide", self._jump)
        else:
            self.slideshow.display(action="jump", index=index)

    def on_draw(self):
        self.clear()
        try:
            self.slideshow.draw(self.width, self.height)
        except gl.lib.GLException:
            # In case one of the slides is corrupted
            # move on to the next
            self.slideshow.display()
        self.update_caption()
        self.printer.draw()

    def on_key_press(self, symbol, modifiers):
        if self.reader.is_reading:
            self.reader.read(symbol, modifiers)
            return
        try:
            {
                window.key.P: self._print_info,
                window.key.R: self._random,
                window.key.E: self._previous_random,
                window.key.D: self._set_duration,
                window.key.UP: self._increase_duration,
                window.key.DOWN: self._decrease_duration,
                window.key.LEFT: self._previous_slide,
                window.key.RIGHT: self._next_slide,
                window.key.SPACE: self._toggle_paused,
                window.key.I: self._jump,
                window.key.F: self.toggle_fullscreen,
                window.key.SLASH: self._search,
                window.key.RETURN: app.exit,
                window.key.ESCAPE: app.exit,
            }[symbol]()
        except KeyError:
            pass
Пример #4
0
class Window(window.Window):
    def __init__(self, options):
        super(Window, self).__init__(
            800, 600, "Loading...", True, None, False
        )
        self.slideshow = Slideshow(options)
        self.options = options
        self.printer = Printer()
        self.reader = Reader(self.printer)
        self.setup()

    def setup(self):
        if not self.options.windowed:
            self.toggle_fullscreen()

    def toggle_fullscreen(self):
        self.activate()
        self.set_mouse_visible(self.fullscreen)
        self.set_fullscreen(not self.fullscreen)

    def update_caption(self):
        self.set_caption("ymage [%d/%d]" % (
            self.slideshow.index + 1, len(self.slideshow.slides)
        ))

    # Actions
    def _set_duration(self):
        self.reader.start_reading(
            "Duration", self.slideshow.set_duration
        )

    def _increase_duration(self):
        self.printer._print("Duration: {}".format(
            self.slideshow.increase_duration()
        ))

    def _decrease_duration(self):
        self.printer._print("Duration: {}".format(
            self.slideshow.decrease_duration()
        ))

    def _previous_slide(self):
        self.slideshow.display(action="previous")

    def _next_slide(self):
        self.slideshow.display(action="next")

    def _toggle_paused(self):
        self.printer._print(
            self.slideshow.toggle_paused()
        )

    def _random(self):
        self.slideshow.display(action="random", previous=False)

    def _previous_random(self):
        self.slideshow.display(action="random", previous=True)

    def _print_info(self):
        self.printer._print("{} [{}/{}]".format(
            self.slideshow.get_current(),
            self.slideshow.index + 1,
            len(self.slideshow.slides)
        ))

    def _search(self, query=None):
        if query is None:
            self.reader.start_reading("Search for", self._search)
        else:
            self.slideshow.display(action="search", query=query)

    def _jump(self, index=None):
        if index is None:
            self.reader.start_reading("Slide", self._jump)
        else:
            self.slideshow.display(action="jump", index=index)

    def on_draw(self):
        self.clear()
        try:
            self.slideshow.draw(self.width, self.height)  
        except gl.lib.GLException:
            # In case one of the slides is corrupted
            # move on to the next
            self.slideshow.display()
        self.update_caption()
        self.printer.draw()

    def on_key_press(self, symbol, modifiers):
        if self.reader.is_reading:
            self.reader.read(symbol, modifiers)
            return
        try:
            {
                window.key.P: self._print_info,
                window.key.R: self._random,
                window.key.E: self._previous_random,
                window.key.D: self._set_duration,
                window.key.UP: self._increase_duration,
                window.key.DOWN: self._decrease_duration,
                window.key.LEFT: self._previous_slide,
                window.key.RIGHT: self._next_slide,
                window.key.SPACE: self._toggle_paused,
                window.key.I: self._jump,
                window.key.F: self.toggle_fullscreen,
                window.key.SLASH: self._search,
                window.key.RETURN: app.exit,
                window.key.ESCAPE: app.exit,
            }[symbol]()
        except KeyError:
            pass