Viewed links now change to purple.

This commit is contained in:
Michael Lazar
2015-03-08 22:20:36 -07:00
parent e7d285bd13
commit f1fc9e1d4c

View File

@@ -1,6 +1,7 @@
import curses import curses
import sys import sys
import webbrowser import webbrowser
from requests.exceptions import HTTPError from requests.exceptions import HTTPError
from .errors import SubredditNameError from .errors import SubredditNameError
@@ -9,12 +10,14 @@ from .submission import SubmissionPage
from .content import SubredditContent from .content import SubredditContent
from .utils import LoadScreen, text_input, display_message, Color, ESCAPE, display_help from .utils import LoadScreen, text_input, display_message, Color, ESCAPE, display_help
# Used to keep track of browsing history across the current session
_opened_links = set()
class SubredditPage(BasePage): class SubredditPage(BasePage):
def __init__(self, stdscr, reddit, name): def __init__(self, stdscr, reddit, name):
self.reddit = reddit self.reddit = reddit
self.name = name
self.loader = LoadScreen(stdscr) self.loader = LoadScreen(stdscr)
content = SubredditContent.from_name(reddit, name, self.loader) content = SubredditContent.from_name(reddit, name, self.loader)
@@ -66,7 +69,7 @@ class SubredditPage(BasePage):
def refresh_content(self, name=None): def refresh_content(self, name=None):
name = name or self.name name = name or self.content.name
try: try:
self.content = SubredditContent.from_name( self.content = SubredditContent.from_name(
@@ -78,11 +81,10 @@ class SubredditPage(BasePage):
else: else:
self.nav.page_index, self.nav.cursor_index = 0, 0 self.nav.page_index, self.nav.cursor_index = 0, 0
self.nav.inverted = False self.nav.inverted = False
self.name = name
def prompt_subreddit(self): def prompt_subreddit(self):
attr = curses.A_BOLD | Color.MAGENTA attr = curses.A_BOLD | Color.CYAN
prompt = 'Enter Subreddit: /r/' prompt = 'Enter Subreddit: /r/'
n_rows, n_cols = self.stdscr.getmaxyx() n_rows, n_cols = self.stdscr.getmaxyx()
self.stdscr.addstr(n_rows-1, 0, prompt, attr) self.stdscr.addstr(n_rows-1, 0, prompt, attr)
@@ -97,14 +99,21 @@ class SubredditPage(BasePage):
def open_submission(self): def open_submission(self):
"Select the current submission to view posts" "Select the current submission to view posts"
submission = self.content.get(self.nav.absolute_index)['object'] data = self.content.get(self.nav.absolute_index)
page = SubmissionPage(self.stdscr, self.reddit, submission=submission) page = SubmissionPage(self.stdscr, self.reddit, submission=data['object'])
page.loop() page.loop()
if data['url'] == 'selfpost':
global _opened_links
_opened_links.add(data['url_full'])
def open_link(self): def open_link(self):
url = self.content.get(self.nav.absolute_index)['url_full'] url_full = self.content.get(self.nav.absolute_index)['url_full']
webbrowser.open_new_tab(url) webbrowser.open_new_tab(url_full)
global _opened_links
_opened_links.add(url_full)
@staticmethod @staticmethod
def draw_item(win, data, inverted=False): def draw_item(win, data, inverted=False):
@@ -124,7 +133,9 @@ class SubredditPage(BasePage):
row = n_title + offset row = n_title + offset
if row in valid_rows: if row in valid_rows:
attr = curses.A_UNDERLINE | Color.BLUE seen = (data['url_full'] in _opened_links)
link_color = Color.MAGENTA if seen else Color.BLUE
attr = curses.A_UNDERLINE | link_color
text = '{url}'.format(**data) text = '{url}'.format(**data)
win.addnstr(row, 1, text, n_cols-1, attr) win.addnstr(row, 1, text, n_cols-1, attr)