diff --git a/extras/Introjucer/Source/Application/jucer_AppearanceSettings.cpp b/extras/Introjucer/Source/Application/jucer_AppearanceSettings.cpp index f462fdc6ba..51b5d5d651 100644 --- a/extras/Introjucer/Source/Application/jucer_AppearanceSettings.cpp +++ b/extras/Introjucer/Source/Application/jucer_AppearanceSettings.cpp @@ -295,7 +295,7 @@ struct AppearanceEditor startTimer (1); } - void paint (Graphics& g) + void paint (Graphics& g) override { g.fillAll (Colours::darkgrey); @@ -388,7 +388,7 @@ struct AppearanceEditor panel.addProperties (props); } - void resized() + void resized() override { Rectangle r (getLocalBounds()); panel.setBounds (r.removeFromTop (getHeight() - 28).reduced (4, 2)); @@ -400,7 +400,7 @@ struct AppearanceEditor PropertyPanel panel; TextButton loadButton, saveButton; - void buttonClicked (Button* b) + void buttonClicked (Button* b) override { if (b == &loadButton) loadScheme(); @@ -485,12 +485,12 @@ struct AppearanceEditor public: FontSizeValueSource (const Value& source) : ValueSourceFilter (source) {} - var getValue() const + var getValue() const override { return Font::fromString (sourceValue.toString()).getHeight(); } - void setValue (const var& newValue) + void setValue (const var& newValue) override { sourceValue = Font::fromString (sourceValue.toString()).withHeight (newValue).toString(); } diff --git a/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_Android.h b/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_Android.h index d168384c2d..b2cd952dd7 100644 --- a/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_Android.h +++ b/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_Android.h @@ -64,12 +64,12 @@ public: } //============================================================================== - bool launchProject() { return false; } - bool isAndroid() const { return true; } - bool usesMMFiles() const { return false; } - bool canCopeWithDuplicateFiles() { return false; } + bool launchProject() override { return false; } + bool isAndroid() const override { return true; } + bool usesMMFiles() const override { return false; } + bool canCopeWithDuplicateFiles() override { return false; } - void createExporterProperties (PropertyListBuilder& props) + void createExporterProperties (PropertyListBuilder& props) override { props.add (new TextPropertyComponent (getActivityClassPathValue(), "Android Activity class name", 256, false), "The full java class name to use for the app's Activity class."); @@ -154,7 +154,7 @@ public: } //============================================================================== - void create (const OwnedArray& modules) const + void create (const OwnedArray& modules) const override { const File target (getTargetFolder()); const File jniFolder (target.getChildFile ("jni")); diff --git a/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_CodeBlocks.h b/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_CodeBlocks.h index 00f6e4f5fe..3f35767f26 100644 --- a/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_CodeBlocks.h +++ b/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_CodeBlocks.h @@ -47,18 +47,18 @@ public: } //============================================================================== - bool launchProject() { return false; } - bool isCodeBlocks() const { return true; } - bool isWindows() const { return true; } - bool usesMMFiles() const { return false; } - bool canCopeWithDuplicateFiles() { return false; } + bool launchProject() override { return false; } + bool isCodeBlocks() const override { return true; } + bool isWindows() const override { return true; } + bool usesMMFiles() const override { return false; } + bool canCopeWithDuplicateFiles() override { return false; } - void createExporterProperties (PropertyListBuilder&) + void createExporterProperties (PropertyListBuilder&) override { } //============================================================================== - void create (const OwnedArray&) const + void create (const OwnedArray&) const override { const File cbpFile (getTargetFolder().getChildFile (project.getProjectFilenameRoot()) .withFileExtension (".cbp")); @@ -84,7 +84,7 @@ private: } }; - BuildConfiguration::Ptr createBuildConfig (const ValueTree& tree) const + BuildConfiguration::Ptr createBuildConfig (const ValueTree& tree) const override { return new CodeBlocksBuildConfiguration (project, tree); } diff --git a/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_MSVC.h b/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_MSVC.h index f57ddfa0e0..117c74c6b7 100644 --- a/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_MSVC.h +++ b/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_MSVC.h @@ -36,12 +36,12 @@ public: } //============================================================================== - bool usesMMFiles() const { return false; } - bool isVisualStudio() const { return true; } - bool isWindows() const { return true; } - bool canCopeWithDuplicateFiles() { return false; } + bool usesMMFiles() const override { return false; } + bool isVisualStudio() const override { return true; } + bool isWindows() const override { return true; } + bool canCopeWithDuplicateFiles() override { return false; } - bool launchProject() + bool launchProject() override { #if JUCE_WINDOWS return getSLNFile().startAsProcess(); @@ -50,7 +50,7 @@ public: #endif } - void createExporterProperties (PropertyListBuilder&) + void createExporterProperties (PropertyListBuilder&) override { } @@ -164,7 +164,7 @@ protected: return target; } - void createConfigProperties (PropertyListBuilder& props) + void createConfigProperties (PropertyListBuilder& props) override { props.add (new TextPropertyComponent (getIntermediatesPathValue(), "Intermediates path", 2048, false), "An optional path to a folder to use for the intermediate build files. Note that Visual Studio allows " @@ -211,7 +211,7 @@ protected: } }; - BuildConfiguration::Ptr createBuildConfig (const ValueTree& v) const + BuildConfiguration::Ptr createBuildConfig (const ValueTree& v) const override { return new MSVCBuildConfiguration (project, v); } @@ -557,7 +557,7 @@ public: static const char* getName() { return "Visual Studio 2008"; } static const char* getValueTreeTypeName() { return "VS2008"; } - int getVisualStudioVersion() const { return 9; } + int getVisualStudioVersion() const override { return 9; } static MSVCProjectExporterVC2008* createForSettings (Project& project, const ValueTree& settings) { @@ -916,7 +916,7 @@ public: static const char* getName() { return "Visual Studio 2005"; } static const char* getValueTreeTypeName() { return "VS2005"; } - int getVisualStudioVersion() const { return 8; } + int getVisualStudioVersion() const override { return 8; } static MSVCProjectExporterVC2005* createForSettings (Project& project, const ValueTree& settings) { @@ -945,9 +945,10 @@ public: static const char* getName() { return "Visual Studio 2010"; } static const char* getValueTreeTypeName() { return "VS2010"; } - int getVisualStudioVersion() const { return 10; } + int getVisualStudioVersion() const override { return 10; } virtual String getPlatformToolset() const { return "Windows7.1SDK"; } virtual String getSolutionComment() const { return "# Visual Studio 2010"; } + virtual String getToolsVersion() const { return "4.0"; } static MSVCProjectExporterVC2010* createForSettings (Project& project, const ValueTree& settings) { @@ -1004,7 +1005,7 @@ protected: bool is64Bit() const { return config [Ids::winArchitecture].toString() == get64BitArchName(); } //============================================================================== - void createConfigProperties (PropertyListBuilder& props) + void createConfigProperties (PropertyListBuilder& props) override { MSVCBuildConfiguration::createConfigProperties (props); @@ -1483,21 +1484,23 @@ protected: class MSVCProjectExporterVC2012 : public MSVCProjectExporterVC2010 { public: - MSVCProjectExporterVC2012 (Project& p, const ValueTree& t) - : MSVCProjectExporterVC2010 (p, t, "VisualStudio2012") + MSVCProjectExporterVC2012 (Project& p, const ValueTree& t, + const char* folderName = "VisualStudio2012") + : MSVCProjectExporterVC2010 (p, t, folderName) { name = getName(); } static const char* getName() { return "Visual Studio 2012"; } static const char* getValueTreeTypeName() { return "VS2012"; } - int getVisualStudioVersion() const { return 11; } - String getSolutionComment() const { return "# Visual Studio 2012"; } + int getVisualStudioVersion() const override { return 11; } + String getSolutionComment() const override { return "# Visual Studio 2012"; } + virtual String getDefaultToolset() const { return "v110"; } String getPlatformToolset() const { const String s (settings [Ids::toolset].toString()); - return s.isNotEmpty() ? s : "v110"; + return s.isNotEmpty() ? s : getDefaultToolset(); } Value getPlatformToolsetValue() { return getSetting (Ids::toolset); } @@ -1510,7 +1513,7 @@ public: return nullptr; } - void createExporterProperties (PropertyListBuilder& props) + void createExporterProperties (PropertyListBuilder& props) override { MSVCProjectExporterVC2010::createExporterProperties (props); @@ -1523,7 +1526,7 @@ public: } private: - void addPlatformToolsetToPropertyGroup (XmlElement& p) const + void addPlatformToolsetToPropertyGroup (XmlElement& p) const override { forEachXmlChildElementWithTagName (p, e, "PropertyGroup") { @@ -1536,3 +1539,44 @@ private: JUCE_DECLARE_NON_COPYABLE (MSVCProjectExporterVC2012) }; + +//============================================================================== +class MSVCProjectExporterVC2013 : public MSVCProjectExporterVC2012 +{ +public: + MSVCProjectExporterVC2013 (Project& p, const ValueTree& t) + : MSVCProjectExporterVC2012 (p, t, "VisualStudio2013") + { + name = getName(); + } + + static const char* getName() { return "Visual Studio 2013"; } + static const char* getValueTreeTypeName() { return "VS2013"; } + int getVisualStudioVersion() const override { return 12; } + String getSolutionComment() const override { return "# Visual Studio 2013"; } + String getToolsVersion() const override { return "12.0"; } + String getDefaultToolset() const override { return "v120"; } + + static MSVCProjectExporterVC2013* createForSettings (Project& project, const ValueTree& settings) + { + if (settings.hasType (getValueTreeTypeName())) + return new MSVCProjectExporterVC2013 (project, settings); + + return nullptr; + } + + void createExporterProperties (PropertyListBuilder& props) override + { + MSVCProjectExporterVC2010::createExporterProperties (props); + + const char* const toolsetNames[] = { "(default)", "v120", "v120_xp", nullptr }; + const var toolsets[] = { var(), "v120", "v120_xp" }; + + props.add (new ChoicePropertyComponent (getPlatformToolsetValue(), "Platform Toolset", + StringArray (toolsetNames), + Array (toolsets, numElementsInArray (toolsets)))); + } + +private: + JUCE_DECLARE_NON_COPYABLE (MSVCProjectExporterVC2013) +}; diff --git a/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_Make.h b/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_Make.h index e198522c08..5d294bc0d1 100644 --- a/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_Make.h +++ b/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_Make.h @@ -48,17 +48,17 @@ public: } //============================================================================== - bool launchProject() { return false; } - bool usesMMFiles() const { return false; } - bool isLinux() const { return true; } - bool canCopeWithDuplicateFiles() { return false; } + bool launchProject() override { return false; } + bool usesMMFiles() const override { return false; } + bool isLinux() const override { return true; } + bool canCopeWithDuplicateFiles() override { return false; } - void createExporterProperties (PropertyListBuilder&) + void createExporterProperties (PropertyListBuilder&) override { } //============================================================================== - void create (const OwnedArray&) const + void create (const OwnedArray&) const override { Array files; for (int i = 0; i < getAllGroups().size(); ++i) @@ -84,7 +84,7 @@ protected: Value getArchitectureType() { return getValue (Ids::linuxArchitecture); } String getArchitectureTypeString() const { return config [Ids::linuxArchitecture]; } - void createConfigProperties (PropertyListBuilder& props) + void createConfigProperties (PropertyListBuilder& props) override { const char* const archNames[] = { "(Default)", "32-bit (-m32)", "64-bit (-m64)", "ARM v6", "ARM v7" }; const var archFlags[] = { var(), "-m32", "-m64", "-march=armv6", "-march=armv7" }; @@ -95,7 +95,7 @@ protected: } }; - BuildConfiguration::Ptr createBuildConfig (const ValueTree& tree) const + BuildConfiguration::Ptr createBuildConfig (const ValueTree& tree) const override { return new MakeBuildConfiguration (project, tree); } diff --git a/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_XCode.h b/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_XCode.h index d668a66a58..d49061bd2d 100644 --- a/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_XCode.h +++ b/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_XCode.h @@ -78,21 +78,12 @@ public: Value getPreBuildScriptValue() { return getSetting (Ids::prebuildCommand); } String getPreBuildScript() const { return settings [Ids::prebuildCommand]; } - bool isAvailableOnCurrentOS() - { - #if JUCE_MAC - return true; - #else - return false; - #endif - } + bool usesMMFiles() const override { return true; } + bool isXcode() const override { return true; } + bool isOSX() const override { return ! iOS; } + bool canCopeWithDuplicateFiles() override { return true; } - bool usesMMFiles() const { return true; } - bool isXcode() const { return true; } - bool isOSX() const { return ! iOS; } - bool canCopeWithDuplicateFiles() { return true; } - - void createExporterProperties (PropertyListBuilder& props) + void createExporterProperties (PropertyListBuilder& props) override { if (projectType.isGUIApplication() && ! iOS) { @@ -125,7 +116,7 @@ public: "Some shell-script that will be run after a build completes."); } - bool launchProject() + bool launchProject() override { #if JUCE_MAC return getProjectBundle().startAsProcess(); @@ -135,7 +126,7 @@ public: } //============================================================================== - void create (const OwnedArray&) const + void create (const OwnedArray&) const override { infoPlistFile = getTargetFolder().getChildFile ("Info.plist"); menuNibFile = getTargetFolder().getChildFile ("RecentFilesMenuTemplate.nib"); @@ -247,7 +238,7 @@ protected: bool iOS; }; - BuildConfiguration::Ptr createBuildConfig (const ValueTree& v) const + BuildConfiguration::Ptr createBuildConfig (const ValueTree& v) const override { return new XcodeBuildConfiguration (project, v, iOS); } diff --git a/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp b/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp index 7ec4de80ef..b9ee240675 100644 --- a/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp +++ b/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp @@ -41,6 +41,7 @@ StringArray ProjectExporter::getExporterNames() s.add (MSVCProjectExporterVC2008::getName()); s.add (MSVCProjectExporterVC2010::getName()); s.add (MSVCProjectExporterVC2012::getName()); + s.add (MSVCProjectExporterVC2013::getName()); s.add (MakefileProjectExporter::getNameLinux()); s.add (AndroidProjectExporter::getNameAndroid()); s.add (CodeBlocksProjectExporter::getNameCodeBlocks()); @@ -72,9 +73,10 @@ ProjectExporter* ProjectExporter::createNewExporter (Project& project, const int case 3: exp = new MSVCProjectExporterVC2008 (project, ValueTree (MSVCProjectExporterVC2008::getValueTreeTypeName())); break; case 4: exp = new MSVCProjectExporterVC2010 (project, ValueTree (MSVCProjectExporterVC2010::getValueTreeTypeName())); break; case 5: exp = new MSVCProjectExporterVC2012 (project, ValueTree (MSVCProjectExporterVC2012::getValueTreeTypeName())); break; - case 6: exp = new MakefileProjectExporter (project, ValueTree (MakefileProjectExporter ::getValueTreeTypeName())); break; - case 7: exp = new AndroidProjectExporter (project, ValueTree (AndroidProjectExporter ::getValueTreeTypeName())); break; - case 8: exp = new CodeBlocksProjectExporter (project, ValueTree (CodeBlocksProjectExporter::getValueTreeTypeName())); break; + case 6: exp = new MSVCProjectExporterVC2013 (project, ValueTree (MSVCProjectExporterVC2013::getValueTreeTypeName())); break; + case 7: exp = new MakefileProjectExporter (project, ValueTree (MakefileProjectExporter ::getValueTreeTypeName())); break; + case 8: exp = new AndroidProjectExporter (project, ValueTree (AndroidProjectExporter ::getValueTreeTypeName())); break; + case 9: exp = new CodeBlocksProjectExporter (project, ValueTree (CodeBlocksProjectExporter::getValueTreeTypeName())); break; default: jassertfalse; return 0; } @@ -103,6 +105,7 @@ ProjectExporter* ProjectExporter::createExporter (Project& project, const ValueT if (exp == nullptr) exp = MSVCProjectExporterVC2008::createForSettings (project, settings); if (exp == nullptr) exp = MSVCProjectExporterVC2010::createForSettings (project, settings); if (exp == nullptr) exp = MSVCProjectExporterVC2012::createForSettings (project, settings); + if (exp == nullptr) exp = MSVCProjectExporterVC2013::createForSettings (project, settings); if (exp == nullptr) exp = XCodeProjectExporter ::createForSettings (project, settings); if (exp == nullptr) exp = MakefileProjectExporter ::createForSettings (project, settings); if (exp == nullptr) exp = AndroidProjectExporter ::createForSettings (project, settings); @@ -126,6 +129,7 @@ bool ProjectExporter::canProjectBeLaunched (Project* project) MSVCProjectExporterVC2008::getValueTreeTypeName(), MSVCProjectExporterVC2010::getValueTreeTypeName(), MSVCProjectExporterVC2012::getValueTreeTypeName(), + MSVCProjectExporterVC2013::getValueTreeTypeName(), #elif JUCE_LINUX // (this doesn't currently launch.. not really sure what it would do on linux) //MakefileProjectExporter::getValueTreeTypeName(),