Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
bot_bar.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: © 2018-2024 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-FileCopyrightText: © 2024 Miró Allard <miro.allard@pm.me>
3// SPDX-License-Identifier: LicenseRef-ZrythmLicense
4
10
11#ifndef __GUI_WIDGETS_BOT_BAR_H__
12#define __GUI_WIDGETS_BOT_BAR_H__
13
14#include "common/utils/types.h"
15#include "gui/backend/gtk_widgets/gtk_wrapper.h"
16#include "gui/backend/gtk_widgets/libpanel_wrapper.h"
17
18TYPEDEF_STRUCT_UNDERSCORED (MidiActivityBarWidget);
19TYPEDEF_STRUCT_UNDERSCORED (LiveWaveformWidget);
20TYPEDEF_STRUCT_UNDERSCORED (SpectrumAnalyzerWidget);
21TYPEDEF_STRUCT_UNDERSCORED (DigitalMeterWidget);
22TYPEDEF_STRUCT_UNDERSCORED (TransportControlsWidget);
23TYPEDEF_STRUCT_UNDERSCORED (CpuWidget);
24TYPEDEF_STRUCT_UNDERSCORED (ButtonWithMenuWidget);
25
31
32#define BOT_BAR_WIDGET_TYPE (bot_bar_widget_get_type ())
33G_DECLARE_FINAL_TYPE (BotBarWidget, bot_bar_widget, Z, BOT_BAR_WIDGET, GtkWidget)
34
35#define MW_BOT_BAR MW->bot_bar
36#define MW_DIGITAL_TRANSPORT MW_BOT_BAR->digital_transport
37#define MW_DIGITAL_BPM MW_BOT_BAR->digital_bpm
38#define MW_DIGITAL_TIME_SIG MW_BOT_BAR->digital_timesig
39
43using BotBarWidget = struct _BotBarWidget
44{
45 GtkWidget parent_instance;
46
47 GtkCenterBox * center_box;
48 GtkLabel * engine_status_label;
49
50 GtkBox * digital_meters;
51 DigitalMeterWidget * digital_bpm;
52
57 GtkOverlay * playhead_overlay;
58
59 ButtonWithMenuWidget * metronome;
60 GtkToggleButton * metronome_btn;
61
65 DigitalMeterWidget * digital_transport;
66
68 GtkWidget * master_img;
69
71 GtkWidget * client_img;
72
73 GtkBox * playhead_box;
74
75 LiveWaveformWidget * live_waveform;
76 SpectrumAnalyzerWidget * spectrum_analyzer;
77 MidiActivityBarWidget * midi_activity;
78 GtkLabel * midi_in_lbl;
79 GtkBox * meter_box;
80
81 DigitalMeterWidget * digital_timesig;
82 TransportControlsWidget * transport_controls;
83 CpuWidget * cpu_load;
84
85 PanelToggleButton * bot_dock_switcher;
86
88 std::string hex_color;
89 std::string green_hex;
90 std::string red_hex;
91};
92
93void
94bot_bar_widget_refresh (BotBarWidget * self);
95
99void
101
105void
107
111
112#endif
void bot_bar_widget_update_status(BotBarWidget *self)
Updates the content of the status bar.
void bot_bar_widget_setup(BotBarWidget *self)
Sets up the bot bar.
struct _LiveWaveformWidget { GtkDrawingArea parent_instance; LiveWaveformType type; int draw_border; std::unique_ptr< juce::AudioSampleBuffer > buffer; AudioPort *port;} LiveWaveformWidget
Live waveform display like LMMS.
struct _BotBarWidget { GtkWidget parent_instance; GtkCenterBox *center_box; GtkLabel * engine_status_label; GtkBox * digital_meters; DigitalMeterWidget *digital_bpm; GtkOverlay *playhead_overlay; ButtonWithMenuWidget *metronome; GtkToggleButton * metronome_btn; DigitalMeterWidget *digital_transport; GtkWidget *master_img; GtkWidget *client_img; GtkBox *playhead_box; LiveWaveformWidget * live_waveform; SpectrumAnalyzerWidget *spectrum_analyzer; MidiActivityBarWidget * midi_activity; GtkLabel * midi_in_lbl; GtkBox * meter_box; DigitalMeterWidget * digital_timesig; TransportControlsWidget *transport_controls; CpuWidget * cpu_load; PanelToggleButton *bot_dock_switcher; std::string hex_color; std::string green_hex; std::string red_hex;} BotBarWidget
Bottom bar showing the engine status, etc.
Definition bot_bar.h:43