mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-24 01:54:22 +00:00
Clion: Added a global path to the CLion exe
This commit is contained in:
parent
d4a7afa73f
commit
a75f023ca5
4 changed files with 88 additions and 23 deletions
|
|
@ -34,16 +34,20 @@ class GlobalSearchPathsWindowComponent : public Component,
|
|||
public:
|
||||
GlobalSearchPathsWindowComponent()
|
||||
: modulesLabel ("modulesLabel", "Modules"),
|
||||
sdksLabel ("sdksLabel", "SDKs")
|
||||
sdksLabel ("sdksLabel", "SDKs"),
|
||||
cLionLabel ("cLionLabel", "CLion")
|
||||
{
|
||||
addAndMakeVisible (modulesLabel);
|
||||
addAndMakeVisible (sdksLabel);
|
||||
addAndMakeVisible (cLionLabel);
|
||||
|
||||
modulesLabel.setFont (Font (18.0f, Font::FontStyleFlags::bold));
|
||||
sdksLabel.setFont (Font (18.0f, Font::FontStyleFlags::bold));
|
||||
sdksLabel .setFont (Font (18.0f, Font::FontStyleFlags::bold));
|
||||
cLionLabel .setFont (Font (18.0f, Font::FontStyleFlags::bold));
|
||||
|
||||
modulesLabel.setJustificationType (Justification::centredLeft);
|
||||
sdksLabel.setJustificationType (Justification::centredLeft);
|
||||
sdksLabel .setJustificationType (Justification::centredLeft);
|
||||
cLionLabel .setJustificationType (Justification::centredLeft);
|
||||
|
||||
addAndMakeVisible (info);
|
||||
info.setInfoToDisplay ("Use this dropdown to set the global paths for different OSes. "
|
||||
|
|
@ -85,10 +89,13 @@ public:
|
|||
modulesLabel.setBounds (b.removeFromTop (20));
|
||||
b.removeFromTop (20);
|
||||
|
||||
auto i = 0;
|
||||
for (auto propertyComponent : pathPropertyComponents)
|
||||
auto thisOS = TargetOS::getThisOS();
|
||||
auto selectedOS = getSelectedOS();
|
||||
const int numComps = pathPropertyComponents.size();
|
||||
|
||||
for (int i = 0; i < numComps; ++i)
|
||||
{
|
||||
propertyComponent->setBounds (b.removeFromTop (propertyComponent->getPreferredHeight()));
|
||||
pathPropertyComponents[i]->setBounds (b.removeFromTop (pathPropertyComponents[i]->getPreferredHeight()));
|
||||
b.removeFromTop (5);
|
||||
|
||||
if (i == 1)
|
||||
|
|
@ -98,12 +105,17 @@ public:
|
|||
b.removeFromTop (20);
|
||||
}
|
||||
|
||||
++i;
|
||||
if (selectedOS == thisOS && i == numComps - 2)
|
||||
{
|
||||
b.removeFromTop (15);
|
||||
cLionLabel.setBounds (b.removeFromTop (20));
|
||||
b.removeFromTop (20);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
Label modulesLabel, sdksLabel;
|
||||
Label modulesLabel, sdksLabel, cLionLabel;
|
||||
OwnedArray<PropertyComponent> pathPropertyComponents;
|
||||
ComboBox osSelector;
|
||||
InfoButton info;
|
||||
|
|
@ -113,11 +125,8 @@ private:
|
|||
updateFilePathPropertyComponents();
|
||||
}
|
||||
|
||||
void updateFilePathPropertyComponents()
|
||||
TargetOS::OS getSelectedOS() const
|
||||
{
|
||||
pathPropertyComponents.clear();
|
||||
|
||||
auto thisOS = TargetOS::getThisOS();
|
||||
auto selectedOS = TargetOS::unknown;
|
||||
|
||||
switch (osSelector.getSelectedId())
|
||||
|
|
@ -128,6 +137,16 @@ private:
|
|||
default: break;
|
||||
}
|
||||
|
||||
return selectedOS;
|
||||
}
|
||||
|
||||
void updateFilePathPropertyComponents()
|
||||
{
|
||||
pathPropertyComponents.clear();
|
||||
|
||||
const auto thisOS = TargetOS::getThisOS();
|
||||
const auto selectedOS = getSelectedOS();
|
||||
|
||||
auto& settings = getAppSettings();
|
||||
|
||||
if (selectedOS == thisOS)
|
||||
|
|
@ -160,6 +179,16 @@ private:
|
|||
"Android SDK", true)));
|
||||
addAndMakeVisible (pathPropertyComponents.add (new FilePathPropertyComponent (settings.getStoredPath (Ids::androidNDKPath),
|
||||
"Android NDK", true)));
|
||||
|
||||
#if JUCE_MAC
|
||||
String exeLabel ("app");
|
||||
#elif JUCE_WINDOWS
|
||||
String exeLabel ("executable");
|
||||
#else
|
||||
String exeLabel ("startup script");
|
||||
#endif
|
||||
addAndMakeVisible (pathPropertyComponents.add (new FilePathPropertyComponent (settings.getStoredPath (Ids::clionExePath),
|
||||
"CLion " + exeLabel, false)));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -109,6 +109,8 @@ public:
|
|||
static Identifier exporterName ("XCODE_MAC");
|
||||
#elif JUCE_WINDOWS
|
||||
static Identifier exporterName ("CODEBLOCKS_WINDOWS");
|
||||
#elif JUCE_LINUX
|
||||
static Identifier exporterName ("LINUX_MAKE");
|
||||
#else
|
||||
static Identifier exporterName;
|
||||
#endif
|
||||
|
|
@ -121,7 +123,7 @@ public:
|
|||
|
||||
bool launchProject() override
|
||||
{
|
||||
return getCLionExecutable().startAsProcess (getTargetFolder().getFullPathName());
|
||||
return getCLionExecutable().startAsProcess (getTargetFolder().getFullPathName().quoted());
|
||||
}
|
||||
|
||||
String getDescription() override
|
||||
|
|
@ -148,7 +150,7 @@ public:
|
|||
<< newLine
|
||||
<< "Not all features of all the exporters are currently supported. Notable omissions are AUv3 "
|
||||
<< "plug-ins, embedding resources and fat binaries on MacOS, and adding application icons. On "
|
||||
<< "Windows CLion requires a GCC-based compiler like MinGW.";
|
||||
<< "Windows the CLion exporter requires a GCC-based compiler like MinGW.";
|
||||
|
||||
return description;
|
||||
}
|
||||
|
|
@ -225,17 +227,17 @@ private:
|
|||
//==============================================================================
|
||||
static File getCLionExecutable()
|
||||
{
|
||||
#if JUCE_MAC
|
||||
return { "/Applications/CLion.app/Contents/MacOS/clion" };
|
||||
#elif JUCE_WINDOWS
|
||||
auto regValue = WindowsRegistry::getValue ("HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\Applications\\clion64.exe\\shell\\open\\command\\", {}, {});
|
||||
auto openCmd = StringArray::fromTokens (regValue, true);
|
||||
File clionExe (getAppSettings()
|
||||
.getStoredPath (Ids::clionExePath)
|
||||
.toString()
|
||||
.replace ("${user.home}", File::getSpecialLocation (File::userHomeDirectory).getFullPathName()));
|
||||
|
||||
if (! openCmd.isEmpty())
|
||||
return { openCmd[0].unquoted() };
|
||||
#if JUCE_MAC
|
||||
if (clionExe.getFileName().endsWith (".app"))
|
||||
clionExe = clionExe.getChildFile ("Contents/MacOS/clion");
|
||||
#endif
|
||||
|
||||
return {};
|
||||
return clionExe;
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
|
|
|
|||
|
|
@ -295,7 +295,7 @@ Value StoredSettings::getFallbackPathForOS (const Identifier& key, DependencyPat
|
|||
else if (key == Ids::aaxPath)
|
||||
{
|
||||
if (os == TargetOS::windows) v = "C:\\SDKs\\AAX";
|
||||
else if (os == TargetOS::osx) v = "~/SDKs/AAX" ;
|
||||
else if (os == TargetOS::osx) v = "~/SDKs/AAX";
|
||||
else jassertfalse; // no AAX on this OS!
|
||||
}
|
||||
else if (key == Ids::androidSDKPath)
|
||||
|
|
@ -306,6 +306,29 @@ Value StoredSettings::getFallbackPathForOS (const Identifier& key, DependencyPat
|
|||
{
|
||||
v = "${user.home}/Library/Android/sdk/ndk-bundle";
|
||||
}
|
||||
else if (key == Ids::clionExePath)
|
||||
{
|
||||
if (os == TargetOS::windows)
|
||||
{
|
||||
#if JUCE_WINDOWS
|
||||
auto regValue = WindowsRegistry::getValue ("HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\Applications\\clion64.exe\\shell\\open\\command\\", {}, {});
|
||||
auto openCmd = StringArray::fromTokens (regValue, true);
|
||||
|
||||
if (! openCmd.isEmpty())
|
||||
return Value (openCmd[0].unquoted());
|
||||
#endif
|
||||
|
||||
v = "C:\\Program Files\\JetBrains\\CLion YYYY.MM.DD\\bin\\clion64.exe";
|
||||
}
|
||||
else if (os == TargetOS::osx)
|
||||
{
|
||||
v = "/Applications/CLion.app";
|
||||
}
|
||||
else
|
||||
{
|
||||
v = "${user.home}/clion/bin/clion.sh";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return v;
|
||||
|
|
@ -357,6 +380,16 @@ bool StoredSettings::isGlobalPathValid (const File& relativeTo, const Identifier
|
|||
{
|
||||
fileToCheckFor = {};
|
||||
}
|
||||
else if (key == Ids::clionExePath)
|
||||
{
|
||||
#if JUCE_MAC
|
||||
fileToCheckFor = path.trim().endsWith (".app") ? "Contents/MacOS/clion" : "../clion";
|
||||
#elif JUCE_WIDOWS
|
||||
fileToCheckFor = "../clion64.exe";
|
||||
#else
|
||||
fileToCheckFor = "../clion.sh";
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
// didn't recognise the key provided!
|
||||
|
|
|
|||
|
|
@ -221,6 +221,7 @@ namespace Ids
|
|||
DECLARE_ID (clionMakefileEnabled);
|
||||
DECLARE_ID (clionXcodeEnabled);
|
||||
DECLARE_ID (clionCodeBlocksEnabled);
|
||||
DECLARE_ID (clionExePath);
|
||||
DECLARE_ID (font);
|
||||
DECLARE_ID (colour);
|
||||
DECLARE_ID (userNotes);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue