[kupfer] browser, data: Experiment with soft reset



commit 541c37a2b75a78b64e73da34e5a02f922afe8ec0
Author: Ulrik Sverdrup <ulrik sverdrup gmail com>
Date:   Mon Sep 7 22:12:23 2009 +0200

    browser, data: Experiment with soft reset

 kupfer/browser.py |   18 +++++++++++++-----
 kupfer/data.py    |   15 +++++++++++++--
 2 files changed, 26 insertions(+), 7 deletions(-)
---
diff --git a/kupfer/browser.py b/kupfer/browser.py
index e39975c..c10bfb2 100644
--- a/kupfer/browser.py
+++ b/kupfer/browser.py
@@ -656,7 +656,8 @@ class LeafSearch (Search):
 		if empty and self.source:
 			return _("%s is empty") % self.source, get_pbuf(self.source)
 		elif self.source:
-			return _("No matches in %s") % self.source, get_pbuf(self.source)
+			return (_('No matches in %s for "%s"') % (self.source, self.text),
+					get_pbuf(self.source))
 		else:
 			return unicode(self.dummy), self.dummy.get_pixbuf(self.icon_size)
 	def setup_empty(self):
@@ -723,6 +724,7 @@ class Interface (gobject.GObject):
 		self._key_press_interval = 0.8
 		self._key_pressed = None
 		self._theme_colors = {}
+		self._reset_to_toplevel = False
 		self.entry.set_size_request(0, 0)
 		window.connect("map-event", self._map_window)
 
@@ -884,6 +886,7 @@ class Interface (gobject.GObject):
 		if keyv not in self.keys_sensible:
 			# exit if not handled
 			return False
+		self._reset_to_toplevel = False
 
 		if keyv == key_book["Escape"]:
 			self._escape_key_press()
@@ -954,6 +957,7 @@ class Interface (gobject.GObject):
 		if self.current.get_table_visible():
 			self.current.hide_table()
 		self._relax_search_terms()
+		self._reset_to_toplevel = True
 
 	def _back_key_press(self):
 		"""Handle leftarrow and backspace
@@ -963,14 +967,17 @@ class Interface (gobject.GObject):
 			self.reset()
 			self.reset_current()
 			self._relax_search_terms()
+			self._reset_to_toplevel = True
 		else:
 			if self._browse_up():
 				pass
 			else:
 				self.reset()
 				self.reset_current()
+				self._reset_to_toplevel = True
 
 	def _relax_search_terms(self):
+		print "relax"
 		if self.get_in_text_mode():
 			return
 		self.reset_text()
@@ -1043,6 +1050,7 @@ class Interface (gobject.GObject):
 	def put_away(self):
 		"""Called when the interface is hidden"""
 		self._show_third_pane(False)
+		self._reset_to_toplevel = True
 
 	def _pane_reset(self, controller, pane, item):
 		wid = self._widget_for_pane(pane)
@@ -1187,10 +1195,10 @@ class Interface (gobject.GObject):
 			return
 
 		pane = self._pane_for_widget(self.current)
-		if not self.current.get_is_browsing():
-			print "Not browsing"
-			#self.data_controller.reset_pane(pane)
-
+		if not self.get_in_text_mode() and self._reset_to_toplevel:
+			print "reset to toplevel"
+			self.data_controller.soft_reset(pane)
+			self._reset_to_toplevel = False
 		self.data_controller.search(pane, key=text, context=text,
 				text_mode=self.get_in_text_mode())
 
diff --git a/kupfer/data.py b/kupfer/data.py
index 2bb814f..9a47160 100644
--- a/kupfer/data.py
+++ b/kupfer/data.py
@@ -554,6 +554,11 @@ class LeafPane (Pane, pretty.OutputMixin):
 			pass
 		self.refresh_data()
 
+	def soft_reset(self):
+		Pane.reset(self)
+		while self.pop_source():
+			pass
+
 	def search(self, key=u"", context=None, text_mode=False):
 		"""
 		filter for action @item
@@ -608,11 +613,11 @@ class SecondaryObjectPane (LeafPane):
 		LeafPane.__init__(self)
 		self.current_item = None
 		self.current_action = None
+
 	def reset(self):
-		self.source = None
-		self.source_stack = None
 		LeafPane.reset(self)
 		self.searcher = Searcher()
+
 	def set_item_and_action(self, item, act):
 		self.current_item = item
 		self.current_action = act
@@ -840,6 +845,12 @@ class DataController (gobject.GObject, pretty.OutputMixin):
 		self.source_pane.reset()
 		self.action_pane.reset()
 
+	def soft_reset(self, pane):
+		if pane is ActionPane:
+			return
+		panectl = self._panectl_table[pane]
+		panectl.soft_reset()
+
 	def cancel_search(self, pane=None):
 		"""Cancel any outstanding search, or the search for @pane"""
 		panes = (pane, ) if pane else iter(self._panectl_table)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]