Update.
This commit is contained in:
parent
320addd5c9
commit
02e27a33a2
47 changed files with 882 additions and 62 deletions
|
|
@ -5,6 +5,8 @@
|
|||
#include "../../src/gui/mixer_widget.hpp"
|
||||
#include "../../src/gui/plugin_dialog.hpp"
|
||||
#include "../../src/gui/preferences_dialog.hpp"
|
||||
#include "../../src/gui/command_palette.hpp"
|
||||
#include <FL/Fl_Value_Input.H>
|
||||
#include "../../src/gui/plugin_library.hpp"
|
||||
#include <FL/Fl_Hold_Browser.H>
|
||||
#include <FL/Fl_Choice.H>
|
||||
|
|
@ -856,7 +858,7 @@ int main(int argc, char **argv)
|
|||
CHECK(window.create_track(true) == XTC_OK);
|
||||
uint64_t second = sequence->selected_track();
|
||||
auto *selector = sequence->instrument_choice(second); CHECK(selector && selector->value() == 0);
|
||||
CHECK(selector->size() == 4); // Sine, current project instrument, load, terminator.
|
||||
CHECK(selector->size() == 6); // Sine, two internal presets, project instrument, load, terminator.
|
||||
selector->value(1); selector->do_callback();
|
||||
CHECK(xtc_project_get_instrument(sequence->project(),second,&spec) == XTC_OK && spec.instrument);
|
||||
CHECK(sequence->selected_track() == second);
|
||||
|
|
@ -1080,6 +1082,58 @@ int main(int argc, char **argv)
|
|||
}
|
||||
xtc_project_destroy(project);
|
||||
}
|
||||
{
|
||||
reset();MainWindow window(false,"");window.show();CHECK(window.create_track(true)==XTC_OK);
|
||||
auto *seq=timeline(&window);auto clip=seq->selected_clip(),track=seq->selected_track();
|
||||
CHECK(window.set_tempo(135500)==XTC_OK && xtc_project_tempo(seq->project())==135500);
|
||||
CHECK(seq->selected_clip()==clip && seq->selected_track()==track);
|
||||
CHECK(window.undo()==XTC_OK && xtc_project_tempo(seq->project())==120000);
|
||||
CHECK(window.undo(true)==XTC_OK && xtc_project_tempo(seq->project())==135500);
|
||||
const auto *before=seq->project();reserve_result=XTC_ERR_OUT_OF_MEMORY;
|
||||
CHECK(window.set_tempo(100000)==XTC_ERR_OUT_OF_MEMORY && seq->project()==before);
|
||||
reserve_result=XTC_OK;CHECK(window.set_tempo(0)==XTC_ERR_INVALID_ARGUMENT);
|
||||
submit_result=XTC_ERR_CAPACITY;CHECK(window.set_tempo(100000)==XTC_ERR_CAPACITY && seq->project()==before);submit_result=XTC_OK;
|
||||
CHECK(window.set_tempo(135500)==XTC_OK);
|
||||
auto *bpm=dynamic_cast<Fl_Value_Input *>(find(&window,"BPM"));CHECK(bpm);
|
||||
if(bpm){bpm->value(140);bpm->do_callback();CHECK(xtc_project_tempo(seq->project())==140000);
|
||||
bpm->value(900);bpm->do_callback();CHECK(xtc_project_tempo(seq->project())==140000 && bpm->value()==140);}
|
||||
|
||||
auto *gain=dynamic_cast<Fl_Value_Input *>(find(&window,"Gain"));CHECK(gain);pump();
|
||||
if(gain){gain->value(.6);gain->do_callback();}xtc_track_info info{};xtc_project_get_track(seq->project(),0,&info);CHECK(info.gain==.6f);
|
||||
if(gain){Fl::focus(&gain->input);gain->input.value("0.123");pump();CHECK(std::strcmp(gain->input.value(),"0.123")==0);Fl::focus(nullptr);}
|
||||
CHECK(window.undo()==XTC_OK);xtc_project_get_track(seq->project(),0,&info);CHECK(info.gain==1);
|
||||
CHECK(seq->set_zoom(384)==XTC_OK);window.fit_song();CHECK(seq->zoom_level()<384);
|
||||
CHECK(contains(&window,"1 tracks / 1 clips"));
|
||||
Fl::add_timeout(.05,[](void *){auto *dialog=Fl::first_window();auto *search=dynamic_cast<Fl_Input *>(find(dialog,"Search commands"));CHECK(search);
|
||||
if(search){search->value("view/mixer");search->do_callback();}press(find(dialog,"Run command"));if(dialog->shown()){CHECK(false);dialog->hide();}});
|
||||
window.show_commands();CHECK(window.mixer()->visible_r());
|
||||
auto *bar=dynamic_cast<Fl_Menu_Bar *>(window.child(0));CHECK(bar);if(bar)bar->picked(bar->find_item("View/Sequencer"));
|
||||
auto *follow=dynamic_cast<Fl_Check_Button *>(find(&window,"Follow playhead"));CHECK(follow);
|
||||
if(follow){follow->value(1);follow->do_callback();CHECK(window.settings().follow_playhead==1);}
|
||||
press(find(&window,"Play"));engine_status.sample_position=960000;pump();
|
||||
auto *scroll=dynamic_cast<Fl_Scroll *>(seq->parent());CHECK(scroll && scroll->xposition()>0);
|
||||
press(find(&window,"Stop"));window.fit_song();CHECK(scroll && scroll->xposition()==0);
|
||||
|
||||
Fl::add_timeout(.05,[](void *){auto *dialog=Fl::first_window();auto *search=dynamic_cast<Fl_Input *>(find(dialog,"Search commands"));
|
||||
CHECK(search);if(search){search->value("does not exist");search->do_callback();}press(find(dialog,"Run command"));CHECK(dialog->shown());press(find(dialog,"Cancel"));});
|
||||
window.show_commands();
|
||||
CHECK(window.create_track(true)==XTC_OK);uint64_t second=seq->selected_track();
|
||||
window.mixer()->select_track(track);if(bar)bar->picked(bar->find_item("View/Mixer"));pump();
|
||||
if(gain){gain->value(.4);gain->do_callback();}xtc_project_get_track(seq->project(),0,&info);CHECK(info.id==track && info.gain==.4f);
|
||||
xtc_project_get_track(seq->project(),1,&info);CHECK(info.id==second && info.gain==1);
|
||||
window.do_callback();
|
||||
}
|
||||
{
|
||||
CommandPalette palette({"View/Mixer","File/Open"});
|
||||
Fl::add_timeout(.05,[](void *context){auto *p=static_cast<CommandPalette *>(context);auto *search=dynamic_cast<Fl_Input *>(find(p,"Search commands"));CHECK(search);
|
||||
if(search){search->value("FILE");search->do_callback();}int old=Fl::e_keysym;Fl::e_keysym=FL_Enter;CHECK(p->handle(FL_KEYDOWN)==1);Fl::e_keysym=old;},&palette);
|
||||
CHECK(palette.run()=="File/Open");
|
||||
}
|
||||
{
|
||||
CommandPalette palette({"View/Mixer"});
|
||||
Fl::add_timeout(.05,[](void *context){int old=Fl::e_keysym;Fl::e_keysym=FL_Escape;static_cast<CommandPalette *>(context)->handle(FL_KEYDOWN);Fl::e_keysym=old;},&palette);
|
||||
CHECK(palette.run().empty());
|
||||
}
|
||||
if (failures != 0) return 1;
|
||||
std::printf("GUI controls/errors/views/timers/cleanup passed: %u opens, %u closes.\n", opens, closes);
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue