// // Created by Alex Birch on 03/10/2017. // #include "FilePicker.h" #include "MyColours.h" FilePicker::FilePicker( AudioProcessorValueTreeState& valueTreeState, FluidSynthModel& fluidSynthModel ) : fileChooser{ "File", File(), true, false, false, "*.sf2;*.sf3", String(), "Choose a Soundfont file to load into the synthesizer"} , valueTreeState{valueTreeState} , fluidSynthModel{fluidSynthModel} // , currentPath{} { // faster (rounded edges introduce transparency) setOpaque (true); setDisplayedFilePath(fluidSynthModel.getCurrentSoundFontAbsPath()); addAndMakeVisible (fileChooser); fileChooser.addListener (this); } FilePicker::~FilePicker() { fileChooser.removeListener (this); } void FilePicker::resized() { Rectangle r (getLocalBounds()); fileChooser.setBounds (r); } /** * This is required to support setOpaque(true) */ void FilePicker::paint(Graphics& g) { g.fillAll(MyColours::getUIColourIfAvailable(LookAndFeel_V4::ColourScheme::UIColour::windowBackground, Colours::lightgrey)); } void FilePicker::filenameComponentChanged (FilenameComponent*) { currentPath = fileChooser.getCurrentFile().getFullPathName(); fluidSynthModel.onFileNameChanged(fileChooser.getCurrentFile().getFullPathName(), -1, -1); } void FilePicker::setDisplayedFilePath(const String& path) { if (!shouldChangeDisplayedFilePath(path)) { return; } currentPath = path; fileChooser.setCurrentFile(File(path), true, dontSendNotification); } bool FilePicker::shouldChangeDisplayedFilePath(const String &path) { if (path.isEmpty()) { return false; } if (path == currentPath) { return false; } return true; }