goto post
parent
eba2128e98
commit
e768f2df62
|
@ -691,6 +691,41 @@ class App(object):
|
||||||
self.index()
|
self.index()
|
||||||
|
|
||||||
|
|
||||||
|
def goto_post(self, number):
|
||||||
|
if self.mode != "thread":
|
||||||
|
return
|
||||||
|
|
||||||
|
size = self.loop.screen_size
|
||||||
|
new_pos = number*5
|
||||||
|
cur_pos = self.box.get_cursor_coords(size)[0]
|
||||||
|
self.box.change_focus(
|
||||||
|
size, new_pos, coming_from=
|
||||||
|
"below" if (cur_pos < new_pos)
|
||||||
|
else "above")
|
||||||
|
|
||||||
|
|
||||||
|
def goto_post_prompt(self, init):
|
||||||
|
items = [
|
||||||
|
urwid.Text(("button", " Jump to post")),
|
||||||
|
urwid.Text(("bold", ("(max >>%d)" % self.thread["reply_count"]).center(18, " ")))
|
||||||
|
]
|
||||||
|
|
||||||
|
edit = IntPrompt(lambda x: self.goto_post(x))
|
||||||
|
edit.keypress((self.loop.screen_size[0],), init)
|
||||||
|
items.insert(1, urwid.AttrMap(edit, "opt_prompt"))
|
||||||
|
|
||||||
|
popup = OptionsMenu(
|
||||||
|
urwid.ListBox(urwid.SimpleFocusListWalker(items)),
|
||||||
|
**frame_theme())
|
||||||
|
|
||||||
|
self.loop.widget = urwid.Overlay(
|
||||||
|
popup, self.loop.widget,
|
||||||
|
align=("relative", 50),
|
||||||
|
valign=("relative", 50),
|
||||||
|
width=20, height=6)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def set_new_editor(self, button, value, arg):
|
def set_new_editor(self, button, value, arg):
|
||||||
"""
|
"""
|
||||||
Callback for the option radio buttons to set the the text editor.
|
Callback for the option radio buttons to set the the text editor.
|
||||||
|
@ -1242,6 +1277,22 @@ class FootPrompt(Prompt):
|
||||||
app.set_default_footer()
|
app.set_default_footer()
|
||||||
|
|
||||||
|
|
||||||
|
class IntPrompt(Prompt, urwid.IntEdit):
|
||||||
|
def __init__(self, callback, *callback_args):
|
||||||
|
super(IntPrompt, self).__init__()
|
||||||
|
self.callback = callback
|
||||||
|
self.args = callback_args
|
||||||
|
|
||||||
|
def keypress(self, size, key):
|
||||||
|
super(IntPrompt, self).keypress(size, key)
|
||||||
|
if key == "enter":
|
||||||
|
app.remove_overlays()
|
||||||
|
self.callback(self.value(), *self.args)
|
||||||
|
|
||||||
|
elif key.lower() in ["q", "esc", "ctrl g", "ctrl c"]:
|
||||||
|
app.remove_overlays()
|
||||||
|
|
||||||
|
|
||||||
class ExternalEditor(urwid.Terminal):
|
class ExternalEditor(urwid.Terminal):
|
||||||
def __init__(self, endpoint, **params):
|
def __init__(self, endpoint, **params):
|
||||||
self.file_descriptor, self.path = tempfile.mkstemp()
|
self.file_descriptor, self.path = tempfile.mkstemp()
|
||||||
|
@ -1391,6 +1442,9 @@ class ActionBox(urwid.ListBox):
|
||||||
elif keyl in ["l", "right"]:
|
elif keyl in ["l", "right"]:
|
||||||
self.keypress(size, "enter")
|
self.keypress(size, "enter")
|
||||||
|
|
||||||
|
elif keyl in "1234567890g":
|
||||||
|
app.goto_post_prompt(keyl)
|
||||||
|
|
||||||
elif keyl == "b":
|
elif keyl == "b":
|
||||||
offset = 5 if (app.mode == "thread") else 1
|
offset = 5 if (app.mode == "thread") else 1
|
||||||
self.change_focus(size, len(app.walker) - offset)
|
self.change_focus(size, len(app.walker) - offset)
|
||||||
|
|
Loading…
Reference in New Issue