# -*- coding: utf-8 -*-
"""
utilitaires pour tracer l'activité de miiwii

$Id$
$URL$
"""

from events import TIMEOUT, COLOVER, eventNames
from event_pprinters import pprinters
import sys
import pygame
import logging
import os
import datetime

hiddenEvents = {pygame.MOUSEMOTION:True,
                pygame.MOUSEBUTTONDOWN:True,
                pygame.MOUSEBUTTONUP:True,
                TIMEOUT:True,
                #COLOVER:True,
                }

class EventLoggerAdapter(logging.LoggerAdapter) :
    
    FORMAT = "EVT %(ticks)-10s %(eventName)-15s %(message)s"
    
    def process(self, msg, kwargs) :
        pp = pprinters.get(msg.type, lambda e: str(e))
        extra = {}
        extra['eventType'] = msg.type
        extra['eventName'] = eventNames[msg.type]
        extra['ticks'] = pygame.time.get_ticks()
        kwargs['extra']=extra
        return pp(msg), kwargs

class EventFilter :
    
    def __init__(self):
        pass
    
    def filter(self, record) :
        return not hiddenEvents.has_key(record.eventType)

logsdir = os.path.join(os.path.expandvars('$HOME'), 'minwii_logs')
if not os.path.exists(logsdir) :
    os.mkdir(logsdir)

logfile = os.path.join(logsdir, datetime.datetime.now().strftime('%Y-%m-%d-%H_%M_%S.log'))
logfile = open(logfile, 'w')

console = logging.getLogger('minwii.console')
console.setLevel(logging.DEBUG)
handler = logging.StreamHandler(logfile)
handler.setFormatter(logging.Formatter('APP %(message)s'))
console.addHandler(handler)

_eventLogger = logging.getLogger('minwii.events')
_eventLogger.setLevel(logging.INFO)
_eventHandler = logging.StreamHandler(logfile)
_eventFormatter = logging.Formatter(EventLoggerAdapter.FORMAT)
_eventHandler.setFormatter(_eventFormatter)
_eventLogger.addHandler(_eventHandler)
_eventLogger.addFilter(EventFilter())

eventLogger = EventLoggerAdapter(_eventLogger, {})
