def __init__(self, win): ViewBase.__init__(self, win) self.fm.signal_bind('tab.layoutchange', self._layoutchange_handler) self.fm.signal_bind('tab.change', self._tabchange_handler) self.rebuild() self.old_draw_borders = self._draw_borders_setting()
def resize(self, y, x, hei=None, wid=None): ViewBase.resize(self, y, x, hei, wid) column_width = int((wid - len(self.columns) + 1) / len(self.columns)) left = 0 top = 0 for column in self.columns: column.resize(top, left, hei, max(1, column_width)) left += column_width + 1 column.need_redraw = True self.need_redraw = True
def resize(self, y, x, hei, wid): ViewBase.resize(self, y, x, hei, wid) column_width = int(float(wid) / len(self.columns)) left = 0 top = 0 for i, column in enumerate(self.columns): column.resize(top, left, hei, max(1, column_width - 1)) left += column_width column.need_redraw = True self.need_redraw = True
def __init__(self, win): ViewBase.__init__(self, win) self.preview = True self.columns = [] self.rebuild() for option in ('preview_directories', 'preview_files'): self.settings.signal_bind('setopt.' + option, self._request_clear_if_has_borders, weak=True) self.settings.signal_bind('setopt.column_ratios', self.request_clear) self.settings.signal_bind('setopt.column_ratios', self.rebuild, priority=settings.SIGNAL_PRIORITY_AFTER_SYNC) self.old_draw_borders = self.settings.draw_borders
def resize(self, y, x, hei=None, wid=None): """Resize all the columns according to the given ratio""" ViewBase.resize(self, y, x, hei, wid) border_type = self.settings.draw_borders.lower() if border_type in ['outline', 'both', 'true']: pad = 1 else: pad = 0 left = pad self.is_collapsed = self._collapse() if self.is_collapsed: generator = enumerate(self.stretch_ratios) else: generator = enumerate(self.ratios) last_i = len(self.ratios) - 1 for i, ratio in generator: wid = int(ratio * self.wid) cut_off = self.is_collapsed and not self.settings.padding_right if i == last_i: if not cut_off: wid = int(self.wid - left + 1 - pad) else: self.columns[i].resize(pad, max(0, left - 1), hei - pad * 2, 1) self.columns[i].visible = False continue if i == last_i - 1: self.pager.resize(pad, left, hei - pad * 2, max(1, self.wid - left - pad)) if cut_off: self.columns[i].resize(pad, left, hei - pad * 2, max(1, self.wid - left - pad)) continue try: self.columns[i].resize(pad, left, hei - pad * 2, max(1, wid - 1)) except KeyError: pass left += wid
def resize(self, y, x, hei=None, wid=None): ViewBase.resize(self, y, x, hei, wid) border_type = self._draw_borders_setting() if border_type in ['outline', 'both', 'true', 'active-pane']: # 'true' for backwards compat., no height pad needed for 'separators' pad = 1 else: pad = 0 column_width = int((wid - len(self.columns) + 1) / len(self.columns)) left = 0 top = 0 for column in self.columns: column.resize(top + pad, left, hei - pad * 2, max(1, column_width)) left += column_width + 1 column.need_redraw = True self.need_redraw = True
def poke(self): ViewBase.poke(self) # Show the preview column when it has a preview but has # been hidden (e.g. because of padding_right = False) if not self.columns[-1].visible and self.columns[-1].has_preview() \ and not self.pager.visible: self.columns[-1].visible = True if self.preview and self.is_collapsed != self._collapse(): if self.fm.settings.preview_files: # force clearing the image when resizing preview column self.columns[-1].clear_image(force=True) self.resize(self.y, self.x, self.hei, self.wid) if self.old_draw_borders != self.settings.draw_borders: self.resize(self.y, self.x, self.hei, self.wid) self.old_draw_borders = self.settings.draw_borders
def resize(self, y, x, hei, wid): """Resize all the columns according to the given ratio""" ViewBase.resize(self, y, x, hei, wid) borders = self.settings.draw_borders pad = 1 if borders else 0 left = pad self.is_collapsed = self._collapse() if self.is_collapsed: generator = enumerate(self.stretch_ratios) else: generator = enumerate(self.ratios) last_i = len(self.ratios) - 1 for i, ratio in generator: wid = int(ratio * self.wid) cut_off = self.is_collapsed and not self.settings.padding_right if i == last_i: if not cut_off: wid = int(self.wid - left + 1 - pad) else: self.columns[i].resize(pad, max(0, left - 1), hei - pad * 2, 1) self.columns[i].visible = False continue if i == last_i - 1: self.pager.resize(pad, left, hei - pad * 2, max(1, self.wid - left - pad)) if cut_off: self.columns[i].resize(pad, left, hei - pad * 2, max(1, self.wid - left - pad)) continue try: self.columns[i].resize(pad, left, hei - pad * 2, max(1, wid - 1)) except KeyError: pass left += wid
def __init__(self, win): ViewBase.__init__(self, win) self.preview = True self.columns = [] self.pager = Pager(self.win, embedded=True) self.pager.visible = False self.add_child(self.pager) self.rebuild() for option in ('preview_directories', 'preview_files'): self.settings.signal_bind('setopt.' + option, self._request_clear_if_has_borders, weak=True) self.settings.signal_bind('setopt.column_ratios', self.request_clear) self.settings.signal_bind('setopt.column_ratios', self.rebuild) self.old_draw_borders = self.settings.draw_borders
def draw(self): if self.need_clear: self.win.erase() self.need_redraw = True self.need_clear = False ViewBase.draw(self) if self._draw_borders_setting(): draw_borders = self._draw_borders_setting() if draw_borders in ['both', 'true']: # 'true' for backwards compat. border_types = ['separators', 'outline'] else: border_types = [draw_borders] self._draw_borders(border_types) if self.draw_bookmarks: self._draw_bookmarks() elif self.draw_hints: self._draw_hints() elif self.draw_info: self._draw_info(self.draw_info)
def resize(self, y, x, hei=None, wid=None): ViewBase.resize(self, y, x, hei, wid) border_type = self._draw_borders_setting() if border_type in ['outline', 'both', 'true', 'active-pane']: # 'true' for backwards compat., no height pad needed for 'separators' pad = 1 else: pad = 0 column_width = int((wid - len(self.columns) + 1) / len(self.columns)) left = 0 top = 0 # Edge case where left-most column needs padding in case of line numbers left_most_col = self.columns[0] left_most_col.resize(top + pad, left + 1, hei - pad * 2, max(1, column_width - 1)) left += column_width + 1 for column in self.columns[1:]: column.resize(top + pad, left, hei - pad * 2, max(1, column_width)) left += column_width + 1 column.need_redraw = True self.need_redraw = True
def __init__(self, win): ViewBase.__init__(self, win) self.fm.signal_bind('tab.layoutchange', self._layoutchange_handler) self.fm.signal_bind('tab.change', self._tabchange_handler) self.rebuild()
def poke(self): ViewBase.poke(self) if self.old_draw_borders != self._draw_borders_setting(): self.resize(self.y, self.x, self.hei, self.wid) self.old_draw_borders = self._draw_borders_setting()