from gi.repository import Gtk
import actions

class ConsoleLogger:
    def __init__(self):
        pass

    def log(self, action):
        print 'Performed:', action.text

class GtkLogger(Gtk.HBox):
    def __init__(self):
        super(Log, self).__init__()
        self.text = Gtk.TextView()
        self.text.set_editable(False)
        self.text.set_cursor_visible(False)
        self.buffer = self.text.get_buffer()
        self.scrolled = Gtk.ScrolledWindow()
        self.scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.ALWAYS)
        self.scrolled.add_with_viewport(self.text)
        #self.scrolled.set_size_request(-1, 100)
        self.pack_start(self.scrolled, True, True, 5)

    def log(self, action):
        self.buffer.insert_at_cursor('Performed: %s\n' % action.text)
        adj = self.scrolled.get_vadjustment()
        adj.set_value(adj.get_upper() - adj.get_page_size())

if __name__ == '__main__':
    window = Gtk.Window()
    window.connect("destroy", Gtk.main_quit)
    logger = GtkLogger()
    window.add(logger)
    window.show_all()
    logger.log(actions.Action('coucou'))
    Gtk.main()