diff --git a/docs/_static/custom.css b/docs/_static/custom.css new file mode 100644 index 00000000..70a39650 --- /dev/null +++ b/docs/_static/custom.css @@ -0,0 +1,170 @@ +/* Template Inherited from SciPy and modified for PyQtGraph purposes + https://github.com/scipy/scipy/blob/9ae8fd0f4341d7d8785777d460cca4f7b6a93edd/doc/source/_static/scipy.css + SPDX-License-Identifier: BSD-3-Clause */ + +/* Remove parenthesis around module using fictive font and add them back. + This is needed for better wrapping in the sidebar. */ + .bd-sidebar .nav li > a > code { + white-space: nowrap; + } + + .bd-sidebar .nav li > a > code:before { + content:'('; + } + + .bd-sidebar .nav li > a > code:after { + content:')'; + } + + .bd-sidebar .nav li > a { + font-family: "no-parens", sans-serif; + } + + /* Retrieved from https://codepen.io/jonneal/pen/bXLEdB (MIT) + It replaces (, ) with a zero-width font. This version is lighter than + the original font from Adobe. + */ + @font-face { + font-family: no-parens; + src: url("data:application/x-font-woff;base64,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"); + unicode-range: U+0028, U+0029; + } + + /* Colors from: + + Wong, B. Points of view: Color blindness. + Nat Methods 8, 441 (2011). https://doi.org/10.1038/nmeth.1618 + */ + + /* If the active version has the name "dev", style it orange */ + #version_switcher_button[data-active-version-name*="dev"] { + background-color: #E69F00; + border-color: #E69F00; + color: white; + } + + /* green for `stable` */ + #version_switcher_button[data-active-version-name*="stable"] { + background-color: #009E73; + border-color: #009E73; + color: white; + } + + /* red for `old` */ + #version_switcher_button:not([data-active-version-name*="stable"]):not([data-active-version-name*="dev"]):not([data-active-version-name*="pull"]) { + background-color: #980F0F; + border-color: #980F0F; + color: white; + } + + /* Main index page overview cards */ + + .sd-card { + background: #fff; + border-radius: 0; + padding: 30px 10px 20px 10px; + margin: 10px 0px; + } + + .sd-card .sd-card-header { + text-align: center; + } + + .sd-card .sd-card-header .sd-card-text { + margin: 0px; + } + + .sd-card .sd-card-img-top { + height: 52px; + width: 52px; + margin-left: auto; + margin-right: auto; + } + + .sd-card .sd-card-header { + border: none; + background-color:white; + color: #150458 !important; + font-size: var(--pst-font-size-h5); + font-weight: bold; + padding: 2.5rem 0rem 0.5rem 0rem; + border-bottom: none !important; + } + + .sd-card .sd-card-footer { + border: none; + background-color:white; + border-top: none !important; + } + + .sd-card .sd-card-footer .sd-card-text{ + max-width: 220px; + margin-left: auto; + margin-right: auto; + } + + .custom-button { + background-color:#DCDCDC; + border: none; + color: #484848; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 0.9rem; + border-radius: 0.5rem; + max-width: 120px; + padding: 0.5rem 0rem; + } + + .custom-button a { + color: #484848; + } + + .custom-button p { + margin-top: 0; + margin-bottom: 0rem; + color: #484848; + } + + /* Dark theme tweaking + + Matplotlib images are in png and inverted while other output + types are assumed to be normal images. + + */ + html[data-theme=dark] img[src*='.svg']:not(.only-dark):not(.dark-light) { + filter: brightness(0.8) invert(0.82) contrast(1.2); + background: unset + } + + html[data-theme=dark] .MathJax_SVG * { + fill: var(--pst-color-text-base); + } + + /* Main index page overview cards */ + + html[data-theme=dark] .sd-card { + background-color:var(--pst-color-background); + border: none + } + + html[data-theme=dark] .sd-shadow-sm { + box-shadow: 0 .1rem 0.5rem rgba(250, 250, 250, .2) !important + } + + html[data-theme=dark] .sd-card .sd-card-header { + background-color:var(--pst-color-background); + color: #150458 !important; + } + + html[data-theme=dark] .sd-card .sd-card-footer { + background-color:var(--pst-color-background); + } + + /* + Hide TypeAlias Classes + */ + + dt#ColorMapSpecifier { + visibility: hidden; + } \ No newline at end of file diff --git a/docs/developer/reference.md b/docs/api_reference/api_reference.md similarity index 79% rename from docs/developer/reference.md rename to docs/api_reference/api_reference.md index 5302b84e..fc7fd820 100644 --- a/docs/developer/reference.md +++ b/docs/api_reference/api_reference.md @@ -1,4 +1,5 @@ -## API Reference +(api_reference)= +# API Reference ```{eval-rst} .. autosummary:: @@ -7,4 +8,5 @@ :recursive: bec_widgets + ``` \ No newline at end of file diff --git a/docs/assets/apps_48dp.svg b/docs/assets/apps_48dp.svg new file mode 100644 index 00000000..20a8f5da --- /dev/null +++ b/docs/assets/apps_48dp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/assets/display_settings_48dp.svg b/docs/assets/display_settings_48dp.svg new file mode 100644 index 00000000..b976bb5f --- /dev/null +++ b/docs/assets/display_settings_48dp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/assets/index_api.svg b/docs/assets/index_api.svg new file mode 100644 index 00000000..87013d24 --- /dev/null +++ b/docs/assets/index_api.svg @@ -0,0 +1,97 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/docs/assets/index_contribute.svg b/docs/assets/index_contribute.svg new file mode 100644 index 00000000..399f1d76 --- /dev/null +++ b/docs/assets/index_contribute.svg @@ -0,0 +1,76 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/docs/assets/index_getting_started.svg b/docs/assets/index_getting_started.svg new file mode 100644 index 00000000..d1c7b08a --- /dev/null +++ b/docs/assets/index_getting_started.svg @@ -0,0 +1,66 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/docs/assets/index_user_guide.svg b/docs/assets/index_user_guide.svg new file mode 100644 index 00000000..bff24824 --- /dev/null +++ b/docs/assets/index_user_guide.svg @@ -0,0 +1,67 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/docs/assets/rocket_launch_48dp.svg b/docs/assets/rocket_launch_48dp.svg new file mode 100644 index 00000000..1cd031b9 --- /dev/null +++ b/docs/assets/rocket_launch_48dp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/conf.py b/docs/conf.py index 01e02d29..a54b820e 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -64,6 +64,7 @@ add_module_names = False # Remove namespaces from class/method signatures autodoc_inherit_docstrings = True # If no docstring, inherit from base class set_type_checking_flag = True # Enable 'expensive' imports for sphinx_autodoc_typehints autoclass_content = "both" # Include both class docstring and __init__ +autodoc_mock_imports = ["pyqtgraph"] # Add any paths that contain templates here, relative to this directory. templates_path = ["_templates"] @@ -76,6 +77,5 @@ language = "Python" html_theme = "pydata_sphinx_theme" html_static_path = ["_static"] -html_css_files = ["css/custom.css"] -html_logo = "_static/bec.png" -html_theme_options = {"show_nav_level": 1, "navbar_align": "content"} +html_css_files = ["custom.css"] +html_logo = "../bec_widgets/assets/bec_widgets_icon.png" diff --git a/docs/developer/developer.md b/docs/developer/developer.md index 11e28be6..044c6b0e 100644 --- a/docs/developer/developer.md +++ b/docs/developer/developer.md @@ -1,14 +1,6 @@ (developer)= # Development -```{toctree} ---- -maxdepth: 1 -hidden: true ---- -reference/ -``` - To contribute to the development of BEC Widgets, start by setting up the development environment: 1. **Clone the Repository**: diff --git a/docs/index.md b/docs/index.md index d2f2b9fe..e701ba4f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,39 +1,70 @@ # BEC Widgets documentation +A flexible and extensible framework for building graphical user interfaces in Python, optimized for use in the BEC environment. +

-````{grid} 3 +

+ +````{grid} 2 :gutter: 5 -```{grid-item-card} Introduction +```{grid-item-card} :link: introduction :link-type: ref +:img-top: /assets/index_getting_started.svg +:text-align: center -General information. +## Introduction + +General information about BEC Widgets. ``` -```{grid-item-card} User +```{grid-item-card} :link: user :link-type: ref +:img-top: /assets/index_user_guide.svg +:text-align: center -Information for users. +## User guide + +Information for users of BEC Widgets. ``` -```{grid-item-card} Developer +```{grid-item-card} :link: developer :link-type: ref +:img-top: /assets/index_contribute.svg +:text-align: center -Information for developers. +## Developer guide + +Information for developers of BEC Widgets. ``` + +```{grid-item-card} +:link: api_reference +:link-type: ref +:img-top: /assets/index_api.svg +:text-align: center + +## API reference + +Comprehensive reference of all BEC Widget classes, functions, and methods. +``` + ```` ```{toctree} --- numbered: true -maxdepth: 1 +maxdepth: 2 +hidden: true --- introduction/introduction user/user developer/developer +api_reference/api_reference +``` diff --git a/docs/user/api_reference/api_reference.md b/docs/user/api_reference/api_reference.md new file mode 100644 index 00000000..a1fc340d --- /dev/null +++ b/docs/user/api_reference/api_reference.md @@ -0,0 +1,11 @@ +(user.api_reference)= +# User API Reference + +```{eval-rst} +.. autosummary:: + :toctree: _autosummary + :template: custom-module-template.rst + + bec_widgets.cli.client + +``` \ No newline at end of file diff --git a/docs/user/apps.md b/docs/user/applications/applications.md similarity index 85% rename from docs/user/apps.md rename to docs/user/applications/applications.md index b53f8dcd..ab2e214c 100644 --- a/docs/user/apps.md +++ b/docs/user/applications/applications.md @@ -1,4 +1,4 @@ -(user.apps)= +(user.applications)= # Applications **Coming soon** diff --git a/docs/user/getting_started/getting_started.md b/docs/user/getting_started/getting_started.md new file mode 100644 index 00000000..3aa276c6 --- /dev/null +++ b/docs/user/getting_started/getting_started.md @@ -0,0 +1,12 @@ +(user.getting_started)= +# Getting Started +This section provides a comprehensive guide to getting started with BEC Widgets. Whether you are new to BEC Widgets or looking to refresh your knowledge, this guide will help you set up and navigate the framework with ease. + +```{toctree} +--- +maxdepth: 2 +hidden: true +--- + +getting_started/installation +``` \ No newline at end of file diff --git a/docs/user/installation.md b/docs/user/getting_started/installation.md similarity index 97% rename from docs/user/installation.md rename to docs/user/getting_started/installation.md index b4cb4e7d..67d9f1b9 100644 --- a/docs/user/installation.md +++ b/docs/user/getting_started/installation.md @@ -14,7 +14,7 @@ Before installing BEC Widgets, please ensure the following requirements are met: Install BEC Widgets using the pip package manager. Open your terminal and execute: ```bash -pip install bec_widgets +pip install bec_widgets PyQt6 ``` This command installs BEC Widgets along with its dependencies, including the default PyQt6. diff --git a/docs/user/user.md b/docs/user/user.md index 3102f2a5..4b173fed 100644 --- a/docs/user/user.md +++ b/docs/user/user.md @@ -1,38 +1,67 @@ (user)= # User - -**Overview** - Welcome to the User section of the BEC Widgets documentation! BEC Widgets is a versatile GUI framework tailored for beamline scientists, enabling efficient and intuitive interaction with beamline experiments. This section is designed to guide both new and experienced users through the essential aspects of utilizing BEC Widgets. -**Key Topics** - -- [Installing BEC Widgets](#user.installation): Instructions for installing BEC Widgets on your system. - -- [Example Applications](#user.apps): Overview of bespoke applications and demonstrations of BEC Widgets in action, showcasing its use in real-world beamline scenarios. - -- [Widgets Overview](#user.widgets): Detailed information on the variety of widgets available, their functions, and how to use them effectively. - -- [Customization and Configuration](#user.customisation): Tips on customizing and configuring BEC Widgets to suit your specific experimental needs using Qt Designer. - -**Bug Reports and Feature Requests** - -We value your feedback and contributions to improving BEC Widgets. If you encounter any issues or have ideas for new features, we encourage you to report them. - -- **Bug Reports:** If you find a bug or an issue, please report it on our repository's [Issues page](https://gitlab.psi.ch/bec/bec-widgets/-/issues?sort=created_date&state=opened). We have a template for bug reporting to help you provide all necessary information. -- **Feature Requests:** Have an idea for a new feature or an enhancement? Share it with us on the [Issues page](https://gitlab.psi.ch/bec/bec-widgets/-/issues?sort=created_date&state=opened) of our repository. We have a feature request template that you can use to describe your proposal. - -**Development** - -For advanced details about BEC Widgets’ internal architecture, development contributions, or customization techniques, please explore the [Developer](#developer) section. - ```{toctree} --- -maxdepth: 3 +maxdepth: 2 hidden: true --- -installation -apps -widgets -customisation \ No newline at end of file +getting_started/getting_started.md +applications/applications.md +widgets/widgets.md +api_reference/api_reference.md +``` + + +*** + +````{grid} 2 +:gutter: 5 + +```{grid-item-card} +:link: user.getting_started +:link-type: ref +:img-top: /assets/rocket_launch_48dp.svg +:text-align: center + +## Getting Started + +Learn how to install BEC Widgets and get started with the framework. +``` + +```{grid-item-card} +:link: user.applications +:link-type: ref +:img-top: /assets/display_settings_48dp.svg +:text-align: center + +## Applications + +Learn how to use BEC Widgets Applications, to modify and create new applications. + +``` + +```{grid-item-card} +:link: user.widgets +:link-type: ref +:img-top: /assets/apps_48dp.svg +:text-align: center + +## Widgets + +Learn about the building blocks of larger applications: widgets. +``` + +```{grid-item-card} +:link: user.api_reference +:link-type: ref +:img-top: /assets/index_api.svg +:text-align: center + +## API reference + +Comprehensive reference of all user-facing classes, functions, and methods. +``` +```` \ No newline at end of file diff --git a/docs/user/widgets.md b/docs/user/widgets/widgets.md similarity index 94% rename from docs/user/widgets.md rename to docs/user/widgets/widgets.md index 03c7b645..4da5b39b 100644 --- a/docs/user/widgets.md +++ b/docs/user/widgets/widgets.md @@ -15,7 +15,7 @@ BEC Widgets includes a variety of visualization widgets designed to cater to div - Customizable visual elements such as line color and style. **Example of Use:** -![Waveform 1D](./widgets/w1D.gif) +![Waveform 1D](./w1D.gif) ### 2D Scatter Plot **Purpose:** The 2D scatter plot widget is designed for more complex data visualization. It employs a false color map to represent a third dimension (z-axis), making it an ideal tool for visualizing multidimensional data sets. @@ -27,7 +27,7 @@ BEC Widgets includes a variety of visualization widgets designed to cater to div - Tools for selecting and inspecting specific data points. **Example of Use:** -![Waveform 1D](./widgets/scatter_2D.gif) +![Waveform 1D](./scatter_2D.gif) ### Motor Position Map **Purpose:** A specialized component derived from the Motor Alignment Tool. It's focused on tracking and visualizing the position of motors, crucial for precise alignment and movement tracking during scans. @@ -38,4 +38,4 @@ BEC Widgets includes a variety of visualization widgets designed to cater to div - Ability to record and recall specific motor positions for repetitive tasks. **Example of Use:** -![Waveform 1D](./widgets/motor.gif) +![Waveform 1D](./motor.gif)