feat(gui): add the per-track modular insert workspace (phase 83)

This commit is contained in:
Johannes Findeisen 2026-11-06 01:37:09 +01:00
commit e3c27d6aae
6 changed files with 121 additions and 4 deletions

View file

@ -9,6 +9,7 @@
#include "../../src/gui/command_palette.hpp"
#include <FL/Fl_Value_Input.H>
#include "../../src/gui/plugin_library.hpp"
#include "../../src/gui/track_inserts.hpp"
#include <FL/Fl_Hold_Browser.H>
#include <FL/Fl_Choice.H>
#include <FL/Fl_Value_Slider.H>
@ -215,8 +216,25 @@ static int sample_editor_tests()
CHECK(window.undo()==XTC_OK);CHECK(xtc_project_get_counts(s->project(),&tracks,&clips)==XTC_OK && clips==1);
window.do_callback();std::puts("Sample editor GUI selection/processing/adoption/slicing/undo passed.");return failures ? 1 : 0;
}
int track_insert_tests()
{
reset();MainWindow window(false,"");window.show();pump();auto *s=timeline(&window);
CHECK(window.create_track(false)==XTC_OK);auto track=s->selected_track();auto *panel=window.track_inserts();CHECK(panel);
panel->select_track(track);CHECK(panel->selected_track()==track && panel->graph());
CHECK(window.add_track_effect(track,XTC_BUILTIN_PATH,2)==XTC_OK);
xtc_track_chain chain{};CHECK(xtc_project_get_chain(s->project(),track,&chain)==XTC_OK && chain.count==1 && chain.slots[0].enabled);
CHECK(window.undo()==XTC_OK);panel->refresh(true);CHECK(xtc_project_get_chain(s->project(),track,&chain)==XTC_OK && chain.count==0);
CHECK(window.undo(true)==XTC_OK);panel->refresh(true);CHECK(xtc_project_get_chain(s->project(),track,&chain)==XTC_OK && chain.count==1);
auto *before=s->project();submit_result=XTC_ERR_INVALID_STATE;
CHECK(window.add_track_effect(track,XTC_BUILTIN_PATH,3)==XTC_ERR_INVALID_STATE && s->project()==before);submit_result=XTC_OK;
CHECK(window.add_track_effect(track,"/missing/plugin.so",0)!=XTC_OK && s->project()==before);
CHECK(window.save_project("/tmp/xtc-inserts-gui.xtc")==XTC_OK && window.new_project()==XTC_OK && window.open_project("/tmp/xtc-inserts-gui.xtc")==XTC_OK);
CHECK(xtc_project_get_chain(s->project(),track,&chain)==XTC_OK && chain.count==1);unlink("/tmp/xtc-inserts-gui.xtc");
window.do_callback();puts("Track inserts GUI adoption/undo/rollback/reload passed.");return failures ? 1 : 0;
}
int main(int argc, char **argv)
{
if(std::getenv("XTC_TEST_TRACK_FX_ONLY"))return track_insert_tests();
if(std::getenv("XTC_TEST_SAMPLE_EDITOR_ONLY"))return sample_editor_tests();
if(!std::getenv("XTC_TEST_MODERN_EDITING_ONLY")) {
reset();