summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--poezio/ui/types.py42
1 files changed, 32 insertions, 10 deletions
diff --git a/poezio/ui/types.py b/poezio/ui/types.py
index 07d395ab..e8f7f7eb 100644
--- a/poezio/ui/types.py
+++ b/poezio/ui/types.py
@@ -1,15 +1,23 @@
+from __future__ import annotations
from datetime import datetime
from math import ceil, log10
-from typing import Union, Optional, List, Tuple
-from poezio.ui.funcs import truncate_nick
+from typing import Optional, Tuple, Dict, Any, Callable
+
from poezio import poopt
-from poezio.user import User
from poezio.theming import dump_tuple, get_theme
+from poezio.ui.funcs import truncate_nick
+from poezio.user import User
+
class BaseMessage:
+ """Base class for all ui-related messages"""
__slots__ = ('txt', 'time', 'identifier')
+ txt: str
+ identifier: str
+ time: datetime
+
def __init__(self, txt: str, identifier: str = '', time: Optional[datetime] = None):
self.txt = txt
self.identifier = identifier
@@ -19,6 +27,7 @@ class BaseMessage:
self.time = datetime.now()
def compute_offset(self, with_timestamps: bool, nick_size: int) -> int:
+ """Compute the offset of the message"""
theme = get_theme()
return theme.SHORT_TIME_FORMAT_LENGTH + 1
@@ -28,6 +37,7 @@ class EndOfArchive(BaseMessage):
class InfoMessage(BaseMessage):
+ """Information message"""
def __init__(self, txt: str, identifier: str = '', time: Optional[datetime] = None):
txt = ('\x19%s}' % dump_tuple(get_theme().COLOR_INFORMATION_TEXT)) + txt
super().__init__(txt=txt, identifier=identifier, time=time)
@@ -39,6 +49,7 @@ class LoggableTrait:
class PersistentInfoMessage(InfoMessage, LoggableTrait):
+ """Information message thatt will be logged"""
pass
@@ -53,6 +64,7 @@ class MucOwnJoinMessage(InfoMessage, LoggableTrait):
class XMLLog(BaseMessage):
"""XML Log message"""
__slots__ = ('incoming')
+ incoming: bool
def __init__(
self,
@@ -62,10 +74,7 @@ class XMLLog(BaseMessage):
BaseMessage.__init__(
self,
txt=txt,
- identifier='',
)
- self.txt = txt
- self.identifier = ''
self.incoming = incoming
def compute_offset(self, with_timestamps: bool, nick_size: int) -> int:
@@ -83,7 +92,10 @@ class XMLLog(BaseMessage):
class StatusMessage(BaseMessage):
+ """A dynamically formatted status message"""
__slots__ = ('format_string', 'format_args')
+ format_string: str
+ format_args: Dict[str, Callable[[], Any]]
def __init__(self, format_string: str, format_args: dict):
BaseMessage.__init__(
@@ -103,8 +115,19 @@ class StatusMessage(BaseMessage):
class Message(BaseMessage, LoggableTrait):
__slots__ = ('nick_color', 'nickname', 'user', 'delayed', 'history',
- 'top', 'highlight', 'me', 'old_message', 'revisions',
+ 'highlight', 'me', 'old_message', 'revisions',
'jid', 'ack')
+ nick_color: Optional[Tuple]
+ nickname: Optional[str]
+ user: Optional[User]
+ delayed: bool
+ history: bool
+ highlight: bool
+ me: bool
+ old_message: Optional[Message]
+ revisions: int
+ jid: Optional[str]
+ ack: int
def __init__(self,
txt: str,
@@ -115,9 +138,8 @@ class Message(BaseMessage, LoggableTrait):
history: bool = False,
user: Optional[User] = None,
identifier: Optional[str] = '',
- top: Optional[bool] = False,
highlight: bool = False,
- old_message: Optional['Message'] = None,
+ old_message: Optional[Message] = None,
revisions: int = 0,
jid: Optional[str] = None,
ack: int = 0) -> None:
@@ -143,7 +165,6 @@ class Message(BaseMessage, LoggableTrait):
self.nickname = nickname
self.nick_color = nick_color
self.user = user
- self.top = top
self.highlight = highlight
self.me = me
self.old_message = old_message
@@ -181,6 +202,7 @@ class Message(BaseMessage, LoggableTrait):
return ''.join(acc)
def compute_offset(self, with_timestamps: bool, nick_size: int) -> int:
+ """Compute the x-position at which the message should be printed"""
offset = 0
theme = get_theme()
if with_timestamps: