Browse Source

Projucer: Check if IDE project file exists when saving

v6.1.6
ed 3 years ago
parent
commit
a71bda9adb
6 changed files with 34 additions and 11 deletions
  1. +4
    -1
      extras/Projucer/Source/Project/UI/jucer_ProjectContentComponent.cpp
  2. +10
    -7
      extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h
  3. +6
    -1
      extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CLion.h
  4. +6
    -1
      extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h
  5. +6
    -1
      extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h
  6. +2
    -0
      extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.h

+ 4
- 1
extras/Projucer/Source/Project/UI/jucer_ProjectContentComponent.cpp View File

@@ -504,6 +504,9 @@ void ProjectContentComponent::openInSelectedIDE (bool saveFirst)
if (auto selectedExporter = headerComponent.getSelectedExporter())
{
if (! selectedExporter->canLaunchProject())
return;
if (saveFirst)
{
if (project->isTemporaryProject())
@@ -512,7 +515,7 @@ void ProjectContentComponent::openInSelectedIDE (bool saveFirst)
return;
}
if (project->hasChangedSinceSaved())
if (project->hasChangedSinceSaved() || ! selectedExporter->getIDEProjectFile().exists())
{
project->saveAsync (true, true, [safeThis = SafePointer<ProjectContentComponent> { this }] (Project::SaveResult r)
{


+ 10
- 7
extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h View File

@@ -141,7 +141,7 @@ public:
gradleVersion (settings, Ids::gradleVersion, getUndoManager(), "7.0.2"),
gradleToolchain (settings, Ids::gradleToolchain, getUndoManager(), "clang"),
androidPluginVersion (settings, Ids::androidPluginVersion, getUndoManager(), "7.0.0"),
AndroidExecutable (getAppSettings().getStoredPath (Ids::androidStudioExePath, TargetOS::getThisOS()).get().toString())
androidExecutable (getAppSettings().getStoredPath (Ids::androidStudioExePath, TargetOS::getThisOS()).get().toString())
{
name = getDisplayName();
targetLocationValue.setDefault (getDefaultBuildsRootFolder() + getTargetFolderName());
@@ -165,22 +165,25 @@ public:
//==============================================================================
bool canLaunchProject() override
{
return AndroidExecutable.exists();
return androidExecutable.exists();
}
bool launchProject() override
{
if (! AndroidExecutable.exists())
if (! androidExecutable.exists())
{
jassertfalse;
return false;
}
auto targetFolder = getTargetFolder();
// we have to surround the path with extra quotes, otherwise Android Studio
// will choke if there are any space characters in the path.
return AndroidExecutable.startAsProcess ("\"" + targetFolder.getFullPathName() + "\"");
return androidExecutable.startAsProcess (getIDEProjectFile().getFullPathName().quoted());
}
File getIDEProjectFile() const override
{
return getTargetFolder();
}
//==============================================================================
@@ -1874,7 +1877,7 @@ private:
}
//==============================================================================
const File AndroidExecutable;
const File androidExecutable;
JUCE_DECLARE_NON_COPYABLE (AndroidProjectExporter)
};

+ 6
- 1
extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CLion.h View File

@@ -126,7 +126,12 @@ public:
bool launchProject() override
{
return getCLionExecutableOrApp().startAsProcess (getTargetFolder().getFullPathName().quoted());
return getCLionExecutableOrApp().startAsProcess (getIDEProjectFile().getFullPathName().quoted());
}
File getIDEProjectFile() const override
{
return getTargetFolder();
}
String getDescription() override


+ 6
- 1
extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h View File

@@ -1476,7 +1476,7 @@ public:
bool launchProject() override
{
#if JUCE_WINDOWS
return getSLNFile().startAsProcess();
return getIDEProjectFile().startAsProcess();
#else
return false;
#endif
@@ -1491,6 +1491,11 @@ public:
#endif
}
File getIDEProjectFile() const override
{
return getSLNFile();
}
void createExporterProperties (PropertyListBuilder& props) override
{
props.add (new TextPropertyComponent (manifestFileValue, "Manifest file", 8192, false),


+ 6
- 1
extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h View File

@@ -660,7 +660,7 @@ public:
bool launchProject() override
{
#if JUCE_MAC
return getProjectBundle().startAsProcess();
return getIDEProjectFile().startAsProcess();
#else
return false;
#endif
@@ -675,6 +675,11 @@ public:
#endif
}
File getIDEProjectFile() const override
{
return getProjectBundle();
}
//==============================================================================
void create (const OwnedArray<LibraryModule>&) const override
{


+ 2
- 0
extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.h View File

@@ -89,6 +89,8 @@ public:
virtual bool isOSX() const = 0;
virtual bool isiOS() const = 0;
virtual File getIDEProjectFile() const { return {}; }
virtual String getNewLineString() const = 0;
virtual String getDescription() { return {}; }


Loading…
Cancel
Save