summaryrefslogtreecommitdiff
path: root/plugins/example/plugin.py
diff options
context:
space:
mode:
authorChristian Kolset <christian.kolset@gmail.com>2026-06-03 10:12:34 -0600
committerChristian Kolset <christian.kolset@gmail.com>2026-06-03 10:12:34 -0600
commit3610309b1e5d83049554afe287129c99389d231d (patch)
treedcf2f554aff081381d6ff60074546a1a54732c96 /plugins/example/plugin.py
parent0a8d42501c1bf168bd852537bb3cd18490fac7ee (diff)
Fix settings/plugin window bugs; remove example plugin
- Add missing QGroupBox import to settings_window (caused silent crash on open) - Remove Controls tab and _controls_tab() method from settings - Clamp child window positions to screen bounds so they don't go off-screen on Windows when main window is maximized - Apply same screen-clamp fix to Motion Capture plugin window - Delete example plugin; disable it in enabled.json Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'plugins/example/plugin.py')
-rw-r--r--plugins/example/plugin.py105
1 files changed, 0 insertions, 105 deletions
diff --git a/plugins/example/plugin.py b/plugins/example/plugin.py
deleted file mode 100644
index e5fbb8e..0000000
--- a/plugins/example/plugin.py
+++ /dev/null
@@ -1,105 +0,0 @@
-"""
-plugins/example/plugin.py
-
-Skeleton plugin — shows every integration point.
-Copy this directory, rename it, update manifest.json, and fill in your logic.
-"""
-
-from __future__ import annotations
-from typing import Any, Dict, List, Optional, Type
-
-from PyQt6.QtWidgets import QLabel, QWidget
-
-# LabDAQ imports available at runtime
-from plugins.base_plugin import LabPlugin, PluginAction, PluginContext
-
-
-class ExamplePlugin(LabPlugin):
-
- # ── Metadata ──────────────────────────────────────────────────────────
-
- @property
- def plugin_id(self) -> str:
- return "example"
-
- @property
- def name(self) -> str:
- return "Example Plugin"
-
- @property
- def version(self) -> str:
- return "1.0.0"
-
- @property
- def description(self) -> str:
- return "Skeleton showing all plugin integration points."
-
- @property
- def author(self) -> str:
- return "Your Name"
-
- # ── Lifecycle ─────────────────────────────────────────────────────────
-
- def on_load(self, context: PluginContext) -> None:
- self._ctx = context
- # e.g. start a background thread, open a camera, etc.
-
- def on_unload(self) -> None:
- # Release resources — called when user disables plugin
- pass
-
- # ── Toolbar ───────────────────────────────────────────────────────────
-
- def get_toolbar_actions(self) -> List[PluginAction]:
- return [
- PluginAction(
- label = "Example",
- icon = "🔌",
- tooltip = "Open example plugin window",
- checkable = True,
- callback = self._on_toolbar_click,
- )
- ]
-
- def _on_toolbar_click(self, checked: bool):
- # Open / close your plugin window here
- pass
-
- # ── Devices ───────────────────────────────────────────────────────────
-
- def get_devices(self) -> list:
- # Return BaseDevice instances — they are auto-added to the registry
- # and AcquisitionEngine so their channels appear as normal signals.
- #
- # Example (uncomment and adapt):
- # from devices.analog_input import AnalogInputDevice
- # return [AnalogInputDevice("my_plugin_ai", num_channels=2, simulate=True)]
- return []
-
- # ── Custom filters ────────────────────────────────────────────────────
-
- def get_filter_classes(self) -> Dict[str, Type]:
- # Return {type_name: FilterBase subclass} for custom pipeline filters.
- #
- # Example:
- # from .my_filter import MyFilter
- # return {"my_filter": MyFilter}
- return {}
-
- # ── Settings widget ───────────────────────────────────────────────────
-
- def get_settings_widget(self) -> Optional[QWidget]:
- # Return a QWidget shown in Settings > Plugins when this plugin is enabled.
- lbl = QLabel("No settings for this plugin.")
- lbl.setObjectName("traceSource")
- return lbl
-
- # ── Profile persistence ───────────────────────────────────────────────
-
- def get_save_state(self) -> Dict[str, Any]:
- # Return JSON-serialisable dict saved with .labdaq profiles.
- return {}
-
- def apply_save_state(self, state: Dict[str, Any]) -> None:
- # Restore plugin state when a profile is loaded.
- pass