| @@ -64,6 +64,7 @@ public: | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| bool canLaunchProject() override { return false; } | |||||
| bool launchProject() override { return false; } | bool launchProject() override { return false; } | ||||
| bool isAndroid() const override { return true; } | bool isAndroid() const override { return true; } | ||||
| bool usesMMFiles() const override { return false; } | bool usesMMFiles() const override { return false; } | ||||
| @@ -47,6 +47,7 @@ public: | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| bool canLaunchProject() override { return false; } | |||||
| bool launchProject() override { return false; } | bool launchProject() override { return false; } | ||||
| bool isCodeBlocks() const override { return true; } | bool isCodeBlocks() const override { return true; } | ||||
| bool isWindows() const override { return true; } | bool isWindows() const override { return true; } | ||||
| @@ -50,6 +50,15 @@ public: | |||||
| #endif | #endif | ||||
| } | } | ||||
| bool canLaunchProject() override | |||||
| { | |||||
| #if JUCE_WINDOWS | |||||
| return true; | |||||
| #else | |||||
| return false; | |||||
| #endif | |||||
| } | |||||
| void createExporterProperties (PropertyListBuilder&) override | void createExporterProperties (PropertyListBuilder&) override | ||||
| { | { | ||||
| } | } | ||||
| @@ -48,10 +48,11 @@ public: | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| bool launchProject() override { return false; } | |||||
| bool usesMMFiles() const override { return false; } | |||||
| bool isLinux() const override { return true; } | |||||
| bool canCopeWithDuplicateFiles() override { return false; } | |||||
| bool canLaunchProject() override { 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&) override | void createExporterProperties (PropertyListBuilder&) override | ||||
| { | { | ||||
| @@ -125,6 +125,15 @@ public: | |||||
| #endif | #endif | ||||
| } | } | ||||
| bool canLaunchProject() override | |||||
| { | |||||
| #if JUCE_MAC | |||||
| return true; | |||||
| #else | |||||
| return false; | |||||
| #endif | |||||
| } | |||||
| //============================================================================== | //============================================================================== | ||||
| void create (const OwnedArray<LibraryModule>&) const override | void create (const OwnedArray<LibraryModule>&) const override | ||||
| { | { | ||||
| @@ -49,6 +49,7 @@ public: | |||||
| //============================================================================= | //============================================================================= | ||||
| virtual bool usesMMFiles() const = 0; | virtual bool usesMMFiles() const = 0; | ||||
| virtual void createExporterProperties (PropertyListBuilder&) = 0; | virtual void createExporterProperties (PropertyListBuilder&) = 0; | ||||
| virtual bool canLaunchProject() = 0; | |||||
| virtual bool launchProject() = 0; | virtual bool launchProject() = 0; | ||||
| virtual void create (const OwnedArray<LibraryModule>&) const = 0; // may throw a SaveError | virtual void create (const OwnedArray<LibraryModule>&) const = 0; // may throw a SaveError | ||||
| virtual bool shouldFileBeCompiledByDefault (const RelativePath& path) const; | virtual bool shouldFileBeCompiledByDefault (const RelativePath& path) const; | ||||
| @@ -491,13 +491,51 @@ void ProjectContentComponent::closeProject() | |||||
| mw->closeCurrentProject(); | mw->closeCurrentProject(); | ||||
| } | } | ||||
| void ProjectContentComponent::openInIDE() | |||||
| StringArray ProjectContentComponent::getExportersWhichCanLaunch() const | |||||
| { | |||||
| StringArray s; | |||||
| for (Project::ExporterIterator exporter (*project); exporter.next();) | |||||
| if (exporter->canLaunchProject()) | |||||
| s.add (exporter->getName()); | |||||
| return s; | |||||
| } | |||||
| void ProjectContentComponent::openInIDE (const String& exporterName) | |||||
| { | { | ||||
| if (project != nullptr) | if (project != nullptr) | ||||
| { | |||||
| for (Project::ExporterIterator exporter (*project); exporter.next();) | for (Project::ExporterIterator exporter (*project); exporter.next();) | ||||
| if (exporter->launchProject()) | |||||
| if (exporter->getName() == exporterName && exporter->launchProject()) | |||||
| break; | break; | ||||
| } | |||||
| static void openIDEMenuCallback (int result, ProjectContentComponent* comp) | |||||
| { | |||||
| if (comp != nullptr && result > 0) | |||||
| comp->openInIDE (comp->getExportersWhichCanLaunch() [result - 1]); | |||||
| } | |||||
| void ProjectContentComponent::openInIDE() | |||||
| { | |||||
| if (project != nullptr) | |||||
| { | |||||
| StringArray possibleExporters = getExportersWhichCanLaunch(); | |||||
| if (possibleExporters.size() > 1) | |||||
| { | |||||
| PopupMenu menu; | |||||
| for (int i = 0; i < possibleExporters.size(); ++i) | |||||
| menu.addItem (i + 1, possibleExporters[i]); | |||||
| menu.showMenuAsync (PopupMenu::Options(), | |||||
| ModalCallbackFunction::forComponent (openIDEMenuCallback, this)); | |||||
| } | |||||
| else | |||||
| { | |||||
| openInIDE (possibleExporters[0]); | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| @@ -71,6 +71,7 @@ public: | |||||
| bool saveProject(); | bool saveProject(); | ||||
| void closeProject(); | void closeProject(); | ||||
| void openInIDE(); | void openInIDE(); | ||||
| void openInIDE (const String& exporterName); | |||||
| void deleteSelectedTreeItems(); | void deleteSelectedTreeItems(); | ||||
| @@ -83,6 +84,8 @@ public: | |||||
| void showBubbleMessage (const Rectangle<int>& pos, const String& text); | void showBubbleMessage (const Rectangle<int>& pos, const String& text); | ||||
| StringArray getExportersWhichCanLaunch() const; | |||||
| //============================================================================== | //============================================================================== | ||||
| ApplicationCommandTarget* getNextCommandTarget() override; | ApplicationCommandTarget* getNextCommandTarget() override; | ||||
| void getAllCommands (Array <CommandID>& commands) override; | void getAllCommands (Array <CommandID>& commands) override; | ||||
| @@ -125,6 +125,10 @@ | |||||
| //#define JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES | //#define JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES | ||||
| #endif | #endif | ||||
| #ifndef JUCE_INCLUDE_ZLIB_CODE | |||||
| //#define JUCE_INCLUDE_ZLIB_CODE | |||||
| #endif | |||||
| //============================================================================== | //============================================================================== | ||||
| // juce_graphics flags: | // juce_graphics flags: | ||||