more typing work

This commit is contained in:
Kovid Goyal
2020-03-12 08:10:51 +05:30
parent 21707171bb
commit 149ae2866a
22 changed files with 395 additions and 291 deletions

View File

@@ -4,14 +4,15 @@
import sys
from typing import Optional
from typing import Any, Dict, List, Optional
from kitty.cli import parse_args
from kitty.cli_stub import RCOptions, ResizeCLIOptions
from kitty.rc.base import parse_subcommand_cli, command_for_name
from kitty.constants import version
from kitty.key_encoding import CTRL, RELEASE, key_defs as K
from kitty.key_encoding import CTRL, RELEASE, KeyEvent, key_defs as K
from kitty.rc.base import command_for_name, parse_subcommand_cli
from kitty.remote_control import encode_send, parse_rc_args
from kitty.utils import ScreenSize
from ..tui.handler import Handler
from ..tui.loop import Loop
@@ -29,10 +30,10 @@ class Resize(Handler):
print_on_fail: Optional[str] = None
def __init__(self, opts):
def __init__(self, opts: ResizeCLIOptions):
self.opts = opts
def initialize(self):
def initialize(self) -> None:
global global_opts
global_opts = parse_rc_args(['kitty', '@resize-window'])[0]
self.original_size = self.screen_size
@@ -40,7 +41,7 @@ class Resize(Handler):
self.cmd.set_line_wrapping(False)
self.draw_screen()
def do_window_resize(self, is_decrease=False, is_horizontal=True, reset=False, multiplier=1):
def do_window_resize(self, is_decrease: bool = False, is_horizontal: bool = True, reset: bool = False, multiplier: int = 1) -> None:
resize_window = command_for_name('resize_window')
increment = self.opts.horizontal_increment if is_horizontal else self.opts.vertical_increment
increment *= multiplier
@@ -53,7 +54,7 @@ class Resize(Handler):
send = {'cmd': resize_window.name, 'version': version, 'payload': payload, 'no_response': False}
self.write(encode_send(send))
def on_kitty_cmd_response(self, response):
def on_kitty_cmd_response(self, response: Dict[str, Any]) -> None:
if not response.get('ok'):
err = response['error']
if response.get('tb'):
@@ -65,14 +66,14 @@ class Resize(Handler):
if res:
self.cmd.bell()
def on_text(self, text, in_bracketed_paste=False):
def on_text(self, text: str, in_bracketed_paste: bool = False) -> None:
text = text.upper()
if text in 'WNTSR':
self.do_window_resize(is_decrease=text in 'NS', is_horizontal=text in 'WN', reset=text == 'R')
elif text == 'Q':
self.quit_loop(0)
def on_key(self, key_event):
def on_key(self, key_event: KeyEvent) -> None:
if key_event.type is RELEASE:
return
if key_event.key is ESCAPE:
@@ -80,10 +81,10 @@ class Resize(Handler):
elif key_event.key in (W, N, T, S) and key_event.mods & CTRL:
self.do_window_resize(is_decrease=key_event.key in (N, S), is_horizontal=key_event.key in (W, N), multiplier=2)
def on_resize(self, new_size):
def on_resize(self, new_size: ScreenSize) -> None:
self.draw_screen()
def draw_screen(self):
def draw_screen(self) -> None:
self.cmd.clear_screen()
print = self.print
print(styled('Resize this window', bold=True, fg='gray', fg_intense=True))
@@ -118,10 +119,10 @@ The base vertical increment.
'''.format
def main(args):
def main(args: List[str]) -> None:
msg = 'Resize the current window'
try:
args, items = parse_args(args[1:], OPTIONS, '', msg, 'resize_window', result_class=ResizeCLIOptions)
cli_opts, items = parse_args(args[1:], OPTIONS, '', msg, 'resize_window', result_class=ResizeCLIOptions)
except SystemExit as e:
if e.code != 0:
print(e.args[0], file=sys.stderr)
@@ -129,7 +130,7 @@ def main(args):
return
loop = Loop()
handler = Resize(args)
handler = Resize(cli_opts)
loop.loop(handler)
if handler.print_on_fail:
print(handler.print_on_fail, file=sys.stderr)