LMMS
Loading...
Searching...
No Matches
juce_MultiDocumentPanel.h
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
27{
28
29class MultiDocumentPanel;
30
31
32//==============================================================================
45{
46public:
47 //==============================================================================
50 MultiDocumentPanelWindow (Colour backgroundColour);
51
54
55 //==============================================================================
57 void maximiseButtonPressed() override;
59 void closeButtonPressed() override;
61 void activeWindowStatusChanged() override;
63 void broughtToFront() override;
64
65private:
66 //==============================================================================
67 void updateOrder();
68 MultiDocumentPanel* getOwner() const noexcept;
69
71};
72
73
74//==============================================================================
89 private ComponentListener
90{
91public:
92 //==============================================================================
100
109 ~MultiDocumentPanel() override;
110
111 //==============================================================================
112 #if JUCE_MODAL_LOOPS_PERMITTED
124 bool closeAllDocuments (bool checkItsOkToCloseFirst);
125 #endif
126
139 void closeAllDocumentsAsync (bool checkItsOkToCloseFirst,
140 std::function<void (bool)> callback);
141
159 bool addDocument (Component* component,
161 bool deleteWhenRemoved);
162
163 #if JUCE_MODAL_LOOPS_PERMITTED
178 bool closeDocument (Component* component,
179 bool checkItsOkToCloseFirst);
180 #endif
181
196 void closeDocumentAsync (Component* component,
197 bool checkItsOkToCloseFirst,
198 std::function<void (bool)> callback);
199
204 int getNumDocuments() const noexcept;
205
213 Component* getDocument (int index) const noexcept;
214
224 Component* getActiveDocument() const noexcept;
225
230 void setActiveDocument (Component* component);
231
233 virtual void activeDocumentChanged();
234
241
249 void useFullscreenWhenOneDocument (bool shouldUseTabs);
250
253 bool isFullscreenWhenOneDocument() const noexcept;
254
255 //==============================================================================
262
267 void setLayoutMode (LayoutMode newLayoutMode);
268
271
277 void setBackgroundColour (Colour newBackgroundColour);
278
284
287
288 //==============================================================================
289 #if JUCE_MODAL_LOOPS_PERMITTED
311 virtual bool tryToCloseDocument (Component* component);
312 #endif
313
336 virtual void tryToCloseDocumentAsync (Component* component, std::function<void (bool)> callback) = 0;
337
344
345 //==============================================================================
347 void paint (Graphics&) override;
349 void resized() override;
351 void componentNameChanged (Component&) override;
352
353private:
354 //==============================================================================
357 bool,
358 std::function<void (bool)>);
359
360 //==============================================================================
363
365 void updateOrder();
366 void addWindow (Component*);
367
370 std::unique_ptr<TabbedComponent> tabComponent;
373
375};
376
377} // namespace juce
#define noexcept
Definition DistrhoDefines.h:72
Definition juce_Array.h:56
Definition juce_Colour.h:38
Definition juce_Component.h:2287
Definition juce_Component.h:36
Component() noexcept
Definition juce_Component.cpp:517
Definition juce_ComponentListener.h:43
DocumentWindow(const String &name, Colour backgroundColour, int requiredButtons, bool addToDesktop=true)
Definition juce_DocumentWindow.cpp:48
Definition juce_GraphicsContext.h:45
Definition juce_MultiDocumentPanel.h:90
virtual MultiDocumentPanelWindow * createNewDocumentWindow()
Definition juce_MultiDocumentPanel.cpp:170
int numDocsBeforeTabsUsed
Definition juce_MultiDocumentPanel.h:372
void componentNameChanged(Component &) override
Definition juce_MultiDocumentPanel.cpp:578
LayoutMode mode
Definition juce_MultiDocumentPanel.h:368
int maximumNumDocuments
Definition juce_MultiDocumentPanel.h:372
void setMaximumNumDocuments(int maximumNumDocuments)
Definition juce_MultiDocumentPanel.cpp:486
Component * getDocument(int index) const noexcept
Definition juce_MultiDocumentPanel.cpp:434
virtual void tryToCloseDocumentAsync(Component *component, std::function< void(bool)> callback)=0
friend class MultiDocumentPanelWindow
Definition juce_MultiDocumentPanel.h:362
int getNumDocuments() const noexcept
Definition juce_MultiDocumentPanel.cpp:429
void useFullscreenWhenOneDocument(bool shouldUseTabs)
Definition juce_MultiDocumentPanel.cpp:491
void paint(Graphics &) override
Definition juce_MultiDocumentPanel.cpp:549
Colour backgroundColour
Definition juce_MultiDocumentPanel.h:371
Component * getActiveDocument() const noexcept
Definition juce_MultiDocumentPanel.cpp:439
std::unique_ptr< TabbedComponent > tabComponent
Definition juce_MultiDocumentPanel.h:370
MultiDocumentPanel()
Definition juce_MultiDocumentPanel.cpp:93
void setActiveDocument(Component *component)
Definition juce_MultiDocumentPanel.cpp:452
void updateOrder()
Definition juce_MultiDocumentPanel.cpp:593
void closeDocumentAsync(Component *component, bool checkItsOkToCloseFirst, std::function< void(bool)> callback)
Definition juce_MultiDocumentPanel.cpp:380
void resized() override
Definition juce_MultiDocumentPanel.cpp:554
Array< Component * > components
Definition juce_MultiDocumentPanel.h:369
bool isFullscreenWhenOneDocument() const noexcept
Definition juce_MultiDocumentPanel.cpp:496
LayoutMode
Definition juce_MultiDocumentPanel.h:258
@ FloatingWindows
Definition juce_MultiDocumentPanel.h:259
@ MaximisedWindowsWithTabs
Definition juce_MultiDocumentPanel.h:260
static void closeLastDocumentRecursive(SafePointer< MultiDocumentPanel >, bool, std::function< void(bool)>)
Definition juce_MultiDocumentPanel.cpp:125
bool addDocument(Component *component, Colour backgroundColour, bool deleteWhenRemoved)
Definition juce_MultiDocumentPanel.cpp:202
Colour getBackgroundColour() const noexcept
Definition juce_MultiDocumentPanel.h:283
Component * getContainerComp(Component *) const
Definition juce_MultiDocumentPanel.cpp:565
void closeDocumentInternal(Component *)
Definition juce_MultiDocumentPanel.cpp:269
void addWindow(Component *)
Definition juce_MultiDocumentPanel.cpp:175
TabbedComponent * getCurrentTabbedComponent() const noexcept
Definition juce_MultiDocumentPanel.h:286
LayoutMode getLayoutMode() const noexcept
Definition juce_MultiDocumentPanel.h:270
void closeAllDocumentsAsync(bool checkItsOkToCloseFirst, std::function< void(bool)> callback)
Definition juce_MultiDocumentPanel.cpp:156
virtual void activeDocumentChanged()
Definition juce_MultiDocumentPanel.cpp:482
void activeWindowStatusChanged() override
Definition juce_MultiDocumentPanel.cpp:56
MultiDocumentPanel * getOwner() const noexcept
Definition juce_MultiDocumentPanel.cpp:74
void maximiseButtonPressed() override
Definition juce_MultiDocumentPanel.cpp:40
void broughtToFront() override
Definition juce_MultiDocumentPanel.cpp:62
void updateOrder()
Definition juce_MultiDocumentPanel.cpp:68
void closeButtonPressed() override
Definition juce_MultiDocumentPanel.cpp:48
MultiDocumentPanelWindow(Colour backgroundColour)
Definition juce_MultiDocumentPanel.cpp:29
Definition juce_TabbedComponent.h:42
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
#define JUCE_API
Definition juce_StandardHeader.h:152
const Colour lightblue
Definition juce_Colours.h:106
Definition carla_juce.cpp:31
Definition juce_MultiDocumentPanel.cpp:81
RECT const char void(* callback)(const char *droppath))) SWELL_API_DEFINE(BOOL
Definition swell-functions.h:1004
#define const
Definition zconf.h:137