"""Manual grid selection module"""

import pygame
import Image, ImageDraw

class UserQuitError(Exception):
    pass

class Screen:
    def __init__(self, res):
        pygame.init()
        pygame.display.set_mode(res)
        pygame.display.set_caption("Go image capture")
        self._screen = pygame.display.get_surface()

    def display_picture(self, im):
        pg_img = pygame.image.frombuffer(im.tostring(), im.size, im.mode)
        self._screen.blit(pg_img, (0,0))
        pygame.display.flip()

def find_lines(im_orig):

    im = im_orig.copy()

    screen = Screen(im.size)

    done = False
    clock = pygame.time.Clock()
    draw = ImageDraw.Draw(im)
    corners = []
    color=(64, 64, 255)
    line_width = 2
    while not done:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                raise UserQuitError 
            if event.type == pygame.MOUSEBUTTONDOWN:
               if len(corners) >= 4:
                    corners = []
                    im = im_orig.copy()
                    draw = ImageDraw.Draw(im)

               if len(corners) < 4:
                    corners.append(pygame.mouse.get_pos())
                    draw.point(corners[:-1], fill=color)
                    if len(corners) == 4:
                        draw.line((corners[0], corners[1]), fill=color,
                                  width=line_width)
                        draw.line((corners[1], corners[2]), fill=color,
                                  width=line_width)
                        draw.line((corners[2], corners[3]), fill=color,
                                  width=line_width)
                        draw.line((corners[3], corners[0]), fill=color,
                                  width=line_width)
        screen.display_picture(im)
        clock.tick(15)
