From 656c2bf6deb5dfbbd971880154f109ceb2be87c3 Mon Sep 17 00:00:00 2001 From: hut Date: Wed, 14 Apr 2010 00:39:48 +0200 Subject: dirarg: fully functioning now --- ranger/core/actions.py | 31 ++++++++++++++++++------------- ranger/ext/direction.py | 4 +++- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/ranger/core/actions.py b/ranger/core/actions.py index 929dec31..e8634099 100644 --- a/ranger/core/actions.py +++ b/ranger/core/actions.py @@ -545,20 +545,25 @@ class Actions(FileManagerAware, EnvironmentAware, SettingsAware): def copy(self, narg=None, dirarg=None): """Copy the selected items""" cwd = self.env.cwd - direction = Direction(dirarg or {}) - if direction.vertical(): - pos, selected = direction.select( - override=narg, lst=cwd.files, current=currentpos, - pagesize=self.env.termsize[0]) - else: - pos = currentpos + (narg or 0) + if not narg and not dirarg: selected = (f for f in self.env.get_selection() if f in cwd.files) - self.env.copy = set(selected) - self.env.copy.add(self.env.cwd.pointed_obj) - self.env.cut = False - self.env.cwd.pointer = pos - self.env.cwd.correct_pointer() - self.env.copy.add(self.env.cwd.pointed_obj) + self.env.copy = set(selected) + self.env.cut = False + else: + direction = Direction(dirarg or {}) + offset = 0 + if not direction.vertical(): + direction = Direction(down=1) + offset = -1 + pos, selected = direction.select( + override=narg, lst=cwd.files, current=cwd.pointer, + pagesize=self.env.termsize[0], offset=offset) + self.env.copy = set(selected) + self.env.copy.add(self.env.cwd.pointed_obj) + self.env.cut = False + self.env.cwd.pointer = pos + self.env.cwd.correct_pointer() + self.env.copy.add(self.env.cwd.pointed_obj) self.ui.browser.main_column.request_redraw() def cut(self, narg=None, dirarg=None): diff --git a/ranger/ext/direction.py b/ranger/ext/direction.py index f96ee90f..5a22d553 100644 --- a/ranger/ext/direction.py +++ b/ranger/ext/direction.py @@ -134,9 +134,11 @@ class Direction(dict): pos += current return int(max(min(pos, maximum + offset - 1), minimum)) - def select(self, lst, override, current, pagesize): + def select(self, lst, override, current, pagesize, offset=0): destination = self.move(direction=self.down(), override=override, current=current, pagesize=pagesize, minimum=0, maximum=len(lst)) if destination > current: + destination += offset return destination, lst[current:destination] + destination -= offset return destination, lst[destination:current] -- cgit 1.4.1-2-gfad0