Revert "Added an alternative GUI based on JUCE; I like FLTK more..."
This reverts commit cd2f87a8b3.
This commit is contained in:
parent
cd2f87a8b3
commit
d6e46f67d7
58 changed files with 10 additions and 11136 deletions
|
|
@ -11,8 +11,7 @@ the graph editor is an advanced view of the same project.
|
|||
|
||||
## Layers
|
||||
|
||||
1. **C++ GUI:** input, drawing, windows, view state. FLTK is the default;
|
||||
`src/gui/JUCE` is an independently optional JUCE frontend using the same C API.
|
||||
1. **FLTK/C++ GUI:** input, drawing, windows, view state.
|
||||
2. **C core:** project model, commands, parameters, persistence, validation.
|
||||
3. **C engine:** prepared processing graph, DSP, transport timing, event
|
||||
delivery.
|
||||
|
|
@ -219,16 +218,3 @@ files; unsupported native saves preserve files. See NATIVE_API.md and decision
|
|||
0008. Release tooling lives outside the runtime, with source manifests,
|
||||
deterministic exports and staged installation/consumer checks. See RELEASING.md
|
||||
for reproducibility scope.
|
||||
|
||||
## JUCE frontend ownership
|
||||
|
||||
The optional `xtc-juce` application ports the complete retained GUI command
|
||||
structure under `src/gui/JUCE`, without linking FLTK. `ui.*` supplies JUCE
|
||||
components, native controls, graphics, event dispatch, timers, scrolling and
|
||||
dialogs while preserving the original C-facing command boundaries. The master
|
||||
sequencer owns JUCE ruler/track groups; tracks own header, instrument, clip and
|
||||
velocity components. Group ownership, borrowed indexes, immutable copied C
|
||||
metadata and deferred deletion follow the same rules as the FLTK frontend.
|
||||
JUCE renders overlays after child components and routes callbacks on the message
|
||||
thread. The audio backend and callbacks remain in C. See the
|
||||
[JUCE source map](../src/gui/JUCE/README.md#components-and-maintenance).
|
||||
|
|
|
|||
|
|
@ -79,7 +79,6 @@ lists, dependencies, SDK and packaging rules in CMake.
|
|||
| Cache option | Default | Meaning |
|
||||
| --- | --- | --- |
|
||||
| `BUILD_TESTING` | `ON` | Build/register the test suite |
|
||||
| `XTC_BUILD_JUCE_GUI` | `OFF` | Build the JUCE workstation frontend (`xtc-juce`), independently of FLTK; requires `XTC_JUCE_ROOT` |
|
||||
| `XTC_BUILD_GUI` | `ON` | Discover FLTK and build the application when available |
|
||||
| `XTC_WITH_JACK` | `ON` | Discover/build the JACK/PipeWire backend |
|
||||
| `XTC_WITH_LADSPA` | `ON` | Enable LADSPA when the system header exists |
|
||||
|
|
@ -192,21 +191,3 @@ Clean products with `cmake --build build --target clean`; to discard the cache,
|
|||
remove only the selected build directory. Never configure in the source tree.
|
||||
Historical validation entries in ROADMAP describe the build used at that time;
|
||||
Phase 108 records the CMake migration and its verified results.
|
||||
|
||||
## Optional JUCE workstation frontend
|
||||
|
||||
See [src/gui/JUCE/README.md](../src/gui/JUCE/README.md) for the component map and
|
||||
licence requirements. The SDK is supplied by the user; no download occurs.
|
||||
|
||||
```sh
|
||||
cmake -S . -B build/juce-gui -DCMAKE_BUILD_TYPE=Debug \
|
||||
-DXTC_BUILD_GUI=OFF -DXTC_BUILD_JUCE_GUI=ON -DXTC_JUCE_ROOT=/path/to/JUCE
|
||||
cmake --build build/juce-gui --parallel 4 --target xtc-juce test_juce_gui
|
||||
./build/juce-gui/xtc-juce examples/projects/playback-test.xtc
|
||||
ctest --test-dir build/juce-gui -R juce-gui --output-on-failure -j1
|
||||
```
|
||||
|
||||
`XTC_BUILD_GUI=ON` builds both frontends. `XTC_BUILD_JUCE` continues to mean
|
||||
JUCE plugin/processor examples and can be enabled independently or alongside
|
||||
the workstation frontend. A missing SDK is a configuration error only when a
|
||||
JUCE option is enabled. The existing default FLTK build is unchanged.
|
||||
|
|
|
|||
|
|
@ -1,10 +1,6 @@
|
|||
# GUI Guidelines
|
||||
|
||||
The default frontend uses FLTK/C++ for windows, menus, dialogs, and the event loop.
|
||||
An optional JUCE port is available under `src/gui/JUCE`; build `xtc-juce` with
|
||||
`XTC_BUILD_JUCE_GUI=ON` and an external `XTC_JUCE_ROOT`. Both frontends can be
|
||||
built together and use the same project files and C API. See
|
||||
[JUCE build and component details](../src/gui/JUCE/README.md). Keep all audio
|
||||
Use FLTK/C++ for windows, menus, dialogs, and the event loop. Keep all audio
|
||||
engine and project-domain logic in C.
|
||||
|
||||
Main views:
|
||||
|
|
|
|||
|
|
@ -1,8 +1,7 @@
|
|||
# JUCE integration
|
||||
# JUCE integration (Phase 107)
|
||||
|
||||
JUCE supplies an [optional workstation frontend](../src/gui/JUCE/README.md)
|
||||
(`XTC_BUILD_JUCE_GUI`) as well as runnable plugin examples (`XTC_BUILD_JUCE`)
|
||||
alongside xtc's C99 engine and FLTK application. The two options are independent. It is an external SDK dependency, not vendored, fetched, linked by
|
||||
JUCE is used by optional, runnable examples alongside xtc's C99 engine and FLTK
|
||||
application. It is an external SDK dependency, not vendored, fetched, linked by
|
||||
normal builds or automatically installed. The integration uses:
|
||||
|
||||
| JUCE capability | Implemented use |
|
||||
|
|
|
|||
|
|
@ -79,11 +79,3 @@ repository code; no Steinberg VST2 SDK or third-party plugin is bundled. Hosting
|
|||
an installed binary is distinct from SDK, trademark and plugin redistribution
|
||||
rights. Review those separately for any proposed distribution. Source archives
|
||||
retain upstream notices; binary installs also ship both header licenses.
|
||||
|
||||
## Optional JUCE workstation frontend
|
||||
|
||||
`XTC_BUILD_JUCE_GUI` links the user-supplied JUCE SDK under its AGPLv3 or
|
||||
commercial licence. It is off by default and separate from the MIT C core and
|
||||
FLTK frontend. No SDK source is copied into this repository or downloaded by
|
||||
normal configuration. Review the supplied SDK's licence and its graphics/text
|
||||
dependencies when distributing `xtc-juce`. See [the frontend guide](../src/gui/JUCE/README.md).
|
||||
|
|
|
|||
|
|
@ -3739,47 +3739,6 @@ Play/Stop/Space/stereo check also passed. See the integration-test guide for com
|
|||
|
||||
---
|
||||
|
||||
## Phase 113 — Optional JUCE workstation frontend
|
||||
|
||||
### Tasks and acceptance criteria
|
||||
|
||||
- [x] Preserve the FLTK sources and default build; add an independently optional
|
||||
`XTC_BUILD_JUCE_GUI` workstation under `src/gui/JUCE`.
|
||||
- [x] Require a user-supplied SDK through `XTC_JUCE_ROOT`, with an explicit error
|
||||
when enabled without the SDK and no SDK discovery/download in normal builds.
|
||||
- [x] Port the main window, sequencer/master and child views, graph, mixer,
|
||||
automation, piano roll, velocity editing, sample editor, plugin dialogs,
|
||||
insert chains, preferences, searchable commands and support widgets.
|
||||
- [x] Use JUCE components, controls, graphics, native events, dialogs and timers;
|
||||
keep project/history/DSP/backend/plugin APIs in C and preserve `.xtc` files.
|
||||
- [x] Allow JUCE-only, FLTK-only, both and core-only configurations; share the
|
||||
externally supplied SDK with the independently optional plugin examples.
|
||||
- [x] Include the JUCE binary in the owned install/uninstall inventory when selected.
|
||||
- [x] Pass the retained GUI regression workflows against JUCE, including failure
|
||||
rollback, child ownership, gestures, preferences and MIDI device fallback.
|
||||
- [x] Verify native JUCE transport events and finite stereo playback with the
|
||||
bundled test song and missing saved MIDI devices.
|
||||
- [x] Validate the original FLTK build/tests and document final build results.
|
||||
|
||||
### Implementation notes
|
||||
|
||||
The frontend retains the original C-facing command structure and filenames.
|
||||
`ui.*` maps the retained coordinates and callback conventions to JUCE, with no
|
||||
FLTK headers or runtime dependency. Native controls may look different. Both
|
||||
frontends continue to use the existing JACK/PipeWire backend. See the
|
||||
[frontend source and build guide](../src/gui/JUCE/README.md).
|
||||
JUCE is an optional external AGPLv3/commercial SDK; normal builds do not link it.
|
||||
Qualification is for Linux, rather than a new cross-platform audio backend.
|
||||
The original 57 FLTK/core tests, core-only build, missing-SDK diagnostic, shared
|
||||
SDK configuration and staged install/uninstall checks passed. The frontend was
|
||||
built with warnings enabled against external JUCE 8.0.15. Native Play/Stop/Space,
|
||||
expanded track rendering and finite stereo playback passed with missing saved
|
||||
MIDI devices. All 12 JUCE GUI workflows passed, with focused reruns after the
|
||||
native focus/blur adjustments. The [workstation capture](../screenshots/juce-workstation.png)
|
||||
comes from this real-backend regression, with no physical routes changed.
|
||||
|
||||
---
|
||||
|
||||
## Recommended Execution Order
|
||||
|
||||
Reorder the phases when the audit reveals a blocking dependency. Do not mark a
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue