Skip to content

Qt6 port + reproducible Windows build/installer + config & UX enhancements#80

Closed
fnsangiul wants to merge 1 commit into
Aharoni-Lab:qt6-portfrom
fnsangiul:reapply-pr78
Closed

Qt6 port + reproducible Windows build/installer + config & UX enhancements#80
fnsangiul wants to merge 1 commit into
Aharoni-Lab:qt6-portfrom
fnsangiul:reapply-pr78

Conversation

@fnsangiul

Copy link
Copy Markdown
Member

Summary

This PR ports the Miniscope DAQ QT software from Qt5 to Qt6, sets up a reproducible Windows build with a one-click installer, and adds a set of usability features on top. It's ~40 commits adding 2,135 / removing 399 lines across 44 files.

The work is grouped into four areas below. Each area was developed and merged on its own feature branch, so the history is easy to follow commit-by-commit.

1. Qt5 → Qt6 migration

The application now builds and runs on Qt6.

  • New CMake build (CMakeLists.txt) replacing the old setup.
  • Ported all OpenGL renderers to the Qt6 RHI/QML model: videodisplay, tracedisplay, and behaviortracker.
  • Fixed GLSL shaders that failed to compile under the new pipeline (GLSL 1.10: f-suffix literals, float/int comparisons) — these were silently breaking trace plotting and the tracker overlay.
  • QML startup hardening: on-demand device views and control panel, unversioned QtQuick imports, null-traceDisplay crash on Run, and a forced light color scheme fix for invisible white-on-white text.
  • initNumpy warning (C4715) silenced.

2. Reproducible build, packaging & release

  • environment.yml — a conda spec pinning the toolchain (Qt, OpenCV, Python) so the build is reproducible from scratch.
  • tools/deploy.py + tools/launcher.cpp — produce a portable, self-contained folder: a double-clickable MiniscopeDAQ.exe at the top with all DLLs tucked away in bin/.
  • Windows installer (installer/MiniscopeDAQ.iss, Inno Setup): per-user install (no admin rights), Start Menu / optional desktop shortcut, and clean uninstall via Add or Remove Programs.
  • GitHub Actions release workflow (.github/workflows/release.yml): on tag, builds and publishes both the portable zip and the Setup.exe.
  • README updated with a Windows install section covering both the installer and the portable zip.

3. New features & UX

  • In-app user-config generator — create a new config from scratch and add devices through a guided Add Device dialog, with sensible defaults and unique device IDs. No more hand-editing JSON.
  • Scan Devices button — lists connected cameras as deviceID → camera name so you can pick the right index.
  • Display LUT selector for the Miniscope window, including red-saturation highlighting of clipped pixels.
  • Save-As dialog for user configs and a codec dropdown in the tree editor.
  • Display windows are now resizable, locked to aspect ratio.
  • The BNO / trace window is user-closeable.
  • Config tree-view editor ported to Qt6 with path browse buttons.
  • Version bumped to 1.2; Help dialog now shows build info.
  • Four UserConfigExample-*.json samples added (V3 / V4, single & dual webcam).

4. Bug fixes

  • Codec detection no longer leaves a stray test.avi behind.
  • "Add Neuron ROI" button restored.
  • Assorted Qt6 build-error fixes found during first compile.

Notes for review

@sneakers-the-rat

sneakers-the-rat commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

ah, i see we reverted and reopened, left comments on the last one

@fnsangiul

Copy link
Copy Markdown
Member Author

@sneakers-the-rat yes, my mistake. I merged by mistake and reverted to create a PR on a new branch.

@sneakers-the-rat

Copy link
Copy Markdown
Contributor

totally understandable - the reason we use branch protections is because those kinda of mistakes are easy to make, common problem, not just a you thing :)

@fnsangiul

Copy link
Copy Markdown
Member Author

Closing this draft in favor of a fresh PR that includes the Linux/Ubuntu port (libuvc capture backend, V4L2 device scanning, AppImage packaging + CI, udev rules) on top of the Qt6 migration and Windows build work. New PR opening now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants