aboutsummaryrefslogtreecommitdiffstats
path: root/clients/urwid/main.py
diff options
context:
space:
mode:
authorBlake DeMarcy <ofunknowndescent@gmail.com>2017-04-15 12:09:04 -0500
committerBlake DeMarcy <ofunknowndescent@gmail.com>2017-04-15 12:09:04 -0500
commit2cc3fdc1e7121bfe68c15a8c3b2e76e6bffb3aaf (patch)
treec14b396bfdcf7ef645796d2d739021bd819ae98b /clients/urwid/main.py
parenteba2128e984baa17ffc6b62cd5d0939a3d96f9c5 (diff)
downloadbbj-2cc3fdc1e7121bfe68c15a8c3b2e76e6bffb3aaf.tar.gz
integrate post editor a'la thread reply
Diffstat (limited to 'clients/urwid/main.py')
-rw-r--r--clients/urwid/main.py81
1 files changed, 40 insertions, 41 deletions
diff --git a/clients/urwid/main.py b/clients/urwid/main.py
index 9261091..f0b6eca 100644
--- a/clients/urwid/main.py
+++ b/clients/urwid/main.py
@@ -415,9 +415,6 @@ class App(object):
)
-
-
-
def edit_post(self, button, message):
post_id = message["post_id"]
thread_id = message["thread_id"]
@@ -428,21 +425,8 @@ class App(object):
except UserWarning as e:
self.remove_overlays()
return self.temp_footer_message(e.description)
-
- self.loop.widget = urwid.Overlay(
- urwid.LineBox(
- ExternalEditor(
- "edit_post",
- init_body=message["body"],
- post_id=post_id,
- thread_id=thread_id),
- title="[F1]Abort [F3]Formatting Help (save/quit to commit)",
- **frame_theme()),
- self.loop.widget,
- align="center",
- valign="middle",
- width=("relative", 75),
- height=("relative", 75))
+ self.remove_overlays()
+ self.compose(init_body=message["body"], edit=message)
def reply(self, button, message):
@@ -1044,7 +1028,7 @@ class App(object):
return body.strip()
- def compose(self, title=None, init_body=""):
+ def compose(self, title=None, init_body="", edit=False):
"""
Dispatches the appropriate composure mode and widget based on application
context and user preferences.
@@ -1058,20 +1042,28 @@ class App(object):
return self.footer_prompt(
"Title", self.compose, extra_text=e.description)
- if self.prefs["editor"] and not self.prefs["integrate_external_editor"]:
+ if not self.prefs["integrate_external_editor"]:
body = self.overthrow_ext_edit(init_body)
if not body:
return self.temp_footer_message("EMPTY POST DISCARDED")
params = {"body": body}
- if self.mode == "thread":
- endpoint = "reply"
+ if self.mode == "thread" and not edit:
+ endpoint = "thread_reply"
params.update({"thread_id": self.thread["thread_id"]})
+
+ elif edit:
+ endpoint = "edit_post"
+ params.update({
+ "thread_id": self.thread["thread_id"],
+ "post_id": edit["post_id"]
+ })
+
else:
- endpoint = "create"
+ endpoint = "thread_create"
params.update({"title": title})
- network.request("thread_" + endpoint, **params)
+ network.request(endpoint, **params)
return self.refresh(True)
if self.mode == "index":
@@ -1088,23 +1080,30 @@ class App(object):
width=("relative", 90),
height=("relative", 80))
- elif self.mode == "thread":
- self.window_split=True
- self.set_header('Replying to "{}"', self.thread["title"])
- self.loop.widget.footer = urwid.Pile([
- urwid.AttrMap(urwid.Text(""), "bar"),
- urwid.BoxAdapter(
- urwid.AttrMap(
- urwid.LineBox(
- ExternalEditor(
- "thread_reply",
- init_body=init_body,
- thread_id=self.thread["thread_id"]),
- **frame_theme()
- ),
- "bar"),
- self.loop.screen_size[1] // 2)])
- self.switch_editor()
+ params = {"thread_id": self.thread["thread_id"]}
+
+ if edit:
+ _id = edit["post_id"]
+ params.update({"post_id": _id})
+ header = ["Editing your post; >>{}", _id]
+ endpoint = "edit_post"
+ else:
+ header = ['Replying to "{}"', self.thread["title"]]
+ endpoint = "thread_reply"
+
+ self.loop.widget.footer = urwid.Pile([
+ urwid.AttrMap(urwid.Text(""), "bar"),
+ urwid.BoxAdapter(
+ urwid.AttrMap(
+ urwid.LineBox(
+ ExternalEditor(endpoint, init_body=init_body, **params),
+ **frame_theme()
+ ), "bar"),
+ self.loop.screen_size[1] // 2)])
+
+ self.set_header(*header)
+ self.window_split=True
+ self.switch_editor()
class MessageBody(urwid.Text):
Un proyecto texto-plano.xyz