From e395657b789ab68f87a20a6b0999a6ca9429c71b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 31 Mar 2014 20:53:12 +0530 Subject: [PATCH] Some styling for the index entries --- src/calibre/ebooks/docx/fields.py | 9 ++++++++- src/calibre/ebooks/docx/index.py | 5 +++++ src/calibre/ebooks/docx/styles.py | 3 +++ src/calibre/ebooks/docx/to_html.py | 2 ++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/calibre/ebooks/docx/fields.py b/src/calibre/ebooks/docx/fields.py index 1f2f0e7e98..df7b877e51 100644 --- a/src/calibre/ebooks/docx/fields.py +++ b/src/calibre/ebooks/docx/fields.py @@ -8,7 +8,7 @@ __copyright__ = '2013, Kovid Goyal ' import re -from calibre.ebooks.docx.index import process_index +from calibre.ebooks.docx.index import process_index, polish_index_markup from calibre.ebooks.docx.names import XPath, get, namespaces class Field(object): @@ -184,6 +184,13 @@ class Fields(object): self.index_fields.append((idx, blocks)) + def polish_markup(self, object_map): + if not self.index_fields: + return + rmap = {v:k for k, v in object_map.iteritems()} + for idx, blocks in self.index_fields: + polish_index_markup(idx, [rmap[b] for b in blocks]) + def test_parse_fields(): import unittest diff --git a/src/calibre/ebooks/docx/index.py b/src/calibre/ebooks/docx/index.py index bf916252b6..62138d27e0 100644 --- a/src/calibre/ebooks/docx/index.py +++ b/src/calibre/ebooks/docx/index.py @@ -117,4 +117,9 @@ def process_index(field, index, xe_fields, log): return hyperlinks, blocks +def polish_index_markup(index, blocks): + # prev_block = prev_text = None + for block in blocks: + cls = block.get('class', '') + block.set('class', (cls + ' index-entry').lstrip()) diff --git a/src/calibre/ebooks/docx/styles.py b/src/calibre/ebooks/docx/styles.py index a00f45e609..661e45048b 100644 --- a/src/calibre/ebooks/docx/styles.py +++ b/src/calibre/ebooks/docx/styles.py @@ -465,6 +465,9 @@ class Styles(object): span.tab { white-space: pre } + p.index-entry a:visited { color: blue } + p.index-entry a:hover { color: red } + ''') % (self.body_font_family, self.body_font_size, self.body_color) if ef: prefix = ef + '\n' + prefix diff --git a/src/calibre/ebooks/docx/to_html.py b/src/calibre/ebooks/docx/to_html.py index 678b770b02..05f1f9a95b 100644 --- a/src/calibre/ebooks/docx/to_html.py +++ b/src/calibre/ebooks/docx/to_html.py @@ -209,6 +209,8 @@ class Convert(object): notes_header.set('class', '%s notes-header' % cls) break + self.fields.polish_markup(self.object_map) + self.log.debug('Cleaning up redundant markup generated by Word') self.cover_image = cleanup_markup(self.log, self.html, self.styles, self.dest_dir, self.detect_cover)