aboutsummaryrefslogtreecommitdiff
path: root/src/Haddock/Backends/Xhtml/Themes.hs
diff options
context:
space:
mode:
authorMark Lentczner <markl@glyphic.com>2010-07-20 17:25:52 +0000
committerMark Lentczner <markl@glyphic.com>2010-07-20 17:25:52 +0000
commit248b76b4dc77dbbdbb0f7a2081188c81ee35ca77 (patch)
tree6d97ffa87c643532dd31e2e223b9ab3cc947ffba /src/Haddock/Backends/Xhtml/Themes.hs
parent87b91ac86d97fdc0297e10639d491bbe0dd33571 (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.hs66
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;"