kuuko pushed a commit to branch master. http://git.enlightenment.org/apps/epour.git/commit/?id=1fe0cf1b843441ff8acc4eb141e114433fab0688
commit 1fe0cf1b843441ff8acc4eb141e114433fab0688 Author: Kai Huuhko <[email protected]> Date: Sun Jul 20 13:59:30 2014 +0300 Pause gui updates when iconized/withdrawn --- TODO | 2 +- epour/gui/TorrentProps.py | 13 +++++++++++-- epour/gui/__init__.py | 13 +++++++++++++ epour/session.py | 3 +++ 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/TODO b/TODO index d5831a3..bc3d4b3 100644 --- a/TODO +++ b/TODO @@ -42,7 +42,7 @@ Misc: ☐ Save torrent & resume data periodically http://libtorrent.org/reference-Core.html#save_resume_data() http://libtorrent.org/reference-Core.html#need_save_resume_data() - ☐ Pause gui updates when iconized + ✔ Pause gui updates when iconized/withdrawn @done (13:58 20.07.2014) Error handling: ☐ Torrent errors http://libtorrent.org/reference-Alerts.html#torrent_error_alert diff --git a/epour/gui/TorrentProps.py b/epour/gui/TorrentProps.py index c233c17..58f75d3 100644 --- a/epour/gui/TorrentProps.py +++ b/epour/gui/TorrentProps.py @@ -25,7 +25,7 @@ import os import pipes from datetime import datetime, timedelta import logging -log = logging.getLogger("epour") +log = logging.getLogger("epour.gui") import libtorrent as lt @@ -222,12 +222,17 @@ class TorrentFiles(StandardWindow): filelist.data["progress"] = h.file_progress() def update_progress(h): + #log.debug("File progress TICK") filelist.data["progress"] = h.file_progress() for it in filelist.realized_items: it.fields_update("*", ELM_GENLIST_ITEM_FIELD_TEXT) return True - ecore.Timer(5.0, update_progress, h) + timer = ecore.Timer(5.0, update_progress, h) + self.on_del_add(lambda x: timer.delete()) + self.callback_withdrawn_add(lambda x: timer.freeze()) + self.callback_iconified_add(lambda x: timer.freeze()) + self.callback_normal_add(lambda x: timer.thaw()) filelist.callback_expand_request_add(self.expand_request_cb) filelist.callback_contract_request_add(self.contract_request_cb) @@ -616,6 +621,7 @@ class TorrentStatus(Table): i += 1 def update(): + #log.debug("Torrent status TICK") s = h.status() for w in self.widgets: key = w.data["key"] @@ -626,6 +632,9 @@ class TorrentStatus(Table): timer = ecore.Timer(5.0, update) self.on_del_add(lambda x: timer.delete()) + self.top_widget.callback_withdrawn_add(lambda x: timer.freeze()) + self.top_widget.callback_iconified_add(lambda x: timer.freeze()) + self.top_widget.callback_normal_add(lambda x: timer.thaw()) @staticmethod def populate(w, v): diff --git a/epour/gui/__init__.py b/epour/gui/__init__.py index ff17401..3380235 100644 --- a/epour/gui/__init__.py +++ b/epour/gui/__init__.py @@ -234,10 +234,14 @@ class MainInterface(object): self.timer = Timer(1.0, self.update) self.win.on_del_add(lambda x: self.timer.delete()) + self.win.callback_withdrawn_add(lambda x: self.timer.freeze()) + self.win.callback_iconified_add(lambda x: self.timer.freeze()) + self.win.callback_normal_add(lambda x: self.timer.thaw()) elm.run() elm.shutdown() def update(self): + #log.debug("Torrent list TICK") for v in self.tlist.realized_items_get(): v.fields_update("*", ELM_GENLIST_ITEM_FIELD_TEXT) return True @@ -373,8 +377,16 @@ class SessionStatus(Table): self.update_timer = Timer(1.0, self.update) self.on_del_add(lambda x: self.update_timer.delete()) + self.top_widget.callback_withdrawn_add( + lambda x: self.update_timer.freeze() + ) + self.top_widget.callback_iconified_add( + lambda x: self.update_timer.freeze() + ) + self.top_widget.callback_normal_add(lambda x: self.update_timer.thaw()) def update(self): + #log.debug("Session status TICK") s = self.session.status() self.d_l.text = "{}/s".format(intrepr(s.payload_download_rate)) self.u_l.text = "{}/s".format(intrepr(s.payload_upload_rate)) @@ -644,6 +656,7 @@ class TorrentTooltip(Table): @staticmethod def update(h, items, value_labels, g): + #log.debug("Tooltip TICK") s = h.status(8) for i, l in enumerate(value_labels): conv, attr_name = items[i][1:] diff --git a/epour/session.py b/epour/session.py index d869736..37df9ff 100644 --- a/epour/session.py +++ b/epour/session.py @@ -385,6 +385,7 @@ class AlertManager(object): def __init__(self, session): self.session = session + # TODO: Use the lt alert interval from session settings here? self.timer = Timer(self.update_interval, self.update) def callback_add(self, alert_type, cb, *args, **kwargs): @@ -411,6 +412,8 @@ class AlertManager(object): self.log.exception("Exception while handling alerts") def update(self): + # TODO: Use pop_alerts() + #self.log.debug("Alerts TICK") while 1: a = self.session.pop_alert() if not a: --
