StringPairArray mergePreprocessorDefs (StringPairArray inheritedDefs, const StringPairArray& overridingDefs) { for (int i = 0; i < overridingDefs.size(); ++i) inheritedDefs.set (overridingDefs.getAllKeys()[i], overridingDefs.getAllValues()[i]); return inheritedDefs; }
String replacePreprocessorDefs (const StringPairArray& definitions, String sourceString) { for (int i = 0; i < definitions.size(); ++i) { const String key (definitions.getAllKeys()[i]); const String value (definitions.getAllValues()[i]); sourceString = sourceString.replace ("${" + key + "}", value); } return sourceString; }
const var EnviJSONRPC::toArray (const StringPairArray &stringPairArray) { var ret = empty(false); DynamicObject *dso = ret.getDynamicObject(); for (int i=0; i<stringPairArray.size(); i++) { dso->setProperty (stringPairArray.getAllKeys() [i], stringPairArray.getAllValues() [i]); } return (ret); }
String createGCCPreprocessorFlags (const StringPairArray& defs) { String s; for (int i = 0; i < defs.size(); ++i) { String def (defs.getAllKeys()[i]); const String value (defs.getAllValues()[i]); if (value.isNotEmpty()) def << "=" << value; s += " -D" + def; } return s; }
StringPairArray ProjectExporter::BuildConfiguration::getUniquePreprocessorDefs() const { StringPairArray perConfigurationDefs (parsePreprocessorDefs (getBuildConfigPreprocessorDefsString())); const StringPairArray globalDefs (project.getPreprocessorDefs()); for (int i = 0; i < globalDefs.size(); ++i) { String globalKey = globalDefs.getAllKeys()[i]; int idx = perConfigurationDefs.getAllKeys().indexOf (globalKey); if (idx >= 0) { String globalValue = globalDefs.getAllValues()[i]; if (globalValue == perConfigurationDefs.getAllValues()[idx]) perConfigurationDefs.remove (idx); } } return perConfigurationDefs; }
void StringPairArray::addArray (const StringPairArray& other) { for (int i = 0; i < other.size(); ++i) set (other.keys[i], other.values[i]); }
size_t GameDatabase::SaveGame(const Game &game, const StringPairArray &rulesets, const StringPairArray& options, const ISerialize& stats, const bool reload) { wxString file = FilePath::Data(DataFileGames); wxString keyfile = FilePath::Data(DataFileGameKeys); // Save the game. wxFile gamedb; gamedb.Open(file, wxFile::write_append); wxFileOutputStream x(gamedb); wxDataOutputStream games(x); // Move to the end. gamedb.SeekEnd(); // Get the starting position wxUint32 pos = gamedb.Tell(); // Write out the rulesets loaded. games << (wxUint32) rulesets.size(); GameDatabase::StringPairArray::const_iterator it, itEnd = rulesets.end(); for(it = rulesets.begin(); it != itEnd; ++it) { games << it->first; games << it->second; } // options data games << (wxUint32) options.size(); itEnd = options.end(); for(it = options.begin(); it != itEnd; ++it) { games << it->first; games << it->second; } // Write out the game. game.save(games); // Stats must always go at the end so we can ignore them while loading if // desired. stats.save(games); // Close the file. gamedb.Close(); // Now update the key file. wxFile keydb; keydb.Open(keyfile, wxFile::write_append); wxFileOutputStream y(keydb); wxDataOutputStream keys(y); // Move to the end keydb.SeekEnd(); // Write the offset keys << pos; wxUint32 keyLength; keyLength = keydb.Length(); // Flush it. keydb.Close(); if(true == reload) { InitializeDatabase(); } // Calculate the number of games. size_t index = (keyLength / sizeof(size_t)) - 1; return index; }
//============================================================================== void ProjectSaver::writePluginCharacteristicsFile() { StringPairArray flags; flags.set ("JucePlugin_Build_VST", boolToString (project.shouldBuildVST())); flags.set ("JucePlugin_Build_VST3", boolToString (project.shouldBuildVST3())); flags.set ("JucePlugin_Build_AU", boolToString (project.shouldBuildAU())); flags.set ("JucePlugin_Build_AUv3", boolToString (project.shouldBuildAUv3())); flags.set ("JucePlugin_Build_RTAS", boolToString (project.shouldBuildRTAS())); flags.set ("JucePlugin_Build_AAX", boolToString (project.shouldBuildAAX())); flags.set ("JucePlugin_Build_Standalone", boolToString (project.shouldBuildStandalonePlugin())); flags.set ("JucePlugin_Build_Unity", boolToString (project.shouldBuildUnityPlugin())); flags.set ("JucePlugin_Enable_IAA", boolToString (project.shouldEnableIAA())); flags.set ("JucePlugin_Name", toStringLiteral (project.getPluginNameString())); flags.set ("JucePlugin_Desc", toStringLiteral (project.getPluginDescriptionString())); flags.set ("JucePlugin_Manufacturer", toStringLiteral (project.getPluginManufacturerString())); flags.set ("JucePlugin_ManufacturerWebsite", toStringLiteral (project.getCompanyWebsiteString())); flags.set ("JucePlugin_ManufacturerEmail", toStringLiteral (project.getCompanyEmailString())); flags.set ("JucePlugin_ManufacturerCode", toCharLiteral (project.getPluginManufacturerCodeString())); flags.set ("JucePlugin_PluginCode", toCharLiteral (project.getPluginCodeString())); flags.set ("JucePlugin_IsSynth", boolToString (project.isPluginSynth())); flags.set ("JucePlugin_WantsMidiInput", boolToString (project.pluginWantsMidiInput())); flags.set ("JucePlugin_ProducesMidiOutput", boolToString (project.pluginProducesMidiOutput())); flags.set ("JucePlugin_IsMidiEffect", boolToString (project.isPluginMidiEffect())); flags.set ("JucePlugin_EditorRequiresKeyboardFocus", boolToString (project.pluginEditorNeedsKeyFocus())); flags.set ("JucePlugin_Version", project.getVersionString()); flags.set ("JucePlugin_VersionCode", project.getVersionAsHex()); flags.set ("JucePlugin_VersionString", toStringLiteral (project.getVersionString())); flags.set ("JucePlugin_VSTUniqueID", "JucePlugin_PluginCode"); flags.set ("JucePlugin_VSTCategory", project.getVSTCategoryString()); flags.set ("JucePlugin_Vst3Category", toStringLiteral (project.getVST3CategoryString())); flags.set ("JucePlugin_AUMainType", project.getAUMainTypeString()); flags.set ("JucePlugin_AUSubType", "JucePlugin_PluginCode"); flags.set ("JucePlugin_AUExportPrefix", project.getPluginAUExportPrefixString()); flags.set ("JucePlugin_AUExportPrefixQuoted", toStringLiteral (project.getPluginAUExportPrefixString())); flags.set ("JucePlugin_AUManufacturerCode", "JucePlugin_ManufacturerCode"); flags.set ("JucePlugin_CFBundleIdentifier", project.getBundleIdentifierString()); flags.set ("JucePlugin_RTASCategory", String (project.getRTASCategory())); flags.set ("JucePlugin_RTASManufacturerCode", "JucePlugin_ManufacturerCode"); flags.set ("JucePlugin_RTASProductId", "JucePlugin_PluginCode"); flags.set ("JucePlugin_RTASDisableBypass", boolToString (project.isPluginRTASBypassDisabled())); flags.set ("JucePlugin_RTASDisableMultiMono", boolToString (project.isPluginRTASMultiMonoDisabled())); flags.set ("JucePlugin_AAXIdentifier", project.getAAXIdentifierString()); flags.set ("JucePlugin_AAXManufacturerCode", "JucePlugin_ManufacturerCode"); flags.set ("JucePlugin_AAXProductId", "JucePlugin_PluginCode"); flags.set ("JucePlugin_AAXCategory", String (project.getAAXCategory())); flags.set ("JucePlugin_AAXDisableBypass", boolToString (project.isPluginAAXBypassDisabled())); flags.set ("JucePlugin_AAXDisableMultiMono", boolToString (project.isPluginAAXMultiMonoDisabled())); flags.set ("JucePlugin_IAAType", toCharLiteral (project.getIAATypeCode())); flags.set ("JucePlugin_IAASubType", "JucePlugin_PluginCode"); flags.set ("JucePlugin_IAAName", project.getIAAPluginName().quoted()); flags.set ("JucePlugin_VSTNumMidiInputs", project.getVSTNumMIDIInputsString()); flags.set ("JucePlugin_VSTNumMidiOutputs", project.getVSTNumMIDIOutputsString()); { String plugInChannelConfig = project.getPluginChannelConfigsString(); if (plugInChannelConfig.isNotEmpty()) { flags.set ("JucePlugin_MaxNumInputChannels", String (countMaxPluginChannels (plugInChannelConfig, true))); flags.set ("JucePlugin_MaxNumOutputChannels", String (countMaxPluginChannels (plugInChannelConfig, false))); flags.set ("JucePlugin_PreferredChannelConfigurations", plugInChannelConfig); } } MemoryOutputStream mem; mem.setNewLineString (projectLineFeed); mem << "//==============================================================================" << newLine << "// Audio plugin settings.." << newLine << newLine; for (int i = 0; i < flags.size(); ++i) { mem << "#ifndef " << flags.getAllKeys()[i] << newLine << " #define " << flags.getAllKeys()[i].paddedRight (' ', 32) << " " << flags.getAllValues()[i] << newLine << "#endif" << newLine; } setExtraAppConfigFileContent (mem.toString()); }
PopupMenu SAMApplication::MainMenuModel::getMenuForIndex (int topLevelMenuIndex, const String& /*menuName*/) { PopupMenu menu; if (topLevelMenuIndex == 0) { menu.addCommandItem (commandManager, CommandIDs::newFile); menu.addCommandItem (commandManager, CommandIDs::open); PopupMenu recentFiles; StoredSettings::getInstance()->recentFiles .createPopupMenuItems(recentFiles, recentProjectsBaseID, true, true); menu.addSubMenu(TRANS("Open Recent File"), recentFiles); menu.addSeparator(); menu.addCommandItem (commandManager, CommandIDs::closeDocument); menu.addCommandItem (commandManager, CommandIDs::saveDocument); menu.addCommandItem (commandManager, CommandIDs::saveDocumentAs); menu.addSeparator(); menu.addCommandItem (commandManager, CommandIDs::showMDLProperties); menu.addSeparator(); menu.addCommandItem (commandManager, CommandIDs::saveDocumentAsImage); menu.addSeparator(); menu.addCommandItem(commandManager, CommandIDs::showPrefs); #if ! JUCE_MAC menu.addSeparator(); menu.addCommandItem (commandManager, StandardApplicationCommandIDs::quit); #endif } else if (topLevelMenuIndex == 1) { menu.addCommandItem (commandManager, CommandIDs::undo); menu.addCommandItem (commandManager, CommandIDs::redo); menu.addSeparator(); menu.addCommandItem (commandManager, StandardApplicationCommandIDs::cut); menu.addCommandItem (commandManager, StandardApplicationCommandIDs::copy); menu.addCommandItem (commandManager, StandardApplicationCommandIDs::paste); menu.addSeparator(); menu.addCommandItem (commandManager, StandardApplicationCommandIDs::selectAll); menu.addCommandItem (commandManager, StandardApplicationCommandIDs::deselectAll); menu.addSeparator(); menu.addCommandItem (commandManager, CommandIDs::defineFaustcode); menu.addSeparator(); menu.addCommandItem(commandManager, CommandIDs::reverseDirection); menu.addSeparator(); menu.addCommandItem(commandManager, CommandIDs::tidyObjects); menu.addSeparator(); PopupMenu redrawModelMenu; redrawModelMenu.addCommandItem(commandManager, CommandIDs::toggleRedrawIncludeMisc); redrawModelMenu.addSeparator(); redrawModelMenu.addCommandItem(commandManager, CommandIDs::redrawCircle); redrawModelMenu.addSeparator(); redrawModelMenu.addCommandItem(commandManager, CommandIDs::redrawForceDirected); redrawModelMenu.addCommandItem(commandManager, CommandIDs::showRedrawOptions); menu.addSubMenu(TRANS("Redraw Model"), redrawModelMenu); } else if (topLevelMenuIndex == 2) { menu.addCommandItem(commandManager, CommandIDs::insertMass); menu.addCommandItem(commandManager, CommandIDs::insertGround); menu.addCommandItem(commandManager, CommandIDs::insertResonator); menu.addCommandItem(commandManager, CommandIDs::insertPort); menu.addSeparator(); menu.addCommandItem(commandManager, CommandIDs::insertLink); menu.addCommandItem(commandManager, CommandIDs::insertTouch); menu.addCommandItem(commandManager, CommandIDs::insertPluck); menu.addCommandItem(commandManager, CommandIDs::insertPulsetouch); menu.addCommandItem(commandManager, CommandIDs::insertDetent); menu.addCommandItem(commandManager, CommandIDs::insertSofteningLink); menu.addCommandItem(commandManager, CommandIDs::insertStiffeningLink); menu.addSeparator(); menu.addCommandItem(commandManager, CommandIDs::insertAudioOutput); menu.addCommandItem(commandManager, CommandIDs::insertAudioConnection); menu.addCommandItem(commandManager, CommandIDs::insertDisplay); menu.addCommandItem(commandManager, CommandIDs::insertDisplayConnection); menu.addSeparator(); menu.addCommandItem(commandManager, CommandIDs::insertWaveguide); menu.addCommandItem(commandManager, CommandIDs::insertTermination); menu.addCommandItem(commandManager, CommandIDs::insertJunction); menu.addSeparator(); menu.addCommandItem(commandManager, CommandIDs::insertComment); } else if (topLevelMenuIndex == 3) { menu.addCommandItem(commandManager, CommandIDs::generateFaust); menu.addSeparator(); menu.addCommandItem(commandManager, CommandIDs::generateExternal); menu.addSeparator(); StringPairArray spa = StoredSettings::getInstance()->getExporters().getAllProperties(); String currExporter = StoredSettings::getInstance()->getCurrentExporter(); for (int i = 0; i < spa.size(); ++i) { bool isTicked = false; if(spa.getAllKeys()[i].compare(currExporter) == 0) isTicked = true; menu.addItem(exportersBaseID + i, spa.getAllKeys()[i],true,isTicked); } } else if (topLevelMenuIndex == 4) { menu.addCommandItem(commandManager, CommandIDs::cleanDataDir); menu.addCommandItem(commandManager, CommandIDs::cleanDataDirAll); menu.addSeparator(); menu.addCommandItem(commandManager, CommandIDs::openDataDir); menu.addCommandItem(commandManager, CommandIDs::openMdlFileExtern); menu.addSeparator(); menu.addCommandItem(commandManager, CommandIDs::printSAMLog); menu.addSeparator(); menu.addCommandItem(commandManager, CommandIDs::printMDL); #ifdef _DEBUG menu.addSeparator(); menu.addCommandItem(commandManager, CommandIDs::writeMDLFileAsXml); #endif } else if (topLevelMenuIndex == 5) { menu.addCommandItem (commandManager, CommandIDs::zoomIn); menu.addCommandItem (commandManager, CommandIDs::zoomOut); menu.addCommandItem (commandManager, CommandIDs::zoomNormal); menu.addSeparator(); menu.addCommandItem (commandManager, CommandIDs::segmentedConnectors); menu.addSeparator(); menu.addCommandItem(commandManager, CommandIDs::showAudioConnections); menu.addCommandItem(commandManager, CommandIDs::showObjectNames); menu.addSeparator(); menu.addCommandItem (commandManager, CommandIDs::showGrid); menu.addCommandItem (commandManager, CommandIDs::enableSnapToGrid); const int currentSnapSize = getApp()->getActiveHolderComponent() != 0 ? getApp()->getActiveHolderComponent()->getSnappingGridSize() : 0; PopupMenu m; for (int i = 0; i < numElementsInArray (snapSizes); ++i) m.addItem (snappingSizesBaseID + i, String(snapSizes[i]) + " " + TRANS("pixels"), true, snapSizes[i] == currentSnapSize); menu.addSubMenu(TRANS("Grid Size"), m, getApp()->getActiveHolderComponent() != 0); } else if (topLevelMenuIndex == 6) { menu.addCommandItem(commandManager, CommandIDs::showPostWindow); menu.addCommandItem(commandManager, CommandIDs::clearOutputConsole); menu.addSeparator(); menu.addCommandItem(commandManager, CommandIDs::showPropertiesWindow); menu.addCommandItem(commandManager, CommandIDs::propertiesWindowOnTop); menu.addSeparator(); menu.addCommandItem(commandManager, CommandIDs::showPreviousWindow); menu.addCommandItem(commandManager, CommandIDs::showNextWindow); menu.addSeparator(); const int numDocs = jmin (50, SAMApplication::getApp()->mainWindows.size()); for (int i = 0; i < numDocs; ++i) { MDLFile* mdl = SAMApplication::getApp()->mainWindows[i]->getMDLFile(); menu.addItem (activeMDLsBaseID + i, mdl->getName()); } } else if (topLevelMenuIndex == 7) { menu.addCommandItem(commandManager, CommandIDs::showHelp); } return menu; }