Ardour  9.0-pre0-582-g084a23a80d
trigger_page.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2021 Robin Gareus <robin@gareus.org>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License along
15  * with this program; if not, write to the Free Software Foundation, Inc.,
16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17  */
18 
19 #pragma once
20 
21 #include <gtkmm/box.h>
22 
23 #include "ardour/session_handle.h"
24 
25 #include "gtkmm2ext/bindings.h"
26 #include "gtkmm2ext/cairo_widget.h"
27 
28 #include "widgets/pane.h"
29 #include "widgets/tabbable.h"
30 
31 #include "application_bar.h"
34 #include "axis_provider.h"
35 #include "cuebox_ui.h"
36 #include "fitted_canvas_widget.h"
39 #include "slot_properties_box.h"
40 #include "trigger_clip_picker.h"
41 #include "trigger_region_list.h"
42 #include "trigger_route_list.h"
43 #include "trigger_source_list.h"
44 #include "trigger_master.h"
45 
46 class TriggerStrip;
47 class MidiCueEditor;
48 
50 {
51 public:
54 
56 
57  XMLNode& get_state () const;
58  int set_state (const XMLNode&, int /* version */);
59 
60  Gtk::Window* use_own_window (bool and_fill_it);
61 
63 
65 
66 private:
67  void load_bindings ();
69  void update_title ();
71  void parameter_changed (std::string const&);
72 
76 
78 
81  void stripable_property_changed (PBD::PropertyChange const&, std::weak_ptr<ARDOUR::Stripable>);
82 
83  void showhide_att_bottom (bool);
84 
87 
88  void add_sidebar_page (std::string const&, Gtk::Widget&);
89 
92  bool no_strip_drag_motion (Glib::RefPtr<Gdk::DragContext> const&, int, int, guint);
93  void no_strip_drag_data_received (Glib::RefPtr<Gdk::DragContext> const&, int, int, Gtk::SelectionData const&, guint, guint);
94 
95  bool idle_drop_paths (std::vector<std::string>);
96  void drop_paths_part_two (std::vector<std::string>);
97 
98  AxisView* axis_view_by_stripable (std::shared_ptr<ARDOUR::Stripable>) const;
99  AxisView* axis_view_by_control (std::shared_ptr<ARDOUR::AutomationControl>) const;
100 
104 
105  gint start_updating ();
106  gint stop_updating ();
108 
110 
112 
125 
129 
131 
133 
136 
137 #if REGION_PROPERTIES_BOX_TODO
138  AudioRegionOperationsBox _audio_ops_box;
139  AudioClipEditorBox _audio_trim_box;
140 #endif
141 
143 
145  std::list<TriggerStrip*> _strips;
147 };
148 
void initial_track_display()
TriggerRouteList _trigger_route_list
Definition: trigger_page.h:124
void pi_property_changed(PBD::PropertyChange const &)
CueBoxWidget _cue_box
Definition: trigger_page.h:126
Gtk::HBox _strip_packer
Definition: trigger_page.h:115
void clear_selected_slot()
void register_actions()
AudioTriggerPropertiesBox _audio_trig_box
Definition: trigger_page.h:134
sigc::connection _fast_screen_update_connection
Definition: trigger_page.h:146
gint stop_updating()
int set_state(const XMLNode &, int)
bool no_strip_button_event(GdkEventButton *)
XMLNode & get_state() const
CueMaster _master
Definition: trigger_page.h:128
void selection_changed()
void stripable_property_changed(PBD::PropertyChange const &, std::weak_ptr< ARDOUR::Stripable >)
void rec_state_clicked()
MidiTriggerPropertiesBox _midi_trig_box
Definition: trigger_page.h:135
FittedCanvasWidget _master_widget
Definition: trigger_page.h:127
RouteProcessorSelection _selection
Definition: trigger_page.h:144
RouteProcessorSelection & selection()
Definition: trigger_page.h:62
void session_going_away()
bool idle_drop_paths(std::vector< std::string >)
void redisplay_track_list()
std::list< TriggerStrip * > _strips
Definition: trigger_page.h:145
void add_sidebar_page(std::string const &, Gtk::Widget &)
AxisView * axis_view_by_stripable(std::shared_ptr< ARDOUR::Stripable >) const
bool _show_bottom_pane
Definition: trigger_page.h:130
Gtk::Window * use_own_window(bool and_fill_it)
PBD::ScopedConnectionList editor_connections
Definition: trigger_page.h:103
bool no_strip_drag_motion(Glib::RefPtr< Gdk::DragContext > const &, int, int, guint)
Gtk::ScrolledWindow _strip_scroller
Definition: trigger_page.h:114
void focus_on_clock()
void rec_state_changed()
TriggerSourceList _trigger_source_list
Definition: trigger_page.h:122
Gtk::HBox _strip_group_box
Definition: trigger_page.h:113
gint start_updating()
Gtk::Notebook _sidebar_notebook
Definition: trigger_page.h:120
void fast_update_strips()
void remove_route(TriggerStrip *)
void drop_paths_part_two(std::vector< std::string >)
void load_bindings()
void set_session(ARDOUR::Session *)
Gtk::EventBox _no_strips
Definition: trigger_page.h:116
void parameter_changed(std::string const &)
Gtkmm2ext::Bindings * bindings
Definition: trigger_page.h:111
SlotPropertiesBox _slot_prop_box
Definition: trigger_page.h:132
void no_strip_drag_data_received(Glib::RefPtr< Gdk::DragContext > const &, int, int, Gtk::SelectionData const &, guint, guint)
ApplicationBar _application_bar
Definition: trigger_page.h:109
void rec_enable_changed(ARDOUR::Trigger const *)
Gtk::VBox _cue_area_box
Definition: trigger_page.h:118
Gtk::Alignment _cue_area_frame
Definition: trigger_page.h:117
TriggerClipPicker _trigger_clip_picker
Definition: trigger_page.h:121
TriggerRegionList _trigger_region_list
Definition: trigger_page.h:123
void add_routes(ARDOUR::RouteList &)
MidiCueEditor * _midi_editor
Definition: trigger_page.h:142
AxisView * axis_view_by_control(std::shared_ptr< ARDOUR::AutomationControl >) const
void showhide_att_bottom(bool)
void update_title()
Gtk::HBox _parameter_box
Definition: trigger_page.h:119
bool strip_button_release_event(GdkEventButton *, TriggerStrip *)
Definition: xml++.h:114
std::list< std::shared_ptr< Route > > RouteList