summary refs log tree commit diff stats
path: root/ranger
diff options
context:
space:
mode:
authorhut <hut@lavabit.com>2009-12-13 19:42:51 +0100
committerhut <hut@lavabit.com>2009-12-13 19:42:51 +0100
commit1159f9ec182496ddc5324f23fb1d5eae73fe63e3 (patch)
tree02a79bdd232b7aa5f49e7ee9ec713141a4118358 /ranger
parent4c05e43d11430fbfd8a5d86ae0070e24775251b1 (diff)
downloadranger-1159f9ec182496ddc5324f23fb1d5eae73fe63e3.tar.gz
updated / added tests
Diffstat (limited to 'ranger')
-rw-r--r--ranger/container/bookmarks.py4
-rw-r--r--ranger/gui/defaultui.py6
-rw-r--r--ranger/gui/displayable.py39
-rw-r--r--ranger/gui/ui.py7
4 files changed, 36 insertions, 20 deletions
diff --git a/ranger/container/bookmarks.py b/ranger/container/bookmarks.py
index bf41150c..d57ff4a9 100644
--- a/ranger/container/bookmarks.py
+++ b/ranger/container/bookmarks.py
@@ -1,4 +1,3 @@
-from ranger import log, trace
 import string
 import re
 import os
@@ -112,9 +111,6 @@ Useful if two instances are running which define different bookmarks.
 			else:
 				real = None
 
-			log(key, current, original, real)
-#			trace()
-
 			if current == original and current != real:
 				continue
 
diff --git a/ranger/gui/defaultui.py b/ranger/gui/defaultui.py
index b9758e8d..5b32690d 100644
--- a/ranger/gui/defaultui.py
+++ b/ranger/gui/defaultui.py
@@ -1,8 +1,8 @@
 
 RATIO = ( 3, 3, 12, 9 )
 
-from ranger.gui.ui import UI as SuperClass
-class DefaultUI(SuperClass):
+from ranger.gui.ui import UI
+class DefaultUI(UI):
 	def setup(self):
 		"""Build up the UI by initializing widgets."""
 		from ranger.gui.widgets.filelistcontainer import FileListContainer
@@ -20,7 +20,7 @@ class DefaultUI(SuperClass):
 
 	def update_size(self):
 		"""resize all widgets"""
-		SuperClass.update_size(self)
+		UI.update_size(self)
 		y, x = self.env.termsize
 
 		self.filelist_container.resize(1, 0, y-2, x)
diff --git a/ranger/gui/displayable.py b/ranger/gui/displayable.py
index a19633b5..ef0260dc 100644
--- a/ranger/gui/displayable.py
+++ b/ranger/gui/displayable.py
@@ -6,12 +6,19 @@ class Displayable(EnvironmentAware, FileManagerAware, SettingsAware):
 	win = None
 	colorscheme = None
 
-	def __init__(self, win):
+	def __init__(self, win, env=None, fm=None, settings=None):
+		if env is not None:
+			self.env = env
+		if fm is not None:
+			self.fm = fm
+		if settings is not None:
+			self.settings = settings
+
 		self.x = 0
 		self.y = 0
 		self.wid = 0
 		self.hei = 0
-		self.colorscheme = self.env.settings.colorscheme
+		self.colorscheme = self.settings.colorscheme
 
 		if win is not None:
 			self.win = win
@@ -24,13 +31,11 @@ class Displayable(EnvironmentAware, FileManagerAware, SettingsAware):
 		"""Is item inside the boundaries?
 item can be an iterable like [y, x] or an object with x and y methods."""
 		try:
-			y, x = item
-		except ValueError:
-			return False
-		except TypeError:
+			y, x = item.y, item.x
+		except AttributeError:
 			try:
-				y, x = item.y, item.x
-			except AttributeError:
+				y, x = item
+			except (ValueError, TypeError):
 				return False
 		
 		return self.contains_point(y, x)
@@ -93,6 +98,9 @@ Override this!"""
 			wid = wid or maxx - x
 			hei = hei or maxy - y
 
+			if x < 0 or y < 0:
+				raise OutOfBoundsException("Starting point below zero!")
+
 			if x + wid > maxx and y + hei > maxy:
 				raise OutOfBoundsException("X and Y out of bounds!")
 
@@ -110,7 +118,14 @@ Override this!"""
 
 class DisplayableContainer(Displayable):
 	container = None
-	def __init__(self, win):
+	def __init__(self, win, env=None, fm=None, settings=None):
+		if env is not None:
+			self.env = env
+		if fm is not None:
+			self.fm = fm
+		if settings is not None:
+			self.settings = settings
+
 		Displayable.__init__(self, win)
 		self.container = []
 
@@ -152,7 +167,7 @@ class DisplayableContainer(Displayable):
 	def click(self, event):
 		"""Recursively called on objects in container"""
 		focused_obj = self.get_focused_obj()
-		if focused_obj and focused_obj.click(key):
+		if focused_obj and focused_obj.click(event):
 			return True
 
 		for displayable in self.container:
@@ -162,8 +177,8 @@ class DisplayableContainer(Displayable):
 
 		return False
 
-	def add_obj(self, obj):
-		self.container.append(obj)
+	def add_obj(self, *objs):
+		self.container.extend(objs)
 
 	def destroy(self):
 		"""Recursively called on objects in container"""
diff --git a/ranger/gui/ui.py b/ranger/gui/ui.py
index 4b473021..3840a978 100644
--- a/ranger/gui/ui.py
+++ b/ranger/gui/ui.py
@@ -7,10 +7,15 @@ from ranger.container import CommandList
 class UI(DisplayableContainer):
 	is_set_up = False
 	mousemask = curses.ALL_MOUSE_EVENTS | curses.REPORT_MOUSE_POSITION
-	def __init__(self, commandlist = None):
+	def __init__(self, commandlist=None, env=None, fm=None):
 		import os
 		os.environ['ESCDELAY'] = '25' # don't know a cleaner way
 
+		if env is not None:
+			self.env = env
+		if fm is not None:
+			self.fm = fm
+
 		if commandlist is None:
 			self.commandlist = CommandList()
 			self.settings.keys.initialize_commands(self.commandlist)