Пример #1
0
    def display(self) -> None:
        """Draws all windows and sub-features, including titles and borders.
        """
        # check if the screen size has changed
        self.update_parent_dimensions()

        # add header
        playing_str = ""
        if self._queue.first is not None:
            state = self._queue.first.state
            if state == 0:
                playing_str = " - Stopped [%s]: " % self._queue.first.time_str
            elif state == 1:
                playing_str = " - Playing [%s]: " % self._queue.first.time_str
            elif state == 2:
                playing_str = " - Paused [%s]: " % self._queue.first.time_str
            playing_str += self._queue.first.title
            if self._queue.length > 1:
                playing_str += " (+%d in queue)" % (self._queue.length - 1)

        self._header_window.attron(curses.A_BOLD)
        self._header_window.addstr(0, 0, " " * self._parent_x)
        self._header_window.addstr(0, 0, castero.__title__ + playing_str)

        # add footer
        footer_str = ""
        if self._status == "":  # always display the status instead if needed
            if len(self._feeds) > 0:
                total_feeds = len(self._feeds)
                lengths_of_feeds = [
                    len(self._feeds[key].episodes) for key in self._feeds
                ]
                total_episodes = sum(lengths_of_feeds)
                median_episodes = helpers.median(lengths_of_feeds)

                footer_str += "Processed %d feeds with %d total episodes (av" \
                              "g. %d episodes, med. %d)" % (
                                  total_feeds,
                                  total_episodes,
                                  total_episodes / total_feeds,
                                  median_episodes
                              )
            else:
                footer_str += "No feeds added"
        else:
            footer_str = self._status

        footer_str += " -- Press %s for help" % Config["key_help"]
        self._footer_window.attron(curses.A_BOLD)
        self._footer_window.addstr(
            1, 0, " " * (self._footer_window.getmaxyx()[1] - 1))
        footer_str = footer_str[:self._footer_window.getmaxyx()[1] - 1]
        self._footer_window.addstr(1, 0, footer_str)

        # add window borders
        self._header_window.hline(1, 0, 0, self._header_window.getmaxyx()[1])
        self._footer_window.hline(0, 0, 0, self._footer_window.getmaxyx()[1])

        # update display for current perspective
        self._perspectives[self._active_perspective].display()
Пример #2
0
    def display(self) -> None:
        """Draws all windows and sub-features, including titles and borders.
        """
        # check if the screen size has changed
        self.update_parent_dimensions()

        # check to see if menu contents have been invalidated
        if not self.menus_valid:
            for perspective_id in self._perspectives:
                self._perspectives[perspective_id].update_menus()
            self.menus_valid = True

        # update window colors
        self._header_window.bkgd(curses.color_pair(4))
        self._footer_window.bkgd(curses.color_pair(4))

        # add header
        playing_str = castero.__title__
        if self._queue.first is not None:
            state = self._queue.first.state
            playing_str = ["Stopped", "Playing", "Paused"][state] + \
                ": %s" % self._queue.first.title
            if self._queue.length > 1:
                playing_str += " (+%d in queue)" % (self._queue.length - 1)

            if helpers.is_true(Config["right_align_time"]):
                playing_str += ("[%s]" % self._queue.first.time_str
                                ).rjust(self._header_window.getmaxyx()[1] -
                                        len(playing_str))
            else:
                playing_str += " [%s]" % self._queue.first.time_str

        self._header_window.attron(curses.A_BOLD)
        self._header_window.addstr(0, 0,
                                   " " * self._header_window.getmaxyx()[1])
        self._header_window.addstr(0, 0, playing_str)

        # add footer
        footer_str = ""
        if self._status == "" and not \
                helpers.is_true(Config["disable_default_status"]):
            feeds = self.database.feeds()
            if len(feeds) > 0:
                total_feeds = len(feeds)
                lengths_of_feeds = \
                    [len(self.database.episodes(feed)) for feed in feeds]
                total_episodes = sum(lengths_of_feeds)
                median_episodes = helpers.median(lengths_of_feeds)

                footer_str += "Found %d feeds with %d total episodes (avg." \
                              " %d episodes, med. %d)" % (
                                  total_feeds,
                                  total_episodes,
                                  total_episodes / total_feeds,
                                  median_episodes
                              )
            else:
                footer_str += "No feeds added"
        else:
            footer_str = self._status

        if footer_str != "":
            footer_str += " -- Press %s for help" % Config["key_help"]

        self._footer_window.attron(curses.A_BOLD)
        footer_str = footer_str[:self._footer_window.getmaxyx()[1] - 1]
        self._footer_window.addstr(1, 0, footer_str)

        # add window borders
        self._header_window.hline(1, 0, 0, self._header_window.getmaxyx()[1])
        self._footer_window.hline(0, 0, 0, self._footer_window.getmaxyx()[1])

        # update display for current perspective
        self._perspectives[self._active_perspective].display()
Пример #3
0
def test_median_3():
    values = [1, 2, 3]
    result = helpers.median(values)
    assert result == 2
Пример #4
0
def test_median_1():
    values = [1]
    result = helpers.median(values)
    assert result == 1
Пример #5
0
def test_median_empty():
    values = []
    result = helpers.median(values)
    assert result is None