Skip to content

Create modern cross-platform PTZControl2 GUI #20

Description

@jochenwezel

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:

PTZControl2.exe

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions