1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-26 02:14:22 +00:00

Introjucer: refactoring and addition of appearance settings window for editor colours + fonts.

This commit is contained in:
jules 2012-07-04 10:43:18 +01:00
parent 7f74968cef
commit f824e99f2d
33 changed files with 877 additions and 125 deletions

View file

@ -25,6 +25,7 @@
#include "jucer_ProjectContentComponent.h"
#include "../Application/jucer_MainWindow.h"
#include "../Application/jucer_Application.h"
#include "../Code Editor/jucer_SourceCodeEditor.h"
#include "jucer_ConfigPage.h"
#include "jucer_TreeViewTypes.h"
@ -109,6 +110,25 @@ void ProjectContentComponent::paint (Graphics& g)
g.fillAll (Colour::greyLevel (0.8f));
}
void ProjectContentComponent::resized()
{
Rectangle<int> r (getLocalBounds());
treeViewTabs.setBounds (r.removeFromLeft (treeViewTabs.getWidth()));
if (resizerBar != nullptr)
resizerBar->setBounds (r.removeFromLeft (4));
if (contentView != nullptr)
contentView->setBounds (r);
}
void ProjectContentComponent::childBoundsChanged (Component* child)
{
if (child == &treeViewTabs)
resized();
}
void ProjectContentComponent::setProject (Project* newProject)
{
if (project != newProject)
@ -121,38 +141,44 @@ void ProjectContentComponent::setProject (Project* newProject)
contentView = nullptr;
resizerBar = nullptr;
if (project != nullptr && treeViewTabs.isShowing())
{
if (treeViewTabs.getWidth() > 0)
settings.setValue ("projectTreeviewWidth_" + project->getProjectUID(), treeViewTabs.getWidth());
settings.setValue ("lastTab_" + project->getProjectUID(), treeViewTabs.getCurrentTabName());
}
treeViewTabs.clearTabs();
if (treeViewTabs.isShowing() && treeViewTabs.getWidth() > 0)
settings.setValue ("projectTreeviewWidth", treeViewTabs.getWidth());
project = newProject;
if (project != nullptr)
{
treeViewTabs.setVisible (true);
addChildAndSetID (&treeViewTabs, "tree");
addAndMakeVisible (&treeViewTabs);
createProjectTabs();
String lastTreeWidth (settings.getValue ("projectTreeviewWidth"));
if (lastTreeWidth.getIntValue() < 150)
lastTreeWidth = "250";
const String lastTabName (settings.getValue ("lastTab_" + project->getProjectUID()));
int lastTabIndex = treeViewTabs.getTabNames().indexOf (lastTabName);
treeViewTabs.setBounds ("0, 0, left + " + lastTreeWidth + ", parent.height");
if (lastTabIndex < 0 || lastTabIndex > treeViewTabs.getNumTabs())
lastTabIndex = 1;
addChildAndSetID (resizerBar = new ResizableEdgeComponent (&treeViewTabs, &treeSizeConstrainer,
ResizableEdgeComponent::rightEdge),
"resizer");
treeViewTabs.setCurrentTabIndex (lastTabIndex);
resizerBar->setBounds ("tree.right, 0, tree.right + 4, parent.height");
int lastTreeWidth = settings.getValue ("projectTreeviewWidth_" + project->getProjectUID()).getIntValue();
if (lastTreeWidth < 150)
lastTreeWidth = 250;
treeViewTabs.setBounds (0, 0, lastTreeWidth, getHeight());
addAndMakeVisible (resizerBar = new ResizableEdgeComponent (&treeViewTabs, &treeSizeConstrainer,
ResizableEdgeComponent::rightEdge));
project->addChangeListener (this);
if (currentDocument == nullptr)
invokeDirectly (CommandIDs::showProjectSettings, true);
updateMissingFileStatuses();
resized();
}
else
{
@ -163,6 +189,7 @@ void ProjectContentComponent::setProject (Project* newProject)
void ProjectContentComponent::createProjectTabs()
{
jassert (project != nullptr);
treeViewTabs.addTab ("Files", Colour::greyLevel (0.93f), new FileTreeTab (*project), true);
treeViewTabs.addTab ("Config", Colour::greyLevel (0.93f), new ConfigTreeTab (*project), true);
}
@ -205,7 +232,7 @@ void ProjectContentComponent::updateMissingFileStatuses()
bool ProjectContentComponent::showEditorForFile (const File& f)
{
return showDocument (OpenDocumentManager::getInstance()->openFile (project, f));
return showDocument (JucerApplication::getApp()->openDocumentManager.openFile (project, f));
}
bool ProjectContentComponent::showDocument (OpenDocumentManager::Document* doc)
@ -213,7 +240,7 @@ bool ProjectContentComponent::showDocument (OpenDocumentManager::Document* doc)
if (doc == nullptr)
return false;
OpenDocumentManager::getInstance()->moveDocumentToTopOfStack (doc);
JucerApplication::getApp()->openDocumentManager.moveDocumentToTopOfStack (doc);
if (doc->hasFileBeenModifiedExternally())
doc->reloadFromFile();
@ -242,11 +269,10 @@ bool ProjectContentComponent::setEditorComponent (Component* editor, OpenDocumen
contentView = editor;
currentDocument = doc;
addAndMakeVisible (editor);
editor->setBounds ("resizer.right, 0, parent.right, parent.height");
resized();
updateMainWindowTitle();
commandManager->commandStatusChanged();
return true;
}
@ -419,7 +445,7 @@ bool ProjectContentComponent::perform (const InvocationInfo& info)
case CommandIDs::closeDocument:
if (currentDocument != nullptr)
OpenDocumentManager::getInstance()->closeDocument (currentDocument, true);
JucerApplication::getApp()->openDocumentManager.closeDocument (currentDocument, true);
break;
case CommandIDs::openInIDE: