summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuel Gil Peyrot <linkmauve@linkmauve.fr>2018-08-17 19:43:35 +0100
committerEmmanuel Gil Peyrot <linkmauve@linkmauve.fr>2018-08-17 19:43:35 +0100
commit2abbf8274ca3e8473ea2ef729459fc6549edf474 (patch)
treeba908b312249ff4ca5e02554e7b2c00ea30ba44b
parentede00f7862efb801196f24f894875301ad25b871 (diff)
downloadpoezio-2abbf8274ca3e8473ea2ef729459fc6549edf474.tar.gz
poezio-2abbf8274ca3e8473ea2ef729459fc6549edf474.tar.bz2
poezio-2abbf8274ca3e8473ea2ef729459fc6549edf474.tar.xz
poezio-2abbf8274ca3e8473ea2ef729459fc6549edf474.zip
windows.bookmark_forms: Type almost everything in this module.
-rw-r--r--poezio/windows/bookmark_forms.py104
1 files changed, 54 insertions, 50 deletions
diff --git a/poezio/windows/bookmark_forms.py b/poezio/windows/bookmark_forms.py
index 5a319c27..b7875e3c 100644
--- a/poezio/windows/bookmark_forms.py
+++ b/poezio/windows/bookmark_forms.py
@@ -2,32 +2,35 @@
Windows used inthe bookmarkstab
"""
import curses
+from typing import List, Tuple, Optional
from poezio.windows import base_wins
from poezio.windows.base_wins import Win
from poezio.windows.inputs import Input
from poezio.windows.data_forms import FieldInput, FieldInputMixin
+
from poezio.theming import to_curses_attr, get_theme
from poezio.common import safeJID
+from poezio.bookmarks import Bookmark, BookmarkList
class BookmarkNameInput(FieldInput, Input):
- def __init__(self, field):
+ def __init__(self, field) -> None:
FieldInput.__init__(self, field)
Input.__init__(self)
self.text = field.name
self.pos = len(self.text)
self.color = get_theme().COLOR_NORMAL_TEXT
- def save(self):
+ def save(self) -> None:
self._field.name = self.get_text()
- def get_help_message(self):
+ def get_help_message(self) -> str:
return 'Edit the text'
class BookmarkJIDInput(FieldInput, Input):
- def __init__(self, field):
+ def __init__(self, field) -> None:
FieldInput.__init__(self, field)
Input.__init__(self)
jid = safeJID(field.jid)
@@ -36,24 +39,24 @@ class BookmarkJIDInput(FieldInput, Input):
self.pos = len(self.text)
self.color = get_theme().COLOR_NORMAL_TEXT
- def save(self):
+ def save(self) -> None:
jid = safeJID(self.get_text())
self._field.jid = jid.bare
self._field.nick = jid.resource
- def get_help_message(self):
+ def get_help_message(self) -> str:
return 'Edit the text'
class BookmarkMethodInput(FieldInputMixin):
- def __init__(self, field):
+ def __init__(self, field) -> None:
FieldInput.__init__(self, field)
Win.__init__(self)
self.options = ('local', 'remote')
# val_pos is the position of the currently selected option
self.val_pos = self.options.index(field.method)
- def do_command(self, key):
+ def do_command(self, key: str) -> None:
if key == 'KEY_LEFT':
if self.val_pos > 0:
self.val_pos -= 1
@@ -64,7 +67,7 @@ class BookmarkMethodInput(FieldInputMixin):
return
self.refresh()
- def refresh(self):
+ def refresh(self) -> None:
self._win.erase()
self._win.attron(to_curses_attr(self.color))
self.addnstr(0, 0, ' ' * self.width, self.width)
@@ -78,22 +81,22 @@ class BookmarkMethodInput(FieldInputMixin):
self._win.attroff(to_curses_attr(self.color))
self._refresh()
- def save(self):
+ def save(self) -> None:
self._field.method = self.options[self.val_pos]
- def get_help_message(self):
+ def get_help_message(self) -> str:
return '←, →: Select a value amongst the others'
class BookmarkPasswordInput(FieldInput, Input):
- def __init__(self, field):
+ def __init__(self, field) -> None:
FieldInput.__init__(self, field)
Input.__init__(self)
self.text = field.password or ''
self.pos = len(self.text)
self.color = get_theme().COLOR_NORMAL_TEXT
- def rewrite_text(self):
+ def rewrite_text(self) -> None:
self._win.erase()
if self.color:
self._win.attron(to_curses_attr(self.color))
@@ -108,27 +111,27 @@ class BookmarkPasswordInput(FieldInput, Input):
self._win.attroff(to_curses_attr(self.color))
self._refresh()
- def save(self):
+ def save(self) -> None:
self._field.password = self.get_text() or None
- def get_help_message(self):
+ def get_help_message(self) -> str:
return 'Edit the secret text'
class BookmarkAutojoinWin(FieldInputMixin):
- def __init__(self, field):
+ def __init__(self, field) -> None:
FieldInput.__init__(self, field)
Win.__init__(self)
self.last_key = 'KEY_RIGHT'
self.value = field.autojoin
- def do_command(self, key):
+ def do_command(self, key: str) -> None:
if key == 'KEY_LEFT' or key == 'KEY_RIGHT':
self.value = not self.value
self.last_key = key
self.refresh()
- def refresh(self):
+ def refresh(self) -> None:
self._win.erase()
self._win.attron(to_curses_attr(self.color))
format_string = '←{:^%s}→' % 7
@@ -141,21 +144,21 @@ class BookmarkAutojoinWin(FieldInputMixin):
self._win.attroff(to_curses_attr(self.color))
self._refresh()
- def save(self):
+ def save(self) -> None:
self._field.autojoin = self.value
- def get_help_message(self):
+ def get_help_message(self) -> str:
return '← and →: change the value between True and False'
class BookmarksWin(Win):
- def __init__(self, bookmarks, height, width, y, x):
+ def __init__(self, bookmarks: BookmarkList, height: int, width: int, y: int, x: int) -> None:
self._win = base_wins.TAB_WIN.derwin(height, width, y, x)
self.scroll_pos = 0
self._current_input = 0
self.current_horizontal_input = 0
self._bookmarks = list(bookmarks)
- self.lines = []
+ self.lines = [] # type: List[Tuple[BookmarkNameInput, BookmarkJIDInput, BookmarkPasswordInput, BookmarkAutojoinWin, BookmarkMethodInput]]
for bookmark in sorted(self._bookmarks, key=lambda x: x.jid):
self.lines.append((BookmarkNameInput(bookmark),
BookmarkJIDInput(bookmark),
@@ -164,11 +167,11 @@ class BookmarksWin(Win):
BookmarkMethodInput(bookmark)))
@property
- def current_input(self):
+ def current_input(self) -> int:
return self._current_input
@current_input.setter
- def current_input(self, value):
+ def current_input(self, value: int) -> None:
if 0 <= self._current_input < len(self.lines):
if 0 <= value < len(self.lines):
self.lines[self._current_input][
@@ -178,7 +181,7 @@ class BookmarksWin(Win):
else:
self._current_input = 0
- def add_bookmark(self, bookmark):
+ def add_bookmark(self, bookmark: Bookmark) -> None:
self.lines.append((BookmarkNameInput(bookmark),
BookmarkJIDInput(bookmark),
BookmarkPasswordInput(bookmark),
@@ -193,18 +196,19 @@ class BookmarksWin(Win):
self.scroll_pos = self.current_input - self.height + 1
self.refresh()
- def del_current_bookmark(self):
- if self.lines:
- bm = self.lines[self.current_input][0]._field
- to_delete = self.current_input
- self.current_input -= 1
- del self.lines[to_delete]
- if self.scroll_pos:
- self.scroll_pos -= 1
- self.refresh()
- return bm
+ def del_current_bookmark(self) -> Optional[Bookmark]:
+ if not self.lines:
+ return None
+ bm = self.lines[self.current_input][0]._field
+ to_delete = self.current_input
+ self.current_input -= 1
+ del self.lines[to_delete]
+ if self.scroll_pos:
+ self.scroll_pos -= 1
+ self.refresh()
+ return bm
- def resize(self, height, width, y, x):
+ def resize(self, height: int, width: int, y: int, x: int) -> None:
self.height = height
self.width = width
self._win = base_wins.TAB_WIN.derwin(height, width, y, x)
@@ -213,7 +217,7 @@ class BookmarksWin(Win):
while self.current_input - self.scroll_pos > self.height - 1:
self.scroll_pos += 1
- def go_to_next_line_input(self):
+ def go_to_next_line_input(self) -> None:
if not self.lines:
return
if self.current_input == len(self.lines) - 1:
@@ -233,7 +237,7 @@ class BookmarksWin(Win):
self.current_horizontal_input].set_color(
get_theme().COLOR_SELECTED_ROW)
- def go_to_previous_line_input(self):
+ def go_to_previous_line_input(self) -> None:
if not self.lines:
return
if self.current_input == 0:
@@ -251,7 +255,7 @@ class BookmarksWin(Win):
self.current_horizontal_input].set_color(
get_theme().COLOR_SELECTED_ROW)
- def go_to_next_horizontal_input(self):
+ def go_to_next_horizontal_input(self) -> None:
if not self.lines:
return
self.lines[self.current_input][
@@ -264,12 +268,12 @@ class BookmarksWin(Win):
self.current_horizontal_input].set_color(
get_theme().COLOR_SELECTED_ROW)
- def go_to_next_page(self):
+ def go_to_next_page(self) -> bool:
if not self.lines:
- return
+ return False
if self.current_input == len(self.lines) - 1:
- return
+ return False
self.lines[self.current_input][
self.current_horizontal_input].set_color(
@@ -287,12 +291,12 @@ class BookmarksWin(Win):
get_theme().COLOR_SELECTED_ROW)
return True
- def go_to_previous_page(self):
+ def go_to_previous_page(self) -> bool:
if not self.lines:
- return
+ return False
if self.current_input == 0:
- return
+ return False
self.lines[self.current_input][
self.current_horizontal_input].set_color(
@@ -310,7 +314,7 @@ class BookmarksWin(Win):
get_theme().COLOR_SELECTED_ROW)
return True
- def go_to_previous_horizontal_input(self):
+ def go_to_previous_horizontal_input(self) -> None:
if not self.lines:
return
if self.current_horizontal_input == 0:
@@ -323,13 +327,13 @@ class BookmarksWin(Win):
self.current_horizontal_input].set_color(
get_theme().COLOR_SELECTED_ROW)
- def on_input(self, key):
+ def on_input(self, key: str) -> None:
if not self.lines:
return
self.lines[self.current_input][
self.current_horizontal_input].do_command(key)
- def refresh(self):
+ def refresh(self) -> None:
# store the cursor status
self._win.erase()
y = -self.scroll_pos
@@ -363,12 +367,12 @@ class BookmarksWin(Win):
else:
curses.curs_set(1)
- def refresh_current_input(self):
+ def refresh_current_input(self) -> None:
if self.lines:
self.lines[self.current_input][
self.current_horizontal_input].refresh()
- def save(self):
+ def save(self) -> None:
for line in self.lines:
for item in line:
item.save()