@@ -28,8 +28,7 @@ | |||
//============================================================================== | |||
class GlobalSearchPathsWindowComponent : public Component, | |||
private ComboBox::Listener | |||
class GlobalSearchPathsWindowComponent : public Component | |||
{ | |||
public: | |||
GlobalSearchPathsWindowComponent() | |||
@@ -60,7 +59,7 @@ public: | |||
osSelector.addItem ("Windows", 2); | |||
osSelector.addItem ("Linux", 3); | |||
osSelector.addListener (this); | |||
osSelector.onChange = [this] { updateFilePathPropertyComponents(); }; | |||
auto os = TargetOS::getThisOS(); | |||
@@ -120,11 +119,6 @@ private: | |||
ComboBox osSelector; | |||
InfoButton info; | |||
void comboBoxChanged (ComboBox*) override | |||
{ | |||
updateFilePathPropertyComponents(); | |||
} | |||
TargetOS::OS getSelectedOS() const | |||
{ | |||
auto selectedOS = TargetOS::unknown; | |||
@@ -29,8 +29,7 @@ | |||
//============================================================================== | |||
class SVGPathDataComponent : public Component, | |||
public FileDragAndDropTarget, | |||
private TextEditor::Listener | |||
public FileDragAndDropTarget | |||
{ | |||
public: | |||
@@ -43,7 +42,8 @@ public: | |||
userText.setMultiLine (true, true); | |||
userText.setReturnKeyStartsNewLine (true); | |||
addAndMakeVisible (userText); | |||
userText.addListener (this); | |||
userText.onTextChange = [this] { update(); }; | |||
userText.onEscapeKey = [this] { getTopLevelComponent()->exitModalState (0); }; | |||
resultText.setFont (getAppSettings().appearance.getCodeFont().withHeight (13.0f)); | |||
resultText.setMultiLine (true, true); | |||
@@ -65,16 +65,6 @@ public: | |||
fillPathButton.setToggleState (true, NotificationType::dontSendNotification); | |||
} | |||
void textEditorTextChanged (TextEditor&) override | |||
{ | |||
update(); | |||
} | |||
void textEditorEscapeKeyPressed (TextEditor&) override | |||
{ | |||
getTopLevelComponent()->exitModalState (0); | |||
} | |||
void update() | |||
{ | |||
getLastText() = userText.getText(); | |||
@@ -28,8 +28,7 @@ | |||
//============================================================================== | |||
class UTF8Component : public Component, | |||
private TextEditor::Listener | |||
class UTF8Component : public Component | |||
{ | |||
public: | |||
UTF8Component() | |||
@@ -43,7 +42,8 @@ public: | |||
userText.setMultiLine (true, true); | |||
userText.setReturnKeyStartsNewLine (true); | |||
addAndMakeVisible (userText); | |||
userText.addListener (this); | |||
userText.onTextChange = [this] { update(); }; | |||
userText.onEscapeKey = [this] { getTopLevelComponent()->exitModalState (0); }; | |||
resultText.setFont (getAppSettings().appearance.getCodeFont().withHeight (13.0f)); | |||
resultText.setMultiLine (true, true); | |||
@@ -54,16 +54,6 @@ public: | |||
userText.setText (getLastText()); | |||
} | |||
void textEditorTextChanged (TextEditor&) override | |||
{ | |||
update(); | |||
} | |||
void textEditorEscapeKeyPressed (TextEditor&) override | |||
{ | |||
getTopLevelComponent()->exitModalState (0); | |||
} | |||
void update() | |||
{ | |||
getLastText() = userText.getText(); | |||
@@ -72,7 +62,7 @@ public: | |||
void resized() override | |||
{ | |||
Rectangle<int> r (getLocalBounds().reduced (8)); | |||
auto r = getLocalBounds().reduced (8); | |||
desc.setBounds (r.removeFromTop (44)); | |||
r.removeFromTop (8); | |||
userText.setBounds (r.removeFromTop (r.getHeight() / 2)); | |||
@@ -446,7 +446,6 @@ private: | |||
//============================================================================== | |||
class ControlsComponent : public Component, | |||
private Slider::Listener, | |||
private ChangeListener | |||
{ | |||
public: | |||
@@ -464,7 +463,8 @@ private: | |||
setMouseClickGrabsKeyboardFocus (false); | |||
addAndMakeVisible (&slider); | |||
updateRange(); | |||
slider.addListener (this); | |||
slider.onValueChange = [this] { updateSliderValue(); }; | |||
slider.onDragEnd = [this] { updateRange(); }; | |||
if (showColourSelector) | |||
{ | |||
@@ -511,10 +511,10 @@ private: | |||
g.fillRoundedRectangle (getLocalBounds().toFloat(), 8.0f); | |||
} | |||
void sliderValueChanged (Slider* s) override | |||
void updateSliderValue() | |||
{ | |||
const String oldText (document.getTextBetween (start, end)); | |||
const String newText (CppParserHelpers::getReplacementStringInSameFormat (oldText, s->getValue())); | |||
const String newText (CppParserHelpers::getReplacementStringInSameFormat (oldText, slider.getValue())); | |||
if (oldText != newText) | |||
document.replaceSection (start.getPosition(), end.getPosition(), newText); | |||
@@ -525,9 +525,6 @@ private: | |||
updateColourSelector(); | |||
} | |||
void sliderDragStarted (Slider*) override {} | |||
void sliderDragEnded (Slider*) override { updateRange(); } | |||
void changeListenerCallback (ChangeBroadcaster*) override | |||
{ | |||
setNewColour (selector.getCurrentColour()); | |||
@@ -344,8 +344,7 @@ void GenericCodeEditorComponent::removeListener (GenericCodeEditorComponent::Lis | |||
} | |||
//============================================================================== | |||
class GenericCodeEditorComponent::FindPanel : public Component, | |||
private TextEditor::Listener | |||
class GenericCodeEditorComponent::FindPanel : public Component | |||
{ | |||
public: | |||
FindPanel() | |||
@@ -376,7 +375,13 @@ public: | |||
findNext.setWantsKeyboardFocus (false); | |||
editor.setText (getSearchString()); | |||
editor.addListener (this); | |||
editor.onTextChange = [this] { changeSearchString(); }; | |||
editor.onReturnKey = [this] { ProjucerApplication::getCommandManager().invokeDirectly (CommandIDs::findNext, true); }; | |||
editor.onEscapeKey = [this] | |||
{ | |||
if (GenericCodeEditorComponent* ed = getOwner()) | |||
ed->hideFindPanel(); | |||
}; | |||
} | |||
void setCommandManager (ApplicationCommandManager* cm) | |||
@@ -406,7 +411,7 @@ public: | |||
findPrev.setBounds (getWidth() - 70, y, 30, 22); | |||
} | |||
void textEditorTextChanged (TextEditor&) override | |||
void changeSearchString() | |||
{ | |||
setSearchString (editor.getText()); | |||
@@ -414,19 +419,6 @@ public: | |||
ed->findNext (true, false); | |||
} | |||
void textEditorFocusLost (TextEditor&) override {} | |||
void textEditorReturnKeyPressed (TextEditor&) override | |||
{ | |||
ProjucerApplication::getCommandManager().invokeDirectly (CommandIDs::findNext, true); | |||
} | |||
void textEditorEscapeKeyPressed (TextEditor&) override | |||
{ | |||
if (GenericCodeEditorComponent* ed = getOwner()) | |||
ed->hideFindPanel(); | |||
} | |||
GenericCodeEditorComponent* getOwner() const | |||
{ | |||
return findParentComponentOfClass <GenericCodeEditorComponent>(); | |||
@@ -91,7 +91,6 @@ private: | |||
//============================================================================== | |||
class FindPanel : public Component, | |||
private TextEditor::Listener, | |||
private Timer, | |||
private FocusChangeListener | |||
{ | |||
@@ -100,7 +99,12 @@ public: | |||
: callback (cb) | |||
{ | |||
addAndMakeVisible (editor); | |||
editor.addListener (this); | |||
editor.onTextChange = [this] { startTimer (250); }; | |||
editor.onFocusLost = [this] | |||
{ | |||
isFocused = false; | |||
repaint(); | |||
}; | |||
Desktop::getInstance().addFocusChangeListener (this); | |||
@@ -141,17 +145,6 @@ private: | |||
editor.setTextToShowWhenEmpty ("Filter...", findColour (widgetTextColourId).withAlpha (0.3f)); | |||
} | |||
void textEditorTextChanged (TextEditor&) override | |||
{ | |||
startTimer (250); | |||
} | |||
void textEditorFocusLost (TextEditor&) override | |||
{ | |||
isFocused = false; | |||
repaint(); | |||
} | |||
void globalFocusChanged (Component* focusedComponent) override | |||
{ | |||
if (focusedComponent == &editor) | |||
@@ -31,7 +31,6 @@ | |||
//============================================================================== | |||
class HeaderComponent : public Component, | |||
private ComboBox::Listener, | |||
private ValueTree::Listener, | |||
private ChangeListener | |||
{ | |||
@@ -42,7 +41,7 @@ public: | |||
addAndMakeVisible (configLabel); | |||
addAndMakeVisible (exporterBox); | |||
exporterBox.addListener (this); | |||
exporterBox.onChange = [this] { updateExporterButton(); }; | |||
addAndMakeVisible (juceIcon = new ImageComponent ("icon")); | |||
juceIcon->setImage (ImageCache::getFromMemory (BinaryData::juce_icon_png, BinaryData::juce_icon_pngSize), | |||
@@ -217,12 +216,6 @@ private: | |||
int tabsWidth = 200; | |||
//========================================================================== | |||
void comboBoxChanged (ComboBox* c) override | |||
{ | |||
if (c == &exporterBox) | |||
updateExporterButton(); | |||
} | |||
void changeListenerCallback (ChangeBroadcaster* source) override | |||
{ | |||
if (source == project) | |||
@@ -77,8 +77,8 @@ try : TextPropertyComponent (propertyName, 1024, false), | |||
getValue().addListener (this); | |||
if (Label* label = dynamic_cast<Label*> (getChildComponent (0))) | |||
label->addListener (this); | |||
if (auto* label = dynamic_cast<Label*> (getChildComponent (0))) | |||
label->onEditorShow = [this, label] { setEditorText (label); }; | |||
else | |||
jassertfalse; | |||
@@ -116,18 +116,11 @@ Colour DependencyPathPropertyComponent::getTextColourToDisplay() const | |||
: Colours::red; | |||
} | |||
void DependencyPathPropertyComponent::labelTextChanged (Label*) | |||
{ | |||
} | |||
void DependencyPathPropertyComponent::editorShown (Label* /*label*/, TextEditor& editor) | |||
void DependencyPathPropertyComponent::setEditorText (Label* label) | |||
{ | |||
if (! pathValueSource.isUsingProjectSettings()) | |||
editor.setText (String(), dontSendNotification); | |||
} | |||
void DependencyPathPropertyComponent::editorHidden (Label*, TextEditor&) | |||
{ | |||
if (auto editor = label->getCurrentTextEditor()) | |||
editor->setText (String(), dontSendNotification); | |||
} | |||
void DependencyPathPropertyComponent::lookAndFeelChanged() | |||
@@ -159,7 +152,7 @@ try : TextPropertyComponent (propertyDescription, 1024, false), | |||
getValue().addListener (this); | |||
if (auto* label = dynamic_cast<Label*> (getChildComponent (0))) | |||
label->addListener (this); | |||
label->onEditorShow = [this, label] { setEditorText (label); }; | |||
else | |||
jassertfalse; | |||
@@ -238,10 +231,11 @@ void DependencyFilePathPropertyComponent::valueChanged (Value& value) | |||
textWasEdited(); | |||
} | |||
void DependencyFilePathPropertyComponent::editorShown (Label*, TextEditor& editor) | |||
void DependencyFilePathPropertyComponent::setEditorText (Label* label) | |||
{ | |||
if (! pathValueSource.isUsingProjectSettings()) | |||
editor.setText (String(), dontSendNotification); | |||
if (auto editor = label->getCurrentTextEditor()) | |||
editor->setText (String(), dontSendNotification); | |||
} | |||
void DependencyFilePathPropertyComponent::browse() | |||
@@ -148,8 +148,7 @@ private: | |||
//============================================================================== | |||
class DependencyPathPropertyComponent : public TextPropertyComponent, | |||
private Value::Listener, | |||
private Label::Listener | |||
private Value::Listener | |||
{ | |||
public: | |||
DependencyPathPropertyComponent (const File& pathRelativeToUse, | |||
@@ -178,10 +177,7 @@ private: | |||
/** a reference to the value source that this value refers to. */ | |||
DependencyPathValueSource& pathValueSource; | |||
// Label::Listener overrides: | |||
void labelTextChanged (Label* labelThatHasChanged) override; | |||
void editorShown (Label*, TextEditor&) override; | |||
void editorHidden (Label*, TextEditor&) override; | |||
void setEditorText (Label* label); | |||
void lookAndFeelChanged() override; | |||
@@ -191,8 +187,7 @@ private: | |||
//============================================================================== | |||
class DependencyFilePathPropertyComponent : public TextPropertyComponent, | |||
public FileDragAndDropTarget, | |||
private Value::Listener, | |||
private Label::Listener | |||
private Value::Listener | |||
{ | |||
public: | |||
DependencyFilePathPropertyComponent (Value& value, | |||
@@ -218,9 +213,7 @@ private: | |||
void valueChanged (Value&) override; | |||
void labelTextChanged (Label*) override {} | |||
void editorHidden (Label*, TextEditor&) override {} | |||
void editorShown (Label*, TextEditor&) override; | |||
void setEditorText (Label* label); | |||
void lookAndFeelChanged() override | |||
{ | |||
@@ -53,8 +53,7 @@ public: | |||
private: | |||
struct InnerComponent : public Component, | |||
public FileDragAndDropTarget, | |||
private TextEditor::Listener | |||
public FileDragAndDropTarget | |||
{ | |||
InnerComponent (Value v, bool isDir, const String& wc, const File& rt, const bool multiplePaths) | |||
: value (v), | |||
@@ -67,7 +66,8 @@ private: | |||
{ | |||
addAndMakeVisible (textbox); | |||
textbox.getTextValue().referTo (value); | |||
textbox.addListener (this); | |||
textbox.onReturnKey = [this] { updateEditorColour (textbox); }; | |||
textbox.onFocusLost = [this] { updateEditorColour (textbox); }; | |||
addAndMakeVisible (button); | |||
button.onClick = [this] { browse(); }; | |||
@@ -130,9 +130,6 @@ private: | |||
} | |||
} | |||
void textEditorReturnKeyPressed (TextEditor& editor) override { updateEditorColour (editor); } | |||
void textEditorFocusLost (TextEditor& editor) override { updateEditorColour (editor); } | |||
void updateEditorColour (TextEditor& editor) | |||
{ | |||
if (supportsMultiplePaths) | |||
@@ -132,8 +132,7 @@ Component* JucerTreeViewBase::createItemComponent() | |||
} | |||
//============================================================================== | |||
class RenameTreeItemCallback : public ModalComponentManager::Callback, | |||
public TextEditor::Listener | |||
class RenameTreeItemCallback : public ModalComponentManager::Callback | |||
{ | |||
public: | |||
RenameTreeItemCallback (JucerTreeViewBase& ti, Component& parent, const Rectangle<int>& bounds) | |||
@@ -143,7 +142,9 @@ public: | |||
ed.setPopupMenuEnabled (false); | |||
ed.setSelectAllWhenFocused (true); | |||
ed.setFont (item.getFont()); | |||
ed.addListener (this); | |||
ed.onReturnKey = [this] { ed.exitModalState (1); }; | |||
ed.onEscapeKey = [this] { ed.exitModalState (0); }; | |||
ed.onFocusLost = [this] { ed.exitModalState (0); }; | |||
ed.setText (item.getRenamingName()); | |||
ed.setBounds (bounds); | |||
@@ -157,11 +158,6 @@ public: | |||
item.setName (ed.getText()); | |||
} | |||
void textEditorTextChanged (TextEditor&) override {} | |||
void textEditorReturnKeyPressed (TextEditor& editor) override { editor.exitModalState (1); } | |||
void textEditorEscapeKeyPressed (TextEditor& editor) override { editor.exitModalState (0); } | |||
void textEditorFocusLost (TextEditor& editor) override { editor.exitModalState (0); } | |||
private: | |||
struct RenameEditor : public TextEditor | |||
{ | |||
@@ -28,8 +28,7 @@ | |||
//============================================================================== | |||
class ModulesFolderPathBox : public Component, | |||
private ComboBox::Listener | |||
class ModulesFolderPathBox : public Component | |||
{ | |||
public: | |||
ModulesFolderPathBox (File initialFileOrDirectory) | |||
@@ -45,7 +44,8 @@ public: | |||
addAndMakeVisible (currentPathBox); | |||
currentPathBox.setEditableText (true); | |||
currentPathBox.addListener (this); | |||
currentPathBox.onChange = [this] { setModulesFolder (File::getCurrentWorkingDirectory() | |||
.getChildFile (currentPathBox.getText())); }; | |||
addAndMakeVisible (openFolderButton); | |||
openFolderButton.setTooltip (TRANS ("Select JUCE modules folder")); | |||
@@ -121,11 +121,6 @@ public: | |||
} | |||
} | |||
void comboBoxChanged (ComboBox*) override | |||
{ | |||
setModulesFolder (File::getCurrentWorkingDirectory().getChildFile (currentPathBox.getText())); | |||
} | |||
File modulesFolder; | |||
bool isUsingGlobalPaths; | |||
@@ -285,8 +280,6 @@ private: | |||
a list box of platform targets to generate. | |||
*/ | |||
class WizardComp : public Component, | |||
private ComboBox::Listener, | |||
private TextEditor::Listener, | |||
private FileBrowserListener | |||
{ | |||
public: | |||
@@ -300,13 +293,17 @@ public: | |||
addChildAndSetID (&projectName, "projectName"); | |||
projectName.setText ("NewProject"); | |||
nameLabel.attachToComponent (&projectName, true); | |||
projectName.addListener (this); | |||
projectName.onTextChange = [this] | |||
{ | |||
updateCreateButton(); | |||
fileBrowser.setFileName (File::createLegalFileName (projectName.getText())); | |||
}; | |||
addChildAndSetID (&projectType, "projectType"); | |||
projectType.addItemList (getWizardNames(), 1); | |||
projectType.setSelectedId (1, dontSendNotification); | |||
typeLabel.attachToComponent (&projectType, true); | |||
projectType.addListener (this); | |||
projectType.onChange = [this] { updateFileCreationTypes(); }; | |||
addChildAndSetID (&fileOutline, "fileOutline"); | |||
fileOutline.setColour (GroupComponent::outlineColourId, Colours::black.withAlpha (0.2f)); | |||
@@ -447,17 +444,6 @@ public: | |||
filesToCreate.setSelectedId (1, dontSendNotification); | |||
} | |||
void comboBoxChanged (ComboBox*) override | |||
{ | |||
updateFileCreationTypes(); | |||
} | |||
void textEditorTextChanged (TextEditor&) override | |||
{ | |||
updateCreateButton(); | |||
fileBrowser.setFileName (File::createLegalFileName (projectName.getText())); | |||
} | |||
void selectionChanged() override {} | |||
void fileClicked (const File&, const MouseEvent&) override {} | |||
@@ -134,8 +134,7 @@ private: | |||
Project Template Component for front page. | |||
Features multiple icon buttons to select the type of project template | |||
*/ | |||
class TemplateTileBrowser : public Component, | |||
private Button::Listener | |||
class TemplateTileBrowser : public Component | |||
{ | |||
public: | |||
TemplateTileBrowser (WizardComp* projectWizard) | |||
@@ -152,7 +151,8 @@ public: | |||
optionButtons.add (b); | |||
addAndMakeVisible (b); | |||
b->setDescription (wizard->getDescription()); | |||
b->addListener (this); | |||
b->onClick = [this, b] { showWizardButton (b); }; | |||
b->onStateChange = [this] { repaint(); }; | |||
} | |||
// Handle Open Project button functionality | |||
@@ -262,16 +262,11 @@ private: | |||
NewProjectWizardClasses::WizardComp* newProjectWizard; | |||
ScopedPointer<TemplateOptionButton> blankProjectButton, openProjectButton, exampleProjectButton; | |||
void buttonClicked (Button* b) override | |||
void showWizardButton (Button* b) | |||
{ | |||
if (dynamic_cast<TemplateOptionButton*> (b) != nullptr) | |||
showWizard (b->getButtonText()); | |||
} | |||
void buttonStateChanged (Button*) override | |||
{ | |||
repaint(); | |||
} | |||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (TemplateTileBrowser) | |||
}; |
@@ -99,7 +99,14 @@ FileBrowserComponent::FileBrowserComponent (int flags_, | |||
filenameBox.setMultiLine (false); | |||
filenameBox.setSelectAllWhenFocused (true); | |||
filenameBox.setText (filename, false); | |||
filenameBox.addListener (this); | |||
filenameBox.onTextChange = [this] { sendListenerChangeMessage(); }; | |||
filenameBox.onReturnKey = [this] { changeFilename(); }; | |||
filenameBox.onFocusLost = [this] | |||
{ | |||
if (! isSaveMode()) | |||
selectionChanged(); | |||
}; | |||
filenameBox.setReadOnly ((flags & (filenameBoxIsReadOnly | canSelectMultipleItems)) != 0); | |||
addAndMakeVisible (fileLabel); | |||
@@ -439,12 +446,7 @@ bool FileBrowserComponent::keyPressed (const KeyPress& key) | |||
} | |||
//============================================================================== | |||
void FileBrowserComponent::textEditorTextChanged (TextEditor&) | |||
{ | |||
sendListenerChangeMessage(); | |||
} | |||
void FileBrowserComponent::textEditorReturnKeyPressed (TextEditor&) | |||
void FileBrowserComponent::changeFilename() | |||
{ | |||
if (filenameBox.getText().containsChar (File::getSeparatorChar())) | |||
{ | |||
@@ -472,16 +474,6 @@ void FileBrowserComponent::textEditorReturnKeyPressed (TextEditor&) | |||
} | |||
} | |||
void FileBrowserComponent::textEditorEscapeKeyPressed (TextEditor&) | |||
{ | |||
} | |||
void FileBrowserComponent::textEditorFocusLost (TextEditor&) | |||
{ | |||
if (! isSaveMode()) | |||
selectionChanged(); | |||
} | |||
//============================================================================== | |||
void FileBrowserComponent::updateSelectedPath() | |||
{ | |||
@@ -39,7 +39,6 @@ namespace juce | |||
*/ | |||
class JUCE_API FileBrowserComponent : public Component, | |||
private FileBrowserListener, | |||
private TextEditor::Listener, | |||
private FileFilter, | |||
private Timer | |||
{ | |||
@@ -235,14 +234,6 @@ public: | |||
/** @internal */ | |||
void lookAndFeelChanged() override; | |||
/** @internal */ | |||
void textEditorTextChanged (TextEditor&) override; | |||
/** @internal */ | |||
void textEditorReturnKeyPressed (TextEditor&) override; | |||
/** @internal */ | |||
void textEditorEscapeKeyPressed (TextEditor&) override; | |||
/** @internal */ | |||
void textEditorFocusLost (TextEditor&) override; | |||
/** @internal */ | |||
bool keyPressed (const KeyPress&) override; | |||
/** @internal */ | |||
void selectionChanged() override; | |||
@@ -295,6 +286,7 @@ private: | |||
void sendListenerChangeMessage(); | |||
bool isFileOrDirSuitable (const File&) const; | |||
void updateSelectedPath(); | |||
void changeFilename(); | |||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (FileBrowserComponent) | |||
}; | |||
@@ -239,14 +239,14 @@ void ChoicePropertyComponent::refresh() | |||
if (! comboBox.isVisible()) | |||
{ | |||
createComboBox(); | |||
comboBox.addListener (this); | |||
comboBox.onChange = [this] { changeIndex(); }; | |||
} | |||
comboBox.setSelectedId (getIndex() + 1, dontSendNotification); | |||
} | |||
} | |||
void ChoicePropertyComponent::comboBoxChanged (ComboBox*) | |||
void ChoicePropertyComponent::changeIndex() | |||
{ | |||
if (isCustomClass) | |||
{ | |||
@@ -46,8 +46,7 @@ namespace juce | |||
@see PropertyComponent, PropertyPanel | |||
*/ | |||
class JUCE_API ChoicePropertyComponent : public PropertyComponent, | |||
private ComboBox::Listener | |||
class JUCE_API ChoicePropertyComponent : public PropertyComponent | |||
{ | |||
protected: | |||
/** Creates the component. | |||
@@ -146,7 +145,7 @@ private: | |||
void createComboBox(); | |||
void createComboBoxWithDefault (const String&); | |||
void comboBoxChanged (ComboBox*) override; | |||
void changeIndex(); | |||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ChoicePropertyComponent) | |||
}; | |||
@@ -41,7 +41,11 @@ SliderPropertyComponent::SliderPropertyComponent (const String& name, | |||
slider.setSkewFactor (skewFactor, symmetricSkew); | |||
slider.setSliderStyle (Slider::LinearBar); | |||
slider.addListener (this); | |||
slider.onValueChange = [this] | |||
{ | |||
if (getValue() != slider.getValue()) | |||
setValue (slider.getValue()); | |||
}; | |||
} | |||
SliderPropertyComponent::SliderPropertyComponent (const Value& valueToControl, | |||
@@ -80,10 +84,4 @@ void SliderPropertyComponent::refresh() | |||
slider.setValue (getValue(), dontSendNotification); | |||
} | |||
void SliderPropertyComponent::sliderValueChanged (Slider*) | |||
{ | |||
if (getValue() != slider.getValue()) | |||
setValue (slider.getValue()); | |||
} | |||
} // namespace juce |
@@ -33,8 +33,7 @@ namespace juce | |||
@see PropertyComponent, Slider | |||
*/ | |||
class JUCE_API SliderPropertyComponent : public PropertyComponent, | |||
private Slider::Listener | |||
class JUCE_API SliderPropertyComponent : public PropertyComponent | |||
{ | |||
protected: | |||
//============================================================================== | |||
@@ -92,8 +91,6 @@ public: | |||
//============================================================================== | |||
/** @internal */ | |||
void refresh(); | |||
/** @internal */ | |||
void sliderValueChanged (Slider*); | |||
protected: | |||
/** The slider component being used in this component. | |||
@@ -431,7 +431,7 @@ void ComboBox::lookAndFeelChanged() | |||
setWantsKeyboardFocus (labelEditableState == labelIsNotEditable); | |||
} | |||
label->addListener (this); | |||
label->onTextChange = [this] { triggerAsyncUpdate(); }; | |||
label->addMouseListener (this, false); | |||
label->setColour (Label::backgroundColourId, Colours::transparentBlack); | |||
@@ -483,12 +483,6 @@ bool ComboBox::keyStateChanged (const bool isKeyDown) | |||
void ComboBox::focusGained (FocusChangeType) { repaint(); } | |||
void ComboBox::focusLost (FocusChangeType) { repaint(); } | |||
void ComboBox::labelTextChanged (Label*) | |||
{ | |||
triggerAsyncUpdate(); | |||
} | |||
//============================================================================== | |||
void ComboBox::showPopupIfNotActive() | |||
{ | |||
@@ -43,7 +43,6 @@ namespace juce | |||
*/ | |||
class JUCE_API ComboBox : public Component, | |||
public SettableTooltipClient, | |||
public Label::Listener, | |||
public Value::Listener, | |||
private AsyncUpdater | |||
{ | |||
@@ -379,8 +378,6 @@ public: | |||
//============================================================================== | |||
/** @internal */ | |||
void labelTextChanged (Label*) override; | |||
/** @internal */ | |||
void enablementChanged() override; | |||
/** @internal */ | |||
void colourChanged() override; | |||
@@ -29,7 +29,6 @@ namespace juce | |||
class Slider::Pimpl : public AsyncUpdater, // this needs to be public otherwise it will cause an | |||
// error when JUCE_DLL_BUILD=1 | |||
private Label::Listener, | |||
private Value::Listener | |||
{ | |||
public: | |||
@@ -398,9 +397,9 @@ public: | |||
setMaxValue (valueMax.getValue(), dontSendNotification, true); | |||
} | |||
void labelTextChanged (Label* label) override | |||
void textChanged() | |||
{ | |||
auto newValue = owner.snapValue (owner.getValueFromText (label->getText()), notDragging); | |||
auto newValue = owner.snapValue (owner.getValueFromText (valueBox->getText()), notDragging); | |||
if (newValue != static_cast<double> (currentValue.getValue())) | |||
{ | |||
@@ -572,7 +571,7 @@ public: | |||
valueBox->setText (previousTextBoxContent, dontSendNotification); | |||
valueBox->setTooltip (owner.getTooltip()); | |||
updateTextBoxEnablement(); | |||
valueBox->addListener (this); | |||
valueBox->onTextChange = [this] { textChanged(); }; | |||
if (style == LinearBar || style == LinearBarVertical) | |||
{ | |||
@@ -81,7 +81,7 @@ void AlertWindow::setMessage (const String& message) | |||
} | |||
//============================================================================== | |||
void AlertWindow::buttonClicked (Button* button) | |||
void AlertWindow::exitAlert (Button* button) | |||
{ | |||
if (auto* parent = button->getParentComponent()) | |||
parent->exitModalState (button->getCommandID()); | |||
@@ -101,7 +101,7 @@ void AlertWindow::addButton (const String& name, | |||
b->setCommandToTrigger (0, returnValue, false); | |||
b->addShortcut (shortcutKey1); | |||
b->addShortcut (shortcutKey2); | |||
b->addListener (this); | |||
b->onClick = [this, b] { exitAlert (b); }; | |||
Array<TextButton*> buttonsArray (buttons.begin(), buttons.size()); | |||
auto& lf = getLookAndFeel(); | |||
@@ -40,8 +40,7 @@ namespace juce | |||
@see ThreadWithProgressWindow | |||
*/ | |||
class JUCE_API AlertWindow : public TopLevelWindow, | |||
private Button::Listener | |||
class JUCE_API AlertWindow : public TopLevelWindow | |||
{ | |||
public: | |||
//============================================================================== | |||
@@ -455,8 +454,6 @@ protected: | |||
/** @internal */ | |||
bool keyPressed (const KeyPress&) override; | |||
/** @internal */ | |||
void buttonClicked (Button*) override; | |||
/** @internal */ | |||
void lookAndFeelChanged() override; | |||
/** @internal */ | |||
void userTriedToCloseWindow() override; | |||
@@ -482,6 +479,7 @@ private: | |||
Component* const associatedComponent; | |||
bool escapeKeyCancels = true; | |||
void exitAlert (Button* button); | |||
void updateLayout (bool onlyIncreaseSize); | |||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AlertWindow) | |||
@@ -335,7 +335,7 @@ ColourSelector::ColourSelector (int sectionsToShow, int edge, int gapAroundColou | |||
sliders[3]->setVisible ((flags & showAlphaChannel) != 0); | |||
for (int i = 4; --i >= 0;) | |||
sliders[i]->addListener (this); | |||
sliders[i]->onValueChange = [this] { changeColour(); }; | |||
} | |||
if ((flags & showColourspace) != 0) | |||
@@ -554,7 +554,7 @@ void ColourSelector::resized() | |||
} | |||
} | |||
void ColourSelector::sliderValueChanged (Slider*) | |||
void ColourSelector::changeColour() | |||
{ | |||
if (sliders[0] != nullptr) | |||
setCurrentColour (Colour ((uint8) sliders[0]->getValue(), | |||
@@ -37,8 +37,7 @@ namespace juce | |||
when the colour changes. | |||
*/ | |||
class JUCE_API ColourSelector : public Component, | |||
public ChangeBroadcaster, | |||
protected Slider::Listener | |||
public ChangeBroadcaster | |||
{ | |||
public: | |||
//============================================================================== | |||
@@ -160,7 +159,7 @@ private: | |||
void setSV (float newS, float newV); | |||
void updateHSV(); | |||
void update (NotificationType); | |||
void sliderValueChanged (Slider*) override; | |||
void changeColour(); | |||
void paint (Graphics&) override; | |||
void resized() override; | |||
@@ -144,10 +144,10 @@ LivePropertyEditorBase::LivePropertyEditorBase (LiveValueBase& v, CodeDocument& | |||
valueEditor.setMultiLine (v.isString()); | |||
valueEditor.setReturnKeyStartsNewLine (v.isString()); | |||
valueEditor.setText (v.getStringValue (wasHex), dontSendNotification); | |||
valueEditor.addListener (this); | |||
valueEditor.onTextChange = [this] { applyNewValue (valueEditor.getText()); }; | |||
sourceEditor.setReadOnly (true); | |||
sourceEditor.setFont (sourceEditor.getFont().withHeight (13.0f)); | |||
resetButton.addListener (this); | |||
resetButton.onClick = [this] { applyNewValue (value.getOriginalStringValue (wasHex)); }; | |||
} | |||
void LivePropertyEditorBase::paint (Graphics& g) | |||
@@ -181,16 +181,6 @@ void LivePropertyEditorBase::resized() | |||
sourceEditor.setBounds (r); | |||
} | |||
void LivePropertyEditorBase::textEditorTextChanged (TextEditor&) | |||
{ | |||
applyNewValue (valueEditor.getText()); | |||
} | |||
void LivePropertyEditorBase::buttonClicked (Button*) | |||
{ | |||
applyNewValue (value.getOriginalStringValue (wasHex)); | |||
} | |||
void LivePropertyEditorBase::applyNewValue (const String& s) | |||
{ | |||
value.setStringValue (s); | |||
@@ -444,8 +434,7 @@ Component* createColourEditor (LivePropertyEditorBase& editor) | |||
} | |||
//============================================================================== | |||
struct SliderComp : public Component, | |||
private Slider::Listener | |||
struct SliderComp : public Component | |||
{ | |||
SliderComp (LivePropertyEditorBase& e, bool useFloat) | |||
: editor (e), isFloat (useFloat) | |||
@@ -453,7 +442,12 @@ struct SliderComp : public Component, | |||
slider.setTextBoxStyle (Slider::NoTextBox, true, 0, 0); | |||
addAndMakeVisible (slider); | |||
updateRange(); | |||
slider.addListener (this); | |||
slider.onDragEnd = [this] { updateRange(); }; | |||
slider.onValueChange = [this] | |||
{ | |||
editor.applyNewValue (isFloat ? getAsString ((double) slider.getValue(), editor.wasHex) | |||
: getAsString ((int64) slider.getValue(), editor.wasHex)); | |||
}; | |||
} | |||
virtual void updateRange() | |||
@@ -467,16 +461,6 @@ struct SliderComp : public Component, | |||
slider.setValue (v, dontSendNotification); | |||
} | |||
void sliderValueChanged (Slider*) override | |||
{ | |||
editor.applyNewValue (isFloat ? getAsString ((double) slider.getValue(), editor.wasHex) | |||
: getAsString ((int64) slider.getValue(), editor.wasHex)); | |||
} | |||
void sliderDragStarted (Slider*) override {} | |||
void sliderDragEnded (Slider*) override { updateRange(); } | |||
void resized() override | |||
{ | |||
slider.setBounds (getLocalBounds().removeFromTop (25)); | |||
@@ -490,15 +474,17 @@ struct SliderComp : public Component, | |||
//============================================================================== | |||
struct BoolSliderComp : public SliderComp | |||
{ | |||
BoolSliderComp (LivePropertyEditorBase& e) : SliderComp (e, false) {} | |||
BoolSliderComp (LivePropertyEditorBase& e) | |||
: SliderComp (e, false) | |||
{ | |||
slider.onValueChange = [this] { editor.applyNewValue (slider.getValue() > 0.5 ? "true" : "false"); }; | |||
} | |||
void updateRange() override | |||
{ | |||
slider.setRange (0.0, 1.0, dontSendNotification); | |||
slider.setValue (editor.value.getStringValue (false) == "true", dontSendNotification); | |||
} | |||
void sliderValueChanged (Slider*) override { editor.applyNewValue (slider.getValue() > 0.5 ? "true" : "false"); } | |||
}; | |||
Component* createIntegerSlider (LivePropertyEditorBase& editor) { return new SliderComp (editor, false); } | |||
@@ -106,16 +106,12 @@ namespace LiveConstantEditor | |||
}; | |||
//============================================================================== | |||
struct JUCE_API LivePropertyEditorBase : public Component, | |||
private TextEditor::Listener, | |||
private Button::Listener | |||
struct JUCE_API LivePropertyEditorBase : public Component | |||
{ | |||
LivePropertyEditorBase (LiveValueBase&, CodeDocument&); | |||
void paint (Graphics&) override; | |||
void resized() override; | |||
void textEditorTextChanged (TextEditor&) override; | |||
void buttonClicked (Button*) override; | |||
void applyNewValue (const String&); | |||
void selectOriginalValue(); | |||
@@ -58,7 +58,7 @@ void PreferencesPanel::addSettingsPage (const String& title, | |||
button->setImages (icon, overIcon, downIcon); | |||
button->setRadioGroupId (1); | |||
button->addListener (this); | |||
button->onClick = [this] { clickedPage(); }; | |||
button->setClickingTogglesState (true); | |||
button->setWantsKeyboardFocus (false); | |||
addAndMakeVisible (button); | |||
@@ -142,7 +142,7 @@ void PreferencesPanel::setCurrentPage (const String& pageName) | |||
} | |||
} | |||
void PreferencesPanel::buttonClicked (Button*) | |||
void PreferencesPanel::clickedPage() | |||
{ | |||
for (auto* b : buttons) | |||
{ | |||
@@ -44,8 +44,7 @@ namespace juce | |||
and implement the createComponentForPage() method to create suitable components | |||
for each of these pages. | |||
*/ | |||
class JUCE_API PreferencesPanel : public Component, | |||
private Button::Listener | |||
class JUCE_API PreferencesPanel : public Component | |||
{ | |||
public: | |||
//============================================================================== | |||
@@ -131,8 +130,6 @@ public: | |||
void resized() override; | |||
/** @internal */ | |||
void paint (Graphics&) override; | |||
/** @internal */ | |||
void buttonClicked (Button*) override; | |||
private: | |||
//============================================================================== | |||
@@ -141,6 +138,8 @@ private: | |||
OwnedArray<DrawableButton> buttons; | |||
int buttonSize; | |||
void clickedPage(); | |||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PreferencesPanel) | |||
}; | |||