diff options
author | hut <hut@lavabit.com> | 2009-12-14 13:32:27 +0100 |
---|---|---|
committer | hut <hut@lavabit.com> | 2009-12-14 13:32:27 +0100 |
commit | d621586ed4b11b059d0de42c9af340bc94db9944 (patch) | |
tree | 0587936d73fbc02a8f22e53b0b018acd363e1913 /ranger/gui/widgets/filelistcontainer.py | |
parent | 733dbb9dbb608e8a0dec0e836c07b1dd7feb4d17 (diff) | |
download | ranger-d621586ed4b11b059d0de42c9af340bc94db9944.tar.gz |
"poke" widgets, expand last column if there's no preview
Diffstat (limited to 'ranger/gui/widgets/filelistcontainer.py')
-rw-r--r-- | ranger/gui/widgets/filelistcontainer.py | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/ranger/gui/widgets/filelistcontainer.py b/ranger/gui/widgets/filelistcontainer.py index 9d95b389..594d0530 100644 --- a/ranger/gui/widgets/filelistcontainer.py +++ b/ranger/gui/widgets/filelistcontainer.py @@ -2,15 +2,19 @@ from . import Widget from .filelist import FileList from ..displayable import DisplayableContainer +from ranger import log class FileListContainer(Widget, DisplayableContainer): ratios = None preview = True + preview_available = True def __init__(self, win, ratios, preview = True): DisplayableContainer.__init__(self, win) from functools import reduce self.ratios = ratios + self.preview = preview + # normalize ratios: ratio_sum = float(reduce(lambda x,y: x + y, ratios)) self.ratios = tuple(map(lambda x: x / ratio_sum, ratios)) @@ -34,10 +38,28 @@ class FileListContainer(Widget, DisplayableContainer): """Resize all the filelists according to the given ratio""" DisplayableContainer.resize(self, y, x, hei, wid) left = self.x - for ratio, i in zip(self.ratios, range(len(self.ratios))): + + cut_off_last = self.preview and not self.preview_available + + if cut_off_last: + generator = zip(self.ratios[:-1], range(len(self.ratios)-1)) + else: + generator = zip(self.ratios, range(len(self.ratios))) + + for ratio, i in generator: wid = int(ratio * self.wid) + if cut_off_last and i == len(self.ratios) - 2: + wid += int(self.ratios[-1] * self.wid) try: self.container[i].resize(self.y, left, hei, max(1, wid-1)) except KeyError: pass left += wid + + def poke(self): + DisplayableContainer.poke(self) + if self.preview: + has_preview = self.container[-1].has_preview() + if self.preview_available != has_preview: + self.preview_available = has_preview + self.resize(self.y, self.x, self.hei, self.wid) |