From 1fd1fb21d0007d1e5146757de72d8e9e7aa3dfde Mon Sep 17 00:00:00 2001 From: Lynne Date: Sun, 23 Aug 2020 22:59:56 +1000 Subject: [PATCH] don't redraw the whole list after a rename --- buypeeb.py | 28 +++++++++++++++------------- listing.py | 10 ++++++++++ 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/buypeeb.py b/buypeeb.py index 7ee8d11..c842389 100755 --- a/buypeeb.py +++ b/buypeeb.py @@ -167,18 +167,20 @@ class BuypeebApp: self.updateListTimes() - def updateListTimes(self): - now = datetime.now() - ndate = now.strftime("%d %b") + def updateListItem(self, id: str): + item = self.settings.watchlist[id] for listing in self.items: - id = listing[3] - item = self.settings.watchlist[id] - if item.end_date != None: - idate, itime = item.end_date.strftime("%d %b"), item.end_date.strftime("%H:%M") - if idate == ndate: - listing[2] = itime - else: - listing[2] = f"{idate} {itime}" + if listing[3] == id: + treeIter = Gtk.TreeModel.get_iter(self.items, listing.path) + self.items.set(treeIter, 0, item.name) + self.items.set(treeIter, 1, item.price_aud()) + self.items.set(treeIter, 2, item.ending_at()) + + + def updateListTimes(self): + for listing in self.items: + item = self.settings.watchlist[listing[3]] + listing[2] = item.ending_at() def updateSidePane(self, id: str): item = self.settings.watchlist[id] @@ -188,7 +190,7 @@ class BuypeebApp: "Price": item.price_jpy(), "PriceAUD": item.price_aud(), "Ending": item.ending_in(), - "Bids": item.bids + "Bids": str(item.bids) } for label, contents in info.items(): @@ -251,7 +253,7 @@ class BuypeebApp: if name: item.name = name - self.renderList() # TODO: only update the changed item + self.updateListItem(item.id) def btnSelectedRemoveClicked(self, widget): del self.settings.watchlist[self.selected] diff --git a/listing.py b/listing.py index 3924fdc..08bf99c 100644 --- a/listing.py +++ b/listing.py @@ -114,3 +114,13 @@ class YahooAuctionsItem: def ending_in(self): return "heenlo" + + def ending_at(self): + now = datetime.now() + ndate = now.strftime("%d %b") + if self.end_date != None: + idate, itime = self.end_date.strftime("%d %b"), self.end_date.strftime("%H:%M") + if idate == ndate: + return itime + else: + return f"{idate} {itime}"