//=============================================================================== void CabbageFileButton::buttonClicked (Button* button) { if (mode == "file") { const String lastKnownDirectory = owner->getLastOpenedDirectory(); FileChooser fc ("Choose File", lastKnownDirectory.isEmpty() ? File (getCsdFile()).getParentDirectory() : File (lastKnownDirectory), "", CabbageUtilities::shouldUseNativeBrowser()); if (fc.browseForFileToOpen()) { owner->sendChannelStringDataToCsound (getChannel(), returnValidPath (fc.getResult())); CabbageWidgetData::setStringProp (widgetData, CabbageIdentifierIds::file, returnValidPath (fc.getResult())); //owner->refreshComboBoxContents(); } owner->setLastOpenedDirectory (fc.getResult().getParentDirectory().getFullPathName()); } else if (mode == "save") { const String lastKnownDirectory = owner->getLastOpenedDirectory(); FileChooser fc ("Choose File", lastKnownDirectory.isEmpty() ? File (getCsdFile()).getParentDirectory() : File (lastKnownDirectory), "", CabbageUtilities::shouldUseNativeBrowser()); if (fc.browseForFileToSave(true)) { owner->sendChannelStringDataToCsound (getChannel(), returnValidPath (fc.getResult())); CabbageWidgetData::setStringProp (widgetData, CabbageIdentifierIds::file, returnValidPath (fc.getResult())); //owner->refreshComboBoxContents(); } owner->setLastOpenedDirectory (fc.getResult().getParentDirectory().getFullPathName()); owner->refreshComboListBoxContents(); startTimer(500); } else if (mode == "directory") { const String lastKnownDirectory = owner->getLastOpenedDirectory(); FileChooser fc ("Open Directory", lastKnownDirectory.isEmpty() ? File (getCsdFile()).getChildFile (getFilename()) : File (lastKnownDirectory), "", CabbageUtilities::shouldUseNativeBrowser()); if (fc.browseForDirectory()) { owner->sendChannelStringDataToCsound (getChannel(), returnValidPath (fc.getResult())); CabbageWidgetData::setStringProp (widgetData, CabbageIdentifierIds::file, returnValidPath (fc.getResult())); } owner->setLastOpenedDirectory (fc.getResult().getParentDirectory().getFullPathName()); } else if (mode == "snapshot") { String newFileName; if (owner->isAudioUnit()) newFileName = File(getCsdFile()).withFileExtension(".snaps").getFullPathName(); else newFileName = owner->createNewGenericNameForPresetFile(); owner->sendChannelStringDataToCsound (getChannel(), newFileName); owner->savePluginStateToFile (File (newFileName)); owner->refreshComboListBoxContents(); } else if (mode == "named snapshot") { String newFileName; if (owner->isAudioUnit()) newFileName = File(getCsdFile()).withFileExtension(".snaps").getFullPathName(); else newFileName = owner->createNewGenericNameForPresetFile(); #if JUCE_MODAL_LOOPS_PERMITTED String presetname; AlertWindow w ("Preset", "Set preset name (warning, will overwrite previous preset of same name)", AlertWindow::NoIcon); w.setLookAndFeel(&getLookAndFeel()); w.setSize(100, 100); w.addTextEditor ("text", "enter name here", ""); w.addButton ("OK", 1, KeyPress (KeyPress::returnKey, 0, 0)); w.addButton ("Cancel", 0, KeyPress (KeyPress::escapeKey, 0, 0)); if (w.runModalLoop() != 0) // is they picked 'ok' { presetname = w.getTextEditorContents ("text"); } #endif owner->sendChannelStringDataToCsound (getChannel(), newFileName); owner->savePluginStateToFile (File (newFileName), presetname); owner->refreshComboListBoxContents(); } owner->getProcessor().updateHostDisplay(); }