start hooking up fileChooser to use valueTree instead of coupling to fluidSynth model
This commit is contained in:
		| @ -4,6 +4,7 @@ | ||||
|  | ||||
| #include "FilePicker.h" | ||||
| #include "MyColours.h" | ||||
| #include "Util.h" | ||||
|  | ||||
| FilePicker::FilePicker( | ||||
|     AudioProcessorValueTreeState& valueTreeState, | ||||
| @ -25,13 +26,17 @@ FilePicker::FilePicker( | ||||
|     // faster (rounded edges introduce transparency) | ||||
|     setOpaque (true); | ||||
|  | ||||
|     setDisplayedFilePath(fluidSynthModel.getCurrentSoundFontAbsPath()); | ||||
|     // setDisplayedFilePath(fluidSynthModel.getCurrentSoundFontAbsPath()); | ||||
|     setDisplayedFilePath(""); | ||||
|  | ||||
|     addAndMakeVisible (fileChooser); | ||||
|     fileChooser.addListener (this); | ||||
|     valueTreeState.state.addListener(this); | ||||
|     valueTreeState.state.getChildWithName("soundFont").sendPropertyChangeMessage("path"); | ||||
| } | ||||
| FilePicker::~FilePicker() { | ||||
|     fileChooser.removeListener (this); | ||||
|     valueTreeState.state.removeListener(this); | ||||
| } | ||||
|  | ||||
| void FilePicker::resized() { | ||||
| @ -48,15 +53,31 @@ void FilePicker::paint(Graphics& g) | ||||
| } | ||||
|  | ||||
| void FilePicker::filenameComponentChanged (FilenameComponent*) { | ||||
|     currentPath = fileChooser.getCurrentFile().getFullPathName(); | ||||
|     fluidSynthModel.onFileNameChanged(fileChooser.getCurrentFile().getFullPathName(), -1, -1); | ||||
|     // currentPath = fileChooser.getCurrentFile().getFullPathName(); | ||||
|     // fluidSynthModel.onFileNameChanged(fileChooser.getCurrentFile().getFullPathName(), -1, -1); | ||||
|     Value value{valueTreeState.state.getChildWithName("soundFont").getPropertyAsValue("path", nullptr)}; | ||||
|     value = fileChooser.getCurrentFile().getFullPathName(); | ||||
| } | ||||
|  | ||||
| void FilePicker::valueTreePropertyChanged(ValueTree& treeWhosePropertyHasChanged, | ||||
|                                                const Identifier& property) { | ||||
|     if (treeWhosePropertyHasChanged.getType() == StringRef("soundFont")) { | ||||
|     // if (&treeWhosePropertyHasChanged == &valueTree) { | ||||
|         if (property == StringRef("path")) { | ||||
|             String soundFontPath{treeWhosePropertyHasChanged.getProperty("path", "")}; | ||||
|             DEBUG_PRINT(soundFontPath); | ||||
|             // if (soundFontPath.isNotEmpty()) { | ||||
|             //     loadFont(soundFontPath); | ||||
|             // } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| void FilePicker::setDisplayedFilePath(const String& path) { | ||||
|     if (!shouldChangeDisplayedFilePath(path)) { | ||||
|         return; | ||||
|     } | ||||
|     currentPath = path; | ||||
|     // if (!shouldChangeDisplayedFilePath(path)) { | ||||
|     //     return; | ||||
|     // } | ||||
|     // currentPath = path; | ||||
|     fileChooser.setCurrentFile(File(path), true, dontSendNotification); | ||||
| } | ||||
|  | ||||
| @ -68,4 +89,4 @@ bool FilePicker::shouldChangeDisplayedFilePath(const String &path) { | ||||
|         return false; | ||||
|     } | ||||
|     return true; | ||||
| } | ||||
| } | ||||
|  | ||||
| @ -10,6 +10,7 @@ | ||||
|  | ||||
| class FilePicker: public Component, | ||||
|                   public FilePickerFragment, | ||||
|                   public ValueTree::Listener, | ||||
|                   private FilenameComponentListener | ||||
| { | ||||
| public: | ||||
| @ -23,6 +24,19 @@ public: | ||||
|     void paint (Graphics& g) override; | ||||
|  | ||||
|     virtual void setDisplayedFilePath(const String&) override; | ||||
|      | ||||
|  | ||||
|     virtual void valueTreePropertyChanged (ValueTree& treeWhosePropertyHasChanged, | ||||
|                                            const Identifier& property) override; | ||||
|     inline virtual void valueTreeChildAdded (ValueTree& parentTree, | ||||
|                                              ValueTree& childWhichHasBeenAdded) override {}; | ||||
|     inline virtual void valueTreeChildRemoved (ValueTree& parentTree, | ||||
|                                                ValueTree& childWhichHasBeenRemoved, | ||||
|                                                int indexFromWhichChildWasRemoved) override {}; | ||||
|     inline virtual void valueTreeChildOrderChanged (ValueTree& parentTreeWhoseChildrenHaveMoved, | ||||
|                                                     int oldIndex, int newIndex) override {}; | ||||
|     inline virtual void valueTreeParentChanged (ValueTree& treeWhoseParentHasChanged) override {}; | ||||
|     inline virtual void valueTreeRedirected (ValueTree& treeWhichHasBeenChanged) override {}; | ||||
| private: | ||||
|     FilenameComponent fileChooser; | ||||
|  | ||||
|  | ||||
| @ -27,11 +27,11 @@ FluidSynthModel::FluidSynthModel( | ||||
| , channel{0}/*, | ||||
| mod(nullptr)*/ | ||||
| { | ||||
|     valueTreeState.state.getChildWithName("soundFont").addListener(this); | ||||
|     valueTreeState.state.addListener(this); | ||||
| } | ||||
|  | ||||
| FluidSynthModel::~FluidSynthModel() { | ||||
|     valueTreeState.state.getChildWithName("soundFont").removeListener(this); | ||||
|     valueTreeState.state.removeListener(this); | ||||
|     // if (initialised) { | ||||
| //        delete_fluid_audio_driver(driver); | ||||
|         // delete_fluid_synth(synth); | ||||
| @ -196,7 +196,7 @@ void FluidSynthModel::initialise() { | ||||
|     fluid_mod_set_amount(mod.get(), 1000.0f); | ||||
|     fluid_synth_add_default_mod(synth.get(), mod.get(), FLUID_SYNTH_ADD); | ||||
|      | ||||
|     valueTreeState.state.sendPropertyChangeMessage("soundFont"); | ||||
|     valueTreeState.state.getChildWithName("soundFont").sendPropertyChangeMessage("path"); | ||||
|     // valueTree.sendPropertyChangeMessage("soundFontPath"); | ||||
|  | ||||
|     // initialised = true; | ||||
|  | ||||
| @ -76,7 +76,7 @@ private: | ||||
|  | ||||
| //    Params sharedParams; | ||||
|     AudioProcessorValueTreeState valueTreeState; | ||||
|     ValueTree valueTree; | ||||
|     // ValueTree valueTree; | ||||
|  | ||||
|     FluidSynthModel fluidSynthModel; | ||||
|     // fluid_synth_t* fluidSynth; | ||||
|  | ||||
		Reference in New Issue
	
	Block a user