self.normalised = True
+ def renormalise(self):
+ self.normalised = False
+ self.normalise()
+
def render(self):
self.normalise()
y = 0
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))
except KeyError:
self.url_cost = 23
+ self.language = "en" # FIXME: find a better default from somewhere
+
def render(self):
y = 0
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
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())
'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'}:
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