#!/usr/bin/env python

import os
import base64
import subprocess
import time
import click
import pydisp
from pydisp.pydisp import b64_encode

TITLE=''
WIN='null'

@click.command(context_settings={'help_option_names':['-h','--help']})
@click.argument('images', nargs=-1, type=click.Path(exists=True), required=True)
@click.option('--win', '-w', default='')
@click.option('--title', '-t', default='')
@click.option('--width', default=None)
@click.option('--pause', '-p', default=0.2, help='pause between images')
def disp(images, win, title, width, pause):
    # TODO tiling option
    for img_fname in images:
        click.echo(img_fname)
        base, ext = os.path.splitext(img_fname)
        ext = ext.replace('.', '')
        ext = ext.replace('jpeg', 'jpg')
        valid_ext = set(['png','gif','bmp','webp','pdf','jpg'])
        if not ext.lower() in valid_ext:
            raise Exception('unrecognized image format: {}'.format(ext))
        with open(img_fname, 'rb') as f:
            encoded = pydisp.b64_encode(f.read(), ext)
        if title == '':
            title = img_fname
        pydisp.pane('image',
                    win=win,
                    title=title,
                    content={
                             'src': encoded,
                             'width': width,
                            })
        if pause > 0.0:
            time.sleep(pause)


if __name__ == '__main__':
    disp()
