4#ifndef __GUI_WIDGETS_CHANNEL_H__
5#define __GUI_WIDGETS_CHANNEL_H__
7#include "common/dsp/channel.h"
8#include "gui/backend/gtk_widgets/gtk_wrapper.h"
9#include "gui/backend/gtk_widgets/meter.h"
11#define CHANNEL_WIDGET_TYPE (channel_widget_get_type ())
12G_DECLARE_FINAL_TYPE (ChannelWidget, channel_widget, Z, CHANNEL_WIDGET, GtkWidget)
15TYPEDEF_STRUCT_UNDERSCORED (ColorAreaWidget);
19TYPEDEF_STRUCT_UNDERSCORED (ChannelSlotWidget);
21TYPEDEF_STRUCT_UNDERSCORED (BalanceControlWidget);
22TYPEDEF_STRUCT_UNDERSCORED (EditableLabelWidget);
23TYPEDEF_STRUCT_UNDERSCORED (FaderButtonsWidget);
26using ChannelWidget =
struct _ChannelWidget
28 GtkWidget parent_instance;
33 ColorAreaWidget * color;
34 GtkBox * icon_and_name_event_box;
35 EditableLabelWidget * name;
36 GtkToggleButton * instrument_ui_toggle;
39 gulong instrument_ui_toggled_id;
41 GtkBox * phase_controls;
42 GtkButton * phase_invert;
43 GtkLabel * phase_reading;
47 GtkBox * instrument_box;
48 ChannelSlotWidget * instrument_slot;
61 FaderButtonsWidget * fader_buttons;
65 GtkBox * balance_control_box;
66 BalanceControlWidget * balance_control;
68 MeterWidget * meter_l;
69 MeterWidget * meter_r;
70 GtkLabel * meter_reading;
74 double meter_reading_val;
77 GtkBox * highlight_left_box;
78 GtkBox * highlight_right_box;
82 GtkBox * aux_buttons_box;
85 GtkToggleButton * mono_compat_btn;
92 bool ctrl_held_at_start;
100 bool selected_in_dnd;
103 std::weak_ptr<Channel> channel;
110 SteadyTimePoint last_plugin_press;
113 SteadyTimePoint last_midi_trigger_time;
116 GtkGestureClick * mp;
118 GtkGestureClick * right_mouse_mp;
121 GtkGestureDrag * drag;
126 GtkPopoverMenu * popover_menu;
127 FaderButtonsWidget * fader_buttons_for_popover;
134channel_widget_update_midi_fx_and_inserts (ChannelWidget * self);
137channel_widget_redraw_fader (ChannelWidget * self);
143channel_widget_new (
const std::shared_ptr<Channel> &channel);
146channel_widget_tear_down (ChannelWidget * self);
155channel_widget_refresh (ChannelWidget * self);
158channel_widget_refresh_buttons (ChannelWidget * self);
161channel_widget_refresh_instrument_ui_toggle (ChannelWidget * self);
168channel_widget_generate_context_menu_for_track (Track * track);
174channel_widget_show (ChannelWidget * self);