diff options
author | Mark Lentczner <markl@glyphic.com> | 2010-07-20 17:25:52 +0000 |
---|---|---|
committer | Mark Lentczner <markl@glyphic.com> | 2010-07-20 17:25:52 +0000 |
commit | 248b76b4dc77dbbdbb0f7a2081188c81ee35ca77 (patch) | |
tree | 6d97ffa87c643532dd31e2e223b9ab3cc947ffba /src/Haddock/Backends/Xhtml/Themes.hs | |
parent | 87b91ac86d97fdc0297e10639d491bbe0dd33571 (diff) |
move CSS Theme functions into Themes.hs
Diffstat (limited to 'src/Haddock/Backends/Xhtml/Themes.hs')
-rw-r--r-- | src/Haddock/Backends/Xhtml/Themes.hs | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/Haddock/Backends/Xhtml/Themes.hs b/src/Haddock/Backends/Xhtml/Themes.hs new file mode 100644 index 00000000..c02a8265 --- /dev/null +++ b/src/Haddock/Backends/Xhtml/Themes.hs @@ -0,0 +1,66 @@ +----------------------------------------------------------------------------- +-- | +-- Module : Haddock.Backends.Html.Themes +-- Copyright : (c) Mark Lentczner 2010 +-- License : BSD-like +-- +-- Maintainer : haddock@projects.haskell.org +-- Stability : experimental +-- Portability : portable +----------------------------------------------------------------------------- +module Haddock.Backends.Xhtml.Themes ( + CssTheme(..), + + cssFiles, styleSheet, stylePickers, styleMenu + ) + where + +import Haddock.Backends.Xhtml.Utils (onclick) +import Haddock.Utils (iconFile) + +import Data.List (nub) + +import Text.XHtml hiding ( name, title, p, quote ) +import qualified Text.XHtml as XHtml + + +-- Standard set of style sheets, first is the preferred + +data CssTheme = CssTheme { + themeName :: String, + themeHref :: String, + themeFiles :: [FilePath] + } + + +themes :: [CssTheme] +themes = [ + CssTheme "Classic" "xhaddock.css" ["xhaddock.css", iconFile], + CssTheme "Tibbe" "thaddock.css" ["thaddock.css", iconFile], + CssTheme "Snappy" "shaddock.css" ["shaddock.css", iconFile] + ] + +cssFiles :: [String] +cssFiles = nub (concatMap themeFiles themes) + +styleSheet :: Html +styleSheet = toHtml $ zipWith mkLink themes rels + where + rels = ("stylesheet" : repeat "alternate stylesheet") + mkLink (CssTheme aTitle aRef _) aRel = + (thelink ! [href aRef, rel aRel, thetype "text/css", XHtml.title aTitle]) noHtml + +stylePickers :: [Html] +stylePickers = map mkPicker themes + where + mkPicker (CssTheme aTitle aRef _) = + let js = "setActiveStyleSheet('" ++ aRef ++ "'); return false;" in + anchor ! [href "#", onclick js] << aTitle + +styleMenu :: Html +styleMenu = thediv ! [identifier "style-menu-holder"] << [ + anchor ! [ href "#", onclick js ] << "Style\9662", + unordList stylePickers ! [ identifier "style-menu", theclass "hide" ] + ] + where + js = "styleMenu(); return false;" |