Beispiel #1
0
    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()
Beispiel #2
0
 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
Beispiel #3
0
 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
Beispiel #4
0
 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
Beispiel #5
0
    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
Beispiel #6
0
    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
Beispiel #7
0
    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
Beispiel #8
0
    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
Beispiel #9
0
    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
Beispiel #10
0
    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
Beispiel #11
0
    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
Beispiel #12
0
    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
Beispiel #13
0
    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
Beispiel #14
0
    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)
Beispiel #15
0
    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
Beispiel #16
0
    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()
Beispiel #17
0
    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()