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 --> - +