aboutsummaryrefslogtreecommitdiffstats
path: root/clients/urwid/main.py
diff options
context:
space:
mode:
authorBlake DeMarcy <ofunknowndescent@gmail.com>2017-04-07 15:40:39 -0500
committerBlake DeMarcy <ofunknowndescent@gmail.com>2017-04-07 15:40:39 -0500
commitbbc213f0fe96b3c09ee2926544141efcd120368c (patch)
tree3fed018c6eab7a1517c9a3c4ed7eaf39f576634c /clients/urwid/main.py
parentbe41b2bba6fde46535804df1fd075aa5a1affc45 (diff)
downloadbbj-bbc213f0fe96b3c09ee2926544141efcd120368c.tar.gz
index position caching
Diffstat (limited to 'clients/urwid/main.py')
-rw-r--r--clients/urwid/main.py45
1 files changed, 33 insertions, 12 deletions
diff --git a/clients/urwid/main.py b/clients/urwid/main.py
index bbf1164..619e0be 100644
--- a/clients/urwid/main.py
+++ b/clients/urwid/main.py
@@ -81,6 +81,7 @@ class App(object):
)), colors)
self.walker = self.loop.widget.body.base_widget.body
+ self.last_pos = 0
self.date_format = "{1}/{2}/{0}"
self.index()
@@ -186,13 +187,15 @@ class App(object):
self.walker.clear()
for thread in threads:
self.walker.append(self.make_thread_body(thread))
-
+ self.loop.widget.body.base_widget.set_focus(self.last_pos)
def thread_load(self, button, thread_id):
"""
Open a thread
"""
+ if self.mode == "index":
+ self.last_pos = self.loop.widget.body.base_widget.get_focus()[1]
self.mode = "thread"
thread, usermap = network.thread_load(thread_id)
self.usermap.update(usermap)
@@ -206,7 +209,8 @@ class App(object):
"Top", "Bottom", "QBack"
)
for message in thread["messages"]:
- app.walker.append(self.make_message_body(message))
+ self.walker.append(self.make_message_body(message))
+
def refresh(self):
@@ -214,6 +218,11 @@ class App(object):
self.index()
+ def back(self):
+ if self.mode == "thread":
+ self.index()
+
+
def footer_prompt(self, text, callback, *callback_args, extra_text=None):
text = "(%s)> " % text
widget = urwid.Columns([
@@ -306,12 +315,17 @@ class ExternalEditor(urwid.Terminal):
os.remove(self.path)
return app.refresh()
-
elif key != "f1":
return super(ExternalEditor, self).keypress(size, key)
- app.loop.widget.focus_position = "body"
- app.loop.widget.footer.set_title("press f1 to return to the editor")
+ if app.window_split:
+ app.loop.widget.focus_position = "body"
+ return app.loop.widget.footer.set_title(
+ "press f1 to return to the editor")
+
+ self.terminate()
+ app.loop.widget = app.loop.widget[0]
+ app.refresh()
@@ -321,12 +335,12 @@ class ActionBox(urwid.ListBox):
"""
def keypress(self, size, key):
super(ActionBox, self).keypress(size, key)
- if key == "h":
- app.submit_thread()
+
if key == "f1" and app.window_split:
app.loop.widget.focus_position = "footer"
app.loop.widget.footer.set_title("press F1 to focus the thread")
- if key in ["j", "n", "ctrl n"]:
+
+ elif key in ["j", "n", "ctrl n"]:
self._keypress_down(size)
elif key in ["k", "p", "ctrl p"]:
@@ -340,6 +354,12 @@ class ActionBox(urwid.ListBox):
for x in range(5):
self._keypress_up(size)
+ elif key in ["h", "left"]:
+ app.back()
+
+ elif key in ["l", "right"]:
+ self.keypress(size, "enter")
+
elif key.lower() == "b":
self.change_focus(size, len(app.walker) - 1)
@@ -352,7 +372,6 @@ class ActionBox(urwid.ListBox):
elif key == "r":
app.refresh()
-
elif key.lower() == "q":
if app.mode == "index":
app.loop.stop()
@@ -360,15 +379,17 @@ class ActionBox(urwid.ListBox):
width, height = app.loop.screen_size
for x in range(height - 1):
motherfucking_rainbows(
- "".join([choice([" ", choice(punctuation)]) for x in range(width)])
- )
+ "".join([choice([" ", choice(punctuation)])
+ for x in range(width)]
+ ))
out = " ~~CoMeE BaCkK SooOn~~ 0000000"
motherfucking_rainbows(out.zfill(width))
else:
run("clear", shell=True)
motherfucking_rainbows("Come back soon! <3")
exit()
- else: app.index()
+ else:
+ app.back()
Un proyecto texto-plano.xyz