mechanic: emit bar signals if significant changes

This commit is contained in:
rr-
2019-01-04 00:43:44 +01:00
parent 97d958d2e7
commit ed9e513271
+11 -5
View File
@@ -1,6 +1,7 @@
import datetime import datetime
import itertools import itertools
import logging import logging
import math
import typing as T import typing as T
from collections import defaultdict from collections import defaultdict
from dataclasses import dataclass from dataclasses import dataclass
@@ -45,9 +46,12 @@ class Bar(SignalMixin):
self.emit("change") self.emit("change")
def reset(self, new_max: int, position: float = 0.0) -> None: def reset(self, new_max: int, position: float = 0.0) -> None:
self._max = new_max if not math.isclose(new_max, self._max) or not math.isclose(
self._position = position position, self._position
self.emit("change") ):
self._max = new_max
self._position = position
self.emit("change")
def increment(self, inc: float) -> None: def increment(self, inc: float) -> None:
self.reposition(self._position + inc) self.reposition(self._position + inc)
@@ -65,8 +69,10 @@ class Bar(SignalMixin):
return self._position >= self.max_ return self._position >= self.max_
def reposition(self, new_pos: float) -> None: def reposition(self, new_pos: float) -> None:
self._position = float(min(new_pos, self._max)) new_pos = float(min(new_pos, self._max))
self.emit("change") if not math.isclose(new_pos, self._position):
self._position = new_pos
self.emit("change")
class Stats(SignalMixin): class Stats(SignalMixin):