31 #if JUCE_LINUX || JUCE_BSD
62 constrainer.setMinimumOnscreenAmounts (0x10000, 0x10000, 0x10000, 0x10000);
70 t->setWantsKeyboardFocus (
false);
88 auto newMessage =
message.substring (0, 2048);
90 if (
text != newMessage)
112 const int returnValue,
119 b->setWantsKeyboardFocus (
true);
120 b->setExplicitFocusOrder (1);
121 b->setMouseClickGrabsKeyboardFocus (
false);
122 b->setCommandToTrigger (
nullptr, returnValue,
false);
123 b->addShortcut (shortcutKey1);
124 b->addShortcut (shortcutKey2);
130 auto buttonHeight = lf.getAlertWindowButtonHeight();
131 auto buttonWidths = lf.getWidthsForTextButtons (*
this, buttonsArray);
137 button->setSize (buttonWidths[
i++], buttonHeight);
152 if (buttonName ==
b->getName())
167 const String& initialContents,
168 const String& onScreenLabel,
169 const bool isPasswordBox)
172 ed->setSelectAllWhenFocused (
true);
173 ed->setEscapeAndReturnKeysConsumed (
false);
180 ed->setText (initialContents);
181 ed->setCaretPosition (initialContents.
length());
190 if (tb->getName() == nameOfTextEditor)
208 const String& onScreenLabel)
214 cb->addItemList (items, 1);
217 cb->setSelectedItemIndex (0);
226 if (cb->getName() == nameOfList)
264 text.createLayoutWithBalancedLineLengths (
s, (
float)
width - 8.0f);
330 g.setFont (lf.getAlertWindowFont());
337 te->getX(), te->getY() - 14,
347 cb->getX(), cb->getY() - 14,
353 g.drawFittedText (
c->getName(),
354 c->getX(),
c->getY() - 14,
361 const int titleH = 24;
362 const int iconWidth = 80;
365 auto messageFont (lf.getAlertWindowMessageFont());
367 auto wid =
jmax (messageFont.getStringWidth (
text),
368 messageFont.getStringWidth (
getName()));
370 auto sw = (
int) std::sqrt (messageFont.getHeight() * (
float) wid);
372 const int edgeGap = 10;
373 const int labelHeight = 18;
377 attributedText.
append (
getName(), lf.getAlertWindowTitleFont());
379 if (
text.isNotEmpty())
380 attributedText.
append (
"\n\n" +
text, messageFont);
387 textLayout.createLayoutWithBalancedLineLengths (attributedText, (
float)
w);
392 textLayout.createLayoutWithBalancedLineLengths (attributedText, (
float)
w);
393 iconSpace = iconWidth;
400 auto textBottom = 16 + titleH + textLayoutH;
406 buttonW += 16 +
b->getWidth();
413 h += 20 +
b->getHeight();
417 w =
jmax (
w, (
c->getWidth() * 100) / 80);
418 h += 10 +
c->getHeight();
420 if (
c->getName().isNotEmpty())
433 h += ac->getHeight() + 10;
438 if (onlyIncreaseSize)
449 textArea.setBounds (edgeGap, edgeGap,
w - (edgeGap * 2),
h - edgeGap);
452 const int spacer = 16;
453 int totalWidth = -spacer;
456 totalWidth +=
b->getWidth() + spacer;
458 auto x = (
w - totalWidth) / 2;
464 c->setTopLeftPosition (
x, ny);
468 x +=
c->getWidth() + spacer;
480 if (comboIndex >= 0 &&
comboBoxNames [comboIndex].isNotEmpty())
489 if (
c->getName().isNotEmpty())
497 c->setTopLeftPosition ((
getWidth() -
c->getWidth()) / 2,
y);
519 dragger.startDraggingComponent (
this,
e);
531 if (
b->isRegisteredForShortcut (
key))
546 buttons.getUnchecked(0)->triggerClick();
574 std::unique_ptr<ModalComponentManager::Callback>&& cb,
597 auto* component =
options.getAssociatedComponent();
599 auto& lf = (component !=
nullptr ? component->getLookAndFeel()
602 std::unique_ptr<AlertWindow> alertBox (lf.createAlertWindow (
options.getTitle(),
options.getMessage(),
610 #if JUCE_MODAL_LOOPS_PERMITTED
618 alertBox->enterModalState (
true,
callback.release(),
true);
624 std::unique_ptr<ModalComponentManager::Callback>
callback;
635 static inline int noMapping (
int buttonIndex) {
return buttonIndex; }
637 static inline int okCancel (
int buttonIndex) {
return buttonIndex == 0 ? 1 : 0; }
638 static inline int yesNoCancel (
int buttonIndex) {
return buttonIndex == 2 ? 0 : buttonIndex + 1; }
645 if (callbackIn ==
nullptr)
648 auto wrappedCallback = [innerCallback =
rawToUniquePtr (callbackIn), mapFn] (
int buttonIndex)
650 innerCallback->modalStateFinished (mapFn (buttonIndex));
658#if JUCE_MODAL_LOOPS_PERMITTED
659void AlertWindow::showMessageBox (MessageBoxIconType iconType,
663 Component* associatedComponent)
665 show (MessageBoxOptions()
666 .withIconType (iconType)
669 .withButton (buttonText.
isEmpty() ?
TRANS(
"OK") : buttonText)
670 .withAssociatedComponent (associatedComponent));
673int AlertWindow::show (
const MessageBoxOptions& options)
675 if (LookAndFeel::getDefaultLookAndFeel().isUsingNativeAlertWindows())
676 return NativeMessageBox::show (options);
678 AlertWindowInfo
info (options,
nullptr, Async::no);
679 return info.invoke();
682bool AlertWindow::showNativeDialogBox (
const String&
title,
683 const String& bodyText,
687 return NativeMessageBox::showOkCancelBox (AlertWindow::NoIcon,
title, bodyText);
689 NativeMessageBox::showMessageBox (AlertWindow::NoIcon,
title, bodyText);
720 .withIconType (iconType)
723 .withButton (buttonText.
isEmpty() ?
TRANS(
"OK") : buttonText)
732 const auto showAsync = (callbackIn !=
nullptr ?
Async::yes
739 #if JUCE_MODAL_LOOPS_PERMITTED
741 return mapFn (NativeMessageBox::show (options));
749 return info.invoke();
755 const String& button1Text,
756 const String& button2Text,
761 .withIconType (iconType)
764 .withButton (button1Text.
isEmpty() ?
TRANS(
"OK") : button1Text)
765 .withButton (button2Text.
isEmpty() ?
TRANS(
"Cancel") : button2Text)
776 const String& button1Text,
777 const String& button2Text,
778 const String& button3Text,
783 .withIconType (iconType)
786 .withButton (button1Text.
isEmpty() ?
TRANS(
"Yes") : button1Text)
787 .withButton (button2Text.
isEmpty() ?
TRANS(
"No") : button2Text)
788 .withButton (button3Text.
isEmpty() ?
TRANS(
"Cancel") : button3Text)
Type jmin(const Type a, const Type b)
Definition MathsFunctions.h:60
Type jmax(const Type a, const Type b)
Definition MathsFunctions.h:48
#define noexcept
Definition DistrhoDefines.h:72
#define nullptr
Definition DistrhoDefines.h:75
static void message(int level, const char *fmt,...)
Definition adplugdb.cpp:120
bool isEmpty() const noexcept
Definition String.h:238
Definition juce_AlertWindow.cpp:234
AlertTextComp(AlertWindow &owner, const String &message, const Font &font)
Definition juce_AlertWindow.cpp:236
int bestWidth
Definition juce_AlertWindow.cpp:268
void updateLayout(const int width)
Definition juce_AlertWindow.cpp:257
Definition juce_AlertWindow.h:45
void mouseDown(const MouseEvent &) override
Definition juce_AlertWindow.cpp:517
@ textColourId
Definition juce_AlertWindow.h:444
StringArray textboxNames
Definition juce_AlertWindow.h:519
void setEscapeKeyCancels(bool shouldEscapeKeyCancel)
Definition juce_AlertWindow.cpp:160
void addButton(const String &name, int returnValue, const KeyPress &shortcutKey1=KeyPress(), const KeyPress &shortcutKey2=KeyPress())
Definition juce_AlertWindow.cpp:111
ComponentDragger dragger
Definition juce_AlertWindow.h:510
void addComboBox(const String &name, const StringArray &items, const String &onScreenLabel=String())
Definition juce_AlertWindow.cpp:206
static int JUCE_CALLTYPE showYesNoCancelBox(MessageBoxIconType iconType, const String &title, const String &message, const String &button1Text, const String &button2Text, const String &button3Text, Component *associatedComponent, ModalComponentManager::Callback *callback)
Definition juce_AlertWindow.cpp:773
void addTextEditor(const String &name, const String &initialContents, const String &onScreenLabel=String(), bool isPasswordBox=false)
Definition juce_AlertWindow.cpp:166
OwnedArray< TextEditor > textBoxes
Definition juce_AlertWindow.h:513
OwnedArray< ComboBox > comboBoxes
Definition juce_AlertWindow.h:514
OwnedArray< TextButton > buttons
Definition juce_AlertWindow.h:512
StringArray comboBoxNames
Definition juce_AlertWindow.h:519
int getNumButtons() const
Definition juce_AlertWindow.cpp:143
String text
Definition juce_AlertWindow.h:505
static bool JUCE_CALLTYPE showOkCancelBox(MessageBoxIconType iconType, const String &title, const String &message, const String &button1Text, const String &button2Text, Component *associatedComponent, ModalComponentManager::Callback *callback)
Definition juce_AlertWindow.cpp:752
float desktopScale
Definition juce_AlertWindow.h:522
void setMessage(const String &message)
Definition juce_AlertWindow.cpp:86
Rectangle< int > textArea
Definition juce_AlertWindow.h:511
static void JUCE_CALLTYPE showAsync(const MessageBoxOptions &options, ModalComponentManager::Callback *callback)
Definition juce_AlertWindow.cpp:694
void addTextBlock(const String &text)
Definition juce_AlertWindow.cpp:273
Array< Component * > allComps
Definition juce_AlertWindow.h:518
int getNumCustomComponents() const
Definition juce_AlertWindow.cpp:304
void updateLayout(bool onlyIncreaseSize)
Definition juce_AlertWindow.cpp:359
Array< Component * > customComps
Definition juce_AlertWindow.h:516
void lookAndFeelChanged() override
Definition juce_AlertWindow.cpp:553
static constexpr auto NoIcon
Definition juce_AlertWindow.h:479
OwnedArray< Component > textBlocks
Definition juce_AlertWindow.h:517
bool containsAnyExtraComponents() const
Definition juce_AlertWindow.cpp:511
void mouseDrag(const MouseEvent &) override
Definition juce_AlertWindow.cpp:522
void addProgressBarComponent(double &progressValue)
Definition juce_AlertWindow.cpp:284
static void JUCE_CALLTYPE showMessageBoxAsync(MessageBoxIconType iconType, const String &title, const String &message, const String &buttonText=String(), Component *associatedComponent=nullptr, ModalComponentManager::Callback *callback=nullptr)
Definition juce_AlertWindow.cpp:712
int getDesktopWindowStyleFlags() const override
Definition juce_AlertWindow.cpp:562
Component * getCustomComponent(int index) const
Definition juce_AlertWindow.cpp:305
OwnedArray< ProgressBar > progressBars
Definition juce_AlertWindow.h:515
Component *const associatedComponent
Definition juce_AlertWindow.h:520
void exitAlert(Button *button)
Definition juce_AlertWindow.cpp:104
bool escapeKeyCancels
Definition juce_AlertWindow.h:521
MessageBoxIconType alertIconType
Definition juce_AlertWindow.h:508
void paint(Graphics &) override
Definition juce_AlertWindow.cpp:324
TextEditor * getTextEditor(const String &nameOfTextEditor) const
Definition juce_AlertWindow.cpp:187
std::unique_ptr< AccessibilityHandler > createAccessibilityHandler() override
Definition juce_AlertWindow.cpp:797
void triggerButtonClick(const String &buttonName)
Definition juce_AlertWindow.cpp:148
Component * removeCustomComponent(int index)
Definition juce_AlertWindow.cpp:307
void addCustomComponent(Component *component)
Definition juce_AlertWindow.cpp:295
Label accessibleMessageLabel
Definition juce_AlertWindow.h:507
ComponentBoundsConstrainer constrainer
Definition juce_AlertWindow.h:509
AlertWindow(const String &title, const String &message, MessageBoxIconType iconType, Component *associatedComponent=nullptr)
Definition juce_AlertWindow.cpp:39
String getTextEditorContents(const String &nameOfTextEditor) const
Definition juce_AlertWindow.cpp:196
TextLayout textLayout
Definition juce_AlertWindow.h:506
~AlertWindow() override
Definition juce_AlertWindow.cpp:65
bool keyPressed(const KeyPress &) override
Definition juce_AlertWindow.cpp:527
ComboBox * getComboBoxComponent(const String &nameOfList) const
Definition juce_AlertWindow.cpp:223
void userTriedToCloseWindow() override
Definition juce_AlertWindow.cpp:79
Definition juce_AlertWindow.cpp:571
std::unique_ptr< ModalComponentManager::Callback > callback
Definition juce_AlertWindow.cpp:624
int returnValue
Definition juce_AlertWindow.cpp:626
static void * showCallback(void *userData)
Definition juce_AlertWindow.cpp:589
void show()
Definition juce_AlertWindow.cpp:595
AlertWindowInfo(const MessageBoxOptions &opts, std::unique_ptr< ModalComponentManager::Callback > &&cb, Async showAsync)
Definition juce_AlertWindow.cpp:573
const Async async
Definition juce_AlertWindow.cpp:625
MessageBoxOptions options
Definition juce_AlertWindow.cpp:623
int invoke() const
Definition juce_AlertWindow.cpp:582
Definition juce_Array.h:56
Definition juce_AttributedString.h:47
void setColour(Range< int > range, Colour colour)
Definition juce_AttributedString.cpp:243
void append(const String &textToAppend)
Definition juce_AttributedString.cpp:175
void setJustification(Justification newJustification) noexcept
Definition juce_AttributedString.cpp:223
Definition juce_ComboBox.h:49
@ outlineColourId
Definition juce_ComboBox.h:358
Definition juce_Component.h:36
bool isColourSpecified(int colourID) const
Definition juce_Component.cpp:2231
int proportionOfWidth(float proportion) const noexcept
Definition juce_Component.cpp:1111
void giveAwayKeyboardFocus()
Definition juce_Component.cpp:3029
bool isVisible() const noexcept
Definition juce_Component.h:122
int getNumChildComponents() const noexcept
Definition juce_Component.cpp:1643
int proportionOfHeight(float proportion) const noexcept
Definition juce_Component.cpp:1112
bool isOpaque() const noexcept
Definition juce_Component.cpp:843
int getHeight() const noexcept
Definition juce_Component.h:274
static float JUCE_CALLTYPE getApproximateScaleFactorForComponent(const Component *targetComponent)
Definition juce_Component.cpp:1383
void addAndMakeVisible(Component *child, int zOrder=-1)
Definition juce_Component.cpp:1554
void setAlwaysOnTop(bool shouldStayOnTop)
Definition juce_Component.cpp:1074
void setDescription(const String &newDescription)
Definition juce_Component.cpp:3263
Rectangle< int > getBounds() const noexcept
Definition juce_Component.h:304
void repaint()
Definition juce_Component.cpp:1917
void exitModalState(int returnValue)
Definition juce_Component.cpp:1795
void removeChildComponent(Component *childToRemove)
Definition juce_Component.cpp:1569
void removeAllChildren()
Definition juce_Component.cpp:1631
void setBounds(int x, int y, int width, int height)
Definition juce_Component.cpp:1147
void setSize(int newWidth, int newHeight)
Definition juce_Component.cpp:1262
void setColour(int colourID, Colour newColour)
Definition juce_Component.cpp:2242
void setWantsKeyboardFocus(bool wantsFocus) noexcept
Definition juce_Component.cpp:2842
Colour findColour(int colourID, bool inheritFromParent=false) const
Definition juce_Component.cpp:2219
int getWidth() const noexcept
Definition juce_Component.h:271
LookAndFeel & getLookAndFeel() const noexcept
Definition juce_Component.cpp:2173
int getParentWidth() const noexcept
Definition juce_Component.cpp:1114
int getParentHeight() const noexcept
Definition juce_Component.cpp:1120
String getName() const noexcept
Definition juce_Component.h:76
@ windowHasDropShadow
Definition juce_ComponentPeer.h:66
@ windowHasTitleBar
Definition juce_ComponentPeer.h:56
Definition juce_Font.h:42
float getHeight() const noexcept
Definition juce_Font.cpp:735
int getStringWidth(const String &text) const
Definition juce_Font.cpp:742
Definition juce_GraphicsContext.h:45
@ centredLeft
Definition juce_Justification.h:143
@ centredTop
Definition juce_Justification.h:153
@ topLeft
Definition juce_Justification.h:163
Definition juce_KeyPress.h:40
static const int escapeKey
Definition juce_KeyPress.h:190
static const int returnKey
Definition juce_KeyPress.h:191
@ outlineColourId
Definition juce_Label.h:108
@ backgroundColourId
Definition juce_Label.h:106
@ textColourId
Definition juce_Label.h:107
static LookAndFeel & getDefaultLookAndFeel() noexcept
Definition juce_LookAndFeel.cpp:107
Definition juce_MessageBoxOptions.h:63
static MessageManager * getInstance()
Definition juce_MessageManager.cpp:47
static ModalComponentManager::Callback * create(CallbackFn &&fn)
Definition juce_ModalComponentManager.h:174
Definition juce_ModalComponentManager.h:56
Definition juce_MouseEvent.h:39
static void JUCE_CALLTYPE showAsync(const MessageBoxOptions &options, ModalComponentManager::Callback *callback)
Definition juce_linux_Windowing.cpp:928
Definition juce_ProgressBar.h:51
Definition juce_StringArray.h:35
Definition juce_String.h:53
int length() const noexcept
Definition juce_String.cpp:511
bool isEmpty() const noexcept
Definition juce_String.h:310
Definition juce_TextButton.h:39
Definition juce_TextEditor.h:43
void setScrollbarsShown(bool shouldBeEnabled)
Definition juce_TextEditor.cpp:1015
void setMultiLine(bool shouldBeMultiLine, bool shouldWordWrap=true)
Definition juce_TextEditor.cpp:993
@ backgroundColourId
Definition juce_TextEditor.h:209
@ textColourId
Definition juce_TextEditor.h:212
@ outlineColourId
Definition juce_TextEditor.h:223
@ shadowColourId
Definition juce_TextEditor.h:229
const Font & getFont() const noexcept
Definition juce_TextEditor.h:257
void setFont(const Font &newFont)
Definition juce_TextEditor.cpp:1084
void setText(const String &newText, bool sendTextChangeMessage=true)
Definition juce_TextEditor.cpp:1234
void setReadOnly(bool shouldBeReadOnly)
Definition juce_TextEditor.cpp:1024
void lookAndFeelChanged() override
Definition juce_TextEditor.cpp:1120
void setCaretVisible(bool shouldBeVisible)
Definition juce_TextEditor.cpp:1138
TextEditor(const String &componentName=String(), juce_wchar passwordCharacter=0)
Definition juce_TextEditor.cpp:933
String getText() const
Definition juce_TextEditor.cpp:2516
Definition juce_TextLayout.h:41
void centreAroundComponent(Component *componentToCentreAround, int width, int height)
Definition juce_TopLevelWindow.cpp:290
void setDropShadowEnabled(bool useShadow)
Definition juce_TopLevelWindow.cpp:210
TopLevelWindow(const String &name, bool addToDesktop)
Definition juce_TopLevelWindow.cpp:134
void setUsingNativeTitleBar(bool useNativeTitleBar)
Definition juce_TopLevelWindow.cpp:238
* e
Definition inflate.c:1404
UINT_D64 w
Definition inflate.c:942
struct huft * t
Definition inflate.c:943
int y
Definition inflate.c:1588
int g
Definition inflate.c:1573
register unsigned i
Definition inflate.c:1575
unsigned s
Definition inflate.c:1555
unsigned x[BMAX+1]
Definition inflate.c:1586
static const char * title
Definition pugl.h:1747
static const char * name
Definition pugl.h:1582
static int width
Definition pugl.h:1593
static uintptr_t parent
Definition pugl.h:1644
struct backing_store_struct * info
Definition jmemsys.h:183
#define TRANS(stringLiteral)
Definition juce_LocalisedStrings.h:208
static int JUCE_CDECL comp(const void *a, const void *b)
Definition lsp.c:298
Definition juce_AlertWindow.cpp:632
static int messageBox(int)
Definition juce_AlertWindow.cpp:636
static int okCancel(int buttonIndex)
Definition juce_AlertWindow.cpp:637
static int noMapping(int buttonIndex)
Definition juce_AlertWindow.cpp:635
int(*)(int) MapFn
Definition juce_AlertWindow.cpp:633
static int yesNoCancel(int buttonIndex)
Definition juce_AlertWindow.cpp:638
static std::unique_ptr< ModalComponentManager::Callback > getWrappedCallback(ModalComponentManager::Callback *callbackIn, MapFn mapFn)
Definition juce_AlertWindow.cpp:640
const Colour transparentBlack
Definition juce_Colours.h:40
Definition carla_juce.cpp:31
static int showMaybeAsync(const MessageBoxOptions &options, ModalComponentManager::Callback *callbackIn, AlertWindowMappings::MapFn mapFn)
Definition juce_AlertWindow.cpp:728
Async
Definition juce_AlertWindow.cpp:567
@ no
Definition juce_AlertWindow.cpp:567
@ yes
Definition juce_AlertWindow.cpp:567
constexpr Type jmin(Type a, Type b)
Definition juce_MathsFunctions.h:106
MessageBoxIconType
Definition juce_MessageBoxOptions.h:31
static juce_wchar getDefaultPasswordChar() noexcept
Definition juce_AlertWindow.cpp:29
wchar_t juce_wchar
Definition juce_CharacterFunctions.h:42
bool juce_areThereAnyAlwaysOnTopWindows()
Definition juce_linux_Windowing.cpp:31
@ dontSendNotification
Definition juce_NotificationType.h:33
void ignoreUnused(Types &&...) noexcept
Definition juce_MathsFunctions.h:333
@ dialogWindow
Definition juce_AccessibilityRole.h:62
@ button
Definition juce_AccessibilityRole.h:38
std::unique_ptr< T > rawToUniquePtr(T *ptr)
Definition juce_Memory.h:195
Definition juce_Uuid.h:141
#define true
Definition ordinals.h:82
const char * text
Definition swell-functions.h:167
RECT const char void(* callback)(const char *droppath))) SWELL_API_DEFINE(BOOL
Definition swell-functions.h:1004
return c
Definition crypt.c:175
ZCONST char * key
Definition crypt.c:587
uch h[RAND_HEAD_LEN]
Definition crypt.c:459
typedef int(UZ_EXP MsgFn)()