Summary
Create a new modern GUI application beside the existing original Windows GUI. The executable should be named PTZControl2.exe and should use a cross-platform GUI stack, preferably Avalonia, so the UI can later be released for Windows, Linux, and macOS.
Motivation
The original WinForms GUI is useful, but the current UX has several limitations:
- window cannot be resized smaller / flexibly enough,
- button tooltips can appear behind the mouse pointer and become hard to read,
- buttons are small and fiddly to hit,
- the overall layout would benefit from a modern refresh,
- future Linux/macOS GUI support is not realistic with the old WinForms app.
Proposed approach
Add a new GUI app beside the existing projects instead of replacing the original app immediately.
Suggested executable name:
Suggested architecture:
- Avalonia UI project for the new GUI,
- reuse existing app icon/form icon resources where practical, e.g.
PTZControl/res/PTZControl.ico,
- reuse the current PTZControlConsole/backend services instead of duplicating camera-control logic,
- keep the original PTZControl.exe available while PTZControl2 is reviewed and matured.
First implementation step
Create the initial GUI shell and wire forms/controls to the new backend:
- camera selection / refresh,
- preset restore buttons,
- home/default actions where available,
- zoom controls,
- pan/tilt controls,
- status/error output,
- app startup without requiring the old GUI/bridge prototype.
After this first step, Jochen should review the UI and suggest layout/UX adjustments before deeper feature completion.
Legacy feature compatibility goals
Where possible, PTZControl2 should preserve or replace the useful features of the original GUI:
- app start actions,
- hotkeys,
- launch arguments,
- preset names / friendly names,
- camera auto-detection,
- camera selection,
- Windows registry compatibility for existing PTZControl metadata,
- cross-platform JSON metadata on Linux/macOS,
- existing icon/branding where suitable.
Compatibility can be phased, but missing items should remain visible in this ticket or follow-up tasks.
Release packaging goals
When the app is ready for preview builds, the GitHub release workflow should publish PTZControl2 packages for typical target platforms and architectures:
- Windows x86/x64, possibly arm64,
- Linux x64/arm64,
- macOS x64/arm64.
The existing original GUI package should remain separate from PTZControl2 packages.
Notes
This is a larger feature and should be treated as a new GUI generation, not a small patch to the original WinForms UI.
Summary
Create a new modern GUI application beside the existing original Windows GUI. The executable should be named
PTZControl2.exeand should use a cross-platform GUI stack, preferably Avalonia, so the UI can later be released for Windows, Linux, and macOS.Motivation
The original WinForms GUI is useful, but the current UX has several limitations:
Proposed approach
Add a new GUI app beside the existing projects instead of replacing the original app immediately.
Suggested executable name:
Suggested architecture:
PTZControl/res/PTZControl.ico,First implementation step
Create the initial GUI shell and wire forms/controls to the new backend:
After this first step, Jochen should review the UI and suggest layout/UX adjustments before deeper feature completion.
Legacy feature compatibility goals
Where possible, PTZControl2 should preserve or replace the useful features of the original GUI:
Compatibility can be phased, but missing items should remain visible in this ticket or follow-up tasks.
Release packaging goals
When the app is ready for preview builds, the GitHub release workflow should publish PTZControl2 packages for typical target platforms and architectures:
The existing original GUI package should remain separate from PTZControl2 packages.
Notes
This is a larger feature and should be treated as a new GUI generation, not a small patch to the original WinForms UI.