JUCE-7.0.12-0-g4f43011b96 JUCE-7.0.12-0-g4f43011b96
JUCE — C++ application framework with suport for VST, VST3, LV2 audio plug-ins

« « « Anklang Documentation
Loading...
Searching...
No Matches
juce_NativeMessageBox_linux.cpp
Go to the documentation of this file.
1 /*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
12
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
15
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
18
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
22
23 ==============================================================================
24*/
25
26namespace juce::detail
27{
28
29std::unique_ptr<ScopedMessageBoxInterface> ScopedMessageBoxInterface::create (const MessageBoxOptions& options)
30{
31 // On Linux, we re-use the AlertWindow rather than using a platform-specific dialog.
32 // For consistency with the NativeMessageBox on other platforms, the result code must
33 // match the button index, hence this adapter.
34 class MessageBox final : public ScopedMessageBoxInterface
35 {
36 public:
37 explicit MessageBox (const MessageBoxOptions& options)
38 : inner (detail::AlertWindowHelpers::create (options)),
39 numButtons (options.getNumButtons()) {}
40
41 void runAsync (std::function<void (int)> fn) override
42 {
43 inner->runAsync ([fn, n = numButtons] (int result)
44 {
45 fn (map (result, n));
46 });
47 }
48
49 int runSync() override
50 {
51 return map (inner->runSync(), numButtons);
52 }
53
54 void close() override
55 {
56 inner->close();
57 }
58
59 private:
60 static int map (int button, int numButtons) { return (button + numButtons - 1) % numButtons; }
61
63 int numButtons = 0;
64 };
65
66 return std::make_unique<MessageBox> (options);
67}
68
69} // namespace juce::detail
close
Type unalignedPointerCast(void *ptr) noexcept
Casts a pointer to another type via void*, which suppresses the cast-align warning which sometimes ar...
Definition juce_Memory.h:88