summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--poezio/windows/muc.py39
1 files changed, 22 insertions, 17 deletions
diff --git a/poezio/windows/muc.py b/poezio/windows/muc.py
index ef8a89d6..910deee6 100644
--- a/poezio/windows/muc.py
+++ b/poezio/windows/muc.py
@@ -3,18 +3,23 @@ Windows specific to a MUC
"""
import logging
-log = logging.getLogger(__name__)
-
import curses
+from typing import List, Tuple, Optional
+
from poezio.windows.base_wins import Win
from poezio import poopt
from poezio.config import config
from poezio.theming import to_curses_attr, get_theme
+from poezio.user import User
+
+log = logging.getLogger(__name__)
+
+CachedUser = Tuple[str, str, Optional[str], str, str]
-def userlist_to_cache(userlist):
+def userlist_to_cache(userlist: List[User]) -> List[CachedUser]:
result = []
for user in userlist:
result.append((user.nick, user.status, user.chatstate,
@@ -23,27 +28,27 @@ def userlist_to_cache(userlist):
class UserList(Win):
- def __init__(self):
+ def __init__(self) -> None:
Win.__init__(self)
self.pos = 0
- self.cache = []
+ self.cache = [] # type: List[CachedUser]
- def scroll_up(self):
+ def scroll_up(self) -> bool:
self.pos += self.height - 1
return True
- def scroll_down(self):
+ def scroll_down(self) -> bool:
pos = self.pos
self.pos -= self.height - 1
if self.pos < 0:
self.pos = 0
return self.pos != pos
- def draw_plus(self, y):
+ def draw_plus(self, y: int) -> None:
self.addstr(y, self.width - 2, '++',
to_curses_attr(get_theme().COLOR_MORE_INDICATOR))
- def refresh_if_changed(self, users):
+ def refresh_if_changed(self, users: List[User]) -> None:
old = self.cache
new = userlist_to_cache(users[self.pos:self.pos + self.height])
if len(old) != len(new):
@@ -56,7 +61,7 @@ class UserList(Win):
self.refresh(users)
return
- def refresh(self, users):
+ def refresh(self, users: List[User]) -> None:
log.debug('Refresh: %s', self.__class__.__name__)
if config.get('hide_user_list'):
return # do not refresh if this win is hidden.
@@ -96,13 +101,13 @@ class UserList(Win):
self.draw_plus(self.height - 1)
self._refresh()
- def draw_role_affiliation(self, y, user):
+ def draw_role_affiliation(self, y: int, user: User) -> None:
theme = get_theme()
color = theme.color_role(user.role)
symbol = theme.char_affiliation(user.affiliation)
self.addstr(y, 1, symbol, to_curses_attr(color))
- def draw_status_chatstate(self, y, user):
+ def draw_status_chatstate(self, y: int, user: User) -> None:
show_col = get_theme().color_show(user.show)
if user.chatstate == 'composing':
char = get_theme().CHAR_CHATSTATE_COMPOSING
@@ -114,7 +119,7 @@ class UserList(Win):
char = get_theme().CHAR_STATUS
self.addstr(y, 0, char, to_curses_attr(show_col))
- def resize(self, height, width, y, x):
+ def resize(self, width: int, y: int, x: int) -> None:
separator = to_curses_attr(get_theme().COLOR_VERTICAL_SEPARATOR)
self._resize(height, width, y, x)
self._win.attron(separator)
@@ -123,14 +128,14 @@ class UserList(Win):
class Topic(Win):
- def __init__(self):
+ def __init__(self) -> None:
Win.__init__(self)
self._message = ''
- def refresh(self, topic=None):
+ def refresh(self, topic: Optional[str] = None) -> None:
log.debug('Refresh: %s', self.__class__.__name__)
self._win.erase()
- if topic:
+ if topic is not None:
msg = topic[:self.width - 1]
else:
msg = self._message[:self.width - 1]
@@ -142,5 +147,5 @@ class Topic(Win):
to_curses_attr(get_theme().COLOR_INFORMATION_BAR))
self._refresh()
- def set_message(self, message):
+ def set_message(self, message) -> None:
self._message = message