WYSWYG editor for JUCE GUIs including Visualisers
Loading...
Searching...
No Matches
GuiItem Class Referenceabstract

The GuiItem class will draw borders and descriptions around widgets, if defined. More...

#include <foleys_GuiItem.h>

+ Inheritance diagram for GuiItem:

Public Member Functions

 GuiItem (MagicGUIBuilder &builder, juce::ValueTree node)
 
 ~GuiItem () override
 
virtual juce::Component * getWrappedComponent ()=0
 Allows accessing the Component inside that GuiItem.
 
virtual void update ()=0
 In update() the ValueTree properties should be used to set all properties to the component.
 
virtual void updateColours ()
 Set colours in the wrapped Component to the value from the stylesheet and palette.
 
virtual std::vector< SettablePropertygetSettableProperties () const
 Override this to return each settable option the designer should be able to configure on your component.
 
void setColourTranslation (std::vector< std::pair< juce::String, int > > mapping)
 For each factory you can register a translation table, which will forward the colours from the Stylesheet to the Components.
 
juce::StringArray getColourNames () const
 Return the names of configurable colours.
 
virtual juce::String getControlledParameterID (juce::Point< int >)
 Returns the parameterID that is controlled from this component.
 
juce::var getProperty (const juce::Identifier &property)
 Look up a value through the DOM and CSS.
 
MagicGUIStategetMagicState ()
 
virtual GuiItemfindGuiItemWithId (const juce::String &name)
 Lookup a Component through the tree.
 
void updateInternal ()
 Reread properties from the config ValueTree.
 
void paint (juce::Graphics &g) final
 
void resized () override
 
virtual bool isContainer () const
 
virtual void createSubComponents ()
 
virtual void updateLayout ()
 This will trigger a recalculation of the children layout regardless of resized.
 
LayoutType getParentsLayoutType () const
 Returns the layout type this item is managed by.
 
void configureFlexBoxItem (const juce::ValueTree &node)
 Parse the values and set it to the FlexBox::Item for layouting.
 
void configurePosition (const juce::ValueTree &node)
 
juce::Rectangle< int > resolvePosition (juce::Rectangle< int > parent)
 Calculates the position according to the parent area.
 
juce::Rectangle< int > getClientBounds () const
 Returns the bounds of the wrapped Component.
 
juce::String getTabCaption (const juce::String &defaultName) const
 
juce::Colour getTabColour () const
 
juce::FlexItem & getFlexItem ()
 
void itemDragEnter (const juce::DragAndDropTarget::SourceDetails &details) override
 
void itemDragExit (const juce::DragAndDropTarget::SourceDetails &details) override
 
void paintOverChildren (juce::Graphics &g) override
 
virtual GuiItemfindGuiItem (const juce::ValueTree &node)
 Seeks recursively for a GuiItem.
 
virtual void setEditMode (bool shouldEdit)
 This method sets the GUI in edit mode, that allows to drag the components around.
 
void setDraggable (bool selected)
 
void mouseDown (const juce::MouseEvent &event) override
 
void mouseDrag (const juce::MouseEvent &event) override
 
void mouseUp (const juce::MouseEvent &event) override
 
bool isInterestedInDragSource (const juce::DragAndDropTarget::SourceDetails &dragSourceDetails) override
 
void itemDropped (const juce::DragAndDropTarget::SourceDetails &dragSourceDetails) override
 

Public Attributes

MagicGUIBuildermagicBuilder
 

Protected Attributes

juce::ValueTree configNode
 
Decorator decorator
 
juce::FlexItem flexItem { juce::FlexItem (*this).withFlex (1.0f) }
 
std::vector< std::pair< juce::String, int > > colourTranslation
 

Detailed Description

The GuiItem class will draw borders and descriptions around widgets, if defined.

It also owns the Component and the Attachment, in case the Component is connected to an AudioProcessorValueTreeState.

Constructor & Destructor Documentation

◆ GuiItem()

◆ ~GuiItem()

Member Function Documentation

◆ getWrappedComponent()

virtual juce::Component * getWrappedComponent ( )
pure virtual

◆ update()

virtual void update ( )
pure virtual

In update() the ValueTree properties should be used to set all properties to the component.

You can use the magicBuilder to resolve properties from CSS. The Colours will be handled by default.

Implemented in ComboBoxItem, Container, DrumpadItem, KeyboardItem, LabelItem, LevelMeterItem, ListBoxItem, MidiLearnItem, PlotItem, SliderItem, TextButtonItem, ToggleButtonItem, and XYDraggerItem.

Referenced by GuiItem::updateInternal().

◆ updateColours()

void updateColours ( )
virtual

◆ getSettableProperties()

virtual std::vector< SettableProperty > getSettableProperties ( ) const
virtual

Override this to return each settable option the designer should be able to configure on your component.

Reimplemented in ComboBoxItem, DrumpadItem, LabelItem, LevelMeterItem, ListBoxItem, PlotItem, SliderItem, TextButtonItem, ToggleButtonItem, and XYDraggerItem.

◆ setColourTranslation()

void setColourTranslation ( std::vector< std::pair< juce::String, int > > mapping)

◆ getColourNames()

juce::StringArray getColourNames ( ) const

Return the names of configurable colours.

References GuiItem::colourTranslation.

◆ getControlledParameterID()

virtual juce::String getControlledParameterID ( juce::Point< int > )
virtual

Returns the parameterID that is controlled from this component.

To allow multiple return values depending of the position where the drop arrived there is the drop position supplied.

Reimplemented in SliderItem.

Referenced by GuiItem::itemDragEnter(), and GuiItem::itemDropped().

◆ getProperty()

◆ getMagicState()

◆ findGuiItemWithId()

GuiItem * findGuiItemWithId ( const juce::String & name)
virtual

Lookup a Component through the tree.

It will return the first with that id regardless if there is another one. We discourage using that function, because that Component can be deleted and recreated at any time without notice.

Reimplemented in Container.

References GuiItem::configNode.

◆ updateInternal()

◆ paint()

void paint ( juce::Graphics & g)
final

◆ resized()

void resized ( )
override

◆ isContainer()

virtual bool isContainer ( ) const
virtual

Reimplemented in Container.

◆ createSubComponents()

virtual void createSubComponents ( )
virtual

Reimplemented in Container.

◆ updateLayout()

void updateLayout ( )
virtual

This will trigger a recalculation of the children layout regardless of resized.

Reimplemented in Container.

References GuiItem::resized().

◆ getParentsLayoutType()

LayoutType getParentsLayoutType ( ) const

Returns the layout type this item is managed by.

References foleys::Contents.

Referenced by GuiItem::setDraggable().

◆ configureFlexBoxItem()

void configureFlexBoxItem ( const juce::ValueTree & node)

Parse the values and set it to the FlexBox::Item for layouting.

References GuiItem::flexItem, MagicGUIBuilder::getStyleProperty(), and GuiItem::magicBuilder.

Referenced by GuiItem::updateInternal().

◆ configurePosition()

void configurePosition ( const juce::ValueTree & node)

◆ resolvePosition()

juce::Rectangle< int > resolvePosition ( juce::Rectangle< int > parent)

Calculates the position according to the parent area.

◆ getClientBounds()

juce::Rectangle< int > getClientBounds ( ) const

Returns the bounds of the wrapped Component.

This is the GuiItems bounds reduced by margin, padding and the caption, if one was set.

References Decorator::ClientBounds::client, GuiItem::decorator, and Decorator::getClientBounds().

Referenced by GuiItem::resized(), and Container::updateLayout().

◆ getTabCaption()

juce::String getTabCaption ( const juce::String & defaultName) const

◆ getTabColour()

juce::Colour getTabColour ( ) const

◆ getFlexItem()

juce::FlexItem & getFlexItem ( )

References GuiItem::flexItem.

◆ itemDragEnter()

void itemDragEnter ( const juce::DragAndDropTarget::SourceDetails & details)
override

◆ itemDragExit()

void itemDragExit ( const juce::DragAndDropTarget::SourceDetails & details)
override

◆ paintOverChildren()

void paintOverChildren ( juce::Graphics & g)
override

◆ findGuiItem()

GuiItem * findGuiItem ( const juce::ValueTree & node)
virtual

Seeks recursively for a GuiItem.

Reimplemented in Container.

References GuiItem::configNode.

◆ setEditMode()

void setEditMode ( bool shouldEdit)
virtual

This method sets the GUI in edit mode, that allows to drag the components around.

Reimplemented in Container.

References GuiItem::getWrappedComponent().

Referenced by Container::setEditMode(), and GuiItem::updateInternal().

◆ setDraggable()

◆ mouseDown()

void mouseDown ( const juce::MouseEvent & event)
override

◆ mouseDrag()

void mouseDrag ( const juce::MouseEvent & event)
override

◆ mouseUp()

void mouseUp ( const juce::MouseEvent & event)
override

◆ isInterestedInDragSource()

bool isInterestedInDragSource ( const juce::DragAndDropTarget::SourceDetails & dragSourceDetails)
override

◆ itemDropped()

void itemDropped ( const juce::DragAndDropTarget::SourceDetails & dragSourceDetails)
override

Member Data Documentation

◆ magicBuilder

◆ configNode

◆ decorator

◆ flexItem

juce::FlexItem flexItem { juce::FlexItem (*this).withFlex (1.0f) }
protected

◆ colourTranslation

std::vector<std::pair<juce::String, int> > colourTranslation
protected

The documentation for this class was generated from the following files: