Exemplo n.º 1
0
void CabbageProjectWindow::createNewFile (String type)
{

    FileChooser fc ("Select file name and location", File::getSpecialLocation (File::SpecialLocationType::userHomeDirectory), "", CabbageUtilities::shouldUseNativeBrowser());

    if (fc.browseForFileToSave (false))
    {
        String csdText;

        if (type == "newCsound")
            csdText = CabbageStrings::getNewCsoundFileText();
        else if (type == "newEffect")
            csdText = CabbageStrings::getNewCabbageEffectFileText();
        else
            csdText = CabbageStrings::getNewCabbageInstrumentFileText();

        if (fc.getResult().existsAsFile())
        {
            CabbageIDELookAndFeel lookAndFeel;
            const int result = CabbageUtilities::showYesNoMessage ("Do you wish to overwrite\nexiting file?", &lookAndFeel);

            if (result == 1)
            {
                writeNewFile (fc.getResult().withFileExtension (".csd"), csdText);
            }
        }
        else
        {
            writeNewFile (fc.getResult().withFileExtension (".csd"), csdText);
        }
    }
}
void HostFilterComponent::handleSaveCommand(bool saveToExistingFileAndDontPrompt)
{
   File tmp = currentSessionFile;
   
   bool userConfirmed = true;
   if (!saveToExistingFileAndDontPrompt || !tmp.exists())
   {
      FileChooser myChooser (T("Save Session..."),
                              currentSessionFile.exists() ? tmp : Config::getInstance ()->lastSessionDirectory,
                              JOST_SESSION_WILDCARD,
                              JOST_USE_NATIVE_FILE_CHOOSER);

      if (myChooser.browseForFileToSave (true))
         tmp = myChooser.getResult().withFileExtension (JOST_SESSION_EXTENSION);
      else
         userConfirmed = false;      
   }
   
   if (userConfirmed && (tmp != File::nonexistent))
   {
      MemoryBlock fileData;
      getFilter ()->getStateInformation (fileData);

      if (tmp.replaceWithData (fileData.getData (), fileData.getSize()))
      {
         Config::getInstance()->addRecentSession (tmp);
         setCurrentSessionFile(tmp);
         Config::getInstance()->lastSessionFile = tmp;
      }
   }
}
Exemplo n.º 3
0
void PresetPanel::buttonClicked(Button *btn)
{
    // load setlist manually using file dialog
    // TODO: drop-n-drag for setlist?
    if(btn == &loadSetlistBtn)
    {
        FileChooser myChooser ("Please choose a setlist to load:", File::getSpecialLocation(File::userDesktopDirectory), "*.xml");

        // popup dialog to open setlist
        if(myChooser.browseForFileToOpen())
        {	
            // if sucessful, try load this setlist
            File newSetlist = myChooser.getResult();
            processor->loadXmlSetlist(newSetlist);
        }
    }

    else if(btn == &saveSetlistBtn)
    {
        FileChooser myChooser ("Save this setlist:", File::getSpecialLocation(File::userDesktopDirectory), "*.xml");

        // popup dialog to open setlist
        if(myChooser.browseForFileToSave(true))
        {	
            // if sucessful, try save this setlist
            File newSetlist = myChooser.getResult();
            processor->saveXmlSetlist(newSetlist);
        }
    }
}
Exemplo n.º 4
0
void VstPluginWindow::savePreset ()
{
    File lastPresetDirectory = File (plugin->getValue (PROP_PLUGPRESETDIR, String::empty));
    if (! lastPresetDirectory.exists())
        lastPresetDirectory = Config::getInstance ()->lastPresetDirectory;

    FileChooser myChooser (T("Save a preset file..."),
                           lastPresetDirectory,
                           JOST_PRESET_WILDCARD, JOST_USE_NATIVE_FILE_CHOOSER);

    if (myChooser.browseForFileToSave (true))
    {
        File fileToSave = myChooser.getResult().withFileExtension (JOST_PRESET_EXTENSION);

        XmlElement xml (JOST_PRESET_PRESETTAG);
        plugin->savePresetToXml (&xml);

        if (fileToSave.replaceWithText (xml.createDocument (String::empty)))
        {
            Config::getInstance()->addRecentPreset (fileToSave);

            plugin->setValue (PROP_PLUGPRESETDIR, fileToSave.getParentDirectory().getFullPathName());
        }
    }
}
Exemplo n.º 5
0
void DexedAudioProcessorEditor::saveCart() {
    File startFileName = processor->activeFileCartridge.exists() ? processor->activeFileCartridge : processor->dexedCartDir;

    FileChooser fc ("Export DX sysex...", processor->dexedCartDir, "*.syx", 1);
    if ( fc.browseForFileToSave(true) ) {
        if ( ! processor->currentCart.saveVoice(fc.getResults().getReference(0)) ) {
            AlertWindow::showMessageBoxAsync (AlertWindow::WarningIcon,
                                              "Error",
                                              "Unable to write: " + fc.getResults().getReference(0).getFullPathName());
        }
    }
}
FileBasedDocument::SaveResult FileBasedDocument::saveAsInteractive (const bool warnAboutOverwritingExistingFiles)
{
    File f;

    if (documentFile.existsAsFile())
        f = documentFile;
    else
        f = getLastDocumentOpened();

    String legalFilename (File::createLegalFileName (getDocumentTitle()));

    if (legalFilename.isEmpty())
        legalFilename = "unnamed";

    if (f.existsAsFile() || f.getParentDirectory().isDirectory())
        f = f.getSiblingFile (legalFilename);
    else
        f = File::getSpecialLocation (File::userDocumentsDirectory).getChildFile (legalFilename);

    f = getSuggestedSaveAsFile (f);

    FileChooser fc (saveFileDialogTitle, f, fileWildcard);

    if (fc.browseForFileToSave (warnAboutOverwritingExistingFiles))
    {
        File chosen (fc.getResult());
        if (chosen.getFileExtension().isEmpty())
        {
            chosen = chosen.withFileExtension (fileExtension);

            if (chosen.exists())
            {
                if (! AlertWindow::showOkCancelBox (AlertWindow::WarningIcon,
                                                    TRANS("File already exists"),
                                                    TRANS("There's already a file called:")
                                                      + "\n\n" + chosen.getFullPathName()
                                                      + "\n\n" + TRANS("Are you sure you want to overwrite it?"),
                                                    TRANS("overwrite"),
                                                    TRANS("cancel")))
                {
                    return userCancelledSave;
                }
            }
        }

        setLastDocumentOpened (chosen);
        return saveAs (chosen, false, false, true);
    }

    return userCancelledSave;
}
Exemplo n.º 7
0
File NewFileWizard::Type::askUserToChooseNewFile (const String& suggestedFilename, const String& wildcard,
                                                  const Project::Item& projectGroupToAddTo)
{
    FileChooser fc ("Select File to Create",
                    projectGroupToAddTo.determineGroupFolder()
                                       .getChildFile (suggestedFilename)
                                       .getNonexistentSibling(),
                    wildcard);

    if (fc.browseForFileToSave (true))
        return fc.getResult();

    return File::nonexistent;
}
Exemplo n.º 8
0
        void saveScheme()
        {
            FileChooser fc ("Select a file in which to save this colour-scheme...",
                            getAppSettings().appearance.getSchemesFolder()
                                .getNonexistentChildFile ("Scheme", AppearanceSettings::getSchemeFileSuffix()),
                            AppearanceSettings::getSchemeFileWildCard());

            if (fc.browseForFileToSave (true))
            {
                File file (fc.getResult().withFileExtension (AppearanceSettings::getSchemeFileSuffix()));
                getAppSettings().appearance.writeToFile (file);
                getAppSettings().appearance.refreshPresetSchemeList();
            }
        }
Exemplo n.º 9
0
void FilenameComponent::buttonClicked (Button*)
{
   #if JUCE_MODAL_LOOPS_PERMITTED
    FileChooser fc (isDir ? TRANS ("Choose a new directory")
                          : TRANS ("Choose a new file"),
                    getLocationToBrowse(),
                    wildcard);

    if (isDir ? fc.browseForDirectory()
              : (isSaving ? fc.browseForFileToSave (false)
                          : fc.browseForFileToOpen()))
    {
        setCurrentFile (fc.getResult(), true);
    }
   #else
    jassertfalse; // needs rewriting to deal with non-modal environments
   #endif
}
void CtrlrEditor::performKeyGenerator()
{
    CtrlrKeyGenerator generator;
    generator.runThread ();
    if (generator.waitForThreadToExit (60 * 1000))
    {
        FileChooser fc ("RSA Key file name", File::getSpecialLocation (File::userHomeDirectory), "*.*", true);
        if (fc.browseForFileToSave(true))
        {
            File privateKeyFile = fc.getResult().withFileExtension("private");
            File publicKeyFile  = fc.getResult().withFileExtension("public");

            if (privateKeyFile.hasWriteAccess() && publicKeyFile.hasWriteAccess())
            {
                privateKeyFile.replaceWithText (generator.privateKey.toString());
                publicKeyFile.replaceWithText (generator.publicKey.toString());
            }
        }
    }
}
Exemplo n.º 11
0
void DexedAudioProcessorEditor::saveCart() {
    File startFileName = processor->activeFileCartridge.exists() ? processor->activeFileCartridge : processor->dexedCartDir;

    FileChooser fc ("Export DX sysex...", processor->dexedCartDir, "*.syx", 1);
    if ( fc.browseForFileToSave(true) ) {
        String f = fc.getResults().getReference(0).getFullPathName();
        char syx_data[4104];
        
        exportSysexCart((char *) syx_data, (char *) &processor->sysex, 0);
        
        ofstream fp_out(f.toRawUTF8(), ios::binary);
        fp_out.write((char *)syx_data, 4104);
        fp_out.close();
        
        if (fp_out.fail()) {
            AlertWindow::showMessageBoxAsync (AlertWindow::WarningIcon,
                                              "Error",
                                              "Unable to write: " + f);
        }
    }
}
Exemplo n.º 12
0
bool TextBuffer::saveFileAs(File defaultfile)
{
  if (defaultfile==File::nonexistent)
    if (file.existsAsFile())
      defaultfile=file.getParentDirectory();
    else
      defaultfile=File::getCurrentWorkingDirectory();
  FileChooser choose (T("Save File As"), defaultfile, T("*.*"), true);
  if (choose.browseForFileToSave(true))
    {
      File sav=choose.getResult();
      sav.replaceWithText(getText());
      file=sav;
      clearFlag(EditFlags::NeedsSave);
      updateWindowTitle();
      Preferences::getInstance()->recentlyOpened.addFile(sav);
      return true;
    }
  else
    return false;
}
//==============================================================================
void StandaloneFilterWindow::saveState()
{
    PropertySet* const globalSettings = getGlobalSettings();

    FileChooser fc (TRANS("Save current state"),
                    globalSettings != 0 ? File (globalSettings->getValue (T("lastStateFile")))
                                        : File::nonexistent);

    if (fc.browseForFileToSave (true))
    {
        JUCE_NAMESPACE::MemoryBlock data;
        filter->getStateInformation (data);

        if (! fc.getResult().replaceWithData (data.getData(), data.getSize()))
        {
            AlertWindow::showMessageBox (AlertWindow::WarningIcon,
                                         TRANS("Error whilst saving"),
                                         TRANS("Couldn't write to the specified file!"));
        }
    }
}
FileBasedDocument::SaveResult FileBasedDocument::saveAsInteractive (const bool warnAboutOverwritingExistingFiles)
{
    File f;

    if (documentFile.existsAsFile())
        f = documentFile;
    else
        f = getLastDocumentOpened();

    String legalFilename (File::createLegalFileName (getDocumentTitle()));

    if (legalFilename.isEmpty())
        legalFilename = "unnamed";

    if (f.existsAsFile() || f.getParentDirectory().isDirectory())
        f = f.getSiblingFile (legalFilename);
    else
        f = File::getSpecialLocation (File::userDocumentsDirectory).getChildFile (legalFilename);

    f = getSuggestedSaveAsFile (f);

    FileChooser fc (saveFileDialogTitle, f, fileWildcard);

    if (fc.browseForFileToSave (warnAboutOverwritingExistingFiles))
    {
        File chosen (fc.getResult());
        if (chosen.getFileExtension().isEmpty())
        {
            chosen = chosen.withFileExtension (fileExtension);

            if (chosen.exists() && ! askToOverwriteFile (chosen))
                return userCancelledSave;
        }

        setLastDocumentOpened (chosen);
        return saveAs (chosen, false, false, true);
    }

    return userCancelledSave;
}
Exemplo n.º 15
0
    void showWindow (Component& button, DialogType type)
    {
        if (type >= plainAlertWindow && type <= questionAlertWindow)
        {
            AlertWindow::AlertIconType icon = AlertWindow::NoIcon;

            switch (type)
            {
                case warningAlertWindow:    icon = AlertWindow::WarningIcon;    break;
                case infoAlertWindow:       icon = AlertWindow::InfoIcon;       break;
                case questionAlertWindow:   icon = AlertWindow::QuestionIcon;   break;
                default: break;
            }

            AlertWindow::showMessageBoxAsync (icon,
                                              "This is an AlertWindow",
                                              "And this is the AlertWindow's message. Blah blah blah blah blah blah blah blah blah blah blah blah blah.",
                                              "ok");
        }
        else if (type == okCancelAlertWindow)
        {
            AlertWindow::showOkCancelBox (AlertWindow::QuestionIcon,
                                          "This is an ok/cancel AlertWindow",
                                          "And this is the AlertWindow's message. Blah blah blah blah blah blah blah blah blah blah blah blah blah.",
                                          String::empty,
                                          String::empty,
                                          0,
                                          ModalCallbackFunction::forComponent (alertBoxResultChosen, this));
        }
        else if (type == calloutBoxWindow)
        {
            ColourSelector* colourSelector = new ColourSelector();
            colourSelector->setName ("background");
            colourSelector->setCurrentColour (findColour (TextButton::buttonColourId));
            colourSelector->setColour (ColourSelector::backgroundColourId, Colours::transparentBlack);
            colourSelector->setSize (300, 400);

            CallOutBox::launchAsynchronously (colourSelector, button.getScreenBounds(), nullptr);
        }
        else if (type == extraComponentsAlertWindow)
        {
           #if JUCE_MODAL_LOOPS_PERMITTED
            AlertWindow w ("AlertWindow demo..",
                           "This AlertWindow has a couple of extra components added to show how to add drop-down lists and text entry boxes.",
                           AlertWindow::QuestionIcon);

            w.addTextEditor ("text", "enter some text here", "text field:");

            const char* options[] = { "option 1", "option 2", "option 3", "option 4", nullptr };
            w.addComboBox ("option", StringArray (options), "some options");

            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'
            {
                // this is the item they chose in the drop-down list..
                const int optionIndexChosen = w.getComboBoxComponent ("option")->getSelectedItemIndex();
                (void) optionIndexChosen; // (just avoids a compiler warning about unused variables)


                // this is the text they entered..
                String text = w.getTextEditorContents ("text");
            }
           #endif
        }
        else if (type == progressWindow)
        {
            // This will launch our ThreadWithProgressWindow in a modal state. (Our subclass
            // will take care of deleting the object when the task has finished)
            (new DemoBackgroundThread())->launchThread();
        }
        else if (type >= loadChooser && type <= saveChooser)
        {
           #if JUCE_MODAL_LOOPS_PERMITTED
            const bool useNativeVersion = nativeButton.getToggleState();

            if (type == loadChooser)
            {
                FileChooser fc ("Choose a file to open...",
                                File::getCurrentWorkingDirectory(),
                                "*",
                                useNativeVersion);

                if (fc.browseForMultipleFilesToOpen())
                {
                    String chosen;
                    for (int i = 0; i < fc.getResults().size(); ++i)
                        chosen << fc.getResults().getReference(i).getFullPathName() << "\n";

                    AlertWindow::showMessageBoxAsync (AlertWindow::InfoIcon,
                                                      "File Chooser...",
                                                      "You picked: " + chosen);
                }
            }
            else if (type == loadWithPreviewChooser)
            {
                ImagePreviewComponent imagePreview;
                imagePreview.setSize (200, 200);

                FileChooser fc ("Choose an image to open...",
                                File::getSpecialLocation (File::userPicturesDirectory),
                                "*.jpg;*.jpeg;*.png;*.gif",
                                useNativeVersion);

                if (fc.browseForMultipleFilesToOpen (&imagePreview))
                {
                    String chosen;
                    for (int i = 0; i < fc.getResults().size(); ++i)
                        chosen << fc.getResults().getReference (i).getFullPathName() << "\n";

                    AlertWindow::showMessageBoxAsync (AlertWindow::InfoIcon,
                                                      "File Chooser...",
                                                      "You picked: " + chosen);
                }
            }
            else if (type == saveChooser)
            {
                FileChooser fc ("Choose a file to save...",
                                File::getCurrentWorkingDirectory(),
                                "*",
                                useNativeVersion);

                if (fc.browseForFileToSave (true))
                {
                    File chosenFile = fc.getResult();

                    AlertWindow::showMessageBoxAsync (AlertWindow::InfoIcon,
                                                      "File Chooser...",
                                                      "You picked: " + chosenFile.getFullPathName());
                }
            }
            else if (type == directoryChooser)
            {
                FileChooser fc ("Choose a directory...",
                                File::getCurrentWorkingDirectory(),
                                "*",
                                useNativeVersion);

                if (fc.browseForDirectory())
                {
                    File chosenDirectory = fc.getResult();

                    AlertWindow::showMessageBoxAsync (AlertWindow::InfoIcon,
                                                      "File Chooser...",
                                                      "You picked: " + chosenDirectory.getFullPathName());
                }
            }
           #endif
        }
    }
Exemplo n.º 16
0
void MainComponent::buttonClicked (Button* buttonThatWasClicked)
{
    //[UserbuttonClicked_Pre]
    //[/UserbuttonClicked_Pre]

    if (buttonThatWasClicked == inputFileBrowse)
    {
        //[UserButtonCode_inputFileBrowse] -- add your button handler code here..
		FileChooser myChooser ("Choose a file to encode", File::getSpecialLocation (File::userDesktopDirectory), "*.*");

		if (myChooser.browseForFileToOpen())
        {
            inputFile = myChooser.getResult();
			inputFilePath->setText (inputFile.getFullPathName(), false);

			if (outputFilePath->getText().isEmpty())
			{
				outputFile = inputFile.withFileExtension(T("b64"));
				outputFilePath->setText (inputFile.withFileExtension(T("b64")).getFullPathName(), false);
			}
        }
        //[/UserButtonCode_inputFileBrowse]
    }
    else if (buttonThatWasClicked == encodeStart)
    {
        //[UserButtonCode_encodeStart] -- add your button handler code here..
		encoderOutput->clear();

		encoderThread = new EncoderThread (inputFile, writeToFileBtn->getToggleState(), outputFile, true, outputAsXmlBtn->getToggleState(), xmlElementName->getText());
		encoderThread->addChangeListener (this);
		encoderThread->runThread();
        //[/UserButtonCode_encodeStart]
    }
    else if (buttonThatWasClicked == writeToFileBtn)
    {
        //[UserButtonCode_writeToFileBtn] -- add your button handler code here..
        //[/UserButtonCode_writeToFileBtn]
    }
    else if (buttonThatWasClicked == outputFileBrowse)
    {
        //[UserButtonCode_outputFileBrowse] -- add your button handler code here..
		FileChooser myChooser ("Choose an output file", File::getSpecialLocation (File::userDesktopDirectory), "*.*");

		if (myChooser.browseForFileToSave (true))
        {
            outputFile = myChooser.getResult();
			outputFilePath->setText (outputFile.getFullPathName(), false);
        }
        //[/UserButtonCode_outputFileBrowse]
    }
    else if (buttonThatWasClicked == outputAsXmlBtn)
    {
        //[UserButtonCode_outputAsXmlBtn] -- add your button handler code here..
		if (outputAsXmlBtn->getToggleState())
		{
			xmlElementName->setEnabled (true);
		}
		else
		{
			xmlElementName->setEnabled (false);
		}
        //[/UserButtonCode_outputAsXmlBtn]
    }

    //[UserbuttonClicked_Post]
    //[/UserbuttonClicked_Post]
}
Exemplo n.º 17
0
//===============================================================================
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();
}
Exemplo n.º 18
0
void MLPluginController::doPresetMenu(int result)
{
    switch(result)
	{
		// do another menu command
		case (0):	// dismiss
		break;
		case (1):	// save as version in current dir
			if(getProcessor()->saveStateAsVersion() != MLProc::OK) 
			{
				AlertWindow::showMessageBox (AlertWindow::NoIcon,
					String::empty,
					"",
					"OK");
			}
		break;
            
		case (2):	// save over previous
			if(getProcessor()->saveStateOverPrevious() != MLProc::OK)
			{
				AlertWindow::showMessageBox (AlertWindow::NoIcon,
					String::empty,
					"",
					"OK");
			}
		break;
            
		case (3):	// save as ...
		{
            String errStr;
            File userPresetsFolder = getDefaultFileLocation(kPresetFiles);
            if (userPresetsFolder != File::nonexistent)
            {
                bool nativeChooserUI = true;
                FileChooser fc ("Save preset as...", userPresetsFolder, String::empty, nativeChooserUI);
                if (fc.browseForFileToSave (true))
                {
                    File saveFile = fc.getResult();
					std::string fullSavePath(saveFile.getFullPathName().toUTF8());
                    getProcessor()->saveStateToLongFileName(fullSavePath);
                }
            }
            else
            {
                errStr = ("Error: user presets folder did not exist and could not be created.");
                AlertWindow::showMessageBox (AlertWindow::NoIcon, String::empty, errStr, "OK");
            }
		}
		break;
		case (4):	// revert
			getProcessor()->returnToLatestStateLoaded();
		break;

		case (5):	// copy
			SystemClipboard::copyTextToClipboard (getProcessor()->getStateAsText());
		break;
		case (6):	// paste
			getProcessor()->setPatchStateFromText (SystemClipboard::getTextFromClipboard());
		break;

#if SHOW_CONVERT_PRESETS
#if ML_MAC
		case (7):	// show convert alert box
			convertPresets();
			getProcessor()->scanAllFilesImmediate();
		break;
#endif
#endif
        default:    // load preset
            loadPresetByMenuIndex(result);
            break;
	}
}
Exemplo n.º 19
0
void BigClockEditor::buttonStateChanged (Button* buttonThatWasClicked) {
    if (buttonThatWasClicked->isDown()) {
        ModifierKeys mousebutton = ModifierKeys::getCurrentModifiers();
        if (mousebutton.isPopupMenu()) {
            bool samplemode = getFilter()->getParameter(kSamples)>=0.5f;
            PopupMenu m, sub1,sub2,sub3,sub4,clockmode;
            sub1.addCustomItem (-1, colourSelector, 300, 300, false);
            m.addSubMenu (L"Color", sub1);
            m.addSeparator();
			clockmode.addItem(100,"Host Timeline",true,getFilter()->mode == HostTimeMode);
			clockmode.addItem(101,"Recording Time",true,getFilter()->mode == RecTimeMode);
			clockmode.addItem(102,"Stopwatch",true,getFilter()->mode == StopwatchMode);
			clockmode.addItem(103,"Plugin Time",true,getFilter()->mode == PluginTimeMode);
			clockmode.addItem(104,"Actual Time",true,getFilter()->mode == ActualTimeMode);
			m.addSubMenu("Clock Mode",clockmode);
			m.addItem(120,"Reset",getFilter()->mode != HostTimeMode && getFilter()->mode != ActualTimeMode);
            m.addSeparator();
            sub4.addItem(998,L"Show Cues",true,showtextbox);
            sub4.addItem(996,L"Import...");
            sub4.addItem(997,L"Export...",getFilter()->cues.size()>0);
            sub4.addItem(999,L"Clear",getFilter()->cues.size()>0);
            for (int i=0;i<getFilter()->cues.size();i++) {
                sub4.addItem(1000+i,
                    getFilter()->ppqToString(getFilter()->cues[i]->ppq,
                                             getFilter()->lastPosInfo.timeSigNumerator,
                                             getFilter()->lastPosInfo.timeSigDenominator,
                                             getFilter()->lastPosInfo.bpm,barsbeats) 
                    + " - " + getFilter()->cues[i]->text,true,getFilter()->cues[i]->enabled);
            }
            m.addSubMenu (L"Cues", sub4, getFilter()->mode==HostTimeMode);
            m.addSeparator();
            m.addItem (3, L"Bars|Beats|Ticks", true, barsbeats && !samplemode);
            float ppqn = getFilter()->getParameter(kTicks);
            sub2.addItem(30,L"hide ticks",true,ppqn==1.0);
            sub2.addItem(31,L"4",true,ppqn<1.0 && ppqn>=0.9);
            sub2.addItem(32,L"16",true,ppqn<0.9 && ppqn>=0.8);
            sub2.addItem(33,L"48",true,ppqn<0.8 && ppqn>=0.7);
            sub2.addItem(34,L"96",true,ppqn<0.7 && ppqn>=0.65);
            sub2.addItem(35,L"100",true,ppqn<0.65 && ppqn>=0.6);
            sub2.addItem(36,L"120",true,ppqn<0.6 && ppqn>=0.5);
            sub2.addItem(37,L"192",true,ppqn<0.5 && ppqn>=0.4);
            sub2.addItem(38,L"240",true,ppqn<0.4 && ppqn>=0.3);
            sub2.addItem(39,L"384",true,ppqn<0.3 && ppqn>=0.2);
            sub2.addItem(40,L"480",true,ppqn<0.2 && ppqn>=0.1);
            sub2.addItem(41,L"768",true,ppqn<0.1 && ppqn>0.0);
            sub2.addItem(42,L"960",true,ppqn==0.0);
            m.addSubMenu (L"Ticks per beat", sub2,barsbeats && !samplemode);
            m.addSeparator();
            m.addItem (4, L"Hour:Min:Sec", true, !barsbeats && !samplemode);
            float fps = getFilter()->getParameter(kFrames);
            sub3.addItem(50,L"ms (1000)",true,fps==0.0);
            sub3.addItem(51,L"120",true,fps==1.0);
            sub3.addItem(52,L"100",true,fps<1.0 && fps>=0.9);
            sub3.addItem(53,L"75",true,fps<0.9 && fps>=0.8);
            sub3.addItem(54,L"60",true,fps<0.8 && fps>=0.7);
            sub3.addItem(55,L"50",true,fps<0.7 && fps>=0.6);
            sub3.addItem(56,L"30",true,fps<0.6 && fps>=0.5);
            sub3.addItem(61,L"29.97 drop",true,fps<0.5 && fps>=0.4);
            sub3.addItem(57,L"25",true,fps<0.4 && fps>=0.3);
            sub3.addItem(58,L"24",true,fps<0.3 && fps>=0.2);
            sub3.addItem(59,L"15",true,fps<0.2 && fps>=0.1);
            sub3.addItem(60,L"10",true,fps<0.1 && fps>0.0);
            m.addSubMenu (L"Frames per second", sub3, !barsbeats && !samplemode);
            m.addItem (1, L"Show ms/frames", !barsbeats && !samplemode, getFilter()->getParameter(kShowms)>=0.5);
            m.addItem (6, L"Show subframes", !barsbeats && !samplemode && getFilter()->getParameter(kShowms)>=0.5, getFilter()->getParameter(kShowsubfr)>=0.5);
            m.addItem (2, L"Show hours", !barsbeats && !samplemode, getFilter()->getParameter(kShowhrs)>=0.5);
            m.addSeparator();
            m.addItem (5, L"Samples", true, samplemode);
            int result = m.show();
            if (result > 0)
            {
                if (result==1) {
                    if (getFilter()->getParameter(kShowms)>=0.5) getFilter()->setParameter(kShowms,0.0);
                    else getFilter()->setParameter(kShowms,1.0);
                }
                else if (result==2) {
                    if (getFilter()->getParameter(kShowhrs)>=0.5f) getFilter()->setParameter(kShowhrs,0.0f);
                    else getFilter()->setParameter(kShowhrs,1.0f);
                }
                else if (result==3) {
                    if (barsbeats && !samplemode) { }
                    else {
                        getFilter()->setParameter(kBarsBeats,1.0f);
                        getFilter()->setParameter(kSamples,0.0f);
                    }
                }
                else if (result>=30 && result<50) {
                    if (result==30) getFilter()->setParameter(kTicks,1.0f);
                    else if (result==31) getFilter()->setParameter(kTicks,0.91f);
                    else if (result==32) getFilter()->setParameter(kTicks,0.81f);
                    else if (result==33) getFilter()->setParameter(kTicks,0.71f);
                    else if (result==34) getFilter()->setParameter(kTicks,0.65f);
                    else if (result==35) getFilter()->setParameter(kTicks,0.61f);
                    else if (result==36) getFilter()->setParameter(kTicks,0.51f);
                    else if (result==37) getFilter()->setParameter(kTicks,0.41f);
                    else if (result==38) getFilter()->setParameter(kTicks,0.31f);
                    else if (result==39) getFilter()->setParameter(kTicks,0.21f);
                    else if (result==40) getFilter()->setParameter(kTicks,0.11f);
                    else if (result==41) getFilter()->setParameter(kTicks,0.051f);
                    else if (result==42) getFilter()->setParameter(kTicks,0.0f);
                }
                else if (result==4) {
                    if (!barsbeats && !samplemode) { }
                    else {
                        getFilter()->setParameter(kBarsBeats,0.0f);
                        getFilter()->setParameter(kSamples,0.0f);
                    }
                }
                else if (result>=50 && result<70) {
                    if (result==50) getFilter()->setParameter(kFrames,0.0f);
                    else if (result==51) getFilter()->setParameter(kFrames,1.0f);
                    else if (result==52) getFilter()->setParameter(kFrames,0.9f);
                    else if (result==53) getFilter()->setParameter(kFrames,0.8f);
                    else if (result==54) getFilter()->setParameter(kFrames,0.7f);
                    else if (result==55) getFilter()->setParameter(kFrames,0.6f);
                    else if (result==56) getFilter()->setParameter(kFrames,0.5f);
                    else if (result==61) getFilter()->setParameter(kFrames,0.4f);
                    else if (result==57) getFilter()->setParameter(kFrames,0.3f);
                    else if (result==58) getFilter()->setParameter(kFrames,0.2f);
                    else if (result==59) getFilter()->setParameter(kFrames,0.1f);
                    else if (result==60) getFilter()->setParameter(kFrames,0.05f);
                }
                else if (result==5) {
                    if (!samplemode) getFilter()->setParameter(kSamples,1.0f);
                }
                else if (result==6) {
                    getFilter()->setParameter(kShowsubfr,getFilter()->getParameter(kShowsubfr)>=0.5f?0.0f:1.0f);
                }

				else if (result==100)
				{
					getFilter()->setParameter(kClockMode,0.f);
				}
				else if (result==101)
				{
					getFilter()->setParameter(kClockMode,1.f/(float)(numModes-1));
				}
				else if (result==102)
				{
					getFilter()->setParameter(kClockMode,2.f/(float)(numModes-1));
				}
				else if (result==103)
				{
					getFilter()->setParameter(kClockMode,3.f/(float)(numModes-1));
				}
				else if (result==104)
				{
					getFilter()->setParameter(kClockMode,4.f/(float)(numModes-1));
				}
				else if (result==120) {
					if (getFilter()->mode==StopwatchMode)
						getFilter()->setParameter(kClearWatch,1.f);
					else if (getFilter()->mode==RecTimeMode)
						getFilter()->rectime=0;
					else if (getFilter()->mode==PluginTimeMode)
						getFilter()->plugintime=Time::getMillisecondCounter();
				}

                else if (result==998) {
                    getFilter()->showcues=!showtextbox;
                    updateParametersFromFilter();
                    resized();
                    repaint();
                }
                else if (result==996) {
                    FileChooser myChooser ("Import cue file...",
                                           File(getFilter()->getCurrentPath()),
                                           "*.xml");

                    if (myChooser.browseForFileToOpen())
                    {
                        File file (myChooser.getResult());
                        getFilter()->loadCues(file);
                    }
                }
                else if (result==997) {
                    FileChooser myChooser ("Export cue file...",
                        File(getFilter()->getCurrentPath() + File::separatorString + "cues.xml"));

                    if (myChooser.browseForFileToSave(true))
                    {
                        File cuefile (myChooser.getResult());
                        if (!cuefile.hasFileExtension("xml")) cuefile = cuefile.withFileExtension("xml");

                        getFilter()->saveCues(cuefile);
                    }

                }
                else if (result==999) {
                    getFilter()->cues.clear();
                    cueLabel->setText(String::empty,false);
                }
                else if (result>=1000) {
                    getFilter()->setCueEnabled(result-1000,!(getFilter()->cues[result-1000]->enabled));
                    updateParametersFromFilter();
                }
            }
        }
    }
}