Fix bugs on toggling articles read/unread.

sqlite
VikingKong 3 years ago
parent 6bea11da2b
commit cbf2f5ca13

160
App.py

@ -65,44 +65,53 @@ class LeftPane(urwid.ListBox):
tui.articleView.fill(tui.articles) tui.articleView.fill(tui.articles)
self.setArticlesPaneTitle(attrMap[1]) self.setArticlesPaneTitle(attrMap[1])
def keypress(self, size, key): def keypress(self, size, key): # noqa
if key in ("j", "down"): if key in ("j", "down"):
item_size = len(self.body) item_size = len(self.body)
focus_widget, idx = self.get_focus() try:
if idx < item_size - 1: focus_widget, idx = self.get_focus()
idx = idx + 1 if idx < item_size - 1:
self.set_focus(idx) idx = idx + 1
focus_widget, idx = self.get_focus() self.set_focus(idx)
if self.isCategoryView: focus_widget, idx = self.get_focus()
self.currentCategory = focus_widget.attr_map[None][0] if self.isCategoryView:
self.setCategoryArticles(focus_widget.attr_map[None]) self.currentCategory = focus_widget.attr_map[None][0]
else: self.setCategoryArticles(focus_widget.attr_map[None])
self.setFeedArticles(focus_widget.attr_map[None]) else:
self.setFeedArticles(focus_widget.attr_map[None])
except BaseException:
pass
return return
elif key in ("k", "up"): elif key in ("k", "up"):
focus_widget, idx = self.get_focus() try:
if idx > 0:
idx = idx - 1
self.set_focus(idx)
focus_widget, idx = self.get_focus()
if self.isCategoryView:
self.currentCategory = focus_widget.attr_map[None][0]
self.setCategoryArticles(focus_widget.attr_map[None])
else:
self.setFeedArticles(focus_widget.attr_map[None])
return
elif key in ("l", "right"):
if self.isCategoryView:
self.isCategoryView = False
focus_widget, idx = self.get_focus() focus_widget, idx = self.get_focus()
self.categoryPosition = idx if idx > 0:
categoryId = focus_widget.attr_map[None][0] idx = idx - 1
categoryName = focus_widget.attr_map[None][1] self.set_focus(idx)
feeds = tui.cache.getFeeds(categoryId, tui.show_read)
self.fill(feeds, False)
focus_widget, idx = self.get_focus() focus_widget, idx = self.get_focus()
self.setFeedArticles(focus_widget.attr_map[None]) if self.isCategoryView:
tui.leftBox.set_title(categoryName) self.currentCategory = focus_widget.attr_map[None][0]
self.setCategoryArticles(focus_widget.attr_map[None])
else:
self.setFeedArticles(focus_widget.attr_map[None])
except BaseException:
pass
return
elif key in ("l", "right"):
try:
if self.isCategoryView:
self.isCategoryView = False
focus_widget, idx = self.get_focus()
self.categoryPosition = idx
categoryId = focus_widget.attr_map[None][0]
categoryName = focus_widget.attr_map[None][1]
feeds = tui.cache.getFeeds(categoryId, tui.show_read)
self.fill(feeds, False)
focus_widget, idx = self.get_focus()
self.setFeedArticles(focus_widget.attr_map[None])
tui.leftBox.set_title(categoryName)
except BaseException:
pass
return return
elif key in ("h", "left"): elif key in ("h", "left"):
if not self.isCategoryView: if not self.isCategoryView:
@ -157,20 +166,26 @@ class RightPane(urwid.ListBox):
self.body = walker self.body = walker
self.setArticleTitle() self.setArticleTitle()
item_size = len(self.body) item_size = len(self.body)
focus_widget, idx = self.get_focus() try:
if idx < item_size - 1: focus_widget, idx = self.get_focus()
idx = idx + 1 if idx < item_size - 1:
self.set_focus(idx) idx = idx + 1
self.set_focus(idx)
except BaseException:
pass
return return
elif key in ("k", "up"): elif key in ("k", "up"):
if not self.isList: if not self.isList:
walker = urwid.SimpleListWalker([urwid.Text(self.article.scrollUp())]) walker = urwid.SimpleListWalker([urwid.Text(self.article.scrollUp())])
self.body = walker self.body = walker
self.setArticleTitle() self.setArticleTitle()
focus_widget, idx = self.get_focus() try:
if idx > 0: focus_widget, idx = self.get_focus()
idx = idx - 1 if idx > 0:
self.set_focus(idx) idx = idx - 1
self.set_focus(idx)
except BaseException:
pass
return return
elif key in ("r"): elif key in ("r"):
if self.isList is True: if self.isList is True:
@ -186,30 +201,42 @@ class RightPane(urwid.ListBox):
tui.feedView.setFeedArticles(itemAttrMap) tui.feedView.setFeedArticles(itemAttrMap)
if article_idx > 0: if article_idx > 0:
article_idx -= 1 article_idx -= 1
try: tui.categories = tui.cache.getCategories(tui.show_read)
self.set_focus(article_idx)
except BaseException:
pass
if tui.feedView.isCategoryView: if tui.feedView.isCategoryView:
feeds = tui.cache.getCategories(tui.show_read) feeds = tui.categories
tui.categories = feeds
else: else:
feeds = tui.cache.getFeeds(tui.feedView.currentCategory, tui.show_read) feeds = tui.cache.getFeeds(tui.feedView.currentCategory, tui.show_read)
tui.feedView.fill(feeds, tui.feedView.isCategoryView) tui.feedView.fill(feeds, tui.feedView.isCategoryView)
new_idx = tui.feedView.findById(itemAttrMap[0]) new_idx = tui.feedView.findById(itemAttrMap[0])
tui.feedView.set_focus(new_idx) try:
tui.feedView.set_focus(new_idx)
focus_widget, idx = tui.feedView.get_focus()
if tui.feedView.isCategoryView:
tui.feedView.currentCategory = focus_widget.attr_map[None][0]
tui.feedView.setCategoryArticles(focus_widget.attr_map[None])
else:
tui.feedView.setFeedArticles(focus_widget.attr_map[None])
try:
self.set_focus(article_idx)
except BaseException:
pass
except BaseException:
pass
return return
elif key in ("l", "right"): elif key in ("l", "right"):
if self.isList is True: if self.isList is True:
self.isList = False self.isList = False
self.chunkNumber = 0 self.chunkNumber = 0
focus_widget, idx = self.get_focus() try:
self.articlePosition = idx focus_widget, idx = self.get_focus()
articleId = focus_widget.attr_map[None] self.articlePosition = idx
self.article = Render(*tui.cache.getArticle(articleId), tui.cache.getArticleLinks(articleId)) articleId = focus_widget.attr_map[None]
walker = urwid.SimpleListWalker([urwid.Text(self.article.firstPage)]) self.article = Render(*tui.cache.getArticle(articleId), tui.cache.getArticleLinks(articleId))
self.body = walker walker = urwid.SimpleListWalker([urwid.Text(self.article.firstPage)])
self.setArticleTitle() self.body = walker
self.setArticleTitle()
except BaseException:
pass
return return
elif key in ("c"): elif key in ("c"):
if self.isList is False: if self.isList is False:
@ -218,12 +245,15 @@ class RightPane(urwid.ListBox):
self.body = walker self.body = walker
return return
elif key in ("h", "left"): elif key in ("h", "left"):
if self.isList is False: try:
self.isList = True if self.isList is False:
self.fill(tui.articles) self.isList = True
focusFeed, idx = tui.feedView.get_focus() self.fill(tui.articles)
tui.rightBox.set_title(focusFeed.attr_map[None][1]) focusFeed, idx = tui.feedView.get_focus()
self.set_focus(self.articlePosition) tui.rightBox.set_title(focusFeed.attr_map[None][1])
self.set_focus(self.articlePosition)
except BaseException:
pass
return return
elif key == "m": elif key == "m":
if self.isList is False and len(self.article.links) > 0: if self.isList is False and len(self.article.links) > 0:
@ -383,7 +413,15 @@ class TUI(urwid.Frame):
else: else:
self.feedView.setFeedArticles(focus_widget.attr_map[None]) self.feedView.setFeedArticles(focus_widget.attr_map[None])
self.categories = tui.cache.getCategories(self.show_read) self.categories = tui.cache.getCategories(self.show_read)
self.feedView.fill(self.categories, True) feeds = tui.cache.getFeeds(self.feedView.currentCategory, self.show_read)
if self.feedView.isCategoryView:
self.feedView.fill(self.categories, self.show_read)
else:
self.feedView.fill(feeds, self.show_read)
try:
self.feedView.set_focus(idx)
except BaseException:
pass
return return

Loading…
Cancel
Save