Make icat a kitten

The kittens framework did not exist when icat was first written.
This commit is contained in:
Kovid Goyal 2018-05-09 20:26:30 +05:30
parent 6d038f5cdf
commit 2be2f6aa0c
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
6 changed files with 13 additions and 33 deletions

View File

@ -6,7 +6,7 @@ import sys
def icat(args):
from kitty.icat import main
from kittens.icat.main import main
main(args)

0
kittens/icat/__init__.py Normal file
View File

View File

@ -2,7 +2,6 @@
# vim:fileencoding=utf-8
# License: GPL v3 Copyright: 2017, Kovid Goyal <kovid at kovidgoyal.net>
import codecs
import mimetypes
import os
import re
@ -17,24 +16,10 @@ from tempfile import NamedTemporaryFile
from kitty.cli import parse_args
from kitty.constants import appname
from kitty.utils import fit_image, read_with_timeout, screen_size_function
screen_size = screen_size_function()
try:
fsenc = sys.getfilesystemencoding() or 'utf-8'
codecs.lookup(fsenc)
except Exception:
fsenc = 'utf-8'
class OpenFailed(ValueError):
def __init__(self, path, message):
ValueError.__init__(
self, 'Failed to open: {} with error: {}'.format(path, message)
)
self.path = path
from kitty.utils import fit_image, read_with_timeout
from ..tui.images import ImageData, OpenFailed, fsenc, screen_size
from ..tui.operations import clear_images_on_screen, serialize_gr_command
OPTIONS = '''\
--align
@ -99,13 +84,7 @@ def options_spec():
def write_gr_cmd(cmd, payload=None):
cmd = ','.join('{}={}'.format(k, v) for k, v in cmd.items())
w = sys.stdout.buffer.write
w(b'\033_G'), w(cmd.encode('ascii'))
if payload:
w(b';')
w(payload)
w(b'\033\\')
sys.stdout.buffer.write(serialize_gr_command(cmd, payload))
sys.stdout.flush()
@ -186,9 +165,6 @@ def show(outfile, width, height, fmt, transmit_mode='t', align='center', place=N
write_chunked(cmd, data)
ImageData = namedtuple('ImageData', 'fmt width height mode')
def run_imagemagick(path, cmd, keep_stdout=True):
try:
p = subprocess.run(cmd, stdout=subprocess.PIPE if keep_stdout else subprocess.DEVNULL, stderr=subprocess.PIPE)
@ -338,7 +314,7 @@ def main(args=sys.argv):
detect_support.has_files = args.transfer_mode == 'file'
errors = []
if args.clear:
write_gr_cmd({'a': 'd'})
sys.stdout.buffer.write(clear_images_on_screen(delete_data=True))
if not items:
return
if not items:
@ -365,5 +341,9 @@ def main(args=sys.argv):
raise SystemExit(1)
def handle_result(args, current_char, target_window_id, boss):
pass
if __name__ == '__main__':
main()

View File

@ -33,7 +33,7 @@ class OpenFailed(ValueError):
def __init__(self, path, message):
ValueError.__init__(
self, 'Failed to open: {} with error: {}'.format(path, message)
self, 'Failed to open image: {} with error: {}'.format(path, message)
)
self.path = path

View File

@ -162,7 +162,7 @@ def serialize_gr_command(cmd, payload=None):
def clear_images_on_screen(delete_data=False) -> str:
return serialize_gr_command({'a': 'D' if delete_data else 'd'})
return serialize_gr_command({'a': 'd', 'd': 'A' if delete_data else 'a'})
def init_state(alternate_screen=True):

View File

@ -220,7 +220,7 @@ def shape_string(text="abcd", family='monospace', size=11.0, dpi=96.0, path=None
def display_bitmap(rgb_data, width, height):
from tempfile import NamedTemporaryFile
from kitty.icat import detect_support, show
from kittens.icat.main import detect_support, show
if not hasattr(display_bitmap, 'detected') and not detect_support():
raise SystemExit('Your terminal does not support the graphics protocol')
display_bitmap.detected = True