tracktion-engine 3.0-10-g034fdde4aa5
Tracktion Engine — High level data model for audio applications

« « « Anklang Documentation
Loading...
Searching...
No Matches
tracktion_UIBehaviour.h
Go to the documentation of this file.
1 /*
2 ,--. ,--. ,--. ,--.
3 ,-' '-.,--.--.,--,--.,---.| |,-.,-' '-.`--' ,---. ,--,--, Copyright 2024
4 '-. .-'| .--' ,-. | .--'| /'-. .-',--.| .-. || \ Tracktion Software
5 | | | | \ '-' \ `--.| \ \ | | | |' '-' '| || | Corporation
6 `---' `--' `--`--'`---'`--'`--' `---' `--' `---' `--''--' www.tracktion.com
7
8 Tracktion Engine uses a GPL/commercial licence - see LICENCE.md for details.
9*/
10
11namespace tracktion { inline namespace engine
12{
13
18{
19public:
20 UIBehaviour() = default;
21 virtual ~UIBehaviour() = default;
22
23 //==============================================================================
24 virtual Edit* getCurrentlyFocusedEdit() { return {}; }
25 virtual Edit* getLastFocusedEdit() { return {}; }
26 virtual juce::Array<Edit*> getAllOpenEdits() { return {}; }
27 virtual bool isEditVisibleOnScreen (const Edit&) { return true; }
28 virtual bool closeAllEditsBelongingToProject (Project&) { return false; }
29 virtual void editNamesMayHaveChanged() {}
30
31 virtual SelectionManager* getCurrentlyFocusedSelectionManager() { return {}; }
32 virtual SelectionManager* getSelectionManagerForRack (const RackType&) { return {}; }
33 virtual bool paste (const Clipboard&);
34
35 virtual Project::Ptr getCurrentlyFocusedProject() { return {}; }
36 virtual void selectProjectInFocusedWindow (Project::Ptr) {}
37 virtual void updateAllProjectItemLists() {}
38
39 virtual juce::ApplicationCommandManager* getApplicationCommandManager() { return {}; }
40 virtual void getAllCommands (juce::Array<juce::CommandID>&) {}
41 virtual void getCommandInfo (juce::CommandID, juce::ApplicationCommandInfo&) {}
42 virtual bool perform (const juce::ApplicationCommandTarget::InvocationInfo&) { return false; }
43
44 //==============================================================================
46 virtual Plugin::Ptr showMenuAndCreatePlugin (Plugin::Type, Edit&) { return {}; }
47
53
58
60 virtual void newTrackCreated (Track&) {}
61
63 virtual std::unique_ptr<juce::AudioThumbnailBase> createAudioThumbnail (int sourceSamplesPerThumbnailSample,
64 juce::AudioFormatManager& formatManagerToUse,
65 juce::AudioThumbnailCache& cacheToUse)
66 {
67 return std::make_unique<juce::AudioThumbnail> (sourceSamplesPerThumbnailSample,
68 formatManagerToUse, cacheToUse);
69 }
70
71 //==============================================================================
73 virtual void showWarningAlert (const juce::String& title, const juce::String& message);
74
79 virtual bool showOkCancelAlertBox (const juce::String& title, const juce::String& message,
80 const juce::String& ok = {},
81 const juce::String& cancel = {});
82
87 virtual int showYesNoCancelAlertBox (const juce::String& title, const juce::String& message,
88 const juce::String& yes = {},
89 const juce::String& no = {},
90 const juce::String& cancel = {});
91
93 virtual void showInfoMessage (const juce::String& message);
94
96 virtual void showWarningMessage (const juce::String& message);
97
99 virtual void showQuantisationLevel() {}
100
105
106 virtual bool getBigInputMetersMode() { return false; }
107 virtual void setBigInputMetersMode (bool) {}
108
109 virtual bool shouldGenerateLiveWaveformsWhenRecording() { return true; }
110
111 virtual void showSafeRecordDialog (TransportControl&) {}
112 virtual void hideSafeRecordDialog (TransportControl&) {}
113
114 virtual void showProjectScreen() {}
115 virtual void showSettingsScreen() {}
116 virtual void showEditScreen() {}
117
118 virtual void showHideVideo() {}
119 virtual void showHideInputs() {}
120 virtual void showHideOutputs() {}
121 virtual void showHideMixer ([[maybe_unused]] bool fullscreen) {}
122 virtual void showHideMidiEditor ([[maybe_unused]] bool fullscreen) {}
123 virtual void showHideTrackEditor ([[maybe_unused]] bool zoom) {}
124 virtual void showHideBrowser() {}
125 virtual void showHideActions() {}
126 virtual void showHideAllPanes() {}
127 virtual void toggleScroll() {}
128 virtual bool isScrolling() { return false; }
129
130 virtual void performUserAction (int) {}
131
132 virtual void scrollTracksUp() {}
133 virtual void scrollTracksDown() {}
134 virtual void scrollTracksLeft() {}
135 virtual void scrollTracksRight() {}
136
137 virtual void nudgeSelectedClips (TimecodeSnapType, const juce::String& commandDesc,
138 SelectionManager&, const juce::Array<Clip*>&, bool automationLocked);
139 virtual void nudgeSelected (TimecodeSnapType, const juce::String& commandDesc, bool automationLocked);
140 virtual void nudgeSelected (const juce::String& commandDesc);
141
142 virtual void stopPreviewPlayback() {}
143 virtual void resetOverloads() {}
144 virtual void resetPeaks() {}
145
146 virtual void zoomHorizontal (float /*increment*/) {}
147 virtual void zoomVertical (float /*amount*/) {}
148 virtual void zoomToSelection() {}
149 virtual void zoomToFitHorizontally() {}
150 virtual void zoomToFitVertically() {}
151
152 //==============================================================================
156 virtual TimePosition getEditingPosition (Edit&);
157
161 virtual TimeRange getEditingRange (Edit&);
162
165 virtual juce::Array<Track*> getEditingTracks (Edit&) { return {}; }
166
167 //==============================================================================
171 virtual SelectableList getAssociatedClipsToEdit (const SelectableList& items) { return items; }
172};
173
174}} // namespace tracktion { inline namespace engine
The Tracktion Edit class!
Manages a list of items that are currently selected.
Base class for tracks which contain clips and plugins and can be added to Edit[s].
Create a subclass of UIBehaviour to custom UI elements created by the engine.
virtual bool showOkCancelAlertBox(const juce::String &title, const juce::String &message, const juce::String &ok={}, const juce::String &cancel={})
Should display a dismissable alert window.
virtual void recreatePluginWindowContentAsync(Plugin &)
Should trigger an asynchronous refresh of any editor components showing for this plugin.
virtual std::unique_ptr< juce::Component > createPluginWindow(PluginWindowState &)
Must create a suitable Component plugin window for the given PluginWindowState.
virtual void showInfoMessage(const juce::String &message)
Should display a temporary information message, usually in the same place.
virtual void runTaskWithProgressBar(ThreadPoolJobWithProgress &)
Should run this task in the current window, with a progress bar, blocking until the task is done.
virtual void newTrackCreated(Track &)
Called when a new track is created from some kind of user action i.e.
virtual SelectableList getAssociatedClipsToEdit(const SelectableList &items)
If your UI has the concept of edit groups, you should return an expanded list of selected items that ...
virtual TimeRange getEditingRange(Edit &)
Should return the range which used be used for edit operations such as coping or deleting.
virtual void showWarningAlert(const juce::String &title, const juce::String &message)
Should display a dismissable alert window.
virtual int showYesNoCancelAlertBox(const juce::String &title, const juce::String &message, const juce::String &yes={}, const juce::String &no={}, const juce::String &cancel={})
Should display a dismissable alert window.
virtual Plugin::Ptr showMenuAndCreatePlugin(Plugin::Type, Edit &)
Should show the new plugin window and creates the Plugin the user selects.
virtual void showWarningMessage(const juce::String &message)
Should display a temporary warning message.
virtual void showQuantisationLevel()
Should show the current quantisation level for a short period of time.
virtual TimePosition getEditingPosition(Edit &)
Should return the position which used be used for edit operations such as splitting.
virtual juce::Array< Track * > getEditingTracks(Edit &)
Can return a range of tracks which used be used for edit operations such as coping or deleting.
virtual std::unique_ptr< juce::AudioThumbnailBase > createAudioThumbnail(int sourceSamplesPerThumbnailSample, juce::AudioFormatManager &formatManagerToUse, juce::AudioThumbnailCache &cacheToUse)
Must create an AudioThumnail for displaying, usually in a SmartThumbnail.
T is_pointer_v
#define jassertfalse
int CommandID
RangeType< TimePosition > TimeRange
A RangeType based on real time (i.e.
A list of Selectables, similar to a juce::Array but contains a cached list of the SelectableClasses f...