Skip to main content

Provide a modular interface to styling Trac.

Project description

Notes

Adds a simple API and GUI for packaging and configuring Trac themes.

Configuration

trac.ini

All configuration options go in the [theme] section.

themeoptional, default: “default”

Theme name to use. Name is case-insensitive.

enable_cssoptional, default: false

Enable or disable the CSS customizations.

color.*optional

Stored values for simple CSS overrides. Note that changing this will not take effect until you save them in the admin panel.

Web interface

Theme

Use the arrows to select your theme from the installed options and then click the button to activate it.

http://trac-hacks.org/attachment/wiki/ThemeEnginePlugin/admin_theme.png?format=raw

Customize

Here you can further customize your theme by changing colors for certain pieces of the UI. The scheme drop down allows you to load pre-configured color schemes. Note that not all themes will support this, or support the same options.

http://trac-hacks.org/attachment/wiki/ThemeEnginePlugin/admin_customize.png?format=raw

Customize: Advanced

Here you can customize the CSS even further. As mentioned in the file, if you edit this file by hand, you should not use the simple customizer system or you will lose your changes.

http://trac-hacks.org/attachment/wiki/ThemeEnginePlugin/admin_advanced.png?format=raw

Example

To enable the PyDotOrg theme:

[theme]
theme = pydotorg

[components]
themeengine.* = enabled
pydotorgtheme.* = enabled

Creating a theme

Simple way

The easiest way to make a new theme is to inherit from ThemeBase. A basic example theme is as follows:

from trac.core import *

from themeengine.api import ThemeBase

class ExampleTheme(ThemeBase):
    """A example theme."""

    template = htdocs = css = screenshot = True

The name will be inferred from the class name (“Example” in this case) and the docstring will be used as the description. There are several class variables you can set to configure the theme. By default all of these are set to False and so are disabled. If set to True, each option will use a generally sane default. If set to any value other than those, that value will be used directly.

The available options as follows (all are optional):

templatedefault: $name_theme.html

The filename of the replacement template.

cssdefault: $name.css

Filename for a stylesheet to include.

htdocsdefault: htdocs

Subfolder containing static content.

screenshotdefault: htdocs/screenshot.png

Package-relative path to the screenshot file. File should be 640x400 or use the same aspect ratio.

colors :

Specifiers for simple color customization system. This should be an iterable of tuples of the form (name, property, selector). name will be shown in the customization UI for that entry. property will generally be color or background-color. selector should be a CSS selector string to apply the color rule to.

schemes :

Pre-built color schemes. This should be an iterable of tuples of the form (name, color_dict). The color_dict should be a dictionary mapping color name to hex color string (of the form #00AAFF).

Advanced API

For more advanced control you can implement IThemeProvider from themeengine.api. The interface definition is:

class IThemeProvider(Interface):
    """An interface to provide style information."""

    def get_theme_names():
        """Return an iterable of names."""

    def get_theme_info(name):
        """Return a dict containing 0 or more of the following pairs:

         description::
           A breif description of the theme.
         template::
           The name of the theme template file.
         css::
           The filename of the CSS file.
         htdocs::
           The folder containg the static content.
         screenshot::
           The name of the screenshot file.
         colors::
           A list of (name, css-property, selector) tuples.
         schemes::
           A list of (name, {color-name: value, ...}) tuples.
        """

Most of these are the same as the simple API above, except description is explicit.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

TracThemeEngine-2.1.3.zip (196.1 kB view details)

Uploaded Source

TracThemeEngine-2.1.3.tar.gz (180.8 kB view details)

Uploaded Source

TracThemeEngine-2.1.3.tar.bz2 (181.1 kB view details)

Uploaded Source

File details

Details for the file TracThemeEngine-2.1.3.zip.

File metadata

File hashes

Hashes for TracThemeEngine-2.1.3.zip
Algorithm Hash digest
SHA256 da2ed6592ddaf08feb45c884529285a0b8c585d5583fe3e5948264a20ea882de
MD5 36735f49a0983e736f16f4510ab2d41c
BLAKE2b-256 c59f74cfe2ed91c37b2890860eee29f8ea34b851c77619ef5e0d032687c78a21

See more details on using hashes here.

File details

Details for the file TracThemeEngine-2.1.3.tar.gz.

File metadata

File hashes

Hashes for TracThemeEngine-2.1.3.tar.gz
Algorithm Hash digest
SHA256 18501f33c8ffbc69819d4b82cf147c53ccef62896879694b1713c6d4a6f9fb4f
MD5 5079d339cb0e1fbd4c2dc234fec9059a
BLAKE2b-256 b4e6f0297dc98e76b6583a7c0d5b00c4269cfaf90a685081810c49c95f83599a

See more details on using hashes here.

File details

Details for the file TracThemeEngine-2.1.3.tar.bz2.

File metadata

File hashes

Hashes for TracThemeEngine-2.1.3.tar.bz2
Algorithm Hash digest
SHA256 1f6f3e0ce4215dd0098c8d17d2e97715bc94407dcf94b819572b967321ba1824
MD5 2dfbd0dde50f228e8f5be2ea7bc14475
BLAKE2b-256 2b0bb5fb6e4f44f5a3f921322034e1fa6cce3d94f1367a56e0744b1ae9f62875

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page