From 10815d9e4d427e825cc451f31083d8442e73ef1c Mon Sep 17 00:00:00 2001 From: jules Date: Tue, 24 Apr 2012 10:50:00 +0100 Subject: [PATCH] Introjucer: made the project wizard create some default exporters. --- .../Application/jucer_OpenDocumentManager.cpp | 25 +++++++------------ .../Application/jucer_OpenDocumentManager.h | 1 + .../Code Editor/jucer_SourceCodeEditor.cpp | 18 ++++++++----- .../Code Editor/jucer_SourceCodeEditor.h | 7 +++--- .../Project Saving/jucer_ProjectExporter.cpp | 1 - .../Source/Project/jucer_NewProjectWizard.cpp | 2 ++ .../Project/jucer_ProjectContentComponent.h | 1 + 7 files changed, 29 insertions(+), 26 deletions(-) diff --git a/extras/Introjucer/Source/Application/jucer_OpenDocumentManager.cpp b/extras/Introjucer/Source/Application/jucer_OpenDocumentManager.cpp index bc33b1a1d9..243bf57142 100644 --- a/extras/Introjucer/Source/Application/jucer_OpenDocumentManager.cpp +++ b/extras/Introjucer/Source/Application/jucer_OpenDocumentManager.cpp @@ -33,8 +33,8 @@ class SourceCodeDocument : public OpenDocumentManager::Document { public: //============================================================================== - SourceCodeDocument (const File& file_) - : modDetector (file_) + SourceCodeDocument (Project* project_, const File& file_) + : modDetector (file_), project (project_) { codeDoc = new CodeDocument(); reloadFromFile(); @@ -43,15 +43,16 @@ public: //============================================================================== struct Type : public OpenDocumentManager::DocumentType { - bool canOpenFile (const File& file) { return SourceCodeEditor::isTextFile (file); } - Document* openFile (Project*, const File& file) { return new SourceCodeDocument (file); } + bool canOpenFile (const File& file) { return file.hasFileExtension ("cpp;h;hpp;mm;m;c;cc;cxx;txt;xml;plist;rtf;html;htm;php;py;rb;cs"); } + Document* openFile (Project* project, const File& file) { return new SourceCodeDocument (project, file); } }; //============================================================================== bool loadedOk() const { return true; } bool isForFile (const File& file) const { return getFile() == file; } bool isForNode (const ValueTree& node) const { return false; } - bool refersToProject (Project& project) const { return false; } + bool refersToProject (Project& p) const { return project == &p; } + Project* getProject() const { return project; } bool canSaveAs() const { return true; } String getName() const { return getFile().getFileName(); } String getType() const { return getFile().getFileExtension() + " file"; } @@ -92,22 +93,13 @@ public: return false; } - Component* createEditor() - { - CodeTokeniser* tokeniser = nullptr; - - if (SourceCodeEditor::isCppFile (modDetector.getFile())) - tokeniser = &cppTokeniser; - - return new SourceCodeEditor (this, *codeDoc, tokeniser); - } - + Component* createEditor() { return SourceCodeEditor::createFor (this, *codeDoc); } Component* createViewer() { return createEditor(); } private: FileModificationDetector modDetector; ScopedPointer codeDoc; - CPlusPlusCodeTokeniser cppTokeniser; + Project* project; }; //============================================================================== @@ -132,6 +124,7 @@ public: bool isForFile (const File& file_) const { return file == file_; } bool isForNode (const ValueTree& node_) const { return false; } bool refersToProject (Project& p) const { return project == &p; } + Project* getProject() const { return project; } bool needsSaving() const { return false; } bool save() { return true; } bool canSaveAs() const { return false; } diff --git a/extras/Introjucer/Source/Application/jucer_OpenDocumentManager.h b/extras/Introjucer/Source/Application/jucer_OpenDocumentManager.h index e7dfec668d..d213a7704b 100644 --- a/extras/Introjucer/Source/Application/jucer_OpenDocumentManager.h +++ b/extras/Introjucer/Source/Application/jucer_OpenDocumentManager.h @@ -52,6 +52,7 @@ public: virtual bool isForFile (const File& file) const = 0; virtual bool isForNode (const ValueTree& node) const = 0; virtual bool refersToProject (Project& project) const = 0; + virtual Project* getProject() const = 0; virtual String getName() const = 0; virtual String getType() const = 0; virtual File getFile() const = 0; diff --git a/extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.cpp b/extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.cpp index ca2a03e4a1..06082e47ac 100644 --- a/extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.cpp +++ b/extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.cpp @@ -44,6 +44,8 @@ SourceCodeEditor::SourceCodeEditor (OpenDocumentManager::Document* document_, font.setTypefaceName (Font::getDefaultMonospacedFontName()); #endif editor.setFont (font); + + editor.setTabSize (4, true); } SourceCodeEditor::~SourceCodeEditor() @@ -55,12 +57,16 @@ void SourceCodeEditor::resized() editor.setBounds (getLocalBounds()); } -bool SourceCodeEditor::isTextFile (const File& file) +SourceCodeEditor* SourceCodeEditor::createFor (OpenDocumentManager::Document* document, + CodeDocument& codeDocument) { - return file.hasFileExtension ("cpp;h;hpp;mm;m;c;cc;cxx;txt;xml;plist;rtf;html;htm;php;py;rb;cs"); -} + CodeTokeniser* tokeniser = nullptr; -bool SourceCodeEditor::isCppFile (const File& file) -{ - return file.hasFileExtension (sourceOrHeaderFileExtensions); + if (document->getFile().hasFileExtension (sourceOrHeaderFileExtensions)) + { + static CPlusPlusCodeTokeniser cppTokeniser; + tokeniser = &cppTokeniser; + } + + return new SourceCodeEditor (document, codeDocument, tokeniser); } diff --git a/extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.h b/extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.h index ed6b82977c..9831ee6d1e 100644 --- a/extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.h +++ b/extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.h @@ -43,14 +43,15 @@ public: ~SourceCodeEditor(); - static bool isTextFile (const File& file); - static bool isCppFile (const File& file); + static SourceCodeEditor* createFor (OpenDocumentManager::Document* document, + CodeDocument& codeDocument); + //============================================================================== void resized(); -private: CodeEditorComponent editor; +private: JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SourceCodeEditor); }; diff --git a/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp b/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp index f398846959..cf0560b290 100644 --- a/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp +++ b/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp @@ -53,7 +53,6 @@ StringArray ProjectExporter::getDefaultExporters() { StringArray s; s.add (XCodeProjectExporter::getNameMac()); - s.add (MSVCProjectExporterVC2008::getName()); s.add (MSVCProjectExporterVC2010::getName()); s.add (MakefileProjectExporter::getNameLinux()); return s; diff --git a/extras/Introjucer/Source/Project/jucer_NewProjectWizard.cpp b/extras/Introjucer/Source/Project/jucer_NewProjectWizard.cpp index 079641609f..1e3551df63 100644 --- a/extras/Introjucer/Source/Project/jucer_NewProjectWizard.cpp +++ b/extras/Introjucer/Source/Project/jucer_NewProjectWizard.cpp @@ -159,6 +159,8 @@ public: sourceGroup.addFile (mainCppFile, -1, true); } + project.createDefaultExporters(); + return true; } diff --git a/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.h b/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.h index f294e9e913..82197cf79d 100644 --- a/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.h +++ b/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.h @@ -51,6 +51,7 @@ public: bool showDocument (OpenDocumentManager::Document* doc); void hideDocument (OpenDocumentManager::Document* doc); bool setEditorComponent (Component* editor, OpenDocumentManager::Document* doc); + Component* getEditorComponent() const { return contentView; } OpenDocumentManager::Document* getCurrentDocument() const { return currentDocument; } void updateMissingFileStatuses();