from bazbase import custom as basecust
from bazbase import flavors
from bazki import custom as kicust
from . import restricted
import os
from decorator import decorator

class stat(flavors.string):
    """A stat that appears on a character's statcard."""
    pass

@decorator
def get_template_parameters_wrap(func, format, deps):
    ret = func(format, deps)
    if format == 'tex':
        ret['preamble_lines'] += [
            r'\usepackage{gameki}',
            #r'\usepackage[newdimens]{labels}',
            ]
    return ret

def add_css():
    from bazki.translators import url
    from . import macros
    ret = '<link rel="stylesheet" type="text/css" href="%s" />\n' % (
        url('/gameki/css/gameki.css'))
    ret += '<style type="text/css">\n'
    for s in macros.SIZES:
        w, h, font = macros.SIZES[s]
        ret += '.%s {\n' % s
        ret += '  width: %sin;\n' % w 
        ret += '  height: %sin;\n' % h
        ret += '}\n'
        ret += '.card.%s {\n' % s
        ret += '  width: %sin;\n' % (w * 2)
        ret += '}\n'
        ret += '.card.%s tr.body td {\n' % s
        ret += '  width: %sin;\n' % w
        ret += '}\n'
    ret += '</style>'
    return ret

def set_up(app_name='Gameki'):
    kicust.set_up(app_name)
    kicust.OMNISCIENT_PRED = restricted.PRED
    kicust.EDITOR_PRED = restricted.EDITOR_PRED
    kicust.GROUPS = restricted.GROUPS
    kicust.USER_ANCESTOR = u'Character'
    basecust.EDITOR_ANCESTOR = restricted.EDITOR_ANCESTOR
    
    kicust.get_template_parameters = get_template_parameters_wrap(
        kicust.get_template_parameters)

    kicust.LATEX_SEARCH_PATHS.insert(0,
                                     os.path.join(os.path.dirname(__file__), 
                                                    'LaTeX')+"//" )
    #LATEX_END_LINES = [r'\flushpage']

    kicust.EXTRA_HEAD_GENERATORS.append(add_css)

    flavors.FLAVORS['stat'] = stat
