diff --git a/.github/workflows/ci_documentation.yml b/.github/workflows/ci_documentation.yml
index 75fbe727..6dffe7ac 100644
--- a/.github/workflows/ci_documentation.yml
+++ b/.github/workflows/ci_documentation.yml
@@ -50,7 +50,7 @@ jobs:
- name: Install Doxygen
uses: seqan/actions/setup-doxygen@main
with:
- doxygen: 1.9.6
+ doxygen: 1.10.0
- name: Configure tests
run: |
diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml
index e9a4c607..904ddb5d 100644
--- a/.github/workflows/documentation.yml
+++ b/.github/workflows/documentation.yml
@@ -52,7 +52,7 @@ jobs:
- name: Install Doxygen
uses: seqan/actions/setup-doxygen@main
with:
- doxygen: 1.9.6
+ doxygen: 1.10.0
- name: Load cached documentation
uses: actions/cache@v4
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 785fa5db..3e2e5124 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -31,6 +31,8 @@ If possible, provide tooling that performs the changes, e.g. a shell-script.
#### Dependencies
* TDL is now an optional dependency and can be force deactivated via CMake (`-DSHARG_NO_TDL=ON`)
([#218](https://github.com/seqan/sharg-parser/pull/218)).
+ * We now use Doxygen version 1.10.0 to build our documentation
+ ([\#230](https://github.com/seqan/sharg-parser/pull/230)).
# Release 1.1.1
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 707ec8ec..3c8a8b67 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -9,5 +9,5 @@ SPDX-License-Identifier: CC-BY-4.0
The Sharg-parser adheres to the [Berlin Code of Conduct](https://berlincodeofconduct.org/). As the Sharg-parser was
created and is maintained by the SeqAn team, it is part of the SeqAn project. Therefore, SeqAn's Code of Conduct
applies to the Sharg-parser as well. Please see
-[SeqAn's Code of Conduct](http://docs.seqan.de/seqan/3-master-user/about_code_of_conduct.html) for more
+[SeqAn's Code of Conduct](https://docs.seqan.de/seqan3/main_user/about_code_of_conduct.html) for more
information on our Code of Conduct.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 0174994f..0397685a 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -68,7 +68,7 @@ When you are done with committing changes to your branch and you have tested you
We have continuous integration in place that should inform you of test failures. Please try to resolve any
breakage that your pull request introduces.
-[Here is a guide for setting up unit tests locally.](https://docs.seqan.de/seqan/3-master-user/setup_tests.html)
+[Here is a guide for setting up unit tests locally.](https://docs.seqan.de/seqan3/main_dev/setup_tests.html)
If there are test failures that you don't understand, clearly indicate that you have seen the errors, but cannot resolve
them – then the first reviewer will have a look at them. Otherwise the PR will be treated as still being
diff --git a/doc/about/api/index.md b/doc/about/api/index.md
index 974e1629..68d5115f 100644
--- a/doc/about/api/index.md
+++ b/doc/about/api/index.md
@@ -14,14 +14,14 @@ Sharg adheres to [semantic versioning](https://semver.org) and provides a stable
one major release unless otherwise noted.
For details regarding API stability, please see the
-[SeqAn documentation on API stability](https://docs.seqan.de/seqan/3-master-user/about_api.html#api_stability).
+[SeqAn documentation on API stability](https://docs.seqan.de/seqan3/main_user/about_api.html#api_stability).
# Application Binary Interface (ABI) stability
There is no ABI stability.
For details regarding ABI stability, please see the
-[SeqAn documentation on ABI stability](https://docs.seqan.de/seqan/3-master-user/about_api.html#autotoc_md38).
+[SeqAn documentation on ABI stability](https://docs.seqan.de/seqan3/main_user/about_api.html#autotoc_md47).
# Platform stability {#platform_stability}
diff --git a/doc/about/customisation/index.md b/doc/about/customisation/index.md
index 082511dd..edef7374 100644
--- a/doc/about/customisation/index.md
+++ b/doc/about/customisation/index.md
@@ -6,4 +6,5 @@ SPDX-FileCopyrightText: 2016-2024 Knut Reinert & MPI für molekulare Genetik
SPDX-License-Identifier: CC-BY-4.0
-->
-Please see the SeqAn documentation about [customisation](https://docs.seqan.de/seqan/3-master-user/about_customisation.html).
+Please see the SeqAn documentation about
+[customisation](https://docs.seqan.de/seqan3/main_user/about_customisation.html).
diff --git a/doc/setup/library_tests/index.md b/doc/setup/library_tests/index.md
index 8b150e56..85c37eb4 100644
--- a/doc/setup/library_tests/index.md
+++ b/doc/setup/library_tests/index.md
@@ -6,4 +6,4 @@ SPDX-FileCopyrightText: 2016-2024 Knut Reinert & MPI für molekulare Genetik
SPDX-License-Identifier: CC-BY-4.0
-->
-Please see the SeqAn documentation about [setup tests](https://docs.seqan.de/seqan/3-master-user/setup_tests.html).
+Please see the SeqAn documentation about [setup tests](https://docs.seqan.de/seqan3/main_dev/setup_tests.html).
diff --git a/doc/setup/quickstart_cmake/index.md b/doc/setup/quickstart_cmake/index.md
index bd887a68..08c3ccd9 100644
--- a/doc/setup/quickstart_cmake/index.md
+++ b/doc/setup/quickstart_cmake/index.md
@@ -14,39 +14,29 @@ works.
[TOC]
-
-
# Software
Requirements:
- gcc >= 11 or clang >= 17
- cmake >= 3.16
- git
-## Installing GCC
-
-Sharg requires GCC >= 11 or LLVM/Clang >= 17. Current versions of VisualStudio/MSVC are **not yet supported**.
-We will briefly explain how to install GCC-11 (or the latest GCC if such an option is available) on some popular
-operating systems. We recommend using the latest version of GCC available. For more information, refer to your
-operating system's documentation.
+## Installing a Compiler
-\startcollapsible{Linux-based}
-
-#### Ubuntu >= 22.04
-```bash
-# Installs default compiler version (gcc-11 for Ubuntu 22.04).
-sudo apt install g++
-# To install gcc-12, follow below instructions.
-```
+Sharg requires GCC >= 11 or LLVM/Clang >= 17. Presently, VisualStudio/MSVC is **not supported**.
+We'll offer a brief tutorial on compiler updates through common package managers and suggest some web-based
+alternatives. For further details, consult your OS documentation.
-#### Ubuntu < 22.04
+
+- Ubuntu
```bash
+# Installs gcc-13
sudo add-apt-repository --no-update --yes ppa:ubuntu-toolchain-r/ppa
sudo add-apt-repository --no-update --yes ppa:ubuntu-toolchain-r/test
sudo apt-get update
-sudo apt install g++-11
+sudo apt install g++-13
```
-
-#### Using [conda](https://conda.io)
+See https://apt.llvm.org/ if you prefer to use LLVM's Clang.
+- Conda
To avoid interference with system packages, we recommend creating a new environment when using conda.
```bash
conda create -n conda_gcc_env -c conda-forge gcc_linux-64
@@ -54,53 +44,36 @@ conda activate conda_gcc_env
```
This will put GCC in a separate environment `conda_gcc_env` which can be activated via `conda activate conda_gcc_env`
and deactivated via `conda deactivate`.
-
-\endcollapsible
-
-\startcollapsible{macOS}
-
-#### Using [Homebrew](https://brew.sh/)
+- Homebrew
```bash
-brew install gcc@11
+brew install gcc@13
+brew install llvm@17
```
-
-#### Using [MacPorts](https://www.macports.org/)
+- Macports
```bash
-sudo port install gcc11
+sudo port install gcc13
+sudo port install llvm-17
```
-
-\endcollapsible
-
-\startcollapsible{Windows}
-
-#### Using [WSL](https://docs.microsoft.com/en-us/windows/wsl/about)
+- Windows
The Windows Subsystem for Linux offers an easy way to run a Linux distribution under Windows.
Follow [Microsoft's setup guide](https://docs.microsoft.com/en-us/windows/wsl/about) to install WSL and then follow
the steps listed for Linux-based systems.
-
-\endcollapsible
-
-\startcollapsible{Browser-based}
-
-#### Using [gitpod.io](https://gitpod.io/#https://github.com/seqan/sharg-parser/)
-[gitpod.io](https://gitpod.io) allows you to edit, compile and run code from within your browser. The free version
-includes 50 hours of use per month, which is plenty for our tutorials. A GitHub account is required.
-[Click here](https://gitpod.io/#https://github.com/seqan/sharg-parser/) to open Sharg in gitpod.
-
-
-\endcollapsible
+
-\attention After installing, `g++ --version` should print the desired version.
- If not, you may have to use, for example, `g++-11 --version` or even specify the full path to your compiler.
+
+\note After installing, `g++ --version` should print the desired GCC version.
+ If not, you may have to use, for example, `g++-11 --version` or even specify the full path to your compiler.
-Similarly, you may need to install CMake and git, e.g. `apt install cmake git`.
+Similarly, you may need to install CMake and git, e.g. `sudo apt install cmake git`.
# Directory Structure
In this section we will use the `tree` command to show the directory structure. This program may not be installed
@@ -116,16 +89,13 @@ tutorial
└── source
```
-To set these directories up you can follow this script:
+To set these directories up you can follow this script (note the \--recurse-submodules when cloning Sharg):
```bash
mkdir tutorial
cd tutorial
mkdir build
mkdir source
-git clone https://github.com/seqan/sharg-parser.git
-cd sharg-parser
-git submodule update --init
-cd ..
+git clone --recurse-submodules https://github.com/seqan/sharg-parser.git
```
The output of the command `tree -L 2` should now look like this:
@@ -135,18 +105,9 @@ The output of the command `tree -L 2` should now look like this:
├── sharg-parser
│ ├── CHANGELOG.md
│ ├── CMakeLists.txt
-│ ├── CODE_OF_CONDUCT.md
-│ ├── CONTRIBUTING.md
-│ ├── LICENSE.md
-│ ├── README.md
-│ ├── build_system
-│ ├── doc
-│ ├── include
-│ ├── submodules
+│ ├── ...
│ └── test
└── source
-
-7 directories, 6 files
```
# Compiling and Running
@@ -155,32 +116,16 @@ To test whether everything works, we will now compile and run a small example.
First we create the file `hello_world.cpp` in the `source` directory with the following contents:
-```
-#include
-
-int main()
-{
- sharg::debug_stream << "Hello World!\n";
- return 0;
-}
-```
+\include test/external_project/src/hello_world.cpp
To compile it, we first create a `CMakeLists.txt` file in the `source` directory:
-
-```
-cmake_minimum_required (VERSION 3.16)
-project (sharg_tutorial CXX)
-
-# add sharg to search path
-list (APPEND CMAKE_PREFIX_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../sharg/build_system")
-
-# require sharg with a version >=1.0.0
-find_package (sharg 1.0 REQUIRED)
-
-# build app with sharg
-add_executable (hello_world hello_world.cpp)
-target_link_libraries (hello_world sharg::sharg)
-```
+
+
+\dontinclude test/external_project/sharg_setup_tutorial/CMakeLists.txt
+\until cmake_minimum_required
+\skipline project
+\until target_link_libraries
+
The directories should now look like this:
@@ -188,9 +133,10 @@ The directories should now look like this:
.
├── build
├── sharg-parser
-│ ├── build_system
-│ ├── ...
-│ └── test
+│ ├── CHANGELOG.md
+│ ├── CMakeLists.txt
+│ ├── ...
+│ └── test
└── source
├── CMakeLists.txt
└── hello_world.cpp
@@ -204,16 +150,17 @@ make
./hello_world
```
-The output should be `Hello World!`. Note that the build type is specified with `-DCMAKE_BUILD_TYPE=Release`.
+This should output a basic help page. Note that the build type is specified with `-DCMAKE_BUILD_TYPE=Release`.
Specifying `Release` enables an optimized build where no debug information is available. Release mode is therefore
suitable for the end user. Programs built using `-DCMAKE_BUILD_TYPE=Debug` will run slower, but also make the detection
of errors easier. `Debug` is suitable for contributors, and we recommend using it while working with our
[Tutorials](usergroup1.html).
+\anchor remark_cmake_cxx_compiler
\remark Depending on the standard C++ compiler on your system, you may need to specify the compiler via
`-DCMAKE_CXX_COMPILER=`, for example:
```bash
-cmake -DCMAKE_CXX_COMPILER=/path/to/executable/g++-11 ../source
+cmake -DCMAKE_CXX_COMPILER=/path/to/executable/g++-13 ../source
```
# Adding a new source file to your project
@@ -221,13 +168,7 @@ cmake -DCMAKE_CXX_COMPILER=/path/to/executable/g++-11 ../source
If you create a new `cpp` file and want to compile it, you need to add another `add_executable` and
`target_link_libraries` directive to you `CMakeLists.txt`.
For example, after adding `another_program.cpp` your `CMakeLists.txt` may look like this:
-
-```
-# ... former cmake code from above
-
-add_executable (another_program another_program.cpp)
-target_link_libraries (another_program sharg::sharg)
-```
+\snippet test/external_project/sharg_setup_tutorial/CMakeLists.txt adding_files
# Encountered issues
diff --git a/include/sharg/enumeration_names.hpp b/include/sharg/enumeration_names.hpp
index 034ecd66..0c5baac3 100644
--- a/include/sharg/enumeration_names.hpp
+++ b/include/sharg/enumeration_names.hpp
@@ -209,11 +209,9 @@ namespace sharg
* \experimentalapi{Experimental since version 1.0.}
*/
// clang-format off
-// `SHARG_DOXYGEN_ONLY((size_t value))` is needed for Doxygen 1.9.5
-// Doxygen 1.9.5 bug: https://github.com/doxygen/doxygen/issues/9552
template
requires requires { { detail::adl_only::enumeration_names_cpo{}() }; }
-inline auto const enumeration_names SHARG_DOXYGEN_ONLY((size_t value)) = detail::adl_only::enumeration_names_cpo{}();
+inline auto const enumeration_names = detail::adl_only::enumeration_names_cpo{}();
// clang-format on
//!\}
diff --git a/test/documentation/.vercel/install.sh b/test/documentation/.vercel/install.sh
index 01b5fe07..6b2109b7 100755
--- a/test/documentation/.vercel/install.sh
+++ b/test/documentation/.vercel/install.sh
@@ -6,7 +6,7 @@
set -exo pipefail
-DOXYGEN_VERSION=1.9.6
+DOXYGEN_VERSION=1.10.0
SOURCE_DIR=`pwd`
CACHE_DIR="${SOURCE_DIR}/node_modules"
diff --git a/test/documentation/DoxygenLayout.xml.in b/test/documentation/DoxygenLayout.xml.in
index 56040b04..9fddcb1f 100644
--- a/test/documentation/DoxygenLayout.xml.in
+++ b/test/documentation/DoxygenLayout.xml.in
@@ -4,7 +4,7 @@
-->
-
+
@@ -12,7 +12,7 @@
-
+
@@ -33,11 +33,13 @@
-
-
+
+
-
+
+
+
@@ -50,8 +52,6 @@
-
-
@@ -145,6 +145,7 @@
+
@@ -156,6 +157,7 @@
+
@@ -191,6 +193,7 @@
+
@@ -203,6 +206,7 @@
+
@@ -213,6 +217,7 @@
+
@@ -258,6 +263,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/documentation/doxygen-awesome/doxygen-awesome-tabs.js b/test/documentation/doxygen-awesome/doxygen-awesome-tabs.js
index 199f943d..d8726ebb 100644
--- a/test/documentation/doxygen-awesome/doxygen-awesome-tabs.js
+++ b/test/documentation/doxygen-awesome/doxygen-awesome-tabs.js
@@ -42,6 +42,7 @@ class DoxygenAwesomeTabs {
let tabLink = document.createElement("button")
tabLink.classList.add("tab-button")
tabLink.appendChild(header)
+ header.title = header.textContent
tabLink.addEventListener("click", () => {
tabbed.querySelectorAll("li").forEach((tab) => {
tab.classList.remove("selected")
@@ -67,7 +68,26 @@ class DoxygenAwesomeTabs {
})
tabsOverviewContainer.appendChild(tabsOverview)
tabbed.before(tabsOverviewContainer)
+
+ function resize() {
+ let maxTabHeight = 0
+ tabbed.querySelectorAll("li").forEach((tab, tabIndex) => {
+ let visibility = tab.style.display
+ tab.style.display = "block"
+ maxTabHeight = Math.max(tab.offsetHeight, maxTabHeight)
+ tab.style.display = visibility
+ })
+ tabbed.style.height = `${maxTabHeight + 10}px`
+ }
+
+ resize()
+ new ResizeObserver(resize).observe(tabbed)
})
})
+
+ }
+
+ static resize(tabbed) {
+
}
}
diff --git a/test/documentation/doxygen-awesome/doxygen-awesome.css b/test/documentation/doxygen-awesome/doxygen-awesome.css
index 4729f985..675df996 100644
--- a/test/documentation/doxygen-awesome/doxygen-awesome.css
+++ b/test/documentation/doxygen-awesome/doxygen-awesome.css
@@ -83,21 +83,21 @@ html {
--toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 85px);
/* colors for various content boxes: @warning, @note, @deprecated @bug */
- --warning-color: #f8d1cc;
- --warning-color-dark: #b61825;
- --warning-color-darker: #75070f;
- --note-color: #faf3d8;
- --note-color-dark: #f3a600;
- --note-color-darker: #5f4204;
- --todo-color: #e4f3ff;
- --todo-color-dark: #1879C4;
- --todo-color-darker: #274a5c;
+ --warning-color: #faf3d8;
+ --warning-color-dark: #f3a600;
+ --warning-color-darker: #5f4204;
+ --note-color: #e4f3ff;
+ --note-color-dark: #1879C4;
+ --note-color-darker: #274a5c;
+ --todo-color: #e4dafd;
+ --todo-color-dark: #5b2bdd;
+ --todo-color-darker: #2a0d72;
--deprecated-color: #ecf0f3;
--deprecated-color-dark: #5b6269;
--deprecated-color-darker: #43454a;
- --bug-color: #e4dafd;
- --bug-color-dark: #5b2bdd;
- --bug-color-darker: #2a0d72;
+ --bug-color: #f8d1cc;
+ --bug-color-dark: #b61825;
+ --bug-color-darker: #75070f;
--invariant-color: #d8f1e3;
--invariant-color-dark: #44b86f;
--invariant-color-darker: #265532;
@@ -172,6 +172,8 @@ html {
--webkit-scrollbar-size: 7px;
--webkit-scrollbar-padding: 4px;
--webkit-scrollbar-color: var(--separator-color);
+
+ --animation-duration: .12s
}
@media screen and (max-width: 767px) {
@@ -211,21 +213,21 @@ html {
--blockquote-background: #222325;
--blockquote-foreground: #7e8c92;
- --warning-color: #2e1917;
- --warning-color-dark: #ad2617;
- --warning-color-darker: #f5b1aa;
- --note-color: #3b2e04;
- --note-color-dark: #f1b602;
- --note-color-darker: #ceb670;
- --todo-color: #163750;
- --todo-color-dark: #1982D2;
- --todo-color-darker: #dcf0fa;
+ --warning-color: #3b2e04;
+ --warning-color-dark: #f1b602;
+ --warning-color-darker: #ceb670;
+ --note-color: #163750;
+ --note-color-dark: #1982D2;
+ --note-color-darker: #dcf0fa;
+ --todo-color: #2a2536;
+ --todo-color-dark: #7661b3;
+ --todo-color-darker: #ae9ed6;
--deprecated-color: #2e323b;
--deprecated-color-dark: #738396;
--deprecated-color-darker: #abb0bd;
- --bug-color: #2a2536;
- --bug-color-dark: #7661b3;
- --bug-color-darker: #ae9ed6;
+ --bug-color: #2e1917;
+ --bug-color-dark: #ad2617;
+ --bug-color-darker: #f5b1aa;
--invariant-color: #303a35;
--invariant-color-dark: #76ce96;
--invariant-color-darker: #cceed5;
@@ -272,21 +274,21 @@ html.dark-mode {
--blockquote-background: #222325;
--blockquote-foreground: #7e8c92;
- --warning-color: #2e1917;
- --warning-color-dark: #ad2617;
- --warning-color-darker: #f5b1aa;
- --note-color: #3b2e04;
- --note-color-dark: #f1b602;
- --note-color-darker: #ceb670;
- --todo-color: #163750;
- --todo-color-dark: #1982D2;
- --todo-color-darker: #dcf0fa;
+ --warning-color: #3b2e04;
+ --warning-color-dark: #f1b602;
+ --warning-color-darker: #ceb670;
+ --note-color: #163750;
+ --note-color-dark: #1982D2;
+ --note-color-darker: #dcf0fa;
+ --todo-color: #2a2536;
+ --todo-color-dark: #7661b3;
+ --todo-color-darker: #ae9ed6;
--deprecated-color: #2e323b;
--deprecated-color-dark: #738396;
--deprecated-color-darker: #abb0bd;
- --bug-color: #2a2536;
- --bug-color-dark: #7661b3;
- --bug-color-darker: #ae9ed6;
+ --bug-color: #2e1917;
+ --bug-color-dark: #ad2617;
+ --bug-color-darker: #f5b1aa;
--invariant-color: #303a35;
--invariant-color-dark: #76ce96;
--invariant-color-darker: #cceed5;
@@ -319,7 +321,7 @@ body, table, div, p, dl, #nav-tree .label, .title,
}
h1, h2, h3, h4, h5 {
- margin-top: .9em;
+ margin-top: 1em;
font-weight: 600;
line-height: initial;
}
@@ -779,6 +781,8 @@ html.dark-mode iframe#MSearchResults {
#side-nav {
padding: 0 !important;
background: var(--side-nav-background);
+ min-width: 8px;
+ max-width: 50vw;
}
@media screen and (max-width: 767px) {
@@ -866,8 +870,9 @@ html.dark-mode iframe#MSearchResults {
}
.ui-resizable-e {
- background: var(--separator-color);
- width: 1px;
+ width: 4px;
+ background: transparent;
+ box-shadow: inset -1px 0 0 0 var(--separator-color);
}
/*
@@ -1174,7 +1179,7 @@ div.toc li a.aboveActive {
margin-right: var(--spacing-small);
margin-bottom: calc(var(--navigation-font-size) / 4);
transform: rotate(-90deg);
- transition: transform 0.25s ease-out;
+ transition: transform var(--animation-duration) ease-out;
}
div.contents .toc.interactive.open > h3::before {
@@ -1231,9 +1236,13 @@ div.fragment, pre.fragment {
.contents > div.fragment,
.textblock > div.fragment,
.textblock > pre.fragment,
+ .textblock > .tabbed > ul > li > div.fragment,
+ .textblock > .tabbed > ul > li > pre.fragment,
.contents > .doxygen-awesome-fragment-wrapper > div.fragment,
.textblock > .doxygen-awesome-fragment-wrapper > div.fragment,
- .textblock > .doxygen-awesome-fragment-wrapper > pre.fragment {
+ .textblock > .doxygen-awesome-fragment-wrapper > pre.fragment,
+ .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > div.fragment,
+ .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > pre.fragment {
margin: var(--spacing-medium) calc(0px - var(--spacing-large));
border-radius: 0;
border-left: 0;
@@ -1323,8 +1332,9 @@ div.fragment span.lineno a {
color: var(--fragment-link) !important;
}
-div.fragment .line:first-child .lineno {
+div.fragment > .line:first-child .lineno {
box-shadow: -999999px 0px 0 999999px var(--fragment-linenumber-background), -999998px 0px 0 999999px var(--fragment-linenumber-border);
+ background-color: var(--fragment-linenumber-background) !important;
}
div.line {
@@ -1383,8 +1393,8 @@ dl.todo {
color: var(--todo-color-darker);
}
-dl.todo dt {
- color: var(--todo-color-dark);
+dl.todo dt a {
+ color: var(--todo-color-dark) !important;
}
dl.bug dt a {
@@ -1866,7 +1876,7 @@ div.dynheader img[src="closed.png"] {
display: block;
float: left;
margin-left: -10px;
- transition: transform 0.25s ease-out;
+ transition: transform var(--animation-duration) ease-out;
}
table.memberdecls img {
@@ -2344,7 +2354,7 @@ doxygen-awesome-dark-mode-toggle {
}
doxygen-awesome-dark-mode-toggle > svg {
- transition: transform .1s ease-in-out;
+ transition: transform var(--animation-duration) ease-in-out;
}
doxygen-awesome-dark-mode-toggle:active > svg {
@@ -2429,7 +2439,7 @@ a.anchorlink {
text-decoration: none;
opacity: .15;
display: none;
- transition: opacity .1s ease-in-out, color .1s ease-in-out;
+ transition: opacity var(--animation-duration) ease-in-out, color var(--animation-duration) ease-in-out;
}
a.anchorlink svg {
@@ -2457,7 +2467,6 @@ h2:hover a.anchorlink, h1:hover a.anchorlink, h3:hover a.anchorlink, h4:hover a.
padding-inline-start: 0px;
margin: 0;
padding: var(--spacing-small) 0;
- border-bottom: 1px solid var(--separator-color);
}
.tabbed li {
@@ -2480,23 +2489,46 @@ h2:hover a.anchorlink, h1:hover a.anchorlink, h3:hover a.anchorlink, h4:hover a.
flex-direction: row;
}
+@media screen and (max-width: 767px) {
+ .tabs-overview-container {
+ margin: 0 calc(0px - var(--spacing-large));
+ }
+ .tabs-overview {
+ padding: 0 var(--spacing-large)
+ }
+}
+
.tabs-overview button.tab-button {
color: var(--page-foreground-color);
margin: 0;
border: none;
background: transparent;
- padding: var(--spacing-small) 0;
+ padding: calc(var(--spacing-large) / 2) 0;
display: inline-block;
font-size: var(--page-font-size);
cursor: pointer;
box-shadow: 0 1px 0 0 var(--separator-color);
+ position: relative;
+
+ -webkit-tap-highlight-color: transparent;
+}
+
+.tabs-overview button.tab-button .tab-title::before {
+ display: block;
+ content: attr(title);
+ font-weight: 600;
+ height: 0;
+ overflow: hidden;
+ visibility: hidden;
}
.tabs-overview button.tab-button .tab-title {
float: left;
white-space: nowrap;
- padding: var(--spacing-small) var(--spacing-large);
+ font-weight: normal;
+ padding: calc(var(--spacing-large) / 2) var(--spacing-large);
border-radius: var(--border-radius-medium);
+ transition: background-color var(--animation-duration) ease-in-out, font-weight var(--animation-duration) ease-in-out;
}
.tabs-overview button.tab-button:not(:last-child) .tab-title {
@@ -2504,22 +2536,137 @@ h2:hover a.anchorlink, h1:hover a.anchorlink, h3:hover a.anchorlink, h4:hover a.
}
.tabs-overview button.tab-button:hover .tab-title {
- background: var(--primary-color);
- color: var(--page-background-color);
+ background: var(--separator-color);
box-shadow: none;
}
-.tabs-overview button.tab-button.active {
- color: var(--primary-color);
- box-shadow: 0 1px 0 0 var(--primary-color), inset 0 -1px 0 0 var(--primary-color);
+.tabs-overview button.tab-button.active .tab-title {
+ font-weight: 600;
}
-@media (prefers-color-scheme: dark) {
- html:not(.light-mode) .tabs-overview button.tab-button:hover .tab-title {
- color: var(--page-foreground-color);
- }
+.tabs-overview button.tab-button::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ height: 0;
+ width: 0%;
+ margin: 0 auto;
+ border-radius: var(--border-radius-small) var(--border-radius-small) 0 0;
+ background-color: var(--primary-color);
+ transition: width var(--animation-duration) ease-in-out, height var(--animation-duration) ease-in-out;
}
-html.dark-mode .tabs-overview button.tab-button:hover .tab-title {
- color: var(--page-foreground-color);
+.tabs-overview button.tab-button.active::after {
+ width: 100%;
+ box-sizing: border-box;
+ height: 3px;
+}
+
+
+/*
+ Navigation Buttons
+*/
+
+.section_buttons:not(:empty) {
+ margin-top: calc(var(--spacing-large) * 3);
+}
+
+.section_buttons table.markdownTable {
+ display: block;
+ width: 100%;
+}
+
+.section_buttons table.markdownTable tbody {
+ display: table !important;
+ width: 100%;
+ box-shadow: none;
+ border-spacing: 10px;
+}
+
+.section_buttons table.markdownTable td {
+ padding: 0;
+}
+
+.section_buttons table.markdownTable th {
+ display: none;
+}
+
+.section_buttons table.markdownTable tr.markdownTableHead {
+ border: none;
+}
+
+.section_buttons tr th, .section_buttons tr td {
+ background: none;
+ border: none;
+ padding: var(--spacing-large) 0 var(--spacing-small);
+}
+
+.section_buttons a {
+ display: inline-block;
+ border: 1px solid var(--separator-color);
+ border-radius: var(--border-radius-medium);
+ color: var(--page-secondary-foreground-color) !important;
+ text-decoration: none;
+ transition: color var(--animation-duration) ease-in-out, background-color var(--animation-duration) ease-in-out;
+}
+
+.section_buttons a:hover {
+ color: var(--page-foreground-color) !important;
+ background-color: var(--odd-color);
+}
+
+.section_buttons tr td.markdownTableBodyLeft a {
+ padding: var(--spacing-medium) var(--spacing-large) var(--spacing-medium) calc(var(--spacing-large) / 2);
+}
+
+.section_buttons tr td.markdownTableBodyRight a {
+ padding: var(--spacing-medium) calc(var(--spacing-large) / 2) var(--spacing-medium) var(--spacing-large);
+}
+
+.section_buttons tr td.markdownTableBodyLeft a::before,
+.section_buttons tr td.markdownTableBodyRight a::after {
+ color: var(--page-secondary-foreground-color) !important;
+ display: inline-block;
+ transition: color .08s ease-in-out, transform .09s ease-in-out;
+}
+
+.section_buttons tr td.markdownTableBodyLeft a::before {
+ content: '〈';
+ padding-right: var(--spacing-large);
+}
+
+
+.section_buttons tr td.markdownTableBodyRight a::after {
+ content: '〉';
+ padding-left: var(--spacing-large);
+}
+
+
+.section_buttons tr td.markdownTableBodyLeft a:hover::before {
+ color: var(--page-foreground-color) !important;
+ transform: translateX(-3px);
+}
+
+.section_buttons tr td.markdownTableBodyRight a:hover::after {
+ color: var(--page-foreground-color) !important;
+ transform: translateX(3px);
+}
+
+@media screen and (max-width: 450px) {
+ .section_buttons a {
+ width: 100%;
+ box-sizing: border-box;
+ }
+
+ .section_buttons tr td:nth-of-type(1).markdownTableBodyLeft a {
+ border-radius: var(--border-radius-medium) 0 0 var(--border-radius-medium);
+ border-right: none;
+ }
+
+ .section_buttons tr td:nth-of-type(2).markdownTableBodyRight a {
+ border-radius: 0 var(--border-radius-medium) var(--border-radius-medium) 0;
+ }
}
diff --git a/test/documentation/sharg.css b/test/documentation/sharg.css
index 9ce54cba..da5433be 100644
--- a/test/documentation/sharg.css
+++ b/test/documentation/sharg.css
@@ -191,3 +191,17 @@ dl.no-api {
background-color: var(--seqan-no-api-box-color);
color: #2f4153;
}
+
+/* Doxygen 1.10.0 changed the style of the navigation bar.
+ doxygen-awesome-css does not yet support these changes,
+ so we need to revert Doxygen's changes. */
+
+a:hover {
+ text-decoration: underline;
+ background: none;
+}
+
+a:hover > span.arrow {
+ text-decoration: none;
+ background: none;
+}
diff --git a/test/documentation/sharg_doxygen_cfg.in b/test/documentation/sharg_doxygen_cfg.in
index 732df2ae..d6155111 100644
--- a/test/documentation/sharg_doxygen_cfg.in
+++ b/test/documentation/sharg_doxygen_cfg.in
@@ -2,7 +2,7 @@
# SPDX-FileCopyrightText: 2016-2024 Knut Reinert & MPI für molekulare Genetik
# SPDX-License-Identifier: BSD-3-Clause
-# Doxyfile 1.9.6
+# Doxyfile 1.10.0
#---------------------------------------------------------------------------
# Project related configuration options
@@ -12,6 +12,7 @@ PROJECT_NAME = Sharg
PROJECT_NUMBER = ${SHARG_VERSION}
PROJECT_BRIEF = "The argument parser for bio-c++ tools."
PROJECT_LOGO = ${SHARG_DOXYGEN_SOURCE_DIR}/test/documentation/sharg_logo.svg
+PROJECT_ICON = ${SHARG_DOXYGEN_SOURCE_DIR}/test/documentation/sharg_logo.svg
## PATHS
OUTPUT_DIRECTORY = ${SHARG_DOXYGEN_OUTPUT_DIR}
CREATE_SUBDIRS = NO
@@ -72,6 +73,7 @@ OPTIMIZE_OUTPUT_SLICE = NO
EXTENSION_MAPPING = .no_extension=C++
MARKDOWN_SUPPORT = YES
TOC_INCLUDE_HEADINGS = 2
+MARKDOWN_ID_STYLE = DOXYGEN
AUTOLINK_SUPPORT = YES
BUILTIN_STL_SUPPORT = NO
CPP_CLI_SUPPORT = NO
@@ -85,6 +87,7 @@ INLINE_SIMPLE_STRUCTS = NO
TYPEDEF_HIDES_STRUCT = NO
LOOKUP_CACHE_SIZE = 0
NUM_PROC_THREADS = 1
+TIMESTAMP = YES
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
@@ -212,9 +215,11 @@ HTML_COLORSTYLE = LIGHT
HTML_COLORSTYLE_HUE = 220
HTML_COLORSTYLE_SAT = 100
HTML_COLORSTYLE_GAMMA = 80
-HTML_TIMESTAMP = YES
HTML_DYNAMIC_MENUS = YES
HTML_DYNAMIC_SECTIONS = YES
+HTML_CODE_FOLDING = YES
+HTML_COPY_CLIPBOARD = YES # Disabled in sharg_header.html
+HTML_PROJECT_COOKIE =
HTML_INDEX_NUM_ENTRIES = 100
GENERATE_DOCSET = NO
DOCSET_FEEDNAME = "Doxygen generated docs"
@@ -229,6 +234,7 @@ GENERATE_CHI = NO
CHM_INDEX_ENCODING =
BINARY_TOC = NO
TOC_EXPAND = NO
+SITEMAP_URL =
GENERATE_QHP = NO
QCH_FILE =
QHP_NAMESPACE = org.doxygen.Project
@@ -283,7 +289,6 @@ USE_PDFLATEX = YES
LATEX_BATCHMODE = NO
LATEX_HIDE_INDICES = NO
LATEX_BIB_STYLE = plain
-LATEX_TIMESTAMP = NO
LATEX_EMOJI_DIRECTORY =
#---------------------------------------------------------------------------
# Configuration options related to the RTF output
@@ -319,6 +324,12 @@ DOCBOOK_OUTPUT = docbook
#---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
+# Configuration options related to Sqlite3 output
+#---------------------------------------------------------------------------
+GENERATE_SQLITE3 = NO
+SQLITE3_OUTPUT = sqlite3
+SQLITE3_RECREATE_DB = YES
+#---------------------------------------------------------------------------
# Configuration options related to the Perl module output
#---------------------------------------------------------------------------
GENERATE_PERLMOD = NO
@@ -353,9 +364,8 @@ ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
EXTERNAL_PAGES = YES
#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
+# Configuration options related to diagram generator tools
#---------------------------------------------------------------------------
-DIA_PATH =
HIDE_UNDOC_RELATIONS = YES
## DOT SUPPORT
HAVE_DOT = ${SHARG_DOXYGEN_HAVE_DOT}
@@ -383,7 +393,7 @@ DOT_IMAGE_FORMAT = svg
INTERACTIVE_SVG = ${SHARG_DOXYGEN_HAVE_DOT}
DOT_PATH =
DOTFILE_DIRS =
-MSCFILE_DIRS =
+DIA_PATH =
DIAFILE_DIRS =
PLANTUML_JAR_PATH =
PLANTUML_CFG_FILE =
@@ -393,6 +403,8 @@ MAX_DOT_GRAPH_DEPTH = 0
DOT_MULTI_TARGETS = NO
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
+MSCGEN_TOOL =
+MSCFILE_DIRS =
#---------------------------------------------------------------------------
# Configuration options related to the deployment by Vercel
#---------------------------------------------------------------------------
diff --git a/test/documentation/sharg_footer.html.in b/test/documentation/sharg_footer.html.in
index a9e19877..d72cbbca 100644
--- a/test/documentation/sharg_footer.html.in
+++ b/test/documentation/sharg_footer.html.in
@@ -3,14 +3,14 @@
SPDX-License-Identifier: BSD-3-Clause
-->
-
+