From: Simon Tatham Date: Sat, 9 Dec 2023 16:43:41 +0000 (+0000) Subject: Add 'change language' in the pre-posting menu. X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=f1f7301564dfe1a2dda54f6344ed80551bb11180;p=mastodonochrome.git Add 'change language' in the pre-posting menu. Uses the new bottom-line editor to prompt for a replacement language tag. --- diff --git a/cursesclient.py b/cursesclient.py index 0dbf77c..3f49109 100644 --- a/cursesclient.py +++ b/cursesclient.py @@ -291,6 +291,10 @@ class Menu(Activity): self.normalised = True + def renormalise(self): + self.normalised = False + self.normalise() + def render(self): self.normalise() y = 0 @@ -798,6 +802,10 @@ class StatusInfoFile(ObjectFile): cc, lambda x,cc:x, client.StatusInfoFeed(cc, self.data), title) class EditorCommon: + # Common editing operations between the post editor and the line editor. + # Expects self.text to be the editor buffer, and self.point to be + # the cursor position within it, from 0 to len(self.text) _inclusive_. + def move_to(self, pos): self.point = max(0, min(len(self.text), pos)) @@ -1033,6 +1041,8 @@ class Composer(Activity, EditorCommon): except KeyError: self.url_cost = 23 + self.language = "en" # FIXME: find a better default from somewhere + def render(self): y = 0 @@ -1160,7 +1170,7 @@ class Composer(Activity, EditorCommon): params = { "status": self.text.rstrip("\n"), "visibility": "public", - "language": "en", # FIXME + "language": self.language, } if self.reply_id is not None: params["in_reply_to_id"] = self.reply_id @@ -1176,6 +1186,10 @@ class PostMenu(Menu): super().__init__(composer.cc) self.composer = composer self.title = text.ColouredString("Post a status", "H") + self.refresh_items() + + def refresh_items(self): + self.items.clear() self.items.append(text.MenuKeypressLine( 'SPACE', text.ColouredString("Post"))) self.items.append(text.BlankLine()) @@ -1183,6 +1197,14 @@ class PostMenu(Menu): 'Q', text.ColouredString("Cancel post"))) self.items.append(text.MenuKeypressLine( 'A', text.ColouredString("Re-edit post"))) + self.items.append(text.BlankLine()) + self.items.append(text.MenuKeypressLine( + 'L', text.ColouredString(f"Language: '{self.composer.language}'"))) + self.renormalise() + + def set_language(self, lang): + self.composer.language = lang + self.refresh_items() def handle_key(self, ch): if ch in {'q', 'Q'}: @@ -1190,6 +1212,10 @@ class PostMenu(Menu): return 'quit' # FIXME: maybe a confirmation, like real Mono? elif ch in {'a', 'A'}: self.chain_to(self.composer) + elif ch in {'l', 'L'}: + self.push_to(BottomLinePrompt( + self.cc, self.set_language, "Language tag for post: ", + self.composer.language)) elif ch in {' '}: self.composer.post() self.cc.composer = None