Ditch the file open dialog in favor of an overlaid FileBrowserComponent. Should be much nicer to use anyway...
This commit is contained in:
		@@ -32,8 +32,19 @@ PaulstretchpluginAudioProcessorEditor::PaulstretchpluginAudioProcessorEditor(Pau
 | 
			
		||||
	m_wavecomponent(p.m_afm,p.m_thumb.get(), p.getStretchSource()),
 | 
			
		||||
	processor(p), m_perfmeter(&p),
 | 
			
		||||
    m_free_filter_component(&p),
 | 
			
		||||
    m_wavefilter_tab(p.m_cur_tab_index)
 | 
			
		||||
    m_wavefilter_tab(p.m_cur_tab_index),
 | 
			
		||||
	m_filefilter(p.m_afm->getWildcardForAllFormats(),String(),String())
 | 
			
		||||
{
 | 
			
		||||
	
 | 
			
		||||
	String initiallocfn = processor.m_propsfile->m_props_file->getValue("importfilefolder",
 | 
			
		||||
		File::getSpecialLocation(File::userHomeDirectory).getFullPathName());
 | 
			
		||||
	File initialloc(initiallocfn);
 | 
			
		||||
	String filterstring = processor.m_afm->getWildcardForAllFormats();
 | 
			
		||||
 | 
			
		||||
	m_filechooser = std::make_unique<FileBrowserComponent>(1|4,
 | 
			
		||||
		initialloc, &m_filefilter, nullptr);
 | 
			
		||||
	m_filechooser->addListener(this);
 | 
			
		||||
		
 | 
			
		||||
	setWantsKeyboardFocus(true);
 | 
			
		||||
	m_wave_container = new Component;
 | 
			
		||||
    m_free_filter_component.getEnvelopeComponent()->set_envelope(processor.m_free_filter_envelope);
 | 
			
		||||
@@ -51,8 +62,16 @@ PaulstretchpluginAudioProcessorEditor::PaulstretchpluginAudioProcessorEditor(Pau
 | 
			
		||||
    addAndMakeVisible(&m_perfmeter);
 | 
			
		||||
	
 | 
			
		||||
	addAndMakeVisible(&m_import_button);
 | 
			
		||||
	m_import_button.setButtonText("Import file...");
 | 
			
		||||
	m_import_button.onClick = [this]() { chooseFile(); };
 | 
			
		||||
	m_import_button.setButtonText("Show browser");
 | 
			
		||||
	m_import_button.onClick = [this]() 
 | 
			
		||||
	{ 
 | 
			
		||||
		m_filechooser->setBounds(0, 50, getWidth(), getHeight() - 60);
 | 
			
		||||
		m_filechooser->setVisible(!m_filechooser->isVisible());
 | 
			
		||||
		if (m_filechooser->isVisible())
 | 
			
		||||
			m_import_button.setButtonText("Hide browser");
 | 
			
		||||
		else
 | 
			
		||||
			m_import_button.setButtonText("Show browser");
 | 
			
		||||
	};
 | 
			
		||||
	
 | 
			
		||||
	addAndMakeVisible(&m_settings_button);
 | 
			
		||||
	m_settings_button.setButtonText("Settings...");
 | 
			
		||||
@@ -237,6 +256,7 @@ PaulstretchpluginAudioProcessorEditor::PaulstretchpluginAudioProcessorEditor(Pau
 | 
			
		||||
	startTimer(2, 1000);
 | 
			
		||||
	startTimer(3, 200);
 | 
			
		||||
	m_wavecomponent.startTimer(100);
 | 
			
		||||
	addChildComponent(m_filechooser.get());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
PaulstretchpluginAudioProcessorEditor::~PaulstretchpluginAudioProcessorEditor()
 | 
			
		||||
@@ -303,6 +323,24 @@ void PaulstretchpluginAudioProcessorEditor::executeModalMenuAction(int menuid, i
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void PaulstretchpluginAudioProcessorEditor::selectionChanged()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void PaulstretchpluginAudioProcessorEditor::fileClicked(const File & file, const MouseEvent & e)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void PaulstretchpluginAudioProcessorEditor::fileDoubleClicked(const File & file)
 | 
			
		||||
{
 | 
			
		||||
	processor.setAudioFile(file);
 | 
			
		||||
	processor.m_propsfile->m_props_file->setValue("importfilefolder", file.getParentDirectory().getFullPathName());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void PaulstretchpluginAudioProcessorEditor::browserRootChanged(const File & newRoot)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void PaulstretchpluginAudioProcessorEditor::paint (Graphics& g)
 | 
			
		||||
{
 | 
			
		||||
	g.fillAll(Colours::darkgrey);
 | 
			
		||||
@@ -512,39 +550,10 @@ bool PaulstretchpluginAudioProcessorEditor::keyPressed(const KeyPress & press)
 | 
			
		||||
{
 | 
			
		||||
	std::function<bool(void)> action;
 | 
			
		||||
	if (press == 'I')
 | 
			
		||||
		action = [this]() { chooseFile(); return true; };
 | 
			
		||||
		action = [this]() { m_import_button.onClick(); ; return true; };
 | 
			
		||||
	return action && action();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void PaulstretchpluginAudioProcessorEditor::chooseFile()
 | 
			
		||||
{
 | 
			
		||||
	String initiallocfn = processor.m_propsfile->m_props_file->getValue("importfilefolder",
 | 
			
		||||
                                                File::getSpecialLocation(File::userHomeDirectory).getFullPathName());
 | 
			
		||||
    File initialloc(initiallocfn);
 | 
			
		||||
	String filterstring = processor.m_afm->getWildcardForAllFormats();
 | 
			
		||||
	//auto prevcomp = std::make_unique<AudioFilePreviewComponent>(&processor);
 | 
			
		||||
	//processor.setAudioPreview(prevcomp.get());
 | 
			
		||||
	m_filechooser = std::make_unique<FileChooser>("Please select audio file...",
 | 
			
		||||
		initialloc,
 | 
			
		||||
		filterstring,true,false,this);
 | 
			
		||||
	m_filechooser->launchAsync(0, processor.m_filechoose_callback);
 | 
			
		||||
	return;
 | 
			
		||||
		//if (m_filechooser->launchAsync(0,processor.m_filechoose_callback))
 | 
			
		||||
	{
 | 
			
		||||
        File resu = m_filechooser->getResult();
 | 
			
		||||
        String pathname = resu.getFullPathName();
 | 
			
		||||
        if (pathname.startsWith("/localhost"))
 | 
			
		||||
        {
 | 
			
		||||
            pathname = pathname.substring(10);
 | 
			
		||||
            resu = File(pathname);
 | 
			
		||||
        }
 | 
			
		||||
        processor.m_propsfile->m_props_file->setValue("importfilefolder", resu.getParentDirectory().getFullPathName());
 | 
			
		||||
        m_last_err = processor.setAudioFile(resu);
 | 
			
		||||
	}
 | 
			
		||||
	//processor.setAudioPreview(nullptr);
 | 
			
		||||
	//toFront(true);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void PaulstretchpluginAudioProcessorEditor::showSettingsMenu()
 | 
			
		||||
{
 | 
			
		||||
    PopupMenu m_settings_menu;
 | 
			
		||||
 
 | 
			
		||||
@@ -417,7 +417,7 @@ private:
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class PaulstretchpluginAudioProcessorEditor  : public AudioProcessorEditor, 
 | 
			
		||||
	public MultiTimer, public FileDragAndDropTarget, public DragAndDropContainer
 | 
			
		||||
	public MultiTimer, public FileDragAndDropTarget, public DragAndDropContainer, public FileBrowserListener
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    PaulstretchpluginAudioProcessorEditor (PaulstretchpluginAudioProcessor&);
 | 
			
		||||
@@ -432,11 +432,21 @@ public:
 | 
			
		||||
	bool keyPressed(const KeyPress& press) override;
 | 
			
		||||
 | 
			
		||||
	WaveformComponent m_wavecomponent;
 | 
			
		||||
	void chooseFile();
 | 
			
		||||
	
 | 
			
		||||
	void showRenderDialog();
 | 
			
		||||
	void executeModalMenuAction(int menuid, int actionid);
 | 
			
		||||
	SimpleFFTComponent m_sonogram;
 | 
			
		||||
	String m_last_err;
 | 
			
		||||
	void selectionChanged() override;
 | 
			
		||||
 | 
			
		||||
	/** Callback when the user clicks on a file in the browser. */
 | 
			
		||||
	void fileClicked(const File& file, const MouseEvent& e) override;
 | 
			
		||||
 | 
			
		||||
	/** Callback when the user double-clicks on a file in the browser. */
 | 
			
		||||
	void fileDoubleClicked(const File& file) override;
 | 
			
		||||
 | 
			
		||||
	/** Callback when the browser's root folder changes. */
 | 
			
		||||
	void browserRootChanged(const File& newRoot) override;
 | 
			
		||||
private:
 | 
			
		||||
	PaulstretchpluginAudioProcessor& processor;
 | 
			
		||||
	uptrvec<ParameterComponent> m_parcomps;
 | 
			
		||||
@@ -460,7 +470,8 @@ private:
 | 
			
		||||
	void showAbout();
 | 
			
		||||
	std::vector<int> m_capturelens{ 2,5,10,30,60,120 };
 | 
			
		||||
	
 | 
			
		||||
	std::unique_ptr<FileChooser> m_filechooser;
 | 
			
		||||
	std::unique_ptr<FileBrowserComponent> m_filechooser;
 | 
			
		||||
	WildcardFileFilter m_filefilter;
 | 
			
		||||
	JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PaulstretchpluginAudioProcessorEditor)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user