def _generate(self, title, masthead, datefmt, feeds, extra_css=None, style=None): self.IS_HTML = False date = '%s, %s %s, %s' % (strftime('%A'), strftime('%B'), strftime('%d').lstrip('0'), strftime('%Y')) masthead_p = etree.Element("p") masthead_p.set("style","text-align:center") masthead_img = etree.Element("img") masthead_img.set("src",masthead) masthead_img.set("alt","masthead") masthead_p.append(masthead_img) head = HEAD(TITLE(title)) if style: head.append(STYLE(style, type='text/css')) if extra_css: head.append(STYLE(extra_css, type='text/css')) toc = TABLE(CLASS('toc'),width="100%",border="0",cellpadding="3px") for i, feed in enumerate(feeds): if feed: tr = TR() tr.append(TD(CLASS('calibre_rescale_120'), A(feed.title, href='feed_%d/index.html'%i))) tr.append(TD('%s' % len(feed.articles), style="text-align:right")) toc.append(tr) div = DIV( masthead_p, H3(CLASS('publish_date'),date), DIV(CLASS('divider')), toc) self.root = HTML(head, BODY(div)) if self.html_lang: self.root.set('lang', self.html_lang)
def _generate(self, title, masthead, datefmt, feeds, extra_css=None, style=None): self.IS_HTML = False if isinstance(datefmt, unicode): datefmt = datefmt.encode(preferred_encoding) date = "%s, %s %s, %s" % (strftime("%A"), strftime("%B"), strftime("%d").lstrip("0"), strftime("%Y")) masthead_p = etree.Element("p") masthead_p.set("style", "text-align:center") masthead_img = etree.Element("img") masthead_img.set("src", masthead) masthead_img.set("alt", "masthead") masthead_p.append(masthead_img) head = HEAD(TITLE(title)) if style: head.append(STYLE(style, type="text/css")) if extra_css: head.append(STYLE(extra_css, type="text/css")) toc = TABLE(CLASS("toc"), width="100%", border="0", cellpadding="3px") for i, feed in enumerate(feeds): if feed: tr = TR() tr.append(TD(CLASS("calibre_rescale_120"), A(feed.title, href="feed_%d/index.html" % i))) tr.append(TD("%s" % len(feed.articles), style="text-align:right")) toc.append(tr) div = DIV(masthead_p, H3(CLASS("publish_date"), date), DIV(CLASS("divider")), toc) self.root = HTML(head, BODY(div)) if self.html_lang: self.root.set("lang", self.html_lang)
def apply_markup(self, rmap, parent=None): table = TABLE('\n\t\t') if parent is None: try: first_para = rmap[next(iter(self))] except StopIteration: return parent = first_para.getparent() idx = parent.index(first_para) parent.insert(idx, table) else: parent.append(table) for row in XPath('./w:tr')(self.tbl): tr = TR('\n\t\t\t') tr.tail = '\n\t\t' table.append(tr) for tc in XPath('./w:tc')(row): td = TD() td.tail = '\n\t\t\t' tr.append(td) for x in XPath('./w:p|./w:tbl')(tc): if x.tag.endswith('}p'): td.append(rmap[x]) else: self.sub_tables[x].apply_markup(rmap, parent=td) if len(tr): tr[-1].tail = '\n\t\t' if len(table): table[-1].tail = '\n\t'
def _generate(self, bottom, feed, art, number_of_articles_in_feed, two_levels, url, __appname__, prefix='', center=True, extra_css=None, style=None): head = HEAD(TITLE('navbar')) if style: head.append(STYLE(style, type='text/css')) if extra_css: head.append(STYLE(extra_css, type='text/css')) navbar = DIV() navbar_t = TABLE(CLASS('touchscreen_navbar')) navbar_tr = TR() # | Previous if art > 0: link = A(CLASS('article_link'), _('Previous'), href='%s../article_%d/index.html' % (prefix, art - 1)) navbar_tr.append(TD(CLASS('article_prev'), link)) else: navbar_tr.append(TD(CLASS('article_prev'), '')) # | Articles | Sections | link = A(CLASS('articles_link'), _('Articles'), href='%s../index.html#article_%d' % (prefix, art)) navbar_tr.append(TD(CLASS('article_articles_list'), link)) link = A(CLASS('sections_link'), _('Sections'), href='%s../../index.html#feed_%d' % (prefix, feed)) navbar_tr.append(TD(CLASS('article_sections_list'), link)) # | Next next = 'feed_%d'%(feed+1) if art == number_of_articles_in_feed - 1 \ else 'article_%d'%(art+1) up = '../..' if art == number_of_articles_in_feed - 1 else '..' link = A(CLASS('article_link'), _('Next'), href='%s%s/%s/index.html' % (prefix, up, next)) navbar_tr.append(TD(CLASS('article_next'), link)) navbar_t.append(navbar_tr) navbar.append(navbar_t) #print "\n%s\n" % etree.tostring(navbar, pretty_print=True) self.root = HTML(head, BODY(navbar))
def apply_markup(self, rmap, page, parent=None): table = TABLE('\n\t\t') if self.bidi: table.set('dir', 'rtl') self.table_style.page = page style_map = {} if parent is None: try: first_para = rmap[next(iter(self))] except StopIteration: return parent = first_para.getparent() idx = parent.index(first_para) parent.insert(idx, table) else: parent.append(table) for row in self.namespace.XPath('./w:tr')(self.tbl): tr = TR('\n\t\t\t') style_map[tr] = self.style_map[row] tr.tail = '\n\t\t' table.append(tr) for tc in self.namespace.XPath('./w:tc')(row): td = TD() style_map[td] = s = self.style_map[tc] if s.col_span is not inherit: td.set('colspan', type('')(s.col_span)) if s.row_span is not inherit: td.set('rowspan', type('')(s.row_span)) td.tail = '\n\t\t\t' tr.append(td) for x in self.namespace.XPath('./w:p|./w:tbl')(tc): if x.tag.endswith('}p'): td.append(rmap[x]) else: self.sub_tables[x].apply_markup(rmap, page, parent=td) if len(tr): tr[-1].tail = '\n\t\t' if len(table): table[-1].tail = '\n\t' table_style = self.table_style.css if table_style: table.set('class', self.styles.register(table_style, 'table')) for elem, style in style_map.iteritems(): css = style.css if css: elem.set('class', self.styles.register(css, elem.tag))
def apply_markup(self, rmap, page, parent=None): table = TABLE('\n\t\t') if self.bidi: table.set('dir', 'rtl') self.table_style.page = page style_map = {} if parent is None: try: first_para = rmap[next(iter(self))] except StopIteration: return parent = first_para.getparent() idx = parent.index(first_para) parent.insert(idx, table) else: parent.append(table) for row in self.namespace.XPath('./w:tr')(self.tbl): tr = TR('\n\t\t\t') style_map[tr] = self.style_map[row] tr.tail = '\n\t\t' table.append(tr) for tc in self.namespace.XPath('./w:tc')(row): td = TD() style_map[td] = s = self.style_map[tc] if s.col_span is not inherit: td.set('colspan', type('')(s.col_span)) if s.row_span is not inherit: td.set('rowspan', type('')(s.row_span)) td.tail = '\n\t\t\t' tr.append(td) for x in self.namespace.XPath('./w:p|./w:tbl')(tc): if x.tag.endswith('}p'): td.append(rmap[x]) else: self.sub_tables[x].apply_markup(rmap, page, parent=td) if len(tr): tr[-1].tail = '\n\t\t' if len(table): table[-1].tail = '\n\t' table_style = self.table_style.css if table_style: table.set('class', self.styles.register(table_style, 'table')) for elem, style in iteritems(style_map): css = style.css if css: elem.set('class', self.styles.register(css, elem.tag))
def _generate(self, bottom, feed, art, number_of_articles_in_feed, two_levels, url, __appname__, prefix='', center=True, extra_css=None, style=None): head = HEAD(TITLE('navbar')) if style: head.append(STYLE(style, type='text/css')) if extra_css: head.append(STYLE(extra_css, type='text/css')) navbar = DIV() navbar_t = TABLE(CLASS('touchscreen_navbar')) navbar_tr = TR() if bottom and not url.startswith('file://'): navbar.append(HR()) text = 'This article was downloaded by ' p = PT(text, STRONG(__appname__), A(url, href=url, rel='calibre-downloaded-from'), style='text-align:left; max-width: 100%; overflow: hidden;') p[0].tail = ' from ' navbar.append(p) navbar.append(BR()) # | Previous if art > 0: link = A(CLASS('article_link'),_('Previous'),href='%s../article_%d/index.html'%(prefix, art-1)) navbar_tr.append(TD(CLASS('article_prev'),link)) else: navbar_tr.append(TD(CLASS('article_prev'),'')) # | Articles | Sections | link = A(CLASS('articles_link'),_('Articles'), href='%s../index.html#article_%d'%(prefix, art)) navbar_tr.append(TD(CLASS('article_articles_list'),link)) link = A(CLASS('sections_link'),_('Sections'), href='%s../../index.html#feed_%d'%(prefix, feed)) navbar_tr.append(TD(CLASS('article_sections_list'),link)) # | Next next_art = 'feed_%d'%(feed+1) if art == number_of_articles_in_feed - 1 \ else 'article_%d'%(art+1) up = '../..' if art == number_of_articles_in_feed - 1 else '..' link = A(CLASS('article_link'), _('Next'), href='%s%s/%s/index.html'%(prefix, up, next_art)) navbar_tr.append(TD(CLASS('article_next'),link)) navbar_t.append(navbar_tr) navbar.append(navbar_t) # print "\n%s\n" % etree.tostring(navbar, pretty_print=True) self.root = HTML(head, BODY(navbar))
def _generate(self, bottom, feed, art, number_of_articles_in_feed, two_levels, url, __appname__, prefix='', center=True, extra_css=None, style=None): head = HEAD(TITLE('navbar')) if style: head.append(STYLE(style, type='text/css')) if extra_css: head.append(STYLE(extra_css, type='text/css')) navbar = DIV() navbar_t = TABLE(CLASS('touchscreen_navbar')) navbar_tr = TR() if bottom and not url.startswith('file://'): navbar.append(HR()) text = 'This article was downloaded by ' p = PT(text, STRONG(__appname__), A(url, href=url, rel='calibre-downloaded-from'), style='text-align:left; max-width: 100%; overflow: hidden;') p[0].tail = ' from ' navbar.append(p) navbar.append(BR()) # | Previous if art > 0: link = A(CLASS('article_link'),_('Previous'),href='%s../article_%d/index.html'%(prefix, art-1)) navbar_tr.append(TD(CLASS('article_prev'),link)) else: navbar_tr.append(TD(CLASS('article_prev'),'')) # | Articles | Sections | link = A(CLASS('articles_link'),_('Articles'), href='%s../index.html#article_%d'%(prefix, art)) navbar_tr.append(TD(CLASS('article_articles_list'),link)) link = A(CLASS('sections_link'),_('Sections'), href='%s../../index.html#feed_%d'%(prefix, feed)) navbar_tr.append(TD(CLASS('article_sections_list'),link)) # | Next next = 'feed_%d'%(feed+1) if art == number_of_articles_in_feed - 1 \ else 'article_%d'%(art+1) up = '../..' if art == number_of_articles_in_feed - 1 else '..' link = A(CLASS('article_link'), _('Next'), href='%s%s/%s/index.html'%(prefix, up, next)) navbar_tr.append(TD(CLASS('article_next'),link)) navbar_t.append(navbar_tr) navbar.append(navbar_t) # print "\n%s\n" % etree.tostring(navbar, pretty_print=True) self.root = HTML(head, BODY(navbar))
def apply_markup(self, rmap, page, parent=None): table = TABLE("\n\t\t") self.table_style.page = page style_map = {} if parent is None: try: first_para = rmap[next(iter(self))] except StopIteration: return parent = first_para.getparent() idx = parent.index(first_para) parent.insert(idx, table) else: parent.append(table) for row in self.namespace.XPath("./w:tr")(self.tbl): tr = TR("\n\t\t\t") style_map[tr] = self.style_map[row] tr.tail = "\n\t\t" table.append(tr) for tc in self.namespace.XPath("./w:tc")(row): td = TD() style_map[td] = s = self.style_map[tc] if s.col_span is not inherit: td.set("colspan", type("")(s.col_span)) if s.row_span is not inherit: td.set("rowspan", type("")(s.row_span)) td.tail = "\n\t\t\t" tr.append(td) for x in self.namespace.XPath("./w:p|./w:tbl")(tc): if x.tag.endswith("}p"): td.append(rmap[x]) else: self.sub_tables[x].apply_markup(rmap, page, parent=td) if len(tr): tr[-1].tail = "\n\t\t" if len(table): table[-1].tail = "\n\t" table_style = self.table_style.css if table_style: table.set("class", self.styles.register(table_style, "table")) for elem, style in style_map.iteritems(): css = style.css if css: elem.set("class", self.styles.register(css, elem.tag))
def _generate(self, bottom, feed, art, number_of_articles_in_feed, two_levels, url, __appname__, prefix='', center=True, extra_css=None, style=None): head = HEAD(TITLE('navbar')) if style: head.append(STYLE(style, type='text/css')) if extra_css: head.append(STYLE(extra_css, type='text/css')) navbar = DIV() navbar_t = TABLE(CLASS('touchscreen_navbar')) navbar_tr = TR() # | Previous if art > 0: link = A(CLASS('article_link'),_('Previous'),href='%s../article_%d/index.html'%(prefix, art-1)) navbar_tr.append(TD(CLASS('article_prev'),link)) else: navbar_tr.append(TD(CLASS('article_prev'),'')) # | Articles | Sections | link = A(CLASS('articles_link'),_('Articles'), href='%s../index.html#article_%d'%(prefix, art)) navbar_tr.append(TD(CLASS('article_articles_list'),link)) link = A(CLASS('sections_link'),_('Sections'), href='%s../../index.html#feed_%d'%(prefix, feed)) navbar_tr.append(TD(CLASS('article_sections_list'),link)) # | Next next = 'feed_%d'%(feed+1) if art == number_of_articles_in_feed - 1 \ else 'article_%d'%(art+1) up = '../..' if art == number_of_articles_in_feed - 1 else '..' link = A(CLASS('article_link'), _('Next'), href='%s%s/%s/index.html'%(prefix, up, next)) navbar_tr.append(TD(CLASS('article_next'),link)) navbar_t.append(navbar_tr) navbar.append(navbar_t) #print "\n%s\n" % etree.tostring(navbar, pretty_print=True) self.root = HTML(head, BODY(navbar))
def createTable(tableTrlist,cols,casetype): table = TABLE(border="1", cellspacing="0", cellpadding="4", id=casetype, style="border: 1px solid black; \ border-collapse: \ collapse;empty-cells: show;margin: 0px 1px; ") tr = TR() for col in cols: tr.append(TH(col, style="border: 1px solid black;\ padding: 1px 4px;\ margin: 0px;")) table.append(tr) for trlist in tableTrlist: if len(trlist)==0:continue tr = TR() for td in trlist: tr.append(TD(td)) table.append(tr) return table
def apply_markup(self, object_map): rmap = {v:k for k, v in object_map.iteritems()} for tbl, blocks in self.tables.iteritems(): if not blocks: continue parent = rmap[blocks[0]].getparent() table = TABLE('\n\t\t') idx = parent.index(rmap[blocks[0]]) parent.insert(idx, table) for row in XPath('./w:tr')(tbl): tr = TR('\n\t\t\t') tr.tail = '\n\t\t' table.append(tr) for tc in XPath('./w:tc')(row): td = TD() td.tail = '\n\t\t\t' tr.append(td) for p in XPath('./w:p')(tc): block = rmap[p] td.append(block) if len(tr): tr[-1].tail = '\n\t\t' if len(table): table[-1].tail = '\n\t'
def _generate(self, f, feeds, cutoff, extra_css=None, style=None): from calibre.utils.cleantext import clean_xml_chars def trim_title(title,clip=18): if len(title)>clip: tokens = title.split(' ') new_title_tokens = [] new_title_len = 0 if len(tokens[0]) > clip: return tokens[0][:clip] + '...' for token in tokens: if len(token) + new_title_len < clip: new_title_tokens.append(token) new_title_len += len(token) else: new_title_tokens.append('...') title = ' '.join(new_title_tokens) break return title self.IS_HTML = False feed = feeds[f] # Construct the navbar navbar_t = TABLE(CLASS('touchscreen_navbar')) navbar_tr = TR() # Previous Section link = '' if f > 0: link = A(CLASS('feed_link'), trim_title(feeds[f-1].title), href='../feed_%d/index.html' % int(f-1)) navbar_tr.append(TD(CLASS('feed_prev'),link)) # Up to Sections link = A(_('Sections'), href="../index.html") navbar_tr.append(TD(CLASS('feed_up'),link)) # Next Section link = '' if f < len(feeds)-1: link = A(CLASS('feed_link'), trim_title(feeds[f+1].title), href='../feed_%d/index.html' % int(f+1)) navbar_tr.append(TD(CLASS('feed_next'),link)) navbar_t.append(navbar_tr) top_navbar = navbar_t bottom_navbar = copy.copy(navbar_t) # print "\n%s\n" % etree.tostring(navbar_t, pretty_print=True) # Build the page head = HEAD(TITLE(feed.title)) if style: head.append(STYLE(style, type='text/css')) if extra_css: head.append(STYLE(extra_css, type='text/css')) body = BODY() div = DIV( top_navbar, H2(feed.title, CLASS('feed_title')) ) body.append(div) if getattr(feed, 'image', None): div.append(DIV(IMG( alt=feed.image_alt if feed.image_alt else '', src=feed.image_url ), CLASS('calibre_feed_image'))) if getattr(feed, 'description', None): d = DIV(clean_xml_chars(feed.description), CLASS('calibre_feed_description', 'calibre_rescale_80')) d.append(BR()) div.append(d) for i, article in enumerate(feed.articles): if not getattr(article, 'downloaded', False): continue div_td = DIV(CLASS('article_summary'), A(article.title, CLASS('summary_headline','calibre_rescale_120', href=article.url))) if article.author: div_td.append(DIV(article.author, CLASS('summary_byline', 'calibre_rescale_100'))) if article.summary: div_td.append(DIV(cutoff(article.text_summary), CLASS('summary_text', 'calibre_rescale_100'))) div.append(div_td) div.append(bottom_navbar) self.root = HTML(head, body) if self.html_lang: self.root.set('lang', self.html_lang)
def print_table(filename, table, job_names, metric): table = calc_gain(table, job_names) baseline = job_names[0] with open(filename, 'w') as out: top_headers = TR(TH('')) headers = TR(TH('Steps')) # Build the header row for j in job_names: colspan = 1 headers.append(TH('chunks')) colspan += 2 headers.append(TH('hours', colspan='2')) # All jobs except the baseline get "hours gained" and # "percent hours gained" columns if j != baseline: colspan += 2 headers.append(TH('improvement', colspan='2')) top_headers.append(TH(j, colspan=str(colspan))) data_rows = [] for row in table: tr = TR(TD(str(row['step']))) for j in job_names: tr.append(TD(str(row['%s_chunks' % j]), CLASS='numeric')) intensity = row['%s_%s_intensity' % (j, metric)] bgcolor = '#ffff%02x' % intensity tr.append(td_hours(row['%s_%s' % (j, metric)], bgcolor)) tr.append(td_percent(row['%s_%s_pct' % (j, metric)], bgcolor)) if j != baseline: hours = row['%s_%s_gain' % (j, metric)] pct = row['%s_%s_pct_gain' % (j, metric)] intensity = 255 * (pct / 100.) bgcolor = gain_pct_to_bgcolor(pct) tr.append(td_hours(hours, bgcolor=bgcolor)) tr.append(td_percent(pct, bgcolor=bgcolor)) data_rows.append(tr) summary = [TD('Totals')] for j in job_names: summary.append(TD('')) summary.extend([ td_hours(sum(table['%s_%s' % (j, metric)])), td_percent(sum(table['%s_%s_pct' % (j, metric)])) ]) if j != baseline: hours = sum(table['%s_%s_gain' % (j, metric)]) pct = sum(table['%s_%s_pct_gain' % (j, metric)]) bgcolor = gain_pct_to_bgcolor(pct) summary.extend( [td_hours(hours, bgcolor), td_percent(pct, bgcolor)]) rows = [top_headers, headers] rows.extend(data_rows) rows.append(TR(*summary)) html = template(metric, E.DIV(E.TABLE(*rows))) out.write(lxml.html.tostring(html))
def _generate(self, f, feeds, cutoff, extra_css=None, style=None): def trim_title(title, clip=18): if len(title) > clip: tokens = title.split(" ") new_title_tokens = [] new_title_len = 0 if len(tokens[0]) > clip: return tokens[0][:clip] + "..." for token in tokens: if len(token) + new_title_len < clip: new_title_tokens.append(token) new_title_len += len(token) else: new_title_tokens.append("...") title = " ".join(new_title_tokens) break return title self.IS_HTML = False feed = feeds[f] # Construct the navbar navbar_t = TABLE(CLASS("touchscreen_navbar")) navbar_tr = TR() # Previous Section link = "" if f > 0: link = A(CLASS("feed_link"), trim_title(feeds[f - 1].title), href="../feed_%d/index.html" % int(f - 1)) navbar_tr.append(TD(CLASS("feed_prev"), link)) # Up to Sections link = A(_("Sections"), href="../index.html") navbar_tr.append(TD(CLASS("feed_up"), link)) # Next Section link = "" if f < len(feeds) - 1: link = A(CLASS("feed_link"), trim_title(feeds[f + 1].title), href="../feed_%d/index.html" % int(f + 1)) navbar_tr.append(TD(CLASS("feed_next"), link)) navbar_t.append(navbar_tr) top_navbar = navbar_t bottom_navbar = copy.copy(navbar_t) # print "\n%s\n" % etree.tostring(navbar_t, pretty_print=True) # Build the page head = HEAD(TITLE(feed.title)) if style: head.append(STYLE(style, type="text/css")) if extra_css: head.append(STYLE(extra_css, type="text/css")) body = BODY() div = DIV(top_navbar, H2(feed.title, CLASS("feed_title"))) body.append(div) if getattr(feed, "image", None): div.append( DIV(IMG(alt=feed.image_alt if feed.image_alt else "", src=feed.image_url), CLASS("calibre_feed_image")) ) if getattr(feed, "description", None): d = DIV(feed.description, CLASS("calibre_feed_description", "calibre_rescale_80")) d.append(BR()) div.append(d) for i, article in enumerate(feed.articles): if not getattr(article, "downloaded", False): continue div_td = DIV( CLASS("article_summary"), A(article.title, CLASS("summary_headline", "calibre_rescale_120", href=article.url)), ) if article.author: div_td.append(DIV(article.author, CLASS("summary_byline", "calibre_rescale_100"))) if article.summary: div_td.append(DIV(cutoff(article.text_summary), CLASS("summary_text", "calibre_rescale_100"))) div.append(div_td) div.append(bottom_navbar) self.root = HTML(head, body) if self.html_lang: self.root.set("lang", self.html_lang)
def print_table(filename, table, job_names, metric): table = calc_gain(table, job_names) baseline = job_names[0] with open(filename, 'w') as out: top_headers = TR(TH('')) headers = TR(TH('Steps')) # Build the header row for j in job_names: colspan = 1 headers.append(TH('chunks')) colspan += 2 headers.append(TH('hours', colspan='2')) # All jobs except the baseline get "hours gained" and # "percent hours gained" columns if j != baseline: colspan += 2 headers.append(TH('improvement', colspan='2')) top_headers.append(TH(j, colspan=str(colspan))) data_rows = [] for row in table: tr = TR(TD(str(row['step']))) for j in job_names: tr.append(TD(str(row['%s_chunks' % j]), CLASS='numeric')) intensity = row['%s_%s_intensity' % (j, metric)] bgcolor = '#ffff%02x' % intensity tr.append(td_hours(row['%s_%s' % (j, metric)], bgcolor)) tr.append(td_percent(row['%s_%s_pct' % (j, metric)], bgcolor)) if j != baseline: hours = row['%s_%s_gain' % (j, metric)] pct = row['%s_%s_pct_gain' % (j, metric)] intensity = 255 * (pct / 100.) bgcolor = gain_pct_to_bgcolor(pct) tr.append(td_hours(hours, bgcolor=bgcolor)) tr.append(td_percent(pct, bgcolor=bgcolor)) data_rows.append(tr) summary = [TD('Totals')] for j in job_names: summary.append(TD('')) summary.extend([ td_hours(sum(table['%s_%s' % (j, metric)])), td_percent(sum(table['%s_%s_pct' % (j, metric)]))]) if j != baseline: hours = sum(table['%s_%s_gain' % (j, metric)]) pct = sum(table['%s_%s_pct_gain' % (j, metric)]) bgcolor = gain_pct_to_bgcolor(pct) summary.extend([ td_hours(hours, bgcolor), td_percent(pct, bgcolor)]) rows = [top_headers, headers] rows.extend(data_rows) rows.append(TR(*summary)) html = template(metric, E.DIV( E.TABLE(*rows))) out.write(lxml.html.tostring(html))
def _generate( self, bottom, feed, art, number_of_articles_in_feed, two_levels, url, __appname__, prefix="", center=True, extra_css=None, style=None, ): head = HEAD(TITLE("navbar")) if style: head.append(STYLE(style, type="text/css")) if extra_css: head.append(STYLE(extra_css, type="text/css")) navbar = DIV() navbar_t = TABLE(CLASS("touchscreen_navbar")) navbar_tr = TR() if bottom and not url.startswith("file://"): navbar.append(HR()) text = "This article was downloaded by " p = PT( text, STRONG(__appname__), A(url, href=url, rel="calibre-downloaded-from"), style="text-align:left; max-width: 100%; overflow: hidden;", ) p[0].tail = " from " navbar.append(p) navbar.append(BR()) # | Previous if art > 0: link = A(CLASS("article_link"), _("Previous"), href="%s../article_%d/index.html" % (prefix, art - 1)) navbar_tr.append(TD(CLASS("article_prev"), link)) else: navbar_tr.append(TD(CLASS("article_prev"), "")) # | Articles | Sections | link = A(CLASS("articles_link"), _("Articles"), href="%s../index.html#article_%d" % (prefix, art)) navbar_tr.append(TD(CLASS("article_articles_list"), link)) link = A(CLASS("sections_link"), _("Sections"), href="%s../../index.html#feed_%d" % (prefix, feed)) navbar_tr.append(TD(CLASS("article_sections_list"), link)) # | Next next = "feed_%d" % (feed + 1) if art == number_of_articles_in_feed - 1 else "article_%d" % (art + 1) up = "../.." if art == number_of_articles_in_feed - 1 else ".." link = A(CLASS("article_link"), _("Next"), href="%s%s/%s/index.html" % (prefix, up, next)) navbar_tr.append(TD(CLASS("article_next"), link)) navbar_t.append(navbar_tr) navbar.append(navbar_t) # print "\n%s\n" % etree.tostring(navbar, pretty_print=True) self.root = HTML(head, BODY(navbar))