diff --git a/trac/mimeview/pygments.py b/trac/mimeview/pygments.py index 290a17f9bc..c3fa038346 100644 --- a/trac/mimeview/pygments.py +++ b/trac/mimeview/pygments.py @@ -154,7 +154,7 @@ def get_preference_panels(self, req): yield 'pygments', _('Syntax Highlighting') def render_preference_panel(self, req, panel): - styles = list(get_all_styles()) + styles = set(get_all_styles()) if req.method == 'POST': style = req.args.get('style') @@ -165,15 +165,25 @@ def render_preference_panel(self, req, panel): add_notice(req, _("Your preferences have been saved.")) req.redirect(req.href.prefs(panel or None)) - for style in sorted(styles): - add_stylesheet(req, '/pygments/%s.css' % style, title=style.title()) + def style_defs(style): + cls = get_style_by_name(style) + selector = '.trac-pygments-%s div.code pre' % style + return _get_style_defs(cls, selector) + + default_style = self.default_style + if default_style not in styles: + default_style = 'trac' + selection = req.session.get('pygments_style') + if selection not in styles: + selection = default_style output = self._generate('html', self.EXAMPLE) - add_script_data(req, default_style=self.default_style.title()) + add_script_data(req, default_style=default_style, selection=selection) return 'prefs_pygments.html', { 'output': output, - 'selection': req.session.get('pygments_style'), - 'default_style': self.default_style, - 'styles': styles + 'selection': selection, + 'default_style': default_style, + 'styles': sorted(styles), + 'style_defs': style_defs, } # IRequestHandler methods diff --git a/trac/mimeview/templates/prefs_pygments.html b/trac/mimeview/templates/prefs_pygments.html index 8221a1bcdb..7794fcb2d2 100644 --- a/trac/mimeview/templates/prefs_pygments.html +++ b/trac/mimeview/templates/prefs_pygments.html @@ -24,22 +24,21 @@ div.code pre { border: 1px solid #999; font-size: 90%; margin: 1em 2em; padding: 5px; width: 60%; } + # for style_ in styles: + ${- style_defs(style_)|safe} + # endfor @@ -48,12 +47,12 @@
# block prefpanel -