Browse Source

Ensured that bubble messages are also transformed in the ComponentTransforms demo

tags/2021-05-28
hogliux 7 years ago
parent
commit
9dfaca4035
2 changed files with 51 additions and 35 deletions
  1. +1
    -1
      examples/GUI/ComponentTransformsDemo.h
  2. +50
    -34
      examples/GUI/WidgetsDemo.h

+ 1
- 1
examples/GUI/ComponentTransformsDemo.h View File

@@ -53,7 +53,7 @@ class ComponentTransformsDemo : public Component
public:
ComponentTransformsDemo()
{
content.reset (new WidgetsDemo());
content.reset (new WidgetsDemo (true));
addAndMakeVisible (content.get());
content->setSize (750, 500);


+ 50
- 34
examples/GUI/WidgetsDemo.h View File

@@ -50,26 +50,8 @@
//==============================================================================
static void showBubbleMessage (Component& targetComponent, const String& textToShow,
std::unique_ptr<BubbleMessageComponent>& bmc)
{
bmc.reset (new BubbleMessageComponent());
if (Desktop::canUseSemiTransparentWindows())
{
bmc->setAlwaysOnTop (true);
bmc->addToDesktop (0);
}
else
{
targetComponent.getTopLevelComponent()->addChildComponent (bmc.get());
}
AttributedString text (textToShow);
text.setJustification (Justification::centred);
text.setColour (targetComponent.findColour (TextButton::textColourOffId));
bmc->showAt (&targetComponent, text, 2000, true, false);
}
std::unique_ptr<BubbleMessageComponent>& bmc,
bool isRunningComponentTransformDemo);
//==============================================================================
/** To demonstrate how sliders can have custom snapping applied to their values,
@@ -272,7 +254,7 @@ private:
//==============================================================================
struct ButtonsPage : public Component
{
ButtonsPage()
ButtonsPage (bool isRunningComponentTransformDemo)
{
{
auto* group = addToList (new GroupComponent ("group", "Radio buttons"));
@@ -374,14 +356,15 @@ struct ButtonsPage : public Component
down.setImage (getImageFromAssets ("juce_icon.png"));
down.setOverlayColour (Colours::black.withAlpha (0.3f));
auto popupMessageCallback = [this]
auto popupMessageCallback = [this, isRunningComponentTransformDemo]
{
if (auto* focused = Component::getCurrentlyFocusedComponent())
showBubbleMessage (*focused,
"This is a demo of the BubbleMessageComponent, which lets you pop up a message pointing "
"at a component or somewhere on the screen.\n\n"
"The message bubbles will disappear after a timeout period, or when the mouse is clicked.",
this->bubbleMessage);
this->bubbleMessage,
isRunningComponentTransformDemo);
};
{
@@ -1277,19 +1260,20 @@ private:
//==============================================================================
struct DemoTabbedComponent : public TabbedComponent
{
DemoTabbedComponent()
DemoTabbedComponent (bool isRunningComponenTransformsDemo)
: TabbedComponent (TabbedButtonBar::TabsAtTop)
{
auto colour = findColour (ResizableWindow::backgroundColourId);
addTab ("Buttons", colour, new ButtonsPage(), true);
addTab ("Sliders", colour, new SlidersPage(), true);
addTab ("Toolbars", colour, new ToolbarDemoComp(), true);
addTab ("Misc", colour, new MiscPage(), true);
addTab ("Tables", colour, new TableDemoComponent(), true);
addTab ("Drag & Drop", colour, new DragAndDropDemo(), true);
addTab ("Buttons", colour, new ButtonsPage (isRunningComponenTransformsDemo), true);
addTab ("Sliders", colour, new SlidersPage(), true);
addTab ("Toolbars", colour, new ToolbarDemoComp(), true);
addTab ("Misc", colour, new MiscPage(), true);
addTab ("Tables", colour, new TableDemoComponent(), true);
addTab ("Drag & Drop", colour, new DragAndDropDemo(), true);
getTabbedButtonBar().getTabButton (5)->setExtraComponent (new CustomTabButton(), TabBarButton::afterText);
getTabbedButtonBar().getTabButton (5)->setExtraComponent (new CustomTabButton (isRunningComponenTransformsDemo),
TabBarButton::afterText);
}
// This is a small star button that is put inside one of the tabs. You can
@@ -1297,7 +1281,8 @@ struct DemoTabbedComponent : public TabbedComponent
class CustomTabButton : public Component
{
public:
CustomTabButton()
CustomTabButton (bool isRunningComponenTransformsDemo)
: runningComponenTransformsDemo (isRunningComponenTransformsDemo)
{
setSize (20, 20);
}
@@ -1318,9 +1303,11 @@ struct DemoTabbedComponent : public TabbedComponent
"\n"
"You can use these to implement things like close-buttons "
"or status displays for your tabs.",
bubbleMessage);
bubbleMessage,
runningComponenTransformsDemo);
}
private:
bool runningComponenTransformsDemo;
std::unique_ptr<BubbleMessageComponent> bubbleMessage;
};
@@ -1330,7 +1317,8 @@ struct DemoTabbedComponent : public TabbedComponent
//==============================================================================
struct WidgetsDemo : public Component
{
WidgetsDemo()
WidgetsDemo (bool isRunningComponenTransformsDemo = false)
: tabs (isRunningComponenTransformsDemo)
{
setOpaque (true);
addAndMakeVisible (tabs);
@@ -1352,3 +1340,31 @@ struct WidgetsDemo : public Component
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (WidgetsDemo)
};
//==============================================================================
void showBubbleMessage (Component& targetComponent, const String& textToShow,
std::unique_ptr<BubbleMessageComponent>& bmc,
bool isRunningComponentTransformDemo)
{
bmc.reset (new BubbleMessageComponent());
if (isRunningComponentTransformDemo)
{
targetComponent.findParentComponentOfClass<WidgetsDemo>()->addChildComponent (bmc.get());
}
else if (Desktop::canUseSemiTransparentWindows())
{
bmc->setAlwaysOnTop (true);
bmc->addToDesktop (0);
}
else
{
targetComponent.getTopLevelComponent()->addChildComponent (bmc.get());
}
AttributedString text (textToShow);
text.setJustification (Justification::centred);
text.setColour (targetComponent.findColour (TextButton::textColourOffId));
bmc->showAt (&targetComponent, text, 2000, true, false);
}

Loading…
Cancel
Save