summary refs log tree commit diff stats
path: root/ranger/gui
diff options
context:
space:
mode:
Diffstat (limited to 'ranger/gui')
-rw-r--r--ranger/gui/colorscheme.py1
-rw-r--r--ranger/gui/defaultui.py5
-rw-r--r--ranger/gui/ui.py15
-rw-r--r--ranger/gui/widgets/console.py1
-rw-r--r--ranger/gui/widgets/statusbar.py31
5 files changed, 44 insertions, 9 deletions
diff --git a/ranger/gui/colorscheme.py b/ranger/gui/colorscheme.py
index 386c0f85..4fdcaad2 100644
--- a/ranger/gui/colorscheme.py
+++ b/ranger/gui/colorscheme.py
@@ -9,6 +9,7 @@ CONTEXT_KEYS = [ 'reset', 'error',
 		'space', 'permissions', 'owner', 'group', 'mtime', 'nlink',
 		'scroll', 'all', 'bot', 'top', 'percentage',
 		'marked',
+		'text', 'highlight',
 		'keybuffer']
 
 # colorscheme specification:
diff --git a/ranger/gui/defaultui.py b/ranger/gui/defaultui.py
index ba3f79c9..2b1fa188 100644
--- a/ranger/gui/defaultui.py
+++ b/ranger/gui/defaultui.py
@@ -68,5 +68,8 @@ class DefaultUI(UI):
 			self.titlebar.throbber = type(self.titlebar).throbber
 		else:
 			self.titlebar.throbber = string
-
+	
 #		self.win.addnstr(0, self.env.termsize[1]-1, string, 1)
+
+	def hint(self, text=None):
+		self.status.override = text
diff --git a/ranger/gui/ui.py b/ranger/gui/ui.py
index 8134231e..07c2de6f 100644
--- a/ranger/gui/ui.py
+++ b/ranger/gui/ui.py
@@ -105,6 +105,10 @@ class UI(DisplayableContainer):
 
 	def handle_key(self, key):
 		"""Handles key input"""
+
+		if hasattr(self, 'hint'):
+			self.hint()
+
 		self.env.key_append(key)
 
 		if DisplayableContainer.press(self, key):
@@ -121,11 +125,12 @@ class UI(DisplayableContainer):
 			self.env.key_clear()
 			return
 
-		if cmd == self.commandlist.dummy_object:
-			return
-
-		cmd.execute(self.fm, self.env.keybuffer.number)
-		self.env.key_clear()
+		if hasattr(cmd, 'text'):
+			if hasattr(self, 'hint'):
+				self.hint(cmd.text)
+		elif hasattr(cmd, 'execute'):
+				cmd.execute(self.fm, self.env.keybuffer.number)
+				self.env.key_clear()
 
 	def get_next_key(self):
 		"""Waits for key input and returns the pressed key"""
diff --git a/ranger/gui/widgets/console.py b/ranger/gui/widgets/console.py
index 1512b763..ee80e639 100644
--- a/ranger/gui/widgets/console.py
+++ b/ranger/gui/widgets/console.py
@@ -20,6 +20,7 @@ class Console(Widget):
 	original_line = None
 	history = None
 	histories = None
+	override = None
 
 	def __init__(self, win):
 		from ranger.container import CommandList, History
diff --git a/ranger/gui/widgets/statusbar.py b/ranger/gui/widgets/statusbar.py
index 17a5348b..c3c5e74e 100644
--- a/ranger/gui/widgets/statusbar.py
+++ b/ranger/gui/widgets/statusbar.py
@@ -15,6 +15,7 @@ class StatusBar(Widget):
 	owners = {}
 	groups = {}
 	timeformat = '%Y-%m-%d %H:%M'
+	override = None
 
 	def __init__(self, win, filelist=None):
 		Widget.__init__(self, win)
@@ -26,9 +27,33 @@ class StatusBar(Widget):
 		# each item in the returned array looks like:
 		# [ list_with_color_tags,       string       ]
 		# [ ['permissions', 'allowed'], '-rwxr-xr-x' ]
-		left = self._get_left_part()
-		right = self._get_right_part()
-		self._print_result(self._combine_parts(left, right))
+
+		if self.override and isinstance(self.override, str):
+			self._draw_message()
+		else:
+			left = self._get_left_part()
+			right = self._get_right_part()
+			self._print_result(self._combine_parts(left, right))
+	
+	def _draw_message(self):
+		highlight = True
+		space_left = self.wid
+		starting_point = self.x
+		for string in self.override.split('//'):
+			highlight = not highlight
+			if highlight:
+				self.color('in_statusbar', 'text', 'highlight')
+			else:
+				self.color('in_statusbar', 'text')
+
+			try:
+				self.win.addnstr(self.y, starting_point, string, space_left)
+			except:
+				break
+			space_left -= len(string)
+			starting_point += len(string)
+#			if starting_point >= self.wid:
+#				break
 
 	def _get_left_part(self):
 		part = []