aboutsummaryrefslogtreecommitdiff
path: root/src/Haddock
diff options
context:
space:
mode:
Diffstat (limited to 'src/Haddock')
-rw-r--r--src/Haddock/Backends/Xhtml.hs3
-rw-r--r--src/Haddock/Backends/Xhtml/Themes.hs66
-rw-r--r--src/Haddock/Backends/Xhtml/Utils.hs12
3 files changed, 72 insertions, 9 deletions
diff --git a/src/Haddock/Backends/Xhtml.hs b/src/Haddock/Backends/Xhtml.hs
index 18204a2b..b249ddf3 100644
--- a/src/Haddock/Backends/Xhtml.hs
+++ b/src/Haddock/Backends/Xhtml.hs
@@ -26,6 +26,7 @@ import Haddock.Backends.Xhtml.Decl
import Haddock.Backends.Xhtml.DocMarkup
import Haddock.Backends.Xhtml.Layout
import Haddock.Backends.Xhtml.Names
+import Haddock.Backends.Xhtml.Themes
import Haddock.Backends.Xhtml.Types
import Haddock.Backends.Xhtml.Utils
import Haddock.ModuleTree
@@ -154,7 +155,7 @@ copyHtmlBits odir libdir _maybe_css = do
copyFile (joinPath [libhtmldir, f]) (joinPath [odir, f])
--copyFile css_file css_destination
mapM_ copyLibFile cssFiles
- mapM_ copyLibFile [ iconFile, plusFile, minusFile, jsFile, framesFile ]
+ mapM_ copyLibFile [ plusFile, minusFile, jsFile, framesFile ]
headHtml :: String -> Maybe String -> Html
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;"
diff --git a/src/Haddock/Backends/Xhtml/Utils.hs b/src/Haddock/Backends/Xhtml/Utils.hs
index 443cb459..92b4afe3 100644
--- a/src/Haddock/Backends/Xhtml/Utils.hs
+++ b/src/Haddock/Backends/Xhtml/Utils.hs
@@ -23,9 +23,9 @@ module Haddock.Backends.Xhtml.Utils (
arrow, comma, dcolon, dot, darrow, equals, forallSymbol, quote,
hsep,
-
+
collapsebutton, collapseId,
-
+
cssFiles, styleSheet, stylePickers, styleMenu
) where
@@ -202,11 +202,9 @@ cssThemes = [
("Snappy", "shaddock.css")
]
-
cssFiles :: [String]
cssFiles = map snd cssThemes
-
styleSheet :: Html
styleSheet = toHtml $ zipWith mkLink cssThemes rels
where
@@ -214,15 +212,13 @@ styleSheet = toHtml $ zipWith mkLink cssThemes rels
mkLink (aTitle, aFile) aRel =
(thelink ! [href aFile, rel aRel, thetype "text/css", XHtml.title aTitle]) noHtml
-
stylePickers :: [Html]
stylePickers = map mkPicker cssThemes
where
- mkPicker (aTitle, aFile) =
+ mkPicker (aTitle, aFile) =
let js = "setActiveStyleSheet('" ++ aFile ++ "'); return false;" in
anchor ! [href "#", onclick js] << aTitle
-
styleMenu :: Html
styleMenu = thediv ! [identifier "style-menu-holder"] << [
anchor ! [ href "#", onclick js ] << "Style\9662",
@@ -230,4 +226,4 @@ styleMenu = thediv ! [identifier "style-menu-holder"] << [
]
where
js = "styleMenu(); return false;"
-
+ \ No newline at end of file