From cbf2f5ca13deded5c86e66b1e2bfd329ddfa62e2 Mon Sep 17 00:00:00 2001 From: VikingKong Date: Mon, 9 Jan 2023 18:23:49 +0300 Subject: [PATCH] Fix bugs on toggling articles read/unread. --- App.py | 160 +++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 99 insertions(+), 61 deletions(-) diff --git a/App.py b/App.py index b916406..c6b3fea 100644 --- a/App.py +++ b/App.py @@ -65,44 +65,53 @@ class LeftPane(urwid.ListBox): tui.articleView.fill(tui.articles) self.setArticlesPaneTitle(attrMap[1]) - def keypress(self, size, key): + def keypress(self, size, key): # noqa if key in ("j", "down"): item_size = len(self.body) - focus_widget, idx = self.get_focus() - if idx < item_size - 1: - 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]) + try: + focus_widget, idx = self.get_focus() + if idx < item_size - 1: + 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]) + except BaseException: + pass return elif key in ("k", "up"): - focus_widget, idx = self.get_focus() - 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 + try: 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) + if idx > 0: + idx = idx - 1 + self.set_focus(idx) focus_widget, idx = self.get_focus() - self.setFeedArticles(focus_widget.attr_map[None]) - tui.leftBox.set_title(categoryName) + 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]) + 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 elif key in ("h", "left"): if not self.isCategoryView: @@ -157,20 +166,26 @@ class RightPane(urwid.ListBox): self.body = walker self.setArticleTitle() item_size = len(self.body) - focus_widget, idx = self.get_focus() - if idx < item_size - 1: - idx = idx + 1 - self.set_focus(idx) + try: + focus_widget, idx = self.get_focus() + if idx < item_size - 1: + idx = idx + 1 + self.set_focus(idx) + except BaseException: + pass return elif key in ("k", "up"): if not self.isList: walker = urwid.SimpleListWalker([urwid.Text(self.article.scrollUp())]) self.body = walker self.setArticleTitle() - focus_widget, idx = self.get_focus() - if idx > 0: - idx = idx - 1 - self.set_focus(idx) + try: + focus_widget, idx = self.get_focus() + if idx > 0: + idx = idx - 1 + self.set_focus(idx) + except BaseException: + pass return elif key in ("r"): if self.isList is True: @@ -186,30 +201,42 @@ class RightPane(urwid.ListBox): tui.feedView.setFeedArticles(itemAttrMap) if article_idx > 0: article_idx -= 1 - try: - self.set_focus(article_idx) - except BaseException: - pass + tui.categories = tui.cache.getCategories(tui.show_read) if tui.feedView.isCategoryView: - feeds = tui.cache.getCategories(tui.show_read) - tui.categories = feeds + feeds = tui.categories else: feeds = tui.cache.getFeeds(tui.feedView.currentCategory, tui.show_read) tui.feedView.fill(feeds, tui.feedView.isCategoryView) 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 elif key in ("l", "right"): if self.isList is True: self.isList = False self.chunkNumber = 0 - focus_widget, idx = self.get_focus() - self.articlePosition = idx - articleId = focus_widget.attr_map[None] - self.article = Render(*tui.cache.getArticle(articleId), tui.cache.getArticleLinks(articleId)) - walker = urwid.SimpleListWalker([urwid.Text(self.article.firstPage)]) - self.body = walker - self.setArticleTitle() + try: + focus_widget, idx = self.get_focus() + self.articlePosition = idx + articleId = focus_widget.attr_map[None] + self.article = Render(*tui.cache.getArticle(articleId), tui.cache.getArticleLinks(articleId)) + walker = urwid.SimpleListWalker([urwid.Text(self.article.firstPage)]) + self.body = walker + self.setArticleTitle() + except BaseException: + pass return elif key in ("c"): if self.isList is False: @@ -218,12 +245,15 @@ class RightPane(urwid.ListBox): self.body = walker return elif key in ("h", "left"): - if self.isList is False: - self.isList = True - self.fill(tui.articles) - focusFeed, idx = tui.feedView.get_focus() - tui.rightBox.set_title(focusFeed.attr_map[None][1]) - self.set_focus(self.articlePosition) + try: + if self.isList is False: + self.isList = True + self.fill(tui.articles) + focusFeed, idx = tui.feedView.get_focus() + tui.rightBox.set_title(focusFeed.attr_map[None][1]) + self.set_focus(self.articlePosition) + except BaseException: + pass return elif key == "m": if self.isList is False and len(self.article.links) > 0: @@ -383,7 +413,15 @@ class TUI(urwid.Frame): else: self.feedView.setFeedArticles(focus_widget.attr_map[None]) 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