view browser.py @ 0:661e6ef8f8e4 draft default tip

Initial commit
author Radomir Dopieralski <sheep-devel@sheep.art.pl>
date Sat, 14 Jan 2017 13:22:10 +0100
parents
children
line wrap: on
line source

import loader, view

class Browser:
    def __init__(self, window):
        self.win = window
        self.loader = loader.Loader()
        self.view = view.View(self)

        self.current_url = ''
        self.base_url = ''
        self.history = []

    def set_current_url(self, url):
        self.current_url = url
        self.loader.base_url = url
        self.win.set_location(url)

    def open_url(self, link):
        self.win.start_loading(link)
        if link:
            print 'opened %s' % link
            f = self.loader.open_uri(link)
            print 'fetching headers'
            headers = f.info()
            mime = headers.getheader('Content-type').split(';')[0]
            print mime
            print repr(headers.__dict__)
            new_url = f.geturl()
            self.history.append(self.current_url)
            self.set_current_url(new_url)
            self.loader.queue_clear()
            self.loader.load_uri(self.view.open_stream(mime), link, f)
            self.loader.queue_load()
        else:
            self.document.clear()
        self.win.finish_loading()

    def history_back(self):
        url = self.history.pop()
        if url:
            self.open_url(url)

    def load_url(self, uri, stream):
        self.loader.queue_add_uri(stream, uri)

    def set_title(self, title):
        self.title = title
        self.win.set_title(title)

    def set_base_url(self, base_url):
        self.base_url = self.loader.resolve_uri(base_url, self.base_url)