#!/usr/bin/python
# -*- coding: utf-8 -*-

from gi.repository import Gtk


class SmallBoard(Gtk.EventBox):
    """Représente une tuile de support pour le panneau de bienvenue."""


    css = """

#classic {

    border-color: rgba(255, 255, 255, 0.2);
    border-style: solid;
    border-width: 1px;

}

#hover {

    border-color: rgba(255, 255, 255, 0.6);
    border-style: solid;
    border-width: 1px;

}
"""


    def __init__(self):
        """Construit le panneau avec son contenu."""

        super(SmallBoard, self).__init__()

        #self.set_size_request(250, 150)
        self.set_has_window(True)

        self.props.opacity = 0.6

        self._manager = None


    def on_enter(self, widget, event):
        """Réagit à un survol de la zone par la souris."""

        self.set_name('hover')

        self._manager.define_selected_area(self.get_allocation())

        self.props.opacity = 1.0

        return False


    def on_leave(self, widget, event):
        """Réagit à une sortie de la zone par la souris."""

        self.set_name('classic')

        if self._manager != None:
            self._manager.define_selected_area(None)

        self.props.opacity = 0.6

        return False


    def get_location(self):
        """Fournit la localisation souhaitée pour la plache."""

        pass


    def attach(self, manager):
        """Lie partiellement la plache à son support et suit les survols."""

        child = self.get_child()

        if child != None:

            child.props.margin = 20

            self.set_name('classic')

            self._manager = manager


            def track_children(widget, owner):

                widget.connect('enter-notify-event', self.on_enter)
                widget.connect('leave-notify-event', self.on_leave)

                if isinstance(widget, Gtk.Container):

                    children = widget.get_children()

                    for child in children:
                        track_children(child, owner)


            track_children(self, self)