From 0f3cebc2bcefb998f6069a545c9440384bad464f Mon Sep 17 00:00:00 2001 From: Talley Lambert Date: Tue, 4 Oct 2022 08:35:04 -0400 Subject: [PATCH] wip --- docs/_macros.py | 36 +++++++++++++++++ docs/images/qcollapsible.py.png | Bin 0 -> 59815 bytes docs/index.md | 2 + docs/{ => tmp}/combobox.md | 0 docs/{ => tmp}/decorators.md | 0 docs/{ => tmp}/fonticon.md | 0 docs/{ => tmp}/listwidgets.md | 0 docs/{ => tmp}/sliders.md | 0 docs/{ => tmp}/utils.md | 0 docs/utilities/index.md | 7 ++++ docs/widgets/index.md | 31 ++++++++++++++ docs/widgets/qcollapsible.md | 3 ++ examples/{collapsible.py => qcollapsible.py} | 0 mkdocs.yml | 40 +++++++++++++++++++ 14 files changed, 119 insertions(+) create mode 100644 docs/_macros.py create mode 100644 docs/images/qcollapsible.py.png create mode 100644 docs/index.md rename docs/{ => tmp}/combobox.md (100%) rename docs/{ => tmp}/decorators.md (100%) rename docs/{ => tmp}/fonticon.md (100%) rename docs/{ => tmp}/listwidgets.md (100%) rename docs/{ => tmp}/sliders.md (100%) rename docs/{ => tmp}/utils.md (100%) create mode 100644 docs/utilities/index.md create mode 100644 docs/widgets/index.md create mode 100644 docs/widgets/qcollapsible.md rename examples/{collapsible.py => qcollapsible.py} (100%) create mode 100644 mkdocs.yml diff --git a/docs/_macros.py b/docs/_macros.py new file mode 100644 index 0000000..8005e96 --- /dev/null +++ b/docs/_macros.py @@ -0,0 +1,36 @@ +from pathlib import Path +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from mkdocs_macros.plugin import MacrosPlugin + +EXAMPLES = Path(__file__).parent.parent / "examples" +IMAGES = Path(__file__).parent / "images" + + +def define_env(env: "MacrosPlugin"): + @env.macro + def insert_example(example: str, width: int = 300) -> list[Path]: + """Grab the top widgets of the application.""" + if not example.endswith(".py"): + example += ".py" + + src = (EXAMPLES / example).read_text() + output = f"```python\n{src}\n```\n\n" + + dest = IMAGES / f"{example}.png" + if not (dest).exists(): + src = src.replace("app.exec_()", "") + exec(src) + _grab(dest) + + output += f"![Image title](../images/{dest.name}){{ loading=lazy; width={width} }}\n\n" + return output + + +def _grab(dest: str | Path) -> list[Path]: + """Grab the top widgets of the application.""" + from qtpy.QtWidgets import QApplication + + w = next(iter(QApplication.topLevelWidgets())) + w.grab().save(str(dest)) diff --git a/docs/images/qcollapsible.py.png b/docs/images/qcollapsible.py.png new file mode 100644 index 0000000000000000000000000000000000000000..362e50b533bdfc31d08a23362cad00c620ac9a46 GIT binary patch literal 59815 zcmeFZc{J7i`!22lJBn?Hl9@uLl4O>hsX~R!Qc_eDGF65$WXc>WQ^=f|WQc@B5y_At zb0LMukm+2z&-$)&e(U#L>-=?oYn`=zd#z_Z&$I2}{eHdf*L`32bzS!kIIXR|gNBWU zf`VelaSat63X08!6ck%537hfE==<6U{A-(?hS5z53R))eKbt6?#O

;HEgPqO9i{ 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 Ci{KXk literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..98d0d35 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,2 @@ +# superqt documentation + diff --git a/docs/combobox.md b/docs/tmp/combobox.md similarity index 100% rename from docs/combobox.md rename to docs/tmp/combobox.md diff --git a/docs/decorators.md b/docs/tmp/decorators.md similarity index 100% rename from docs/decorators.md rename to docs/tmp/decorators.md diff --git a/docs/fonticon.md b/docs/tmp/fonticon.md similarity index 100% rename from docs/fonticon.md rename to docs/tmp/fonticon.md diff --git a/docs/listwidgets.md b/docs/tmp/listwidgets.md similarity index 100% rename from docs/listwidgets.md rename to docs/tmp/listwidgets.md diff --git a/docs/sliders.md b/docs/tmp/sliders.md similarity index 100% rename from docs/sliders.md rename to docs/tmp/sliders.md diff --git a/docs/utils.md b/docs/tmp/utils.md similarity index 100% rename from docs/utils.md rename to docs/tmp/utils.md diff --git a/docs/utilities/index.md b/docs/utilities/index.md new file mode 100644 index 0000000..880d3c8 --- /dev/null +++ b/docs/utilities/index.md @@ -0,0 +1,7 @@ +# Utilities + +| Object | Description | +| ----------- | --------------------- | +| [`QMessageHandler`]() | A context manager to intercept messages from Qt. | +| [`@ensure_main_thread`]() | Decorator that ensures a function is called in the main `QApplication` thread. | +| [`@ensure_object_thread`]() | Decorator that ensures a `QObject` method is called in the object's thread. | diff --git a/docs/widgets/index.md b/docs/widgets/index.md new file mode 100644 index 0000000..cdc2988 --- /dev/null +++ b/docs/widgets/index.md @@ -0,0 +1,31 @@ +# Widgets + +The following are QWidget subclasses: + +## Sliders and Numerical Inputs + +| Widget | Description | +| ----------- | --------------------- | +| [`QDoubleSlider`]() | Slider for float values | +| [`QLabeledSlider`]() | `QSlider` with editable `QSpinBox` that shows the current value | +| [`QLabeledDoubleSlider`]() | `QSlider` for float values with editable `QSpinBox` with the current value | +| [`QRangeSlider`]() | Multi-handle slider | +| [`QDoubleRangeSlider`]() | Multi-handle slider for float values | +| [`QLabeledRangeSlider`]() | `QRangeSlider` variant, with editable labels for each handle | +| [`QLabeledDoubleRangeSlider`]() | `QDoubleRangeSlider` variant with editable labels for each handle | +| [`QLargeIntSpinBox`]() | `QSpinbox` that accepts arbitrarily large integers | + +## Labels and categorical inputs + +| Widget | Description | +| ----------- | --------------------- | +| [`QSearchableListWidget`]() | `QListWidget` variant with search field that filters available options | +| [`QEnumComboBox`]() | `QComboBox` that populates the combobox from a python `Enum` | +| [`QSearchableComboBox`]() | `QComboBox` variant that filters available options based on text input | +| [`QElidingLabel`]() | A `QLabel` variant that will elide text (add `…`) to fit width. | + +## Frames and containers + +| Widget | Description | +| ----------- | --------------------- | +| [`QCollapsible`](./qcollapsible.md) | A collapsible widget to hide and unhide child widgets. | diff --git a/docs/widgets/qcollapsible.md b/docs/widgets/qcollapsible.md new file mode 100644 index 0000000..ab0f676 --- /dev/null +++ b/docs/widgets/qcollapsible.md @@ -0,0 +1,3 @@ +# QCollapsible + +{{ insert_example('qcollapsible') }} diff --git a/examples/collapsible.py b/examples/qcollapsible.py similarity index 100% rename from examples/collapsible.py rename to examples/qcollapsible.py diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..9478697 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,40 @@ +site_name: superqt +site_url: https://github.com/napari/superqt +site_description: >- + missing widgets and components for PyQt/PySide +# Repository +repo_name: napari/superqt +repo_url: https://github.com/napari/superqt + +# Copyright +copyright: Copyright © 2021 - 2022 Talley Lambert + +extra_css: + - stylesheets/extra.css + +watch: + - src + +theme: + name: material + features: + - navigation.instant + - search.highlight + - search.suggest + +markdown_extensions: + - admonition + - pymdownx.details + - pymdownx.superfences + - tables + - attr_list + - md_in_html + - pymdownx.emoji: + emoji_index: !!python/name:materialx.emoji.twemoji + emoji_generator: !!python/name:materialx.emoji.to_svg + +plugins: + - search + # - autorefs + - macros: + module_name: docs/_macros