mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Introjucer: updated window title bar status when current file has unsaved changes.
This commit is contained in:
parent
2c8b5a37af
commit
b0fadda27c
5 changed files with 51 additions and 5 deletions
|
|
@ -29,8 +29,8 @@
|
|||
|
||||
|
||||
//==============================================================================
|
||||
DocumentEditorComponent::DocumentEditorComponent (OpenDocumentManager::Document* document_)
|
||||
: document (document_)
|
||||
DocumentEditorComponent::DocumentEditorComponent (OpenDocumentManager::Document* doc)
|
||||
: document (doc)
|
||||
{
|
||||
IntrojucerApp::getApp().openDocumentManager.addListener (this);
|
||||
}
|
||||
|
|
@ -55,3 +55,9 @@ void DocumentEditorComponent::documentAboutToClose (OpenDocumentManager::Documen
|
|||
jassertfalse
|
||||
}
|
||||
}
|
||||
|
||||
void DocumentEditorComponent::setEditedState (bool /*hasBeenEdited*/)
|
||||
{
|
||||
if (ProjectContentComponent* pcc = findParentComponentOfClass<ProjectContentComponent>())
|
||||
pcc->updateMainWindowTitle();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,6 +46,8 @@ public:
|
|||
protected:
|
||||
OpenDocumentManager::Document* document;
|
||||
|
||||
void setEditedState (bool hasBeenEdited);
|
||||
|
||||
private:
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DocumentEditorComponent)
|
||||
};
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
#include "jucer_SourceCodeEditor.h"
|
||||
#include "../Application/jucer_OpenDocumentManager.h"
|
||||
|
||||
|
||||
//==============================================================================
|
||||
SourceCodeDocument::SourceCodeDocument (Project* p, const File& f)
|
||||
: modDetector (f), project (p)
|
||||
|
|
@ -104,6 +105,9 @@ SourceCodeEditor::SourceCodeEditor (OpenDocumentManager::Document* doc)
|
|||
|
||||
SourceCodeEditor::~SourceCodeEditor()
|
||||
{
|
||||
if (editor != nullptr)
|
||||
editor->getDocument().removeListener (this);
|
||||
|
||||
getAppSettings().appearance.settings.removeListener (this);
|
||||
|
||||
if (SourceCodeDocument* doc = dynamic_cast <SourceCodeDocument*> (getDocument()))
|
||||
|
|
@ -120,6 +124,9 @@ void SourceCodeEditor::createEditor (CodeDocument& codeDocument)
|
|||
|
||||
void SourceCodeEditor::setEditor (CodeEditorComponent* newEditor)
|
||||
{
|
||||
if (editor != nullptr)
|
||||
editor->getDocument().removeListener (this);
|
||||
|
||||
addAndMakeVisible (editor = newEditor);
|
||||
|
||||
editor->setFont (AppearanceSettings::getDefaultCodeFont());
|
||||
|
|
@ -127,6 +134,8 @@ void SourceCodeEditor::setEditor (CodeEditorComponent* newEditor)
|
|||
|
||||
updateColourScheme();
|
||||
getAppSettings().appearance.settings.addListener (this);
|
||||
|
||||
editor->getDocument().addListener (this);
|
||||
}
|
||||
|
||||
void SourceCodeEditor::scrollToKeepRangeOnScreen (const Range<int>& range)
|
||||
|
|
@ -160,6 +169,11 @@ void SourceCodeEditor::resized()
|
|||
|
||||
void SourceCodeEditor::updateColourScheme() { getAppSettings().appearance.applyToCodeEditor (*editor); }
|
||||
|
||||
void SourceCodeEditor::checkSaveState()
|
||||
{
|
||||
setEditedState (getDocument()->needsSaving());
|
||||
}
|
||||
|
||||
void SourceCodeEditor::valueTreePropertyChanged (ValueTree&, const Identifier&) { updateColourScheme(); }
|
||||
void SourceCodeEditor::valueTreeChildAdded (ValueTree&, ValueTree&) { updateColourScheme(); }
|
||||
void SourceCodeEditor::valueTreeChildRemoved (ValueTree&, ValueTree&) { updateColourScheme(); }
|
||||
|
|
@ -167,6 +181,8 @@ void SourceCodeEditor::valueTreeChildOrderChanged (ValueTree&)
|
|||
void SourceCodeEditor::valueTreeParentChanged (ValueTree&) { updateColourScheme(); }
|
||||
void SourceCodeEditor::valueTreeRedirected (ValueTree&) { updateColourScheme(); }
|
||||
|
||||
void SourceCodeEditor::codeDocumentTextInserted (const String&, int) { checkSaveState(); }
|
||||
void SourceCodeEditor::codeDocumentTextDeleted (int, int) { checkSaveState(); }
|
||||
|
||||
//==============================================================================
|
||||
GenericCodeEditorComponent::GenericCodeEditorComponent (const File& f, CodeDocument& codeDocument,
|
||||
|
|
|
|||
|
|
@ -134,7 +134,8 @@ protected:
|
|||
|
||||
//==============================================================================
|
||||
class SourceCodeEditor : public DocumentEditorComponent,
|
||||
private ValueTree::Listener
|
||||
private ValueTree::Listener,
|
||||
private CodeDocument::Listener
|
||||
{
|
||||
public:
|
||||
SourceCodeEditor (OpenDocumentManager::Document* document);
|
||||
|
|
@ -158,7 +159,11 @@ private:
|
|||
void valueTreeParentChanged (ValueTree&);
|
||||
void valueTreeRedirected (ValueTree&);
|
||||
|
||||
void codeDocumentTextInserted (const String&, int);
|
||||
void codeDocumentTextDeleted (int, int);
|
||||
|
||||
void updateColourScheme();
|
||||
void checkSaveState();
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SourceCodeEditor);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -368,7 +368,6 @@ bool ProjectContentComponent::showDocument (OpenDocumentManager::Document* doc,
|
|||
contentView->grabKeyboardFocus();
|
||||
|
||||
return opened;
|
||||
|
||||
}
|
||||
|
||||
void ProjectContentComponent::hideEditor()
|
||||
|
|
@ -426,6 +425,8 @@ void ProjectContentComponent::saveDocument()
|
|||
currentDocument->save();
|
||||
else
|
||||
saveProject();
|
||||
|
||||
updateMainWindowTitle();
|
||||
}
|
||||
|
||||
bool ProjectContentComponent::goToPreviousFile()
|
||||
|
|
@ -493,7 +494,23 @@ void ProjectContentComponent::deleteSelectedTreeItems()
|
|||
void ProjectContentComponent::updateMainWindowTitle()
|
||||
{
|
||||
if (MainWindow* mw = findParentComponentOfClass<MainWindow>())
|
||||
mw->updateTitle (currentDocument != nullptr ? currentDocument->getName() : String::empty);
|
||||
{
|
||||
String title;
|
||||
bool edited = false;
|
||||
|
||||
if (currentDocument != nullptr)
|
||||
{
|
||||
title = currentDocument->getName();
|
||||
edited = currentDocument->needsSaving();
|
||||
}
|
||||
|
||||
if (ComponentPeer* peer = mw->getPeer())
|
||||
if (! peer->setDocumentEditedStatus (edited))
|
||||
if (edited)
|
||||
title << "*";
|
||||
|
||||
mw->updateTitle (title);
|
||||
}
|
||||
}
|
||||
|
||||
void ProjectContentComponent::showBubbleMessage (const Rectangle<int>& pos, const String& text)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue