feat(capture): Camera Scanning UI for the Fujifilm Bluetooth trigger - #653
Open
rohanpandula wants to merge 2 commits into
Open
feat(capture): Camera Scanning UI for the Fujifilm Bluetooth trigger#653rohanpandula wants to merge 2 commits into
rohanpandula wants to merge 2 commits into
Conversation
…e backend) Thin connector from the standalone fuji-ble-negpy-trigger package into NegPy, mirroring how python-sane and gphoto2 are consumed: an optional dependency, imported lazily, entirely absent by default. NegPy keeps only the glue (capture/fuji_ble.py); all Fuji BLE device code lives in the standalone package (pinned to an immutable commit, like coolscanpy). - fuji_ble.py is the only module importing fujitrigger; accepts/returns plain dicts, translates vendor errors to RuntimeError with __cause__ preserved - Camera protocol gains is_open() so the worker treats every backend uniformly (gphoto2 USB and Bluetooth trigger both report it) — no vendor special-casing - CaptureWorker gains a backend seam (set_camera_backend / detect / pair) that builds the BLE camera through the adapter and gates live-view/settings off via capabilities (the remote carries only the shutter) - build.py bundles fujitrigger+bleak and adds NSBluetoothAlwaysUsageDescription when the fuji-ble group is installed - adapter tests inject a fake fujitrigger module (no hardware), as marcinz606#615 does No sidebar UI here — that lands stacked on top.
Stacked on the fuji-ble connector. Exposes the optional Bluetooth trigger in the Camera Scanning sidebar, treating the pairing as opaque config the worker owns. - Trigger selector (USB gphoto2 / Fujifilm Bluetooth) in the CAMERA section - Pair button + status + WiFi drop-folder picker; discovery/pairing run off the UI thread and report back via controller signals - An already-bonded body is detected on activation and offered for linking - ScanlightSettings persists the backend + opaque fuji config - Capability gating greys live-view/settings/calibration in Bluetooth mode (the remote carries only the shutter); RGB scanning still works via the Scanlight
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #652
This is the sidebar UI for the Fujifilm Bluetooth trigger connector added in #652. The first commit here is #652 — review the UI commit; once #652 merges, this PR's diff shrinks to UI-only.
Summary
Exposes the optional Bluetooth trigger in the Camera Scanning sidebar. The pairing is treated as opaque config the worker owns — the sidebar never touches a
fujitriggertype; it talks only through thefuji_bleadapter and the controller signals, keeping the connector boundary from #652 intact.What it adds
ScanlightSettingspersists the backend choice plus the opaque Fuji config.docs/CAMERA_SCANNING.md).Validation
make lintandmake typepass; full suite 2545 passed.Review note
Kept separate from the connector so #652's boundary can be reviewed on its own, per the glue-first norm from #615.