// // Created by Alex Birch on 03/10/2017. // #include "FilePicker.h" #include "MyColours.h" FilePicker::FilePicker( FluidSynthModel* fluidSynthModel ) : fileChooser( "File", File(), true, false, false, "*.sf2;*.sf3", String(), "Choose a Soundfont file to load into the synthesizer" ), 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()); } 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; }