Exemple #1
0
            opt -= self.border[0] + self.border[1] + self.padding[0] + self.padding[1]
        if min > 0:
            min -= self.border[0] + self.border[1] + self.padding[0] + self.padding[1]
        if max > 0:
            max -= self.border[0] + self.border[1] + self.padding[0] + self.padding[1]
        return [opt, min, max]


class CaptionTag(BaseHtmlElemParser):
    def __init__(
        self,
        parent,
        parser,
        tag,
        attrs,
    ):
        BaseHtmlElemParser.__init__(self, parent, parser, tag, attrs)
        self.td_list = []

    def close(self):
        self.parent.caption = "".join(self.data)
        BaseHtmlElemParser.close(self)


register_tag_map("table", TableTag)
register_tag_map("caption", CaptionTag)
register_tag_map("tr", TrTag)
register_tag_map("td", TdTag)
register_tag_map("th", TdTag)
register_tag_map("hr", TableTag)
Exemple #2
0
            if "type" in self.attrs:
                t = self.attrs["type"]
            if t == "circle":
                z = "●"
            elif t == "square":
                z = "■"
            elif t == "none":
                z = " "
            else:
                z = "•"
                if child.level > 1:
                    z = "○"
            return "  " + z + " "


register_tag_map("p", Par)
register_tag_map("h1", Par)
register_tag_map("h2", Par)
register_tag_map("h3", Par)
register_tag_map("h4", Par)
register_tag_map("h5", Par)
register_tag_map("h6", Par)

register_tag_map("dt", Par)
register_tag_map("dd", Par)

register_tag_map("pre", Par)
register_tag_map("div", Par)

register_tag_map("ol", Ul)
register_tag_map("ul", Ul)
Exemple #3
0
class ParCalc(AtomTag):
    def handle_data(self, data):
        parent = self.parent
        while parent:
            if parent.tag == "table":
                table = parent
            if parent.tag == "body":
                body = parent
            if parent.tag == "html":
                html = parent
            parent = parent.parent
        data2 = str(eval(data))
        return AtomTag.handle_data(self, data2)


register_tag_map("br", BrTag)
register_tag_map("a", Atag)
register_tag_map("i", AtomTag)
register_tag_map("b", AtomTag)
register_tag_map("em", AtomTag)
register_tag_map("strong", AtomTag)
register_tag_map("s", AtomTag)
register_tag_map("small", AtomTag)
register_tag_map("big", AtomTag)
register_tag_map("sub", AtomTag)
register_tag_map("sup", AtomTag)
register_tag_map("tt", AtomTag)
register_tag_map("span", AtomTag)
register_tag_map("font", AtomTag)
register_tag_map("img", ImgTag)
register_tag_map("image", ImgTag)
Exemple #4
0
        BaseHtmlElemParser.close(self)

    def set_dc(self, dc):
        (self.width, self.height) = dc.get_size()
        self.dc = dc


class HeaderTag(BaseHtmlElemParser):
    def __init__(self, parent, parser, tag, attrs):
        BaseHtmlElemParser.__init__(self, parent, parser, tag, attrs)
        self.child_tags = ["style", "link"]

    def close(self):
        pass


class CommentTag(BaseHtmlElemParser):
    def __init__(self, parent, parser, tag, attrs):
        BaseHtmlElemParser.__init__(self, parent, parser, tag, attrs)

    def handle_starttag(self, parser, tag, attrs):
        return None

    def close(self):
        pass


register_tag_map("html", HtmlTag)
register_tag_map("head", HeaderTag)
register_tag_map("comment", CommentTag)
Exemple #5
0
# copyright: "Copyright (C) ????/2012 Slawomir Cholaj"
# license: "LGPL 3.0"
# version: "0.1a"

from pytigon_lib.schhtml.basehtmltags import BaseHtmlElemParser, register_tag_map


class Css(BaseHtmlElemParser):
    def __init__(self, parent, parser, tag, attrs):
        BaseHtmlElemParser.__init__(self, parent, parser, tag, attrs)

    def close(self):
        self.parser.css.parse_str("".join(self.data))


register_tag_map("style", Css)


class CssLink(BaseHtmlElemParser):
    def __init__(self, parent, parser, tag, attrs):
        BaseHtmlElemParser.__init__(self, parent, parser, tag, attrs)

    def close(self):
        if "href" in self.attrs:
            href = self.attrs["href"]
            http = self.parser.http
            try:
                response = http.get(self, href)
                if response.ret_code == 404:
                    css_txt = None
                else:
Exemple #6
0
    def handle_starttag(self, parser, tag, attrs):
        self.data.write("<" + tag)
        for pos in attrs:
            if attrs[pos] != None:
                self.data.write(" " + pos + '="' + attrs[pos] + '"')
            else:
                self.data.write(" " + pos)
        self.data.write(">")
        return None

    def handle_endtag(self, tag):
        if tag == self.tag:
            self.parent.data_from_child(self, self.data)
            return self.parent
        else:
            self.data.write("</" + tag + ">")
            return self

    def handle_data(self, data):
        self.data.write(data)

    def close(self):
        pass


register_tag_map("page", Page)
register_tag_map("header", HeaderFooter)
register_tag_map("footer", HeaderFooter)
register_tag_map("newpage", NewPage)
Exemple #7
0
                        obj.SetValue(value)
                parent.append_ctrl(obj)
            else:
                obj = self.classObj(parent, **self.kwargs)
                if not obj:
                    print("ERROR:", self.classObj)
                obj.set_unique_name(name)
                if value != None and (valuetype == "data"
                                      or valuetype == "str"):
                    obj.SetValue(value)
                obj.after_create()
                parent.append_ctrl(obj)
            self.obj = obj


register_tag_map("ctr*", CtrlTag)


class ComponentTag(CtrlTag):
    def __init__(self, parent, parser, tag, attrs):
        super().__init__(parent, parser, tag, attrs)
        self.data.append(make_start_tag(attrs["_tag"], attrs))
        self.count = 1
        self._close_tag = None

    def close(self):
        # self.count -= 1
        # if self.count < 0:

        if "window-width" in self.attrs:
            self.attrs["width"] = self.attrs["window-width"]
Exemple #8
0
            self.extra_space[3],
        ]

    def close(self):
        if self.width > 0 and self.height > 0:
            self.dx = self.width
            self.dy = self.height
        else:
            self.dx = 100
            self.dy = 100
        img_atom = Atom(self, self.dx, 0, self.dy, 0)
        img_atom.set_parent(self)
        self.make_atom_list()
        self.atom_list.append_atom(img_atom)
        self.parent.append_atom_list(self.atom_list)

    def handle_data(self, data):
        self.draw_txt += data

    def draw_atom(self, dc, style, x, y, dx, dy):
        self.reg_id(dc)
        self.reg_end()
        dc2 = dc.subdc(x, y, self.width, self.height, True)
        for r in self.render_helpers:
            dc2 = r.render(dc2)
        dc2.play_str(self.draw_txt)
        return True


register_tag_map("vimg", VectorImg)
Exemple #9
0
                    if (not self.dc.paging
                            or dy <= self.height - self.footer_height - self.y
                            or self.new_page != 2):
                        (dy, cont) = child.render(
                            self.dc_page.subdc(0, self.y, self.width, dy))
                        self.new_page = 2
                        if dy > 0:
                            self.y += dy
                    else:
                        self.render_new_page()
                        cont = True
                    if self.y > self._maxheight:
                        self._maxheight = self.y


register_tag_map("body", BodyTag)


class FormTag(BaseHtmlElemParser):
    def __init__(self, parent, parser, tag, attrs):
        BaseHtmlElemParser.__init__(self, parent, parser, tag, attrs)
        self.child_tags = parent.child_tags
        self.child_tags += [
            "table",
        ]
        self.fields = None
        self.field_names = {}
        self.upload = None
        self.parent.reg_field = self.reg_field
        self.parent.get_fields = self.get_fields
        self.parent.gethref = self.gethref