From 86e0a9447316c9d01f14a33d5293807c89e94b14 Mon Sep 17 00:00:00 2001 From: Michael Lazar Date: Wed, 28 Jan 2015 01:53:51 -0800 Subject: [PATCH] Added loading dialog when opening submissions. --- rtv/submission_viewer.py | 7 ++++++- rtv/subreddit_viewer.py | 21 +++++++++++++++++---- rtv/viewer.py | 14 ++++++++++++++ scripts/__init__.py | 0 {rtv => scripts}/submission.py | 0 5 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 scripts/__init__.py rename {rtv => scripts}/submission.py (100%) diff --git a/rtv/submission_viewer.py b/rtv/submission_viewer.py index edbced8..a8c3805 100644 --- a/rtv/submission_viewer.py +++ b/rtv/submission_viewer.py @@ -1,5 +1,6 @@ import praw import curses +import sys from content_generators import SubmissionContent, SubredditContent from utils import curses_session @@ -37,9 +38,13 @@ class SubmissionViewer(BaseViewer): elif cmd == curses.KEY_RESIZE: self.draw() + # Go back + elif cmd in (ord('b'), curses.KEY_LEFT): + break + # Quit elif cmd == ord('q'): - break + sys.exit() else: curses.beep() diff --git a/rtv/subreddit_viewer.py b/rtv/subreddit_viewer.py index 3c1b648..081604a 100644 --- a/rtv/subreddit_viewer.py +++ b/rtv/subreddit_viewer.py @@ -1,10 +1,12 @@ import praw import textwrap import curses +import sys -from content_generators import SubredditContent -from utils import curses_session +from content_generators import SubredditContent, SubmissionContent +from submission_viewer import SubmissionViewer from viewer import BaseViewer +from utils import curses_session class SubredditViewer(BaseViewer): @@ -24,7 +26,8 @@ class SubredditViewer(BaseViewer): # View submission elif cmd in (curses.KEY_RIGHT, ord(' ')): - pass + self.open_submission() + self.draw() # Enter edit mode to change subreddit elif cmd == ord('/'): @@ -41,11 +44,21 @@ class SubredditViewer(BaseViewer): # Quit elif cmd == ord('q'): - break + sys.exit() else: curses.beep() + def open_submission(self): + "Select the current submission to view posts" + + self.add_loading() + + submission = self.content.get(self.nav.absolute_index)['object'] + content = SubmissionContent(submission) + viewer = SubmissionViewer(self.stdscr, content) + viewer.loop() + def draw(self): n_rows, n_cols = self.stdscr.getmaxyx() diff --git a/rtv/viewer.py b/rtv/viewer.py index 2ed517d..f93b897 100644 --- a/rtv/viewer.py +++ b/rtv/viewer.py @@ -106,6 +106,20 @@ class BaseViewer(object): continue self.stdscr.nodelay(0) + def add_loading(self): + "Draw a `loading` popup dialog in the center of the screen" + + message = 'Loading...' + + n_rows, n_cols = self.stdscr.getmaxyx() + win_rows, win_cols = 3, len(message)+2 + start_row = (n_rows - win_rows) / 2 + start_col = (n_cols - win_cols) / 2 + window = self.stdscr.derwin(win_rows, win_cols, start_row, start_col) + window.border() + window.addstr(1, 1, message) + window.refresh() + def draw_header(self): n_rows, n_cols = self._header_window.getmaxyx() diff --git a/scripts/__init__.py b/scripts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/rtv/submission.py b/scripts/submission.py similarity index 100% rename from rtv/submission.py rename to scripts/submission.py