summaryrefslogtreecommitdiff
path: root/alot/buffer.py
diff options
context:
space:
mode:
authorpazz <patricktotzke@gmail.com>2011-05-23 22:36:47 +0100
committerpazz <patricktotzke@gmail.com>2011-05-23 22:36:47 +0100
commit004b0ba3e68c3ae95cb47752e0356cc452e0f61e (patch)
tree26d6bc701b82612deed3ddf974590e7afcc59725 /alot/buffer.py
parent30788c15e76e2d58840c0e4b89116572854586da (diff)
rebuild (was refresh) buffers less often
Diffstat (limited to 'alot/buffer.py')
-rw-r--r--alot/buffer.py30
1 files changed, 20 insertions, 10 deletions
diff --git a/alot/buffer.py b/alot/buffer.py
index ff37a69c..0d2a2bcf 100644
--- a/alot/buffer.py
+++ b/alot/buffer.py
@@ -12,7 +12,7 @@ class Buffer(urwid.AttrMap):
self.bindings = {}
urwid.AttrMap.__init__(self, widget, {})
- def refresh(self):
+ def rebuild(self):
pass
def __str__(self):
@@ -21,7 +21,7 @@ class Buffer(urwid.AttrMap):
def apply_command(self, cmd):
#call and store it directly for a local cmd history
self.ui.apply_command(cmd)
- #self.refresh()
+ #self.rebuild()
def keypress(self, size, key):
if key in self.bindings:
@@ -44,7 +44,8 @@ class BufferListBuffer(Buffer):
self.ui = ui
#better create a walker obj that has a pointer to ui.bufferlist
#self.widget=createWalker(...
- self.refresh()
+ self.isinitialized = False
+ self.rebuild()
Buffer.__init__(self, ui, self.original_widget, 'bufferlist')
self.bindings = {
'd': ('buffer_close',
@@ -56,9 +57,16 @@ class BufferListBuffer(Buffer):
def index_of(self, b):
return self.ui.buffers.index(b)
- def refresh(self):
+ def rebuild(self):
+ if self.isinitialized:
+ focusposition = self.bufferlist.get_focus()[1]
+ else:
+ focusposition = 0
+ self.isinitialized = True
+
lines = list()
- for (num, b) in enumerate(filter(self.filtfun, self.ui.buffers)):
+ displayedbuffers = filter(self.filtfun, self.ui.buffers)
+ for (num, b) in enumerate(displayedbuffers):
line = widgets.BufferlineWidget(b)
if (num % 2) == 0: attr = 'bufferlist_results_even'
else: attr = 'bufferlist_results_odd'
@@ -68,8 +76,10 @@ class BufferListBuffer(Buffer):
self.bufferlist = urwid.ListBox(urwid.SimpleListWalker(lines))
self.original_widget = self.bufferlist
+ self.bufferlist.set_focus(focusposition%len(displayedbuffers))
+
def get_selected_buffer(self):
- (linewidget, size) = self.bufferlist.get_focus()
+ (linewidget, pos) = self.bufferlist.get_focus()
bufferlinewidget = linewidget.get_focus().original_widget
return bufferlinewidget.get_buffer()
@@ -82,13 +92,13 @@ class SearchBuffer(Buffer):
self.querystring = initialquery
self.result_count = 0
#self.widget=createWalker(...
- self.refresh()
+ self.rebuild()
Buffer.__init__(self, ui, self.original_widget, 'search')
self.bindings = {
'enter': ('open_thread', {'thread': self.get_selected_thread}),
}
- def refresh(self):
+ def rebuild(self):
self.result_count = self.dbman.count_messages(self.querystring)
threads = self.dbman.search_threads(self.querystring)
iterator = IteratorWalker(threads, widgets.ThreadlineWidget)
@@ -107,7 +117,7 @@ class SearchBuffer(Buffer):
class SingleThreadBuffer(Buffer):
def __init__(self, ui, thread):
self.read_thread(thread)
- self.refresh()
+ self.rebuild()
Buffer.__init__(self, ui, self.original_widget, 'search')
self.bindings = {
'enter': ('call_pager',
@@ -120,7 +130,7 @@ class SingleThreadBuffer(Buffer):
# list() throws an error
self.messages = [m for m in thread.get_toplevel_messages()]
- def refresh(self):
+ def rebuild(self):
msgs = list()
for (num, m) in enumerate(self.messages, 1):
msgs.append(widgets.MessageWidget(m, even=(num % 2 == 0)))