summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--qtools/Doxyfile51
-rw-r--r--src/config.xml12
-rw-r--r--src/htmlgen.cpp75
-rw-r--r--src/index.cpp146
-rw-r--r--templates/html/fixed_tabs.css61
-rw-r--r--templates/html/search_fixedtabs.css271
6 files changed, 520 insertions, 96 deletions
diff --git a/qtools/Doxyfile b/qtools/Doxyfile
index 161a6d1..1e4fcf7 100644
--- a/qtools/Doxyfile
+++ b/qtools/Doxyfile
@@ -1,4 +1,4 @@
-# Doxyfile 1.8.4
+# Doxyfile 1.8.14
#---------------------------------------------------------------------------
# Project related configuration options
@@ -10,6 +10,7 @@ PROJECT_BRIEF =
PROJECT_LOGO =
OUTPUT_DIRECTORY = ../qtools_docs
CREATE_SUBDIRS = YES
+ALLOW_UNICODE_NAMES = NO
OUTPUT_LANGUAGE = English
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
@@ -34,12 +35,14 @@ OPTIMIZE_FOR_FORTRAN = NO
OPTIMIZE_OUTPUT_VHDL = NO
EXTENSION_MAPPING =
MARKDOWN_SUPPORT = YES
+TOC_INCLUDE_HEADINGS = 0
AUTOLINK_SUPPORT = YES
BUILTIN_STL_SUPPORT = NO
CPP_CLI_SUPPORT = NO
SIP_SUPPORT = NO
IDL_PROPERTY_SUPPORT = YES
DISTRIBUTE_GROUP_DOC = NO
+GROUP_NESTED_COMPOUNDS = NO
SUBGROUPING = YES
INLINE_GROUPED_CLASSES = NO
INLINE_SIMPLE_STRUCTS = NO
@@ -62,7 +65,9 @@ HIDE_IN_BODY_DOCS = NO
INTERNAL_DOCS = NO
CASE_SENSE_NAMES = NO
HIDE_SCOPE_NAMES = NO
+HIDE_COMPOUND_REFERENCE= NO
SHOW_INCLUDE_FILES = YES
+SHOW_GROUPED_MEMB_INC = NO
FORCE_LOCAL_INCLUDES = NO
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
@@ -84,17 +89,18 @@ FILE_VERSION_FILTER =
LAYOUT_FILE =
CITE_BIB_FILES =
#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
+# Configuration options related to warning and progress messages
#---------------------------------------------------------------------------
QUIET = NO
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = NO
+WARN_AS_ERROR = NO
WARN_FORMAT = "$file:$line: $text "
WARN_LOGFILE =
#---------------------------------------------------------------------------
-# configuration options related to the input files
+# Configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = .
INPUT_ENCODING = UTF-8
@@ -116,7 +122,7 @@ FILTER_SOURCE_FILES = NO
FILTER_SOURCE_PATTERNS =
USE_MDFILE_AS_MAINPAGE =
#---------------------------------------------------------------------------
-# configuration options related to source browsing
+# Configuration options related to source browsing
#---------------------------------------------------------------------------
SOURCE_BROWSER = YES
INLINE_SOURCES = NO
@@ -127,16 +133,14 @@ REFERENCES_LINK_SOURCE = YES
SOURCE_TOOLTIPS = YES
USE_HTAGS = NO
VERBATIM_HEADERS = YES
-CLANG_ASSISTED_PARSING = NO
-CLANG_OPTIONS =
#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
+# Configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = YES
COLS_IN_ALPHA_INDEX = 4
IGNORE_PREFIX = Q
#---------------------------------------------------------------------------
-# configuration options related to the HTML output
+# Configuration options related to the HTML output
#---------------------------------------------------------------------------
GENERATE_HTML = YES
HTML_OUTPUT =
@@ -150,6 +154,7 @@ HTML_COLORSTYLE_HUE = 220
HTML_COLORSTYLE_SAT = 100
HTML_COLORSTYLE_GAMMA = 80
HTML_TIMESTAMP = YES
+HTML_DYNAMIC_MENUS = YES
HTML_DYNAMIC_SECTIONS = NO
HTML_INDEX_NUM_ENTRIES = 100
GENERATE_DOCSET = YES
@@ -175,7 +180,7 @@ QHG_LOCATION =
GENERATE_ECLIPSEHELP = YES
ECLIPSE_DOC_ID = org.doxygen.qtools
DISABLE_INDEX = NO
-GENERATE_TREEVIEW = YES
+GENERATE_TREEVIEW = NO
ENUM_VALUES_PER_LINE = 4
TREEVIEW_WIDTH = 250
EXT_LINKS_IN_WINDOW = NO
@@ -194,7 +199,7 @@ SEARCHDATA_FILE = searchdata.xml
EXTERNAL_SEARCH_ID =
EXTRA_SEARCH_MAPPINGS =
#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
+# Configuration options related to the LaTeX output
#---------------------------------------------------------------------------
GENERATE_LATEX = YES
LATEX_OUTPUT =
@@ -205,6 +210,7 @@ PAPER_TYPE = a4wide
EXTRA_PACKAGES =
LATEX_HEADER =
LATEX_FOOTER =
+LATEX_EXTRA_STYLESHEET =
LATEX_EXTRA_FILES =
PDF_HYPERLINKS = YES
USE_PDFLATEX = YES
@@ -212,8 +218,9 @@ LATEX_BATCHMODE = NO
LATEX_HIDE_INDICES = NO
LATEX_SOURCE_CODE = YES
LATEX_BIB_STYLE = plain
+LATEX_TIMESTAMP = NO
#---------------------------------------------------------------------------
-# configuration options related to the RTF output
+# Configuration options related to the RTF output
#---------------------------------------------------------------------------
GENERATE_RTF = NO
RTF_OUTPUT =
@@ -221,32 +228,33 @@ COMPACT_RTF = NO
RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
+RTF_SOURCE_CODE = NO
#---------------------------------------------------------------------------
-# configuration options related to the man page output
+# Configuration options related to the man page output
#---------------------------------------------------------------------------
GENERATE_MAN = NO
MAN_OUTPUT =
MAN_EXTENSION = .3
+MAN_SUBDIR =
MAN_LINKS = NO
#---------------------------------------------------------------------------
-# configuration options related to the XML output
+# Configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = NO
XML_OUTPUT = xml
-XML_SCHEMA =
-XML_DTD =
XML_PROGRAMLISTING = YES
#---------------------------------------------------------------------------
-# configuration options related to the DOCBOOK output
+# Configuration options related to the DOCBOOK output
#---------------------------------------------------------------------------
GENERATE_DOCBOOK = NO
DOCBOOK_OUTPUT = docbook
+DOCBOOK_PROGRAMLISTING = NO
#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
+# Configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
+# Configuration options related to the Perl module output
#---------------------------------------------------------------------------
GENERATE_PERLMOD = NO
PERLMOD_LATEX = NO
@@ -265,7 +273,7 @@ PREDEFINED = Q_EXPORT=
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
-# Configuration::additions related to external references
+# Configuration options related to external references
#---------------------------------------------------------------------------
TAGFILES =
GENERATE_TAGFILE = ../qtools_docs/qtools.tag
@@ -278,6 +286,7 @@ PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES
MSCGEN_PATH =
+DIA_PATH =
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = YES
DOT_NUM_THREADS = 0
@@ -301,6 +310,10 @@ INTERACTIVE_SVG = YES
DOT_PATH =
DOTFILE_DIRS =
MSCFILE_DIRS =
+DIAFILE_DIRS =
+PLANTUML_JAR_PATH =
+PLANTUML_CFG_FILE =
+PLANTUML_INCLUDE_PATH =
DOT_GRAPH_MAX_NODES = 50
MAX_DOT_GRAPH_DEPTH = 0
DOT_TRANSPARENT = YES
diff --git a/src/config.xml b/src/config.xml
index 483eff1..227f8bf 100644
--- a/src/config.xml
+++ b/src/config.xml
@@ -1941,6 +1941,18 @@ hr.footer {
]]>
</docs>
</option>
+ <option type='bool' id='HTML_DYNAMIC_MENUS' defval='1' depends='GENERATE_HTML'>
+ <docs>
+<![CDATA[
+ If the \c HTML_DYNAMIC_MENUS tag is set to \c YES then the generated HTML
+ documentation will contain a main index with vertical navigation menus that
+ are dynamically created via Javascript. If disabled, the navigation index will consists of
+ multiple levels of tabs that are statically embedded in every HTML page.
+ Disable this option to support browsers that do not have Javascript, like
+ the Qt help browser.
+]]>
+ </docs>
+ </option>
<option type='bool' id='HTML_DYNAMIC_SECTIONS' defval='0' depends='GENERATE_HTML'>
<docs>
<![CDATA[
diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp
index 28a363b..12b71e1 100644
--- a/src/htmlgen.cpp
+++ b/src/htmlgen.cpp
@@ -310,7 +310,7 @@ static QCString substituteHtmlKeywords(const QCString &s,
if (!serverBasedSearch)
{
- if (disableIndex)
+ if (disableIndex || !Config_getBool(HTML_DYNAMIC_MENUS))
{
searchCssJs += "<script type=\"text/javascript\">\n"
" $(document).ready(function() { init_search(); });\n"
@@ -319,7 +319,7 @@ static QCString substituteHtmlKeywords(const QCString &s,
}
else
{
- if (disableIndex)
+ if (disableIndex || !Config_getBool(HTML_DYNAMIC_MENUS))
{
searchCssJs += "<script type=\"text/javascript\">\n"
" $(document).ready(function() {\n"
@@ -730,13 +730,20 @@ void HtmlGenerator::init()
createSubDirs(d);
ResourceMgr &mgr = ResourceMgr::instance();
- mgr.copyResource("tabs.css",dname);
+ if (Config_getBool(HTML_DYNAMIC_MENUS))
+ {
+ mgr.copyResourceAs("tabs.css",dname,"tabs.css");
+ }
+ else // stylesheet for the 'old' static tabs
+ {
+ mgr.copyResourceAs("fixed_tabs.css",dname,"tabs.css");
+ }
mgr.copyResource("jquery.js",dname);
if (Config_getBool(INTERACTIVE_SVG))
{
mgr.copyResource("svgpan.js",dname);
}
- if (!Config_getBool(DISABLE_INDEX))
+ if (!Config_getBool(DISABLE_INDEX) && Config_getBool(HTML_DYNAMIC_MENUS))
{
mgr.copyResource("menu.js",dname);
}
@@ -826,6 +833,10 @@ void HtmlGenerator::writeSearchData(const char *dir)
{
searchCss = mgr.getAsString("search_nomenu.css");
}
+ else if (!Config_getBool(HTML_DYNAMIC_MENUS))
+ {
+ searchCss = mgr.getAsString("search_fixedtabs.css");
+ }
else
{
searchCss = mgr.getAsString("search.css");
@@ -2149,8 +2160,36 @@ static void writeDefaultQuickLinks(FTextStream &t,bool compact,
static bool searchEngine = Config_getBool(SEARCHENGINE);
static bool externalSearch = Config_getBool(EXTERNAL_SEARCH);
LayoutNavEntry *root = LayoutDocManager::instance().rootNavEntry();
-
- if (compact)
+ LayoutNavEntry::Kind kind = (LayoutNavEntry::Kind)-1;
+ LayoutNavEntry::Kind altKind = (LayoutNavEntry::Kind)-1; // fall back for the old layout file
+ bool highlightParent=FALSE;
+ switch (hli) // map HLI enums to LayoutNavEntry::Kind enums
+ {
+ case HLI_Main: kind = LayoutNavEntry::MainPage; break;
+ case HLI_Modules: kind = LayoutNavEntry::Modules; break;
+ //case HLI_Directories: kind = LayoutNavEntry::Dirs; break;
+ case HLI_Namespaces: kind = LayoutNavEntry::NamespaceList; altKind = LayoutNavEntry::Namespaces; break;
+ case HLI_Hierarchy: kind = LayoutNavEntry::ClassHierarchy; break;
+ case HLI_Classes: kind = LayoutNavEntry::ClassIndex; altKind = LayoutNavEntry::Classes; break;
+ case HLI_Annotated: kind = LayoutNavEntry::ClassList; altKind = LayoutNavEntry::Classes; break;
+ case HLI_Files: kind = LayoutNavEntry::FileList; altKind = LayoutNavEntry::Files; break;
+ case HLI_NamespaceMembers: kind = LayoutNavEntry::NamespaceMembers; break;
+ case HLI_Functions: kind = LayoutNavEntry::ClassMembers; break;
+ case HLI_Globals: kind = LayoutNavEntry::FileGlobals; break;
+ case HLI_Pages: kind = LayoutNavEntry::Pages; break;
+ case HLI_Examples: kind = LayoutNavEntry::Examples; break;
+ case HLI_UserGroup: kind = LayoutNavEntry::UserGroup; break;
+ case HLI_ClassVisible: kind = LayoutNavEntry::ClassList; altKind = LayoutNavEntry::Classes;
+ highlightParent = TRUE; break;
+ case HLI_NamespaceVisible: kind = LayoutNavEntry::NamespaceList; altKind = LayoutNavEntry::Namespaces;
+ highlightParent = TRUE; break;
+ case HLI_FileVisible: kind = LayoutNavEntry::FileList; altKind = LayoutNavEntry::Files;
+ highlightParent = TRUE; break;
+ case HLI_None: break;
+ case HLI_Search: break;
+ }
+
+ if (compact && Config_getBool(HTML_DYNAMIC_MENUS))
{
QCString searchPage;
if (externalSearch)
@@ -2187,6 +2226,30 @@ static void writeDefaultQuickLinks(FTextStream &t,bool compact,
t << "</script>" << endl;
t << "<div id=\"main-nav\"></div>" << endl;
}
+ else if (compact) // && !Config_getBool(HTML_DYNAMIC_MENUS)
+ {
+ // find highlighted index item
+ LayoutNavEntry *hlEntry = root->find(kind,kind==LayoutNavEntry::UserGroup ? file : 0);
+ if (!hlEntry && altKind!=(LayoutNavEntry::Kind)-1) { hlEntry=root->find(altKind); kind=altKind; }
+ if (!hlEntry) // highlighted item not found in the index! -> just show the level 1 index...
+ {
+ highlightParent=TRUE;
+ hlEntry = root->children().getFirst();
+ if (hlEntry==0)
+ {
+ return; // argl, empty index!
+ }
+ }
+ if (kind==LayoutNavEntry::UserGroup)
+ {
+ LayoutNavEntry *e = hlEntry->children().getFirst();
+ if (e)
+ {
+ hlEntry = e;
+ }
+ }
+ renderQuickLinksAsTabs(t,relPath,hlEntry,kind,highlightParent,hli==HLI_Search);
+ }
else
{
renderQuickLinksAsTree(t,relPath,root);
diff --git a/src/index.cpp b/src/index.cpp
index d52fa77..10c1dcb 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -2571,38 +2571,40 @@ static void writeClassMemberIndexFiltered(OutputList &ol, ClassMemberHighlight h
if (!disableIndex)
{
ol.writeQuickLinks(TRUE,HLI_Functions,0);
-#if 0
- startQuickIndexList(ol);
-
- // index item for global member list
- startQuickIndexItem(ol,
- getCmhlInfo(0)->fname+Doxygen::htmlFileExtension,hl==CMHL_All,TRUE,first);
- ol.writeString(fixSpaces(getCmhlInfo(0)->title));
- endQuickIndexItem(ol);
- int i;
- // index items per category member lists
- for (i=1;i<CMHL_Total;i++)
+ if (!Config_getBool(HTML_DYNAMIC_MENUS))
{
- if (documentedClassMembers[i]>0)
+ startQuickIndexList(ol);
+
+ // index item for global member list
+ startQuickIndexItem(ol,
+ getCmhlInfo(0)->fname+Doxygen::htmlFileExtension,hl==CMHL_All,TRUE,first);
+ ol.writeString(fixSpaces(getCmhlInfo(0)->title));
+ endQuickIndexItem(ol);
+
+ int i;
+ // index items per category member lists
+ for (i=1;i<CMHL_Total;i++)
{
- startQuickIndexItem(ol,getCmhlInfo(i)->fname+Doxygen::htmlFileExtension,hl==i,TRUE,first);
- ol.writeString(fixSpaces(getCmhlInfo(i)->title));
- //printf("multiPageIndex=%d first=%d fileName=%s file=%s title=%s\n",
- // multiPageIndex,first,fileName.data(),getCmhlInfo(i)->fname,getCmhlInfo(i)->title.data());
- endQuickIndexItem(ol);
+ if (documentedClassMembers[i]>0)
+ {
+ startQuickIndexItem(ol,getCmhlInfo(i)->fname+Doxygen::htmlFileExtension,hl==i,TRUE,first);
+ ol.writeString(fixSpaces(getCmhlInfo(i)->title));
+ //printf("multiPageIndex=%d first=%d fileName=%s file=%s title=%s\n",
+ // multiPageIndex,first,fileName.data(),getCmhlInfo(i)->fname,getCmhlInfo(i)->title.data());
+ endQuickIndexItem(ol);
+ }
}
- }
- endQuickIndexList(ol);
+ endQuickIndexList(ol);
- // quick alphabetical index
- if (quickIndex)
- {
- writeQuickMemberIndex(ol,g_memberIndexLetterUsed[hl],page,
- getCmhlInfo(hl)->fname,multiPageIndex);
+ // quick alphabetical index
+ if (quickIndex)
+ {
+ writeQuickMemberIndex(ol,g_memberIndexLetterUsed[hl],page,
+ getCmhlInfo(hl)->fname,multiPageIndex);
+ }
}
-#endif
}
ol.endQuickIndices();
ol.writeSplitBar(fileName);
@@ -2745,36 +2747,37 @@ static void writeFileMemberIndexFiltered(OutputList &ol, FileMemberHighlight hl)
if (!disableIndex)
{
ol.writeQuickLinks(TRUE,HLI_Globals,0);
-#if 0
- startQuickIndexList(ol);
+ if (!Config_getBool(HTML_DYNAMIC_MENUS))
+ {
+ startQuickIndexList(ol);
- // index item for all file member lists
- startQuickIndexItem(ol,
- getFmhlInfo(0)->fname+Doxygen::htmlFileExtension,hl==FMHL_All,TRUE,first);
- ol.writeString(fixSpaces(getFmhlInfo(0)->title));
- endQuickIndexItem(ol);
+ // index item for all file member lists
+ startQuickIndexItem(ol,
+ getFmhlInfo(0)->fname+Doxygen::htmlFileExtension,hl==FMHL_All,TRUE,first);
+ ol.writeString(fixSpaces(getFmhlInfo(0)->title));
+ endQuickIndexItem(ol);
- int i;
- // index items for per category member lists
- for (i=1;i<FMHL_Total;i++)
- {
- if (documentedFileMembers[i]>0)
+ int i;
+ // index items for per category member lists
+ for (i=1;i<FMHL_Total;i++)
{
- startQuickIndexItem(ol,
- getFmhlInfo(i)->fname+Doxygen::htmlFileExtension,hl==i,TRUE,first);
- ol.writeString(fixSpaces(getFmhlInfo(i)->title));
- endQuickIndexItem(ol);
+ if (documentedFileMembers[i]>0)
+ {
+ startQuickIndexItem(ol,
+ getFmhlInfo(i)->fname+Doxygen::htmlFileExtension,hl==i,TRUE,first);
+ ol.writeString(fixSpaces(getFmhlInfo(i)->title));
+ endQuickIndexItem(ol);
+ }
}
- }
- endQuickIndexList(ol);
+ endQuickIndexList(ol);
- if (quickIndex)
- {
- writeQuickMemberIndex(ol,g_fileIndexLetterUsed[hl],page,
- getFmhlInfo(hl)->fname,multiPageIndex);
+ if (quickIndex)
+ {
+ writeQuickMemberIndex(ol,g_fileIndexLetterUsed[hl],page,
+ getFmhlInfo(hl)->fname,multiPageIndex);
+ }
}
-#endif
}
ol.endQuickIndices();
ol.writeSplitBar(fileName);
@@ -2915,36 +2918,37 @@ static void writeNamespaceMemberIndexFiltered(OutputList &ol,
if (!disableIndex)
{
ol.writeQuickLinks(TRUE,HLI_NamespaceMembers,0);
-#if 0
- startQuickIndexList(ol);
+ if (!Config_getBool(HTML_DYNAMIC_MENUS))
+ {
+ startQuickIndexList(ol);
- // index item for all namespace member lists
- startQuickIndexItem(ol,
- getNmhlInfo(0)->fname+Doxygen::htmlFileExtension,hl==NMHL_All,TRUE,first);
- ol.writeString(fixSpaces(getNmhlInfo(0)->title));
- endQuickIndexItem(ol);
+ // index item for all namespace member lists
+ startQuickIndexItem(ol,
+ getNmhlInfo(0)->fname+Doxygen::htmlFileExtension,hl==NMHL_All,TRUE,first);
+ ol.writeString(fixSpaces(getNmhlInfo(0)->title));
+ endQuickIndexItem(ol);
- int i;
- // index items per category member lists
- for (i=1;i<NMHL_Total;i++)
- {
- if (documentedNamespaceMembers[i]>0)
+ int i;
+ // index items per category member lists
+ for (i=1;i<NMHL_Total;i++)
{
- startQuickIndexItem(ol,
- getNmhlInfo(i)->fname+Doxygen::htmlFileExtension,hl==i,TRUE,first);
- ol.writeString(fixSpaces(getNmhlInfo(i)->title));
- endQuickIndexItem(ol);
+ if (documentedNamespaceMembers[i]>0)
+ {
+ startQuickIndexItem(ol,
+ getNmhlInfo(i)->fname+Doxygen::htmlFileExtension,hl==i,TRUE,first);
+ ol.writeString(fixSpaces(getNmhlInfo(i)->title));
+ endQuickIndexItem(ol);
+ }
}
- }
- endQuickIndexList(ol);
+ endQuickIndexList(ol);
- if (quickIndex)
- {
- writeQuickMemberIndex(ol,g_namespaceIndexLetterUsed[hl],page,
- getNmhlInfo(hl)->fname,multiPageIndex);
+ if (quickIndex)
+ {
+ writeQuickMemberIndex(ol,g_namespaceIndexLetterUsed[hl],page,
+ getNmhlInfo(hl)->fname,multiPageIndex);
+ }
}
-#endif
}
ol.endQuickIndices();
ol.writeSplitBar(fileName);
diff --git a/templates/html/fixed_tabs.css b/templates/html/fixed_tabs.css
new file mode 100644
index 0000000..93b0d51
--- /dev/null
+++ b/templates/html/fixed_tabs.css
@@ -0,0 +1,61 @@
+.tabs, .tabs2, .tabs3 {
+ background-image: url('tab_b.png');
+ width: 100%;
+ z-index: 101;
+ font-size: 13px;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+}
+
+.tabs2 {
+ font-size: 10px;
+}
+.tabs3 {
+ font-size: 9px;
+}
+
+.tablist {
+ margin: 0;
+ padding: 0;
+ display: table;
+}
+
+.tablist li {
+ float: left;
+ display: table-cell;
+ background-image: url('tab_b.png');
+ line-height: 36px;
+ list-style: none;
+}
+
+.tablist a {
+ display: block;
+ padding: 0 20px;
+ font-weight: bold;
+ background-image:url('tab_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color: ##30;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+ outline: none;
+}
+
+.tabs3 .tablist a {
+ padding: 0 10px;
+}
+
+.tablist a:hover {
+ background-image: url('tab_h.png');
+ background-repeat:repeat-x;
+ color: #fff;
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+ text-decoration: none;
+}
+
+.tablist li.current a {
+ background-image: url('tab_a.png');
+ background-repeat:repeat-x;
+ color: #fff;
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+}
+
diff --git a/templates/html/search_fixedtabs.css b/templates/html/search_fixedtabs.css
new file mode 100644
index 0000000..a77ab21
--- /dev/null
+++ b/templates/html/search_fixedtabs.css
@@ -0,0 +1,271 @@
+/*---------------- Search Box */
+
+#FSearchBox {
+ float: left;
+}
+
+#MSearchBox {
+ white-space : nowrap;
+ position: absolute;
+ float: none;
+ display: inline;
+ margin-top: 8px;
+ right: 0px;
+ width: 170px;
+ z-index: 102;
+ background-color: white;
+}
+
+#MSearchBox .left
+{
+ display:block;
+ position:absolute;
+ left:10px;
+ width:20px;
+ height:19px;
+ background:url('search_l.png') no-repeat;
+ background-position:right;
+}
+
+#MSearchSelect {
+ display:block;
+ position:absolute;
+ width:20px;
+ height:19px;
+}
+
+.left #MSearchSelect {
+ left:4px;
+}
+
+.right #MSearchSelect {
+ right:5px;
+}
+
+#MSearchField {
+ display:block;
+ position:absolute;
+ height:19px;
+ background:url('search_m.png') repeat-x;
+ border:none;
+ width:111px;
+ margin-left:20px;
+ padding-left:4px;
+ color: #909090;
+ outline: none;
+ font: 9pt Arial, Verdana, sans-serif;
+}
+
+#FSearchBox #MSearchField {
+ margin-left:15px;
+}
+
+#MSearchBox .right {
+ display:block;
+ position:absolute;
+ right:10px;
+ top:0px;
+ width:20px;
+ height:19px;
+ background:url('search_r.png') no-repeat;
+ background-position:left;
+}
+
+#MSearchClose {
+ display: none;
+ position: absolute;
+ top: 4px;
+ background : none;
+ border: none;
+ margin: 0px 4px 0px 0px;
+ padding: 0px 0px;
+ outline: none;
+}
+
+.left #MSearchClose {
+ left: 6px;
+}
+
+.right #MSearchClose {
+ right: 2px;
+}
+
+.MSearchBoxActive #MSearchField {
+ color: #000000;
+}
+
+/*---------------- Search filter selection */
+
+#MSearchSelectWindow {
+ display: none;
+ position: absolute;
+ left: 0; top: 0;
+ border: 1px solid ##A0;
+ background-color: ##FA;
+ z-index: 1;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ -webkit-border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+.SelectItem {
+ font: 8pt Arial, Verdana, sans-serif;
+ padding-left: 2px;
+ padding-right: 12px;
+ border: 0px;
+}
+
+span.SelectionMark {
+ margin-right: 4px;
+ font-family: monospace;
+ outline-style: none;
+ text-decoration: none;
+}
+
+a.SelectItem {
+ display: block;
+ outline-style: none;
+ color: #000000;
+ text-decoration: none;
+ padding-left: 6px;
+ padding-right: 12px;
+}
+
+a.SelectItem:focus,
+a.SelectItem:active {
+ color: #000000;
+ outline-style: none;
+ text-decoration: none;
+}
+
+a.SelectItem:hover {
+ color: #FFFFFF;
+ background-color: ##50;
+ outline-style: none;
+ text-decoration: none;
+ cursor: pointer;
+ display: block;
+}
+
+/*---------------- Search results window */
+
+iframe#MSearchResults {
+ width: 60ex;
+ height: 15em;
+}
+
+#MSearchResultsWindow {
+ display: none;
+ position: absolute;
+ left: 0; top: 0;
+ border: 1px solid #000;
+ background-color: ##F0;
+}
+
+/* ----------------------------------- */
+
+
+#SRIndex {
+ clear:both;
+ padding-bottom: 15px;
+}
+
+.SREntry {
+ font-size: 10pt;
+ padding-left: 1ex;
+}
+
+.SRPage .SREntry {
+ font-size: 8pt;
+ padding: 1px 5px;
+}
+
+body.SRPage {
+ margin: 5px 2px;
+}
+
+.SRChildren {
+ padding-left: 3ex; padding-bottom: .5em
+}
+
+.SRPage .SRChildren {
+ display: none;
+}
+
+.SRSymbol {
+ font-weight: bold;
+ color: ##58;
+ font-family: Arial, Verdana, sans-serif;
+ text-decoration: none;
+ outline: none;
+}
+
+a.SRScope {
+ display: block;
+ color: ##58;
+ font-family: Arial, Verdana, sans-serif;
+ text-decoration: none;
+ outline: none;
+}
+
+a.SRSymbol:focus, a.SRSymbol:active,
+a.SRScope:focus, a.SRScope:active {
+ text-decoration: underline;
+}
+
+span.SRScope {
+ padding-left: 4px;
+}
+
+.SRPage .SRStatus {
+ padding: 2px 5px;
+ font-size: 8pt;
+ font-style: italic;
+}
+
+.SRResult {
+ display: none;
+}
+
+DIV.searchresults {
+ margin-left: 10px;
+ margin-right: 10px;
+}
+
+/*---------------- External search page results */
+
+.searchresult {
+ background-color: ##F2;
+}
+
+.pages b {
+ color: white;
+ padding: 5px 5px 3px 5px;
+ background-image: url("../tab_a.png");
+ background-repeat: repeat-x;
+ text-shadow: 0 1px 1px #000000;
+}
+
+.pages {
+ line-height: 17px;
+ margin-left: 4px;
+ text-decoration: none;
+}
+
+.hl {
+ font-weight: bold;
+}
+
+#searchresults {
+ margin-bottom: 20px;
+}
+
+.searchpages {
+ margin-top: 10px;
+}
+