From 2be2f6aa0c1690b1f89e55c9b665f596a23d5e7d Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 9 May 2018 20:26:30 +0530 Subject: [PATCH] Make icat a kitten The kittens framework did not exist when icat was first written. --- __main__.py | 2 +- kittens/icat/__init__.py | 0 kitty/icat.py => kittens/icat/main.py | 38 +++++++-------------------- kittens/tui/images.py | 2 +- kittens/tui/operations.py | 2 +- kitty/fonts/render.py | 2 +- 6 files changed, 13 insertions(+), 33 deletions(-) create mode 100644 kittens/icat/__init__.py rename kitty/icat.py => kittens/icat/main.py (93%) diff --git a/__main__.py b/__main__.py index 238141443..8abf28c0b 100644 --- a/__main__.py +++ b/__main__.py @@ -6,7 +6,7 @@ import sys def icat(args): - from kitty.icat import main + from kittens.icat.main import main main(args) diff --git a/kittens/icat/__init__.py b/kittens/icat/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/kitty/icat.py b/kittens/icat/main.py similarity index 93% rename from kitty/icat.py rename to kittens/icat/main.py index 2ef38d7c7..1375cd75a 100755 --- a/kitty/icat.py +++ b/kittens/icat/main.py @@ -2,7 +2,6 @@ # vim:fileencoding=utf-8 # License: GPL v3 Copyright: 2017, Kovid Goyal -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() diff --git a/kittens/tui/images.py b/kittens/tui/images.py index 9bd88bf9b..10b95ce2a 100644 --- a/kittens/tui/images.py +++ b/kittens/tui/images.py @@ -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 diff --git a/kittens/tui/operations.py b/kittens/tui/operations.py index 962456b09..4b128c396 100644 --- a/kittens/tui/operations.py +++ b/kittens/tui/operations.py @@ -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): diff --git a/kitty/fonts/render.py b/kitty/fonts/render.py index ba51da9ac..513077a07 100644 --- a/kitty/fonts/render.py +++ b/kitty/fonts/render.py @@ -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