From 2cc3fdc1e7121bfe68c15a8c3b2e76e6bffb3aaf Mon Sep 17 00:00:00 2001 From: Blake DeMarcy Date: Sat, 15 Apr 2017 12:09:04 -0500 Subject: [PATCH 1/2] integrate post editor a'la thread reply --- clients/urwid/main.py | 81 +++++++++++++++++++++---------------------- 1 file 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): From 6d181db61b35b38620e998e5ab3c2b3a84dadcb4 Mon Sep 17 00:00:00 2001 From: Blake DeMarcy Date: Sat, 15 Apr 2017 12:12:08 -0500 Subject: [PATCH 2/2] OW IT BURNS --- clients/urwid/main.py | 1 + 1 file changed, 1 insertion(+) diff --git a/clients/urwid/main.py b/clients/urwid/main.py index f0b6eca..76215a1 100644 --- a/clients/urwid/main.py +++ b/clients/urwid/main.py @@ -1079,6 +1079,7 @@ class App(object): valign="middle", width=("relative", 90), height=("relative", 80)) + return params = {"thread_id": self.thread["thread_id"]}