@@ -49,25 +49,4 @@ namespace BinaryData | |||||
// If you provide the name of one of the binary resource variables above, this function will | // If you provide the name of one of the binary resource variables above, this function will | ||||
// return the corresponding data and its size (or a null pointer if the name isn't found). | // return the corresponding data and its size (or a null pointer if the name isn't found). | ||||
const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes) throw(); | const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes) throw(); | ||||
//============================================================================== | |||||
// This class acts as an ImageProvider that will access the BinaryData images | |||||
class ImageProvider : public juce::ComponentBuilder::ImageProvider | |||||
{ | |||||
public: | |||||
ImageProvider() noexcept {} | |||||
juce::Image getImageForIdentifier (const juce::var& imageIdentifier) | |||||
{ | |||||
int dataSize = 0; | |||||
const char* const data = getNamedResource (imageIdentifier.toString().toUTF8(), dataSize); | |||||
if (data != nullptr) | |||||
return juce::ImageCache::getFromMemory (data, dataSize); | |||||
return juce::Image(); | |||||
} | |||||
juce::var getIdentifierForImage (const juce::Image&) { return juce::var(); } | |||||
}; | |||||
} | } |
@@ -193,34 +193,8 @@ bool ResourceFile::write (const File& cppFile, OutputStream& cpp, OutputStream& | |||||
header << " // If you provide the name of one of the binary resource variables above, this function will" << newLine | header << " // If you provide the name of one of the binary resource variables above, this function will" << newLine | ||||
<< " // return the corresponding data and its size (or a null pointer if the name isn't found)." << newLine | << " // return the corresponding data and its size (or a null pointer if the name isn't found)." << newLine | ||||
<< " const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes) throw();" << newLine; | |||||
if (containsAnyImages) | |||||
{ | |||||
header << newLine | |||||
<< " //==============================================================================" << newLine | |||||
<< " // This class acts as an ImageProvider that will access the BinaryData images" << newLine | |||||
<< " class ImageProvider : public juce::ComponentBuilder::ImageProvider" << newLine | |||||
<< " {" << newLine | |||||
<< " public:" << newLine | |||||
<< " ImageProvider() noexcept {}" << newLine | |||||
<< newLine | |||||
<< " juce::Image getImageForIdentifier (const juce::var& imageIdentifier)" << newLine | |||||
<< " {" << newLine | |||||
<< " int dataSize = 0;" << newLine | |||||
<< " const char* const data = getNamedResource (imageIdentifier.toString().toUTF8(), dataSize);" << newLine | |||||
<< newLine | |||||
<< " if (data != nullptr)" << newLine | |||||
<< " return juce::ImageCache::getFromMemory (data, dataSize);" << newLine | |||||
<< newLine | |||||
<< " return juce::Image();" << newLine | |||||
<< " }" << newLine | |||||
<< newLine | |||||
<< " juce::var getIdentifierForImage (const juce::Image&) { return juce::var(); }" << newLine | |||||
<< " };" << newLine; | |||||
} | |||||
header << "}" << newLine; | |||||
<< " const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes) throw();" << newLine | |||||
<< "}" << newLine; | |||||
return true; | return true; | ||||
} | } | ||||
@@ -94,8 +94,8 @@ void Project::updateProjectSettings() | |||||
void Project::setMissingDefaultValues() | void Project::setMissingDefaultValues() | ||||
{ | { | ||||
if (! projectRoot.hasProperty (ComponentBuilder::idProperty)) | |||||
projectRoot.setProperty (ComponentBuilder::idProperty, createAlphaNumericUID(), nullptr); | |||||
if (! projectRoot.hasProperty (Ids::ID)) | |||||
projectRoot.setProperty (Ids::ID, createAlphaNumericUID(), nullptr); | |||||
// Create main file group if missing | // Create main file group if missing | ||||
if (! projectRoot.getChildWithName (Tags::projectMainGroup).isValid()) | if (! projectRoot.getChildWithName (Tags::projectMainGroup).isValid()) | ||||
@@ -431,8 +431,8 @@ Project::Item::Item (const Item& other) | |||||
Project::Item Project::Item::createCopy() { Item i (*this); i.state = i.state.createCopy(); return i; } | Project::Item Project::Item::createCopy() { Item i (*this); i.state = i.state.createCopy(); return i; } | ||||
String Project::Item::getID() const { return state [ComponentBuilder::idProperty]; } | |||||
void Project::Item::setID (const String& newID) { state.setProperty (ComponentBuilder::idProperty, newID, nullptr); } | |||||
String Project::Item::getID() const { return state [Ids::ID]; } | |||||
void Project::Item::setID (const String& newID) { state.setProperty (Ids::ID, newID, nullptr); } | |||||
String Project::Item::getImageFileID() const { return "id:" + getID(); } | String Project::Item::getImageFileID() const { return "id:" + getID(); } | ||||
@@ -458,7 +458,7 @@ bool Project::Item::isImageFile() const { return isFile() && getFile().hasFi | |||||
Project::Item Project::Item::findItemWithID (const String& targetId) const | Project::Item Project::Item::findItemWithID (const String& targetId) const | ||||
{ | { | ||||
if (state [ComponentBuilder::idProperty] == targetId) | |||||
if (state [Ids::ID] == targetId) | |||||
return *this; | return *this; | ||||
if (isGroup()) | if (isGroup()) | ||||
@@ -603,7 +603,7 @@ File Project::Item::determineGroupFolder() const | |||||
void Project::Item::initialiseMissingProperties() | void Project::Item::initialiseMissingProperties() | ||||
{ | { | ||||
if (! state.hasProperty (ComponentBuilder::idProperty)) | |||||
if (! state.hasProperty (Ids::ID)) | |||||
setID (createAlphaNumericUID()); | setID (createAlphaNumericUID()); | ||||
if (isFile()) | if (isFile()) | ||||
@@ -841,7 +841,7 @@ bool Project::isModuleEnabled (const String& moduleID) const | |||||
ValueTree modules (projectRoot.getChildWithName (Tags::modulesGroup)); | ValueTree modules (projectRoot.getChildWithName (Tags::modulesGroup)); | ||||
for (int i = 0; i < modules.getNumChildren(); ++i) | for (int i = 0; i < modules.getNumChildren(); ++i) | ||||
if (modules.getChild(i) [ComponentBuilder::idProperty] == moduleID) | |||||
if (modules.getChild(i) [Ids::ID] == moduleID) | |||||
return true; | return true; | ||||
return false; | return false; | ||||
@@ -849,13 +849,13 @@ bool Project::isModuleEnabled (const String& moduleID) const | |||||
Value Project::shouldShowAllModuleFilesInProject (const String& moduleID) | Value Project::shouldShowAllModuleFilesInProject (const String& moduleID) | ||||
{ | { | ||||
return getModulesNode().getChildWithProperty (ComponentBuilder::idProperty, moduleID) | |||||
return getModulesNode().getChildWithProperty (Ids::ID, moduleID) | |||||
.getPropertyAsValue (Ids::showAllCode, getUndoManagerFor (getModulesNode())); | .getPropertyAsValue (Ids::showAllCode, getUndoManagerFor (getModulesNode())); | ||||
} | } | ||||
Value Project::shouldCopyModuleFilesLocally (const String& moduleID) | Value Project::shouldCopyModuleFilesLocally (const String& moduleID) | ||||
{ | { | ||||
return getModulesNode().getChildWithProperty (ComponentBuilder::idProperty, moduleID) | |||||
return getModulesNode().getChildWithProperty (Ids::ID, moduleID) | |||||
.getPropertyAsValue (Ids::useLocalCopy, getUndoManagerFor (getModulesNode())); | .getPropertyAsValue (Ids::useLocalCopy, getUndoManagerFor (getModulesNode())); | ||||
} | } | ||||
@@ -864,7 +864,7 @@ void Project::addModule (const String& moduleID, bool shouldCopyFilesLocally) | |||||
if (! isModuleEnabled (moduleID)) | if (! isModuleEnabled (moduleID)) | ||||
{ | { | ||||
ValueTree module (Tags::module); | ValueTree module (Tags::module); | ||||
module.setProperty (ComponentBuilder::idProperty, moduleID, nullptr); | |||||
module.setProperty (Ids::ID, moduleID, nullptr); | |||||
ValueTree modules (getModulesNode()); | ValueTree modules (getModulesNode()); | ||||
modules.addChild (module, -1, getUndoManagerFor (modules)); | modules.addChild (module, -1, getUndoManagerFor (modules)); | ||||
@@ -881,7 +881,7 @@ void Project::removeModule (const String& moduleID) | |||||
ValueTree modules (getModulesNode()); | ValueTree modules (getModulesNode()); | ||||
for (int i = 0; i < modules.getNumChildren(); ++i) | for (int i = 0; i < modules.getNumChildren(); ++i) | ||||
if (modules.getChild(i) [ComponentBuilder::idProperty] == moduleID) | |||||
if (modules.getChild(i) [Ids::ID] == moduleID) | |||||
modules.removeChild (i, getUndoManagerFor (modules)); | modules.removeChild (i, getUndoManagerFor (modules)); | ||||
} | } | ||||
@@ -899,7 +899,7 @@ int Project::getNumModules() const | |||||
String Project::getModuleID (int index) const | String Project::getModuleID (int index) const | ||||
{ | { | ||||
return projectRoot.getChildWithName (Tags::modulesGroup).getChild (index) [ComponentBuilder::idProperty].toString(); | |||||
return projectRoot.getChildWithName (Tags::modulesGroup).getChild (index) [Ids::ID].toString(); | |||||
} | } | ||||
//============================================================================== | //============================================================================== | ||||
@@ -58,7 +58,7 @@ public: | |||||
String getTitle() const; | String getTitle() const; | ||||
Value getProjectNameValue() { return getMainGroup().getNameValue(); } | Value getProjectNameValue() { return getMainGroup().getNameValue(); } | ||||
String getProjectFilenameRoot() { return File::createLegalFileName (getDocumentTitle()); } | String getProjectFilenameRoot() { return File::createLegalFileName (getDocumentTitle()); } | ||||
String getProjectUID() const { return projectRoot [ComponentBuilder::idProperty]; } | |||||
String getProjectUID() const { return projectRoot [Ids::ID]; } | |||||
//============================================================================== | //============================================================================== | ||||
template <class FileType> | template <class FileType> | ||||
@@ -126,6 +126,7 @@ namespace Ids | |||||
DECLARE_ID (androidKeyAliasPass); | DECLARE_ID (androidKeyAliasPass); | ||||
DECLARE_ID (font); | DECLARE_ID (font); | ||||
DECLARE_ID (colour); | DECLARE_ID (colour); | ||||
const Identifier ID ("id"); | |||||
const Identifier class_ ("class"); | const Identifier class_ ("class"); | ||||
#undef DECLARE_ID | #undef DECLARE_ID | ||||
@@ -25,25 +25,4 @@ namespace BinaryData | |||||
// If you provide the name of one of the binary resource variables above, this function will | // If you provide the name of one of the binary resource variables above, this function will | ||||
// return the corresponding data and its size (or a null pointer if the name isn't found). | // return the corresponding data and its size (or a null pointer if the name isn't found). | ||||
const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes) throw(); | const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes) throw(); | ||||
//============================================================================== | |||||
// This class acts as an ImageProvider that will access the BinaryData images | |||||
class ImageProvider : public juce::ComponentBuilder::ImageProvider | |||||
{ | |||||
public: | |||||
ImageProvider() noexcept {} | |||||
juce::Image getImageForIdentifier (const juce::var& imageIdentifier) | |||||
{ | |||||
int dataSize = 0; | |||||
const char* const data = getNamedResource (imageIdentifier.toString().toUTF8(), dataSize); | |||||
if (data != nullptr) | |||||
return juce::ImageCache::getFromMemory (data, dataSize); | |||||
return juce::Image(); | |||||
} | |||||
juce::var getIdentifierForImage (const juce::Image&) { return juce::var(); } | |||||
}; | |||||
} | } |
@@ -22,25 +22,4 @@ namespace BinaryData | |||||
// If you provide the name of one of the binary resource variables above, this function will | // If you provide the name of one of the binary resource variables above, this function will | ||||
// return the corresponding data and its size (or a null pointer if the name isn't found). | // return the corresponding data and its size (or a null pointer if the name isn't found). | ||||
const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes) throw(); | const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes) throw(); | ||||
//============================================================================== | |||||
// This class acts as an ImageProvider that will access the BinaryData images | |||||
class ImageProvider : public juce::ComponentBuilder::ImageProvider | |||||
{ | |||||
public: | |||||
ImageProvider() noexcept {} | |||||
juce::Image getImageForIdentifier (const juce::var& imageIdentifier) | |||||
{ | |||||
int dataSize = 0; | |||||
const char* const data = getNamedResource (imageIdentifier.toString().toUTF8(), dataSize); | |||||
if (data != nullptr) | |||||
return juce::ImageCache::getFromMemory (data, dataSize); | |||||
return juce::Image(); | |||||
} | |||||
juce::var getIdentifierForImage (const juce::Image&) { return juce::var(); } | |||||
}; | |||||
} | } |
@@ -457,7 +457,7 @@ public: | |||||
void resized() | void resized() | ||||
{ | { | ||||
if (child != nullptr) | if (child != nullptr) | ||||
child->setBounds (0, 0, getWidth(), getHeight()); | |||||
child->setBounds (getLocalBounds()); | |||||
} | } | ||||
var getObject() { return child->getJavascriptObject(); } | var getObject() { return child->getJavascriptObject(); } | ||||
@@ -663,29 +663,3 @@ Button::RepeatTimer& Button::getRepeatTimer() | |||||
return *repeatTimer; | return *repeatTimer; | ||||
} | } | ||||
const Identifier Button::Ids::text ("text"); | |||||
const Identifier Button::Ids::radioGroup ("radioGroup"); | |||||
const Identifier Button::Ids::connectedLeft ("connectedLeft"); | |||||
const Identifier Button::Ids::connectedRight ("connectedRight"); | |||||
const Identifier Button::Ids::connectedTop ("connectedTop"); | |||||
const Identifier Button::Ids::connectedBottom ("connectedBottom"); | |||||
void Button::refreshFromValueTree (const ValueTree& state, ComponentBuilder&) | |||||
{ | |||||
ComponentBuilder::refreshBasicComponentProperties (*this, state); | |||||
setButtonText (state [Ids::text].toString()); | |||||
setRadioGroupId (state [Ids::radioGroup]); | |||||
setConnectedEdges (getConnectedFlags (state)); | |||||
} | |||||
int Button::getConnectedFlags (const ValueTree& state) | |||||
{ | |||||
int connected = 0; | |||||
if (state [Button::Ids::connectedLeft]) connected |= Button::ConnectedOnLeft; | |||||
if (state [Button::Ids::connectedRight]) connected |= Button::ConnectedOnRight; | |||||
if (state [Button::Ids::connectedTop]) connected |= Button::ConnectedOnTop; | |||||
if (state [Button::Ids::connectedBottom]) connected |= Button::ConnectedOnBottom; | |||||
return connected; | |||||
} |
@@ -30,7 +30,6 @@ | |||||
#include "../keyboard/juce_KeyListener.h" | #include "../keyboard/juce_KeyListener.h" | ||||
#include "../commands/juce_ApplicationCommandManager.h" | #include "../commands/juce_ApplicationCommandManager.h" | ||||
#include "../windows/juce_TooltipWindow.h" | #include "../windows/juce_TooltipWindow.h" | ||||
#include "../layout/juce_ComponentBuilder.h" | |||||
//============================================================================== | //============================================================================== | ||||
@@ -368,16 +367,6 @@ public: | |||||
void setState (const ButtonState newState); | void setState (const ButtonState newState); | ||||
//============================================================================== | |||||
struct Ids | |||||
{ | |||||
static const Identifier text, radioGroup, | |||||
connectedLeft, connectedRight, connectedTop, connectedBottom; | |||||
}; | |||||
void refreshFromValueTree (const ValueTree&, ComponentBuilder&); | |||||
static int getConnectedFlags (const ValueTree& state); | |||||
//============================================================================== | //============================================================================== | ||||
// These are deprecated - please use addListener() and removeListener() instead! | // These are deprecated - please use addListener() and removeListener() instead! | ||||
JUCE_DEPRECATED (void addButtonListener (Listener*)); | JUCE_DEPRECATED (void addButtonListener (Listener*)); | ||||
@@ -108,15 +108,3 @@ void HyperlinkButton::paintButton (Graphics& g, | |||||
justification.getOnlyHorizontalFlags() | Justification::verticallyCentred, | justification.getOnlyHorizontalFlags() | Justification::verticallyCentred, | ||||
true); | true); | ||||
} | } | ||||
const Identifier HyperlinkButton::Ids::tagType ("HYPERLINKBUTTON"); | |||||
const Identifier HyperlinkButton::Ids::text ("text"); | |||||
const Identifier HyperlinkButton::Ids::url ("url"); | |||||
void HyperlinkButton::refreshFromValueTree (const ValueTree& state, ComponentBuilder&) | |||||
{ | |||||
ComponentBuilder::refreshBasicComponentProperties (*this, state); | |||||
setButtonText (state [Ids::text].toString()); | |||||
setURL (URL (state [Ids::url].toString())); | |||||
} |
@@ -93,14 +93,6 @@ public: | |||||
*/ | */ | ||||
void changeWidthToFitText(); | void changeWidthToFitText(); | ||||
//============================================================================== | |||||
struct Ids | |||||
{ | |||||
static const Identifier tagType, text, url; | |||||
}; | |||||
void refreshFromValueTree (const ValueTree&, ComponentBuilder&); | |||||
protected: | protected: | ||||
//============================================================================== | //============================================================================== | ||||
/** @internal */ | /** @internal */ | ||||
@@ -188,56 +188,3 @@ bool ImageButton::hitTest (int x, int y) | |||||
&& alphaThreshold < im.getPixelAt (((x - imageBounds.getX()) * im.getWidth()) / imageBounds.getWidth(), | && alphaThreshold < im.getPixelAt (((x - imageBounds.getX()) * im.getWidth()) / imageBounds.getWidth(), | ||||
((y - imageBounds.getY()) * im.getHeight()) / imageBounds.getHeight()).getAlpha()); | ((y - imageBounds.getY()) * im.getHeight()) / imageBounds.getHeight()).getAlpha()); | ||||
} | } | ||||
const Identifier ImageButton::Ids::tagType ("IMAGEBUTTON"); | |||||
const Identifier ImageButton::Ids::upImage ("upImage"); | |||||
const Identifier ImageButton::Ids::overImage ("overImage"); | |||||
const Identifier ImageButton::Ids::downImage ("downImage"); | |||||
const Identifier ImageButton::Ids::upOverlay ("upOverlay"); | |||||
const Identifier ImageButton::Ids::overOverlay ("overOverlay"); | |||||
const Identifier ImageButton::Ids::downOverlay ("downOverlay"); | |||||
const Identifier ImageButton::Ids::upOpacity ("upOpacity"); | |||||
const Identifier ImageButton::Ids::overOpacity ("overOpacity"); | |||||
const Identifier ImageButton::Ids::downOpacity ("downOpacity"); | |||||
namespace ImageButtonHelpers | |||||
{ | |||||
static Colour getColourFromVar (const var& col) | |||||
{ | |||||
return col.isString() ? Colour::fromString (col.toString()) | |||||
: Colours::transparentBlack; | |||||
} | |||||
static float getOpacityFromVar (const var& v) | |||||
{ | |||||
return v.isVoid() ? 1.0f : static_cast<float> (v); | |||||
} | |||||
} | |||||
void ImageButton::refreshFromValueTree (const ValueTree& state, ComponentBuilder& builder) | |||||
{ | |||||
Button::refreshFromValueTree (state, builder); | |||||
const var upImageIdentifier (state [Ids::upImage]), | |||||
overImageIdentifier (state [Ids::overImage]), | |||||
downImageIdentifier (state [Ids::downImage]); | |||||
ComponentBuilder::ImageProvider* const imageProvider = builder.getImageProvider(); | |||||
jassert (imageProvider != nullptr || upImageIdentifier.isVoid()); | |||||
Image newUpImage, newOverImage, newDownImage; | |||||
if (imageProvider != nullptr) | |||||
{ | |||||
newUpImage = imageProvider->getImageForIdentifier (upImageIdentifier); | |||||
newOverImage = imageProvider->getImageForIdentifier (overImageIdentifier); | |||||
newDownImage = imageProvider->getImageForIdentifier (downImageIdentifier); | |||||
} | |||||
using namespace ImageButtonHelpers; | |||||
setImages (false, true, true, | |||||
newUpImage, getOpacityFromVar (state[Ids::upOpacity]), getColourFromVar (state[Ids::upOverlay]), | |||||
newOverImage, getOpacityFromVar (state[Ids::overOpacity]), getColourFromVar (state[Ids::overOverlay]), | |||||
newDownImage, getOpacityFromVar (state[Ids::downOpacity]), getColourFromVar (state[Ids::downOverlay])); | |||||
} |
@@ -127,16 +127,6 @@ public: | |||||
*/ | */ | ||||
Image getDownImage() const; | Image getDownImage() const; | ||||
//============================================================================== | |||||
struct Ids | |||||
{ | |||||
static const Identifier tagType, upImage, overImage, downImage, | |||||
upOverlay, overOverlay, downOverlay, | |||||
upOpacity, overOpacity, downOpacity; | |||||
}; | |||||
void refreshFromValueTree (const ValueTree&, ComponentBuilder&); | |||||
protected: | protected: | ||||
//============================================================================== | //============================================================================== | ||||
/** @internal */ | /** @internal */ | ||||
@@ -67,5 +67,3 @@ void TextButton::changeWidthToFitText (const int newHeight) | |||||
setSize (getFont().getStringWidth (getButtonText()) + getHeight(), | setSize (getFont().getStringWidth (getButtonText()) + getHeight(), | ||||
getHeight()); | getHeight()); | ||||
} | } | ||||
const Identifier TextButton::Ids::tagType ("TEXTBUTTON"); |
@@ -89,12 +89,6 @@ public: | |||||
*/ | */ | ||||
virtual Font getFont(); | virtual Font getFont(); | ||||
//============================================================================== | |||||
struct Ids | |||||
{ | |||||
static const Identifier tagType; | |||||
}; | |||||
protected: | protected: | ||||
/** @internal */ | /** @internal */ | ||||
void paintButton (Graphics& g, bool isMouseOverButton, bool isButtonDown); | void paintButton (Graphics& g, bool isMouseOverButton, bool isButtonDown); | ||||
@@ -102,7 +96,6 @@ protected: | |||||
void colourChanged(); | void colourChanged(); | ||||
private: | private: | ||||
//============================================================================== | |||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (TextButton); | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (TextButton); | ||||
}; | }; | ||||
@@ -23,6 +23,12 @@ | |||||
============================================================================== | ============================================================================== | ||||
*/ | */ | ||||
ToggleButton::ToggleButton() | |||||
: Button (String::empty) | |||||
{ | |||||
setClickingTogglesState (true); | |||||
} | |||||
ToggleButton::ToggleButton (const String& buttonText) | ToggleButton::ToggleButton (const String& buttonText) | ||||
: Button (buttonText) | : Button (buttonText) | ||||
{ | { | ||||
@@ -33,13 +39,9 @@ ToggleButton::~ToggleButton() | |||||
{ | { | ||||
} | } | ||||
void ToggleButton::paintButton (Graphics& g, | |||||
bool isMouseOverButton, | |||||
bool isButtonDown) | |||||
void ToggleButton::paintButton (Graphics& g, bool isMouseOverButton, bool isButtonDown) | |||||
{ | { | ||||
getLookAndFeel().drawToggleButton (g, *this, | |||||
isMouseOverButton, | |||||
isButtonDown); | |||||
getLookAndFeel().drawToggleButton (g, *this, isMouseOverButton, isButtonDown); | |||||
} | } | ||||
void ToggleButton::changeWidthToFitText() | void ToggleButton::changeWidthToFitText() | ||||
@@ -51,5 +53,3 @@ void ToggleButton::colourChanged() | |||||
{ | { | ||||
repaint(); | repaint(); | ||||
} | } | ||||
const Identifier ToggleButton::Ids::tagType ("TOGGLEBUTTON"); |
@@ -42,20 +42,22 @@ class JUCE_API ToggleButton : public Button | |||||
{ | { | ||||
public: | public: | ||||
//============================================================================== | //============================================================================== | ||||
/** Creates a ToggleButton. */ | |||||
ToggleButton(); | |||||
/** Creates a ToggleButton. | /** Creates a ToggleButton. | ||||
@param buttonText the text to put in the button (the component's name is also | @param buttonText the text to put in the button (the component's name is also | ||||
initially set to this string, but these can be changed later | initially set to this string, but these can be changed later | ||||
using the setName() and setButtonText() methods) | using the setName() and setButtonText() methods) | ||||
*/ | */ | ||||
explicit ToggleButton (const String& buttonText = String::empty); | |||||
explicit ToggleButton (const String& buttonText); | |||||
/** Destructor. */ | /** Destructor. */ | ||||
~ToggleButton(); | ~ToggleButton(); | ||||
//============================================================================== | //============================================================================== | ||||
/** Resizes the button to fit neatly around its current text. | /** Resizes the button to fit neatly around its current text. | ||||
The button's height won't be affected, only its width. | The button's height won't be affected, only its width. | ||||
*/ | */ | ||||
void changeWidthToFitText(); | void changeWidthToFitText(); | ||||
@@ -73,23 +75,14 @@ public: | |||||
textColourId = 0x1006501 /**< The colour to use for the button's text. */ | textColourId = 0x1006501 /**< The colour to use for the button's text. */ | ||||
}; | }; | ||||
//============================================================================== | |||||
struct Ids | |||||
{ | |||||
static const Identifier tagType; | |||||
}; | |||||
protected: | protected: | ||||
//============================================================================== | |||||
/** @internal */ | /** @internal */ | ||||
void paintButton (Graphics& g, | |||||
bool isMouseOverButton, | |||||
bool isButtonDown); | |||||
void paintButton (Graphics&, bool isMouseOverButton, bool isButtonDown); | |||||
/** @internal */ | /** @internal */ | ||||
void colourChanged(); | void colourChanged(); | ||||
private: | private: | ||||
//============================================================================== | |||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ToggleButton); | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ToggleButton); | ||||
}; | }; | ||||
@@ -154,7 +154,6 @@ namespace ComponentBuilderHelpers | |||||
//============================================================================= | //============================================================================= | ||||
const Identifier ComponentBuilder::idProperty ("id"); | const Identifier ComponentBuilder::idProperty ("id"); | ||||
const Identifier ComponentBuilder::positionID ("position"); | |||||
ComponentBuilder::ComponentBuilder() | ComponentBuilder::ComponentBuilder() | ||||
: imageProvider (nullptr) | : imageProvider (nullptr) | ||||
@@ -242,18 +241,6 @@ ComponentBuilder::TypeHandler* ComponentBuilder::getHandler (const int index) co | |||||
void ComponentBuilder::registerStandardComponentTypes() | void ComponentBuilder::registerStandardComponentTypes() | ||||
{ | { | ||||
Drawable::registerDrawableTypeHandlers (*this); | Drawable::registerDrawableTypeHandlers (*this); | ||||
registerTypeHandler (new ComponentBuilderHelpers::StandardTypeHandler <ComboBox>()); | |||||
registerTypeHandler (new ComponentBuilderHelpers::StandardTypeHandler <Slider>()); | |||||
registerTypeHandler (new ComponentBuilderHelpers::StandardTypeHandler <Label>()); | |||||
registerTypeHandler (new ComponentBuilderHelpers::StandardTypeHandler <Slider>()); | |||||
registerTypeHandler (new ComponentBuilderHelpers::StandardTypeHandler <TextEditor>()); | |||||
registerTypeHandler (new ComponentBuilderHelpers::StandardTypeHandler <GroupComponent>()); | |||||
registerTypeHandler (new ComponentBuilderHelpers::StandardTypeHandler <TextButton>()); | |||||
registerTypeHandler (new ComponentBuilderHelpers::StandardTypeHandler <ToggleButton>()); | |||||
registerTypeHandler (new ComponentBuilderHelpers::StandardTypeHandler <ImageButton>()); | |||||
registerTypeHandler (new ComponentBuilderHelpers::StandardTypeHandler <ImageComponent>()); | |||||
registerTypeHandler (new ComponentBuilderHelpers::StandardTypeHandler <HyperlinkButton>()); | |||||
} | } | ||||
void ComponentBuilder::setImageProvider (ImageProvider* newImageProvider) noexcept | void ComponentBuilder::setImageProvider (ImageProvider* newImageProvider) noexcept | ||||
@@ -321,12 +308,11 @@ void ComponentBuilder::updateChildComponents (Component& parent, const ValueTree | |||||
OwnedArray<Component> existingComponents; | OwnedArray<Component> existingComponents; | ||||
existingComponents.ensureStorageAllocated (numExistingChildComps); | existingComponents.ensureStorageAllocated (numExistingChildComps); | ||||
int i; | |||||
for (i = 0; i < numExistingChildComps; ++i) | |||||
for (int i = 0; i < numExistingChildComps; ++i) | |||||
existingComponents.add (parent.getChildComponent (i)); | existingComponents.add (parent.getChildComponent (i)); | ||||
const int newNumChildren = children.getNumChildren(); | const int newNumChildren = children.getNumChildren(); | ||||
for (i = 0; i < newNumChildren; ++i) | |||||
for (int i = 0; i < newNumChildren; ++i) | |||||
{ | { | ||||
const ValueTree childState (children.getChild (i)); | const ValueTree childState (children.getChild (i)); | ||||
Component* c = removeComponentWithID (existingComponents, getStateId (childState)); | Component* c = removeComponentWithID (existingComponents, getStateId (childState)); | ||||
@@ -362,80 +348,3 @@ static void updateMarkers (MarkerList* const list, const ValueTree& state) | |||||
if (list != nullptr) | if (list != nullptr) | ||||
MarkerList::ValueTreeWrapper (state).applyTo (*list); | MarkerList::ValueTreeWrapper (state).applyTo (*list); | ||||
} | } | ||||
void ComponentBuilder::initialiseRecursively (Component& comp, const ValueTree& state) | |||||
{ | |||||
refreshBasicComponentProperties (comp, state); | |||||
updateMarkers (comp.getMarkers (true), state.getChildWithName ("MARKERS_X")); | |||||
updateMarkers (comp.getMarkers (false), state.getChildWithName ("MARKERS_Y")); | |||||
const ValueTree childList (state.getChildWithName ("COMPONENTS")); | |||||
if (childList.isValid()) | |||||
{ | |||||
updateChildComponents (comp, childList); | |||||
for (int i = 0; i < childList.getNumChildren(); ++i) | |||||
{ | |||||
const ValueTree childState (childList.getChild(i)); | |||||
Component* const c = ComponentBuilderHelpers::findComponentWithID (comp, ComponentBuilderHelpers::getStateId (childState)); | |||||
if (c != nullptr) | |||||
{ | |||||
ComponentBuilder::TypeHandler* const type = getHandlerForState (childState); | |||||
if (type != nullptr) | |||||
type->updateComponentFromState (c, childState); | |||||
else | |||||
initialiseRecursively (*c, childState); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
void ComponentBuilder::initialiseFromValueTree (Component& comp, | |||||
const ValueTree& state, | |||||
ImageProvider* const imageProvider) | |||||
{ | |||||
ComponentBuilder builder; | |||||
builder.setImageProvider (imageProvider); | |||||
builder.registerStandardComponentTypes(); | |||||
builder.initialiseRecursively (comp, state); | |||||
} | |||||
RelativeRectangle ComponentBuilder::getComponentBounds (const ValueTree& state) | |||||
{ | |||||
try | |||||
{ | |||||
return RelativeRectangle (state [positionID].toString()); | |||||
} | |||||
catch (Expression::ParseError&) | |||||
{} | |||||
return RelativeRectangle(); | |||||
} | |||||
void ComponentBuilder::refreshBasicComponentProperties (Component& comp, const ValueTree& state) | |||||
{ | |||||
static const Identifier focusOrderID ("focusOrder"); | |||||
static const Identifier tooltipID ("tooltip"); | |||||
static const Identifier nameID ("name"); | |||||
comp.setName (state [nameID].toString()); | |||||
if (state.hasProperty (positionID)) | |||||
getComponentBounds (state).applyToComponent (comp); | |||||
comp.setExplicitFocusOrder (state [focusOrderID]); | |||||
const var tip (state [tooltipID]); | |||||
if (! tip.isVoid()) | |||||
{ | |||||
SettableTooltipClient* tooltipClient = dynamic_cast <SettableTooltipClient*> (&comp); | |||||
if (tooltipClient != nullptr) | |||||
tooltipClient->setTooltip (tip.toString()); | |||||
} | |||||
ComponentBuilderHelpers::updateComponentColours (comp, state.getChildWithName ("COLOURS")); | |||||
} |
@@ -227,18 +227,6 @@ public: | |||||
*/ | */ | ||||
static const Identifier idProperty; | static const Identifier idProperty; | ||||
/** | |||||
*/ | |||||
static void initialiseFromValueTree (Component& component, | |||||
const ValueTree& state, | |||||
ImageProvider* imageProvider); | |||||
//============================================================================= | |||||
/** @internal */ | |||||
static void refreshBasicComponentProperties (Component&, const ValueTree&); | |||||
/** @internal */ | |||||
static RelativeRectangle getComponentBounds (const ValueTree&); | |||||
private: | private: | ||||
//============================================================================= | //============================================================================= | ||||
OwnedArray <TypeHandler> types; | OwnedArray <TypeHandler> types; | ||||
@@ -254,9 +242,6 @@ private: | |||||
void valueTreeChildOrderChanged (ValueTree&); | void valueTreeChildOrderChanged (ValueTree&); | ||||
void valueTreeParentChanged (ValueTree&); | void valueTreeParentChanged (ValueTree&); | ||||
static const Identifier positionID; | |||||
void initialiseRecursively (Component&, const ValueTree&); | |||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ComponentBuilder); | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ComponentBuilder); | ||||
}; | }; | ||||
@@ -78,15 +78,3 @@ void GroupComponent::colourChanged() | |||||
{ | { | ||||
repaint(); | repaint(); | ||||
} | } | ||||
const Identifier GroupComponent::Ids::tagType ("GROUPCOMPONENT"); | |||||
const Identifier GroupComponent::Ids::text ("text"); | |||||
const Identifier GroupComponent::Ids::justification ("justification"); | |||||
void GroupComponent::refreshFromValueTree (const ValueTree& state, ComponentBuilder&) | |||||
{ | |||||
ComponentBuilder::refreshBasicComponentProperties (*this, state); | |||||
setText (state [Ids::text].toString()); | |||||
setTextLabelPosition (static_cast <int> (state [Ids::justification])); | |||||
} |
@@ -85,14 +85,6 @@ public: | |||||
textColourId = 0x1005410 /**< The colour to use to draw the text label. */ | textColourId = 0x1005410 /**< The colour to use to draw the text label. */ | ||||
}; | }; | ||||
//============================================================================== | |||||
struct Ids | |||||
{ | |||||
static const Identifier tagType, text, justification; | |||||
}; | |||||
void refreshFromValueTree (const ValueTree&, ComponentBuilder&); | |||||
//============================================================================== | //============================================================================== | ||||
/** @internal */ | /** @internal */ | ||||
void paint (Graphics& g); | void paint (Graphics& g); | ||||
@@ -424,16 +424,3 @@ bool Viewport::keyPressed (const KeyPress& key) | |||||
return false; | return false; | ||||
} | } | ||||
//============================================================================== | |||||
const Identifier Viewport::Ids::showScrollBarV ("showScrollBarV"); | |||||
const Identifier Viewport::Ids::showScrollBarH ("showScrollBarH"); | |||||
const Identifier Viewport::Ids::scrollBarWidth ("scrollBarWidth"); | |||||
void Viewport::refreshFromValueTree (const ValueTree& state, ComponentBuilder&) | |||||
{ | |||||
ComponentBuilder::refreshBasicComponentProperties (*this, state); | |||||
setScrollBarsShown (state [Ids::showScrollBarV], state [Ids::showScrollBarH]); | |||||
setScrollBarThickness (state [Ids::scrollBarWidth]); | |||||
} |
@@ -236,14 +236,6 @@ public: | |||||
ScrollBar* getHorizontalScrollBar() noexcept { return &horizontalScrollBar; } | ScrollBar* getHorizontalScrollBar() noexcept { return &horizontalScrollBar; } | ||||
//============================================================================== | |||||
struct Ids | |||||
{ | |||||
static const Identifier showScrollBarV, showScrollBarH, scrollBarWidth; | |||||
}; | |||||
void refreshFromValueTree (const ValueTree&, ComponentBuilder&); | |||||
//============================================================================== | //============================================================================== | ||||
/** @internal */ | /** @internal */ | ||||
void resized(); | void resized(); | ||||
@@ -596,39 +596,3 @@ void ComboBox::handleAsyncUpdate() | |||||
Component::BailOutChecker checker (this); | Component::BailOutChecker checker (this); | ||||
listeners.callChecked (checker, &ComboBoxListener::comboBoxChanged, this); // (can't use ComboBox::Listener due to idiotic VC2005 bug) | listeners.callChecked (checker, &ComboBoxListener::comboBoxChanged, this); // (can't use ComboBox::Listener due to idiotic VC2005 bug) | ||||
} | } | ||||
const Identifier ComboBox::Ids::tagType ("COMBOBOX"); | |||||
const Identifier ComboBox::Ids::items ("items"); | |||||
const Identifier ComboBox::Ids::editable ("editable"); | |||||
const Identifier ComboBox::Ids::textJustification ("textJustification"); | |||||
const Identifier ComboBox::Ids::unselectedText ("unselectedText"); | |||||
const Identifier ComboBox::Ids::noItemsText ("noItemsText"); | |||||
void ComboBox::refreshFromValueTree (const ValueTree& state, ComponentBuilder&) | |||||
{ | |||||
ComponentBuilder::refreshBasicComponentProperties (*this, state); | |||||
{ | |||||
StringArray items; | |||||
items.addLines (state [Ids::items].toString()); | |||||
items.removeEmptyStrings (true); | |||||
StringArray existingItems; | |||||
for (int i = 0; i < getNumItems(); ++i) | |||||
existingItems.add (getItemText (i)); | |||||
if (existingItems != items) | |||||
{ | |||||
clear(); | |||||
for (int i = 0; i < items.size(); ++i) | |||||
addItem (items[i], i + 1); | |||||
} | |||||
} | |||||
setEditableText (state [Ids::editable]); | |||||
setJustificationType ((int) state [Ids::textJustification]); | |||||
setTextWhenNothingSelected (state [Ids::unselectedText].toString()); | |||||
setTextWhenNoChoicesAvailable (state [Ids::noItemsText].toString()); | |||||
} |
@@ -338,14 +338,6 @@ public: | |||||
arrowColourId = 0x1000e00, /**< The colour for the arrow shape that pops up the menu */ | arrowColourId = 0x1000e00, /**< The colour for the arrow shape that pops up the menu */ | ||||
}; | }; | ||||
//============================================================================== | |||||
struct Ids | |||||
{ | |||||
static const Identifier tagType, items, editable, textJustification, unselectedText, noItemsText; | |||||
}; | |||||
void refreshFromValueTree (const ValueTree&, ComponentBuilder&); | |||||
//============================================================================== | //============================================================================== | ||||
/** @internal */ | /** @internal */ | ||||
void labelTextChanged (Label*); | void labelTextChanged (Label*); | ||||
@@ -76,28 +76,3 @@ void ImageComponent::paint (Graphics& g) | |||||
g.setOpacity (1.0f); | g.setOpacity (1.0f); | ||||
g.drawImageWithin (image, 0, 0, getWidth(), getHeight(), placement, false); | g.drawImageWithin (image, 0, 0, getWidth(), getHeight(), placement, false); | ||||
} | } | ||||
const Identifier ImageComponent::Ids::tagType ("IMAGECOMPONENT"); | |||||
const Identifier ImageComponent::Ids::image ("image"); | |||||
const Identifier ImageComponent::Ids::placement ("placement"); | |||||
void ImageComponent::refreshFromValueTree (const ValueTree& state, ComponentBuilder& builder) | |||||
{ | |||||
ComponentBuilder::refreshBasicComponentProperties (*this, state); | |||||
Image newImage; | |||||
const var imageIdentifier (state [Ids::image]); | |||||
ComponentBuilder::ImageProvider* const imageProvider = builder.getImageProvider(); | |||||
jassert (imageProvider != nullptr || imageIdentifier.isVoid()); | |||||
if (imageProvider != nullptr) | |||||
newImage = imageProvider->getImageForIdentifier (imageIdentifier); | |||||
setImage (newImage, getPlacement (state)); | |||||
} | |||||
RectanglePlacement ImageComponent::getPlacement (const ValueTree& state) | |||||
{ | |||||
return RectanglePlacement (static_cast <int> (state [Ids::placement])); | |||||
} |
@@ -67,15 +67,6 @@ public: | |||||
/** Returns the current image placement. */ | /** Returns the current image placement. */ | ||||
const RectanglePlacement getImagePlacement() const; | const RectanglePlacement getImagePlacement() const; | ||||
//============================================================================== | |||||
struct Ids | |||||
{ | |||||
static const Identifier tagType, image, placement; | |||||
}; | |||||
void refreshFromValueTree (const ValueTree&, ComponentBuilder&); | |||||
static RectanglePlacement getPlacement (const ValueTree& state); | |||||
//============================================================================== | //============================================================================== | ||||
/** @internal */ | /** @internal */ | ||||
void paint (Graphics& g); | void paint (Graphics& g); | ||||
@@ -448,22 +448,3 @@ void Label::textEditorFocusLost (TextEditor& ed) | |||||
{ | { | ||||
textEditorTextChanged (ed); | textEditorTextChanged (ed); | ||||
} | } | ||||
const Identifier Label::Ids::tagType ("LABEL"); | |||||
const Identifier Label::Ids::text ("text"); | |||||
const Identifier Label::Ids::font ("font"); | |||||
const Identifier Label::Ids::editMode ("editMode"); | |||||
const Identifier Label::Ids::justification ("justification"); | |||||
const Identifier Label::Ids::focusLossDiscardsChanges ("focusLossDiscardsChanges"); | |||||
void Label::refreshFromValueTree (const ValueTree& state, ComponentBuilder&) | |||||
{ | |||||
ComponentBuilder::refreshBasicComponentProperties (*this, state); | |||||
setText (state [Ids::text].toString(), false); | |||||
setFont (Font::fromString (state [Ids::font])); | |||||
const int editMode = static_cast <int> (state [Ids::editMode]); | |||||
setEditable (editMode == 2, editMode == 3, static_cast <bool> (state [Ids::focusLossDiscardsChanges])); | |||||
setJustificationType (static_cast <int> (state [Ids::justification])); | |||||
} |
@@ -253,14 +253,6 @@ public: | |||||
/** Returns true if the editor is currently focused and active. */ | /** Returns true if the editor is currently focused and active. */ | ||||
bool isBeingEdited() const noexcept; | bool isBeingEdited() const noexcept; | ||||
//============================================================================== | |||||
struct Ids | |||||
{ | |||||
static const Identifier tagType, text, font, editMode, justification, focusLossDiscardsChanges; | |||||
}; | |||||
void refreshFromValueTree (const ValueTree&, ComponentBuilder&); | |||||
protected: | protected: | ||||
//============================================================================== | //============================================================================== | ||||
/** Creates the TextEditor component that will be used when the user has clicked on the label. | /** Creates the TextEditor component that will be used when the user has clicked on the label. | ||||
@@ -928,19 +928,6 @@ void ListBox::startDragAndDrop (const MouseEvent& e, const var& dragDescription, | |||||
} | } | ||||
} | } | ||||
//============================================================================== | |||||
const Identifier ListBox::Ids::rowHeight ("rowHeight"); | |||||
const Identifier ListBox::Ids::borderThickness ("borderThickness"); | |||||
void ListBox::refreshFromValueTree (const ValueTree& state, ComponentBuilder&) | |||||
{ | |||||
ComponentBuilder::refreshBasicComponentProperties (*this, state); | |||||
setRowHeight (state.getProperty (Ids::rowHeight, defaultListRowHeight)); | |||||
setOutlineThickness (state.getProperty (Ids::borderThickness, 0)); | |||||
} | |||||
//============================================================================== | //============================================================================== | ||||
Component* ListBoxModel::refreshComponentForRow (int, bool, Component* existingComponentToUpdate) | Component* ListBoxModel::refreshComponentForRow (int, bool, Component* existingComponentToUpdate) | ||||
{ | { | ||||
@@ -525,14 +525,6 @@ public: | |||||
*/ | */ | ||||
Viewport* getViewport() const noexcept; | Viewport* getViewport() const noexcept; | ||||
//============================================================================== | |||||
struct Ids | |||||
{ | |||||
static const Identifier rowHeight, borderThickness; | |||||
}; | |||||
void refreshFromValueTree (const ValueTree&, ComponentBuilder&); | |||||
//============================================================================== | //============================================================================== | ||||
/** @internal */ | /** @internal */ | ||||
bool keyPressed (const KeyPress&); | bool keyPressed (const KeyPress&); | ||||
@@ -1566,33 +1566,3 @@ void Slider::mouseWheelMove (const MouseEvent& e, const MouseWheelDetails& wheel | |||||
void SliderListener::sliderDragStarted (Slider*) {} // (can't write Slider::Listener due to idiotic VC2005 bug) | void SliderListener::sliderDragStarted (Slider*) {} // (can't write Slider::Listener due to idiotic VC2005 bug) | ||||
void SliderListener::sliderDragEnded (Slider*) {} | void SliderListener::sliderDragEnded (Slider*) {} | ||||
//============================================================================== | |||||
const Identifier Slider::Ids::tagType ("SLIDER"); | |||||
const Identifier Slider::Ids::min ("min"); | |||||
const Identifier Slider::Ids::max ("max"); | |||||
const Identifier Slider::Ids::interval ("interval"); | |||||
const Identifier Slider::Ids::type ("type"); | |||||
const Identifier Slider::Ids::editable ("editable"); | |||||
const Identifier Slider::Ids::textBoxPos ("textBoxPos"); | |||||
const Identifier Slider::Ids::textBoxWidth ("textBoxWidth"); | |||||
const Identifier Slider::Ids::textBoxHeight ("textBoxHeight"); | |||||
const Identifier Slider::Ids::skew ("skew"); | |||||
void Slider::refreshFromValueTree (const ValueTree& state, ComponentBuilder&) | |||||
{ | |||||
ComponentBuilder::refreshBasicComponentProperties (*this, state); | |||||
setRange (static_cast <double> (state [Ids::min]), | |||||
static_cast <double> (state [Ids::max]), | |||||
static_cast <double> (state [Ids::interval])); | |||||
setSliderStyle ((SliderStyle) static_cast <int> (state [Ids::type])); | |||||
setTextBoxStyle ((TextEntryBoxPosition) static_cast <int> (state [Ids::textBoxPos]), | |||||
! static_cast <bool> (state [Ids::editable]), | |||||
static_cast <int> (state [Ids::textBoxWidth]), | |||||
static_cast <int> (state [Ids::textBoxHeight])); | |||||
setSkewFactor (static_cast <double> (state [Ids::skew])); | |||||
} |
@@ -780,15 +780,6 @@ public: | |||||
textBoxOutlineColourId = 0x1001700 /**< The colour to use for a border around the text-editor box. */ | textBoxOutlineColourId = 0x1001700 /**< The colour to use for a border around the text-editor box. */ | ||||
}; | }; | ||||
//============================================================================== | |||||
struct Ids | |||||
{ | |||||
static const Identifier tagType, min, max, interval, type, editable, | |||||
textBoxPos, textBoxWidth, textBoxHeight, skew; | |||||
}; | |||||
void refreshFromValueTree (const ValueTree&, ComponentBuilder&); | |||||
protected: | protected: | ||||
//============================================================================== | //============================================================================== | ||||
/** @internal */ | /** @internal */ | ||||
@@ -2611,32 +2611,3 @@ void TextEditor::Listener::textEditorTextChanged (TextEditor&) {} | |||||
void TextEditor::Listener::textEditorReturnKeyPressed (TextEditor&) {} | void TextEditor::Listener::textEditorReturnKeyPressed (TextEditor&) {} | ||||
void TextEditor::Listener::textEditorEscapeKeyPressed (TextEditor&) {} | void TextEditor::Listener::textEditorEscapeKeyPressed (TextEditor&) {} | ||||
void TextEditor::Listener::textEditorFocusLost (TextEditor&) {} | void TextEditor::Listener::textEditorFocusLost (TextEditor&) {} | ||||
//============================================================================== | |||||
const Identifier TextEditor::Ids::tagType ("TEXTEDITOR"); | |||||
const Identifier TextEditor::Ids::text ("text"); | |||||
const Identifier TextEditor::Ids::font ("font"); | |||||
const Identifier TextEditor::Ids::mode ("mode"); | |||||
const Identifier TextEditor::Ids::readOnly ("readOnly"); | |||||
const Identifier TextEditor::Ids::scrollbarsShown ("scrollbarsShown"); | |||||
const Identifier TextEditor::Ids::caretVisible ("caretVisible"); | |||||
const Identifier TextEditor::Ids::popupMenuEnabled ("popupMenuEnabled"); | |||||
void TextEditor::refreshFromValueTree (const ValueTree& state, ComponentBuilder&) | |||||
{ | |||||
ComponentBuilder::refreshBasicComponentProperties (*this, state); | |||||
setReadOnly (state [Ids::readOnly]); | |||||
setScrollbarsShown (state [Ids::scrollbarsShown]); | |||||
setCaretVisible (state [Ids::caretVisible]); | |||||
setPopupMenuEnabled (state [Ids::popupMenuEnabled]); | |||||
const int mode = state [Ids::mode]; | |||||
setMultiLine (mode > 1, true); | |||||
setReturnKeyStartsNewLine (mode != 3); | |||||
const Font font (Font::fromString (state [Ids::font])); | |||||
if (getFont() != font) | |||||
applyFontToAllText (font); | |||||
setText (state [Ids::text].toString()); | |||||
} |
@@ -534,15 +534,6 @@ public: | |||||
*/ | */ | ||||
virtual void performPopupMenuAction (int menuItemID); | virtual void performPopupMenuAction (int menuItemID); | ||||
//============================================================================== | |||||
struct Ids | |||||
{ | |||||
static const Identifier tagType, text, font, mode, readOnly, scrollbarsShown, | |||||
caretVisible, popupMenuEnabled; | |||||
}; | |||||
void refreshFromValueTree (const ValueTree&, ComponentBuilder&); | |||||
//============================================================================== | //============================================================================== | ||||
/** @internal */ | /** @internal */ | ||||
void paint (Graphics& g); | void paint (Graphics& g); | ||||
@@ -501,7 +501,7 @@ void ResizableWindow::updateLastPos() | |||||
void ResizableWindow::parentSizeChanged() | void ResizableWindow::parentSizeChanged() | ||||
{ | { | ||||
if (isFullScreen() && getParentComponent() != nullptr) | if (isFullScreen() && getParentComponent() != nullptr) | ||||
setBounds (0, 0, getParentWidth(), getParentHeight()); | |||||
setBounds (getParentComponent()->getLocalBounds()); | |||||
} | } | ||||
//============================================================================== | //============================================================================== | ||||