Browse Source

Introjucer: added a menu to choose which IDE to launch when there's more than one.

tags/2021-05-28
jules 12 years ago
parent
commit
f196f88330
9 changed files with 74 additions and 7 deletions
  1. +1
    -0
      extras/Introjucer/Source/Project Saving/jucer_ProjectExport_Android.h
  2. +1
    -0
      extras/Introjucer/Source/Project Saving/jucer_ProjectExport_CodeBlocks.h
  3. +9
    -0
      extras/Introjucer/Source/Project Saving/jucer_ProjectExport_MSVC.h
  4. +5
    -4
      extras/Introjucer/Source/Project Saving/jucer_ProjectExport_Make.h
  5. +9
    -0
      extras/Introjucer/Source/Project Saving/jucer_ProjectExport_XCode.h
  6. +1
    -0
      extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.h
  7. +41
    -3
      extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp
  8. +3
    -0
      extras/Introjucer/Source/Project/jucer_ProjectContentComponent.h
  9. +4
    -0
      extras/JuceDemo/JuceLibraryCode/AppConfig.h

+ 1
- 0
extras/Introjucer/Source/Project Saving/jucer_ProjectExport_Android.h View File

@@ -64,6 +64,7 @@ public:
}
//==============================================================================
bool canLaunchProject() override { return false; }
bool launchProject() override { return false; }
bool isAndroid() const override { return true; }
bool usesMMFiles() const override { return false; }


+ 1
- 0
extras/Introjucer/Source/Project Saving/jucer_ProjectExport_CodeBlocks.h View File

@@ -47,6 +47,7 @@ public:
}
//==============================================================================
bool canLaunchProject() override { return false; }
bool launchProject() override { return false; }
bool isCodeBlocks() const override { return true; }
bool isWindows() const override { return true; }


+ 9
- 0
extras/Introjucer/Source/Project Saving/jucer_ProjectExport_MSVC.h View File

@@ -50,6 +50,15 @@ public:
#endif
}
bool canLaunchProject() override
{
#if JUCE_WINDOWS
return true;
#else
return false;
#endif
}
void createExporterProperties (PropertyListBuilder&) override
{
}


+ 5
- 4
extras/Introjucer/Source/Project Saving/jucer_ProjectExport_Make.h View File

@@ -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
{


+ 9
- 0
extras/Introjucer/Source/Project Saving/jucer_ProjectExport_XCode.h View File

@@ -125,6 +125,15 @@ public:
#endif
}
bool canLaunchProject() override
{
#if JUCE_MAC
return true;
#else
return false;
#endif
}
//==============================================================================
void create (const OwnedArray<LibraryModule>&) const override
{


+ 1
- 0
extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.h View File

@@ -49,6 +49,7 @@ public:
//=============================================================================
virtual bool usesMMFiles() const = 0;
virtual void createExporterProperties (PropertyListBuilder&) = 0;
virtual bool canLaunchProject() = 0;
virtual bool launchProject() = 0;
virtual void create (const OwnedArray<LibraryModule>&) const = 0; // may throw a SaveError
virtual bool shouldFileBeCompiledByDefault (const RelativePath& path) const;


+ 41
- 3
extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp View File

@@ -491,13 +491,51 @@ void ProjectContentComponent::closeProject()
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)
{
for (Project::ExporterIterator exporter (*project); exporter.next();)
if (exporter->launchProject())
if (exporter->getName() == exporterName && exporter->launchProject())
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]);
}
}
}


+ 3
- 0
extras/Introjucer/Source/Project/jucer_ProjectContentComponent.h View File

@@ -71,6 +71,7 @@ public:
bool saveProject();
void closeProject();
void openInIDE();
void openInIDE (const String& exporterName);
void deleteSelectedTreeItems();
@@ -83,6 +84,8 @@ public:
void showBubbleMessage (const Rectangle<int>& pos, const String& text);
StringArray getExportersWhichCanLaunch() const;
//==============================================================================
ApplicationCommandTarget* getNextCommandTarget() override;
void getAllCommands (Array <CommandID>& commands) override;


+ 4
- 0
extras/JuceDemo/JuceLibraryCode/AppConfig.h View File

@@ -125,6 +125,10 @@
//#define JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
#endif
#ifndef JUCE_INCLUDE_ZLIB_CODE
//#define JUCE_INCLUDE_ZLIB_CODE
#endif
//==============================================================================
// juce_graphics flags:


Loading…
Cancel
Save