@@ -64,7 +64,19 @@ public: | |||
//============================================================================== | |||
struct Type : public OpenDocumentManager::DocumentType | |||
{ | |||
bool canOpenFile (const File& file) { return file.hasFileExtension ("cpp;h;hpp;mm;m;c;cc;cxx;txt;inc;tcc;xml;plist;rtf;html;htm;php;py;rb;cs"); } | |||
bool canOpenFile (const File& file) | |||
{ | |||
if (file.hasFileExtension ("cpp;h;hpp;mm;m;c;cc;cxx;txt;inc;tcc;xml;plist;rtf;html;htm;php;py;rb;cs")) | |||
return true; | |||
MemoryBlock mb; | |||
if (file.loadFileAsData (mb) | |||
&& CharPointer_UTF8::isValidString (static_cast <const char*> (mb.getData()), mb.getSize())) | |||
return true; | |||
return false; | |||
} | |||
Document* openFile (Project* project, const File& file) { return new SourceCodeDocument (project, file); } | |||
}; | |||
@@ -73,24 +73,11 @@ public: | |||
} | |||
//============================================================================== | |||
int getLaunchPreferenceOrderForCurrentOS() | |||
{ | |||
#if JUCE_ANDROID | |||
return 1; | |||
#else | |||
return 0; | |||
#endif | |||
} | |||
bool launchProject() { return false; } | |||
bool isAndroid() const { return true; } | |||
bool isPossibleForCurrentProject() { return projectType.isGUIApplication(); } | |||
bool usesMMFiles() const { return false; } | |||
bool canCopeWithDuplicateFiles() { return false; } | |||
void launchProject() | |||
{ | |||
} | |||
void createPropertyEditors (PropertyListBuilder& props) | |||
{ | |||
ProjectExporter::createPropertyEditors (props); | |||
@@ -48,11 +48,19 @@ public: | |||
} | |||
//============================================================================== | |||
bool isPossibleForCurrentProject() { return true; } | |||
bool usesMMFiles() const { return false; } | |||
bool isVisualStudio() const { return true; } | |||
bool canCopeWithDuplicateFiles() { return false; } | |||
bool launchProject() | |||
{ | |||
#if JUCE_WINDOWS | |||
return getSLNFile().startAsProcess(); | |||
#else | |||
return false; | |||
#endif | |||
} | |||
void createPropertyEditors (PropertyListBuilder& props) | |||
{ | |||
ProjectExporter::createPropertyEditors (props); | |||
@@ -529,17 +537,6 @@ public: | |||
static const char* getValueTreeTypeName() { return "VS2008"; } | |||
int getVisualStudioVersion() const { return 9; } | |||
void launchProject() { getSLNFile().startAsProcess(); } | |||
int getLaunchPreferenceOrderForCurrentOS() | |||
{ | |||
#if JUCE_WINDOWS | |||
return 4; | |||
#else | |||
return 0; | |||
#endif | |||
} | |||
static MSVCProjectExporterVC2008* createForSettings (Project& project, const ValueTree& settings) | |||
{ | |||
if (settings.hasType (getValueTreeTypeName())) | |||
@@ -880,15 +877,6 @@ public: | |||
static const char* getValueTreeTypeName() { return "VS2005"; } | |||
int getVisualStudioVersion() const { return 8; } | |||
int getLaunchPreferenceOrderForCurrentOS() | |||
{ | |||
#if JUCE_WINDOWS | |||
return 2; | |||
#else | |||
return 0; | |||
#endif | |||
} | |||
static MSVCProjectExporterVC2005* createForSettings (Project& project, const ValueTree& settings) | |||
{ | |||
if (settings.hasType (getValueTreeTypeName())) | |||
@@ -918,17 +906,6 @@ public: | |||
static const char* getValueTreeTypeName() { return "VS2010"; } | |||
int getVisualStudioVersion() const { return 10; } | |||
int getLaunchPreferenceOrderForCurrentOS() | |||
{ | |||
#if JUCE_WINDOWS | |||
return 3; | |||
#else | |||
return 0; | |||
#endif | |||
} | |||
void launchProject() { getSLNFile().startAsProcess(); } | |||
static MSVCProjectExporterVC2010* createForSettings (Project& project, const ValueTree& settings) | |||
{ | |||
if (settings.hasType (getValueTreeTypeName())) | |||
@@ -57,25 +57,11 @@ public: | |||
} | |||
//============================================================================== | |||
int getLaunchPreferenceOrderForCurrentOS() | |||
{ | |||
#if JUCE_LINUX | |||
return 1; | |||
#else | |||
return 0; | |||
#endif | |||
} | |||
bool isPossibleForCurrentProject() { return true; } | |||
bool launchProject() { return false; } | |||
bool usesMMFiles() const { return false; } | |||
bool isLinux() const { return true; } | |||
bool canCopeWithDuplicateFiles() { return false; } | |||
void launchProject() | |||
{ | |||
// what to do on linux? | |||
} | |||
void createPropertyEditors (PropertyListBuilder& props) | |||
{ | |||
ProjectExporter::createPropertyEditors (props); | |||
@@ -83,15 +83,6 @@ public: | |||
Value getPostBuildScriptValue() { return getSetting (Ids::postbuildCommand); } | |||
String getPostBuildScript() const { return settings [Ids::postbuildCommand]; } | |||
int getLaunchPreferenceOrderForCurrentOS() | |||
{ | |||
#if JUCE_MAC | |||
return iOS ? 1 : 2; | |||
#else | |||
return 0; | |||
#endif | |||
} | |||
bool isAvailableOnCurrentOS() | |||
{ | |||
#if JUCE_MAC | |||
@@ -101,7 +92,6 @@ public: | |||
#endif | |||
} | |||
bool isPossibleForCurrentProject() { return projectType.isGUIApplication() || ! iOS; } | |||
bool usesMMFiles() const { return true; } | |||
bool isXcode() const { return true; } | |||
bool isOSX() const { return ! iOS; } | |||
@@ -147,9 +137,13 @@ public: | |||
"Some shell-script that will be run after a build completes."); | |||
} | |||
void launchProject() | |||
bool launchProject() | |||
{ | |||
getProjectBundle().startAsProcess(); | |||
#if JUCE_MAC | |||
return getProjectBundle().startAsProcess(); | |||
#else | |||
return false; | |||
#endif | |||
} | |||
//============================================================================== | |||
@@ -104,25 +104,6 @@ ProjectExporter* ProjectExporter::createExporter (Project& project, const ValueT | |||
return exp; | |||
} | |||
ProjectExporter* ProjectExporter::createPlatformDefaultExporter (Project& project) | |||
{ | |||
ScopedPointer <ProjectExporter> best; | |||
int bestPref = 0; | |||
for (Project::ExporterIterator exporter (project); exporter.next();) | |||
{ | |||
const int pref = exporter->getLaunchPreferenceOrderForCurrentOS(); | |||
if (pref > bestPref) | |||
{ | |||
bestPref = pref; | |||
best = exporter.exporter; | |||
} | |||
} | |||
return best.release(); | |||
} | |||
bool ProjectExporter::canProjectBeLaunched (Project* project) | |||
{ | |||
if (project != nullptr) | |||
@@ -137,7 +118,8 @@ bool ProjectExporter::canProjectBeLaunched (Project* project) | |||
MSVCProjectExporterVC2008::getValueTreeTypeName(), | |||
MSVCProjectExporterVC2010::getValueTreeTypeName(), | |||
#elif JUCE_LINUX | |||
MakefileProjectExporter::getValueTreeTypeName(), | |||
// (this doesn't currently launch.. not really sure what it would do on linux) | |||
//MakefileProjectExporter::getValueTreeTypeName(), | |||
#endif | |||
nullptr | |||
@@ -43,18 +43,14 @@ public: | |||
static ProjectExporter* createNewExporter (Project&, const int index); | |||
static ProjectExporter* createNewExporter (Project&, const String& name); | |||
static ProjectExporter* createExporter (Project&, const ValueTree& settings); | |||
static ProjectExporter* createPlatformDefaultExporter (Project&); | |||
static bool canProjectBeLaunched (Project*); | |||
static String getCurrentPlatformExporterName(); | |||
//============================================================================= | |||
// return 0 if this can't be opened in the current OS, or a higher value, where higher numbers are more preferable. | |||
virtual int getLaunchPreferenceOrderForCurrentOS() = 0; | |||
virtual bool isPossibleForCurrentProject() = 0; | |||
virtual bool usesMMFiles() const = 0; | |||
virtual void createPropertyEditors (PropertyListBuilder&); | |||
virtual void launchProject() = 0; | |||
virtual bool launchProject() = 0; | |||
virtual void create (const OwnedArray<LibraryModule>&) const = 0; // may throw a SaveError | |||
virtual bool shouldFileBeCompiledByDefault (const RelativePath& path) const; | |||
virtual bool canCopeWithDuplicateFiles() = 0; | |||
@@ -109,20 +109,6 @@ File ModuleList::getDefaultModulesFolder (Project* project) | |||
{ | |||
if (project != nullptr) | |||
{ | |||
{ | |||
// Try the platform default exporter first.. | |||
ScopedPointer <ProjectExporter> exp (ProjectExporter::createPlatformDefaultExporter (*project)); | |||
if (exp != nullptr) | |||
{ | |||
const File f (getModulesFolderForExporter (*exp)); | |||
if (ModuleList::isModulesFolder (f)) | |||
return f; | |||
} | |||
} | |||
// If that didn't work, try all the other exporters.. | |||
for (Project::ExporterIterator exporter (*project); exporter.next();) | |||
{ | |||
const File f (getModulesFolderForExporter (*exporter)); | |||
@@ -452,10 +452,9 @@ void ProjectContentComponent::openInIDE() | |||
{ | |||
if (project != nullptr) | |||
{ | |||
ScopedPointer <ProjectExporter> exporter (ProjectExporter::createPlatformDefaultExporter (*project)); | |||
if (exporter != nullptr) | |||
exporter->launchProject(); | |||
for (Project::ExporterIterator exporter (*project); exporter.next();) | |||
if (exporter->launchProject()) | |||
break; | |||
} | |||
} | |||