openshot-audio  0.1.6
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) 2015 - ROLI Ltd.
6 
7  Permission is granted to use this software under the terms of either:
8  a) the GPL v2 (or any later version)
9  b) the Affero GPL v3
10 
11  Details of these licenses can be found at: www.gnu.org/licenses
12 
13  JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
14  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15  A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16 
17  ------------------------------------------------------------------------------
18 
19  To release a closed-source product which uses JUCE, commercial licenses are
20  available: visit www.juce.com for more information.
21 
22  ==============================================================================
23 */
24 
25 #ifndef JUCE_MULTIDOCUMENTPANEL_H_INCLUDED
26 #define JUCE_MULTIDOCUMENTPANEL_H_INCLUDED
27 
28 class MultiDocumentPanel;
29 
30 
31 //==============================================================================
42 {
43 public:
44  //==============================================================================
47  MultiDocumentPanelWindow (Colour backgroundColour);
48 
51 
52  //==============================================================================
54  void maximiseButtonPressed() override;
56  void closeButtonPressed() override;
58  void activeWindowStatusChanged() override;
60  void broughtToFront() override;
61 
62 private:
63  //==============================================================================
64  void updateOrder();
65  MultiDocumentPanel* getOwner() const noexcept;
66 
68 };
69 
70 
71 //==============================================================================
84  private ComponentListener
85 {
86 public:
87  //==============================================================================
95 
104 
105  //==============================================================================
117  bool closeAllDocuments (bool checkItsOkToCloseFirst);
118 
136  bool addDocument (Component* component,
137  Colour backgroundColour,
138  bool deleteWhenRemoved);
139 
154  bool closeDocument (Component* component,
155  bool checkItsOkToCloseFirst);
156 
161  int getNumDocuments() const noexcept;
162 
170  Component* getDocument (int index) const noexcept;
171 
181  Component* getActiveDocument() const noexcept;
182 
187  void setActiveDocument (Component* component);
188 
190  virtual void activeDocumentChanged();
191 
197  void setMaximumNumDocuments (int maximumNumDocuments);
198 
206  void useFullscreenWhenOneDocument (bool shouldUseTabs);
207 
210  bool isFullscreenWhenOneDocument() const noexcept;
211 
212  //==============================================================================
215  {
217  MaximisedWindowsWithTabs
218  };
219 
224  void setLayoutMode (LayoutMode newLayoutMode);
225 
227  LayoutMode getLayoutMode() const noexcept { return mode; }
228 
234  void setBackgroundColour (Colour newBackgroundColour);
235 
240  Colour getBackgroundColour() const noexcept { return backgroundColour; }
241 
243  TabbedComponent* getCurrentTabbedComponent() const noexcept { return tabComponent; }
244 
245  //==============================================================================
267  virtual bool tryToCloseDocument (Component* component) = 0;
268 
274  virtual MultiDocumentPanelWindow* createNewDocumentWindow();
275 
276  //==============================================================================
278  void paint (Graphics&) override;
280  void resized() override;
282  void componentNameChanged (Component&) override;
283 
284 private:
285  //==============================================================================
287  Array <Component*> components;
288  ScopedPointer<TabbedComponent> tabComponent;
289  Colour backgroundColour;
290  int maximumNumDocuments, numDocsBeforeTabsUsed;
291 
293  friend class MultiDocumentPanelWindow;
295 
296  Component* getContainerComp (Component*) const;
297  void updateOrder();
298  void addWindow (Component*);
299 
301 };
302 
303 
304 #endif // JUCE_MULTIDOCUMENTPANEL_H_INCLUDED
Definition: juce_ComponentListener.h:40
Definition: juce_MultiDocumentPanel.h:216
#define noexcept
Definition: juce_CompilerSupport.h:141
virtual void maximiseButtonPressed()
Definition: juce_DocumentWindow.cpp:181
virtual void componentNameChanged(Component &component)
Definition: juce_ComponentListener.cpp:30
Colour getBackgroundColour() const noexcept
Definition: juce_MultiDocumentPanel.h:240
LayoutMode
Definition: juce_MultiDocumentPanel.h:214
#define JUCE_API
Definition: juce_StandardHeader.h:139
#define const
TabbedComponent * getCurrentTabbedComponent() const noexcept
Definition: juce_MultiDocumentPanel.h:243
png_structrp int mode
Definition: juce_PNGLoader.cpp:1243
Definition: juce_TabbedComponent.h:39
virtual void resized()
Definition: juce_Component.cpp:2272
LayoutMode getLayoutMode() const noexcept
Definition: juce_MultiDocumentPanel.h:227
Definition: juce_Colour.h:35
virtual void paint(Graphics &g)
Definition: juce_Component.cpp:1929
Definition: juce_Component.h:33
Definition: juce_MultiDocumentPanel.h:41
virtual void broughtToFront()
Definition: juce_Component.cpp:2624
Definition: juce_Array.h:60
virtual void closeButtonPressed()
Definition: juce_DocumentWindow.cpp:157
Definition: juce_DocumentWindow.h:52
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
Definition: juce_PlatformDefs.h:198
Definition: juce_GraphicsContext.h:42
Definition: juce_MultiDocumentPanel.h:83
Definition: juce_MultiDocumentPanel.cpp:77
void activeWindowStatusChanged() override
Definition: juce_DocumentWindow.cpp:346