3 class page_builder(object):
8 LAYOUT_TEXT_ONE_COLUMN = 4
9 LAYOUT_TEXT_TWO_COLUMNS = 5
14 self.layout = page_builder.LAYOUT_AUTO
16 self.debug_info = None
17 self.custom_html = None
19 def set_layout(self, layout):
23 def set_title(self, title):
27 def set_style(self, style):
31 def add_item(self, item):
32 self.items.append(item)
35 def set_debug_info(self, debug_info):
36 self.debug_info = debug_info
39 def __pick_layout(self):
40 if len(self.items) == 1:
41 self.layout = page_builder.LAYOUT_ONE_ITEM
42 elif len(self.items) <= 4:
43 self.layout = page_builder.LAYOUT_FOUR_ITEMS
45 self.layout = page_builder.LAYOUT_MANY_ITEMS
47 def __render_custom_html(self, f):
48 if self.custom_html is not None:
49 f.write(self.custom_html)
51 def __render_header(self, f):
52 if self.title is not None:
53 f.write("<H1>%s</H1>\n" % self.title)
54 f.write("<HR>\n<TABLE WIDTH=99% BORDER=0>\n<TR>\n")
55 if self.style is not None:
58 def __render_footer(self, f):
59 f.write("</TR>\n</TABLE>\n")
61 def render_html(self, f):
62 if self.layout == page_builder.LAYOUT_AUTO or self.layout is None:
64 self.__render_custom_html(f)
65 self.__render_header(f)
69 if self.layout == page_builder.LAYOUT_ONE_ITEM:
72 elif self.layout == page_builder.LAYOUT_FOUR_ITEMS:
75 elif self.layout == page_builder.LAYOUT_MANY_ITEMS:
78 elif self.layout == page_builder.LAYOUT_TEXT_TWO_COLUMNS:
81 elif self.layout == page_builder.LAYOUT_TEXT_ONE_COLUMN:
85 print("Error, unknown layout type: %d" % self.layout)
88 self.items.sort(key=len, reverse=True)
89 for item in self.items:
90 f.write('<TD WIDTH=50%% STYLE="padding: 10px;">\n%s\n</TD>\n' % item)
92 if count % items_per_row == 0:
93 f.write("</TR>\n<TR>\n")
94 self.__render_footer(f)
96 def set_custom_html(self, html):
97 self.custom_html = html
100 #x.set_title("title").add_item("item1").add_item("item2").add_item("item3").render_html(sys.stdout)