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
18 def set_layout(self, layout):
22 def set_title(self, title):
26 def set_style(self, style):
30 def add_item(self, item):
31 self.items.append(item)
34 def set_debug_info(self, debug_info):
35 self.debug_info = debug_info
38 def __pick_layout(self):
39 if len(self.items) == 1:
40 self.layout = page_builder.LAYOUT_ONE_ITEM
41 elif len(self.items) <= 4:
42 self.layout = page_builder.LAYOUT_FOUR_ITEMS
44 self.layout = page_builder.LAYOUT_MANY_ITEMS
46 def __render_header(self, f):
47 if self.title is not None:
48 f.write("<H1>%s</H1>\n" % self.title)
49 f.write("<HR>\n<TABLE WIDTH=99% BORDER=0>\n<TR>\n")
50 if self.style is not None:
53 def __render_footer(self, f):
54 f.write("</TR>\n</TABLE>\n")
56 def render_html(self, f):
57 if self.layout == page_builder.LAYOUT_AUTO or self.layout is None:
60 self.__render_header(f)
64 if self.layout == page_builder.LAYOUT_ONE_ITEM:
67 elif self.layout == page_builder.LAYOUT_FOUR_ITEMS:
70 elif self.layout == page_builder.LAYOUT_MANY_ITEMS:
73 elif self.layout == page_builder.LAYOUT_TEXT_TWO_COLUMNS:
76 elif self.layout == page_builder.LAYOUT_TEXT_ONE_COLUMN:
80 print("Error, unknown layout type: %d" % self.layout)
83 self.items.sort(key=len, reverse=True)
84 for item in self.items:
85 f.write('<TD WIDTH=50%% STYLE="padding: 10px;">\n%s\n</TD>\n' % item)
87 if count % items_per_row == 0:
88 f.write("</TR>\n<TR>\n")
90 self.__render_footer(f)
93 #x.set_title("title").add_item("item1").add_item("item2").add_item("item3").render_html(sys.stdout)