diff options
author | hut <hut@lavabit.com> | 2010-01-13 18:47:39 +0100 |
---|---|---|
committer | hut <hut@lavabit.com> | 2010-01-13 18:47:39 +0100 |
commit | ccd3f3c3f8baccf700f7f5286d33156a6938edfe (patch) | |
tree | 17ed97e6134af8328aaf6f8c9fc36eeb298c83ef /ranger | |
parent | b3556b21e23eb3381b220e0d3319d94b3a89e0ac (diff) | |
download | ranger-ccd3f3c3f8baccf700f7f5286d33156a6938edfe.tar.gz |
commandlist: improvements and test case
Diffstat (limited to 'ranger')
-rw-r--r-- | ranger/container/commandlist.py | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/ranger/container/commandlist.py b/ranger/container/commandlist.py index bc8361ad..eca73f23 100644 --- a/ranger/container/commandlist.py +++ b/ranger/container/commandlist.py @@ -41,6 +41,8 @@ class CommandList(object): def __getitem__(self, key): """Returns the command with the given key combination""" + if isinstance(key, str): + key = self._str_to_tuple(key) return self.paths[key] def rebuild_paths(self): @@ -53,7 +55,7 @@ class CommandList(object): """ if self.dummies_in_paths: self.remove_dummies() - + for cmd in self.commandlist: for key in cmd.keys: for path in self._keypath(key): @@ -95,7 +97,7 @@ class CommandList(object): if isinstance(obj, tuple): return obj elif isinstance(obj, str): - return tuple(map(ord, list(obj))) + return tuple(map(ord, obj)) elif isinstance(obj, int): return (obj, ) else: @@ -110,7 +112,7 @@ class CommandList(object): cmd = Command(fnc, keys) self.commandlist.append(cmd) - for key in keys: + for key in cmd.keys: self.paths[key] = cmd def hint(self, text, *keys): @@ -122,9 +124,23 @@ class CommandList(object): obj = Hint(text, keys) self.commandlist.append(obj) - for key in keys: + for key in obj.keys: self.paths[key] = obj + def unbind(self, *keys): + i = len(self.commandlist) + keys = set(map(self._str_to_tuple, keys)) + + while i > 0: + i -= 1 + cmd = self.commandlist[i] + cmd.keys -= keys + if not cmd.keys: + del self.commandlist[i] + + for k in keys: + del self.paths[k] + class Command(object): """Command objects store information about a command""" @@ -132,7 +148,7 @@ class Command(object): keys = [] def __init__(self, fnc, keys): - self.keys = keys + self.keys = set(keys) self.execute = fnc def execute(self, *args): @@ -151,7 +167,7 @@ class Hint(object): text = '' def __init__(self, text, keys): - self.keys = keys + self.keys = set(keys) self.text = text # def __str__(self): |