From 2abbf8274ca3e8473ea2ef729459fc6549edf474 Mon Sep 17 00:00:00 2001
From: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
Date: Fri, 17 Aug 2018 19:43:35 +0100
Subject: windows.bookmark_forms: Type almost everything in this module.

---
 poezio/windows/bookmark_forms.py | 104 ++++++++++++++++++++-------------------
 1 file 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()
-- 
cgit v1.2.3