[Summary] Progressing MASTER UI and occasional cleanup

This commit is contained in:
VKamyshniy 2014-07-16 00:11:50 +03:00
parent a974f118e0
commit 596e3b9140
18 changed files with 158 additions and 175 deletions

View file

@ -69,7 +69,6 @@ AudioTimeAxisView::AudioTimeAxisView (PublicEditor& ed, Session* sess, ArdourCan
: AxisView(sess) : AxisView(sess)
, RouteTimeAxisView(ed, sess, canvas, "audio_time_axis.xml") , RouteTimeAxisView(ed, sess, canvas, "audio_time_axis.xml")
{ {
std::cout << "AudioTimeAxisView::AudioTimeAxisView ()" << std::endl;
} }
void void

View file

@ -117,6 +117,7 @@
#include "sfdb_ui.h" #include "sfdb_ui.h"
#include "tempo_lines.h" #include "tempo_lines.h"
#include "time_axis_view.h" #include "time_axis_view.h"
#include "master_bus_ui.h"
#include "utils.h" #include "utils.h"
#include "i18n.h" #include "i18n.h"
@ -5495,6 +5496,10 @@ Editor::super_rapid_screen_update ()
current_mixer_strip->fast_update (); current_mixer_strip->fast_update ();
} }
if (_master_bus_ui) {
_master_bus_ui->fast_update ();
}
/* PLAYHEAD AND VIEWPORT */ /* PLAYHEAD AND VIEWPORT */
framepos_t const frame = _session->audible_frame(); framepos_t const frame = _session->audible_frame();

View file

@ -124,6 +124,7 @@ class TimeFXDialog;
class TimeSelection; class TimeSelection;
class RegionLayeringOrderEditor; class RegionLayeringOrderEditor;
class VerboseCursor; class VerboseCursor;
class MasterBusUI;
class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr
{ {
@ -303,13 +304,10 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
void get_onscreen_tracks (TrackViewList&); void get_onscreen_tracks (TrackViewList&);
// Width editor_mixer_strip_width;
// void maybe_add_mixer_strip_width (XMLNode&);
void show_editor_mixer (bool yn); void show_editor_mixer (bool yn);
void create_editor_mixer (); void create_editor_mixer ();
void show_editor_list (bool yn); void show_editor_list (bool yn);
void set_selected_mixer_strip (TimeAxisView&); void set_selected_mixer_strip (TimeAxisView&);
// void mixer_strip_width_changed ();
void hide_track_in_display (TimeAxisView* tv, bool apply_to_selection = false); void hide_track_in_display (TimeAxisView* tv, bool apply_to_selection = false);
/* nudge is initiated by transport controls owned by ARDOUR_UI */ /* nudge is initiated by transport controls owned by ARDOUR_UI */
@ -461,8 +459,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
protected: protected:
void map_transport_state (); void map_transport_state ();
void map_position_change (framepos_t); void map_position_change (framepos_t);
void on_realize(); void on_realize();
MasterBusUI* master_bus_ui () { return _master_bus_ui; }
private: private:
@ -693,6 +691,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
Gtk::Container& inspector_home; Gtk::Container& inspector_home;
Gtk::Container& master_bus_ui_home; Gtk::Container& master_bus_ui_home;
Gtk::VBox& vpacker; Gtk::VBox& vpacker;
MasterBusUI* _master_bus_ui;
Gdk::Cursor* current_canvas_cursor; Gdk::Cursor* current_canvas_cursor;
Gdk::Cursor* which_grabber_cursor (); Gdk::Cursor* which_grabber_cursor ();

View file

@ -178,8 +178,8 @@ Editor::create_editor_mixer ()
"editor_mixer.xml"); "editor_mixer.xml");
current_mixer_strip->Hiding.connect (sigc::mem_fun(*this, &Editor::current_mixer_strip_hidden)); current_mixer_strip->Hiding.connect (sigc::mem_fun(*this, &Editor::current_mixer_strip_hidden));
current_mixer_strip->set_embedded (true); current_mixer_strip->set_embedded (true);
MasterBusUI* mbu = new MasterBusUI (*this, _session); _master_bus_ui = new MasterBusUI (*this, _session);
master_bus_ui_home.add (*mbu); master_bus_ui_home.add (*_master_bus_ui);
} }
void void
@ -238,7 +238,6 @@ Editor::set_selected_mixer_strip (TimeAxisView& view)
if (route) { if (route) {
current_mixer_strip->set_route (route); current_mixer_strip->set_route (route);
//current_mixer_strip->set_width_enum (editor_mixer_strip_width, (void*) this);
} }
} }

View file

@ -42,6 +42,7 @@
#include "audio_time_axis.h" #include "audio_time_axis.h"
#include "midi_time_axis.h" #include "midi_time_axis.h"
#include "mixer_strip.h" #include "mixer_strip.h"
#include "master_bus_ui.h"
#include "gui_thread.h" #include "gui_thread.h"
#include "actions.h" #include "actions.h"
#include "utils.h" #include "utils.h"
@ -50,6 +51,7 @@
#include "editor_routes.h" #include "editor_routes.h"
#include "i18n.h" #include "i18n.h"
#include "dbg_msg.h"
using namespace std; using namespace std;
using namespace ARDOUR; using namespace ARDOUR;
@ -515,6 +517,9 @@ EditorRoutes::redisplay ()
} }
if (route->is_master()) { if (route->is_master()) {
if (_editor->master_bus_ui ()) {
_editor->master_bus_ui ()->set_route (route);
}
continue; continue;
} }

View file

@ -100,12 +100,18 @@ private:
void show_tracks_with_regions_at_playhead (); void show_tracks_with_regions_at_playhead ();
void selection_changed (); void selection_changed ();
void display_drag_data_received ( void display_drag_data_received (Glib::RefPtr<Gdk::DragContext> const &,
Glib::RefPtr<Gdk::DragContext> const &, gint, gint, Gtk::SelectionData const &, guint, guint gint,
); gint,
Gtk::SelectionData const &,
guint,
guint);
bool selection_filter (Glib::RefPtr<Gtk::TreeModel> const &, Gtk::TreeModel::Path const &, bool); bool selection_filter (Glib::RefPtr<Gtk::TreeModel> const &,
void name_edit (std::string const &, std::string const &); Gtk::TreeModel::Path const &,
bool);
void name_edit (std::string const &,
std::string const &);
void solo_changed_so_update_mute (); void solo_changed_so_update_mute ();
struct ModelColumns : public Gtk::TreeModel::ColumnRecord { struct ModelColumns : public Gtk::TreeModel::ColumnRecord {

View file

@ -91,6 +91,8 @@ class GainMeter : virtual public sigc::trackable, ARDOUR::SessionHandlePtr, publ
LevelMeterHBox& get_level_meter() { return level_meter; } LevelMeterHBox& get_level_meter() { return level_meter; }
Gtkmm2ext::Fader& get_gain_slider() { return gain_slider; } Gtkmm2ext::Fader& get_gain_slider() { return gain_slider; }
WavesButton& get_gain_display_button () { return gain_display_button; }
WavesButton& get_peak_display_button () { return peak_display_button; }
/** Emitted in the GUI thread when a button is pressed over the level meter; /** Emitted in the GUI thread when a button is pressed over the level meter;
* return true if the event is handled. * return true if the event is handled.

View file

@ -124,13 +124,13 @@ static float vu_standard() {
float float
LevelMeterBase::update_meters () LevelMeterBase::update_meters ()
{ {
vector<MeterInfo>::iterator i;
uint32_t n;
if (!_meter) { if (!_meter) {
return 0.0f; return 0.0f;
} }
vector<MeterInfo>::iterator i;
uint32_t n;
uint32_t nmidi = _meter->input_streams().n_midi(); uint32_t nmidi = _meter->input_streams().n_midi();
for (n = 0, i = meters.begin(); i != meters.end(); ++i, ++n) { for (n = 0, i = meters.begin(); i != meters.end(); ++i, ++n) {

View file

@ -88,35 +88,65 @@ using namespace Editing;
using namespace std; using namespace std;
using std::list; using std::list;
PBD::Signal1<void,MasterBusUI*> MasterBusUI::CatchDeletion;
MasterBusUI::MasterBusUI (PublicEditor& ed, MasterBusUI::MasterBusUI (PublicEditor& ed,
Session* sess) Session* sess)
: AxisView (sess) : AxisView (sess)
, RouteUI (sess, "master_ui.xml") , RouteUI (sess, "master_ui.xml")
, gain_meter_home (get_box ("gain_meter_home")) , peak_display_button (get_waves_button ("peak_display_button"))
, gm (sess, "master_ui_gain_meter.xml") , level_meter_home (get_box ("level_meter_home"))
{ {
LevelMeterHBox& level_meter = gm.get_level_meter(); level_meter = new LevelMeterHBox(sess);
if (level_meter.get_parent ()) { //level_meter->ButtonRelease.connect_same_thread (level_meter_connection, boost::bind (&MeterStrip::level_meter_button_release, this, _1));
level_meter.get_parent ()->remove (level_meter); //level_meter->MeterTypeChanged.connect_same_thread (level_meter_connection, boost::bind (&MeterStrip::meter_type_changed, this, _1));
level_meter_home.pack_start (*level_meter, true, true);
peak_display_button.unset_flags (Gtk::CAN_FOCUS);
} }
gain_meter_home.pack_start(level_meter, true, true); MasterBusUI::~MasterBusUI ()
{
if (level_meter) {
delete level_meter;
CatchDeletion (this);
}
} }
void void
MasterBusUI::set_route (boost::shared_ptr<Route> rt) MasterBusUI::set_route (boost::shared_ptr<Route> rt)
{ {
level_meter->set_meter (rt->shared_peak_meter().get());
level_meter->clear_meters();
level_meter->set_type (rt->meter_type());
level_meter->setup_meters (6, 6);
RouteUI::set_route(rt); RouteUI::set_route(rt);
} }
MasterBusUI::~MasterBusUI ()
{
}
void MasterBusUI::set_button_names () void MasterBusUI::set_button_names ()
{ {
} }
void
MasterBusUI::fast_update ()
{
if (_route) {
Gtk::Requisition sz;
size_request (sz);
if (sz.height == 0) {
return;
}
float mpeak = level_meter->update_meters();
/*
if (mpeak > max_peak) {
max_peak = mpeak;
if (mpeak >= Config->get_meter_peak()) {
peak_display.set_name ("meterbridge peakindicator on");
}
}
*/
}
}
std::string std::string
MasterBusUI::state_id () const MasterBusUI::state_id () const
{ {

View file

@ -72,13 +72,17 @@ public:
ARDOUR::Session*); ARDOUR::Session*);
virtual ~MasterBusUI (); virtual ~MasterBusUI ();
void fast_update ();
void set_route (boost::shared_ptr<ARDOUR::Route>); void set_route (boost::shared_ptr<ARDOUR::Route>);
virtual void set_button_names (); virtual void set_button_names ();
virtual std::string state_id () const; virtual std::string state_id () const;
static PBD::Signal1<void,MasterBusUI*> CatchDeletion;
private: private:
Gtk::Box& gain_meter_home; Gtk::Box& level_meter_home;
GainMeter gm; LevelMeterHBox* level_meter;
WavesButton& peak_display_button;
}; };
#endif /* __tracks_master_bus_ui_h__ */ #endif /* __tracks_master_bus_ui_h__ */

View file

@ -66,53 +66,14 @@ MeterStrip::MeterStrip (int metricmode, MeterType mt)
, name_label (get_waves_button ("name_label")) , name_label (get_waves_button ("name_label"))
, peak_display (get_waves_button ("peak_display")) , peak_display (get_waves_button ("peak_display"))
, level_meter_home (get_box ("level_meter_home")) , level_meter_home (get_box ("level_meter_home"))
, level_meter (0)
, _strip_type (0)
, _tick_bar (0)
, _metricmode (-1)
, metric_type (MeterPeak)
{ {
std::cout << "a) MeterStrip::MeterStrip ()" << std::endl;
level_meter = 0;
_strip_type = 0;
_tick_bar = 0;
_metricmode = -1;
metric_type = MeterPeak;
// mtr_vbox.set_spacing(2);
// nfo_vbox.set_spacing(2);
// peakbx.set_size_request(-1, 14);
// namebx.set_size_request(18, 52);
// spacer.set_size_request(-1,0);
set_metric_mode(metricmode, mt); set_metric_mode(metricmode, mt);
// meter_metric_area.set_size_request(25, 10);
// meter_metric_area.signal_expose_event().connect (
// sigc::mem_fun(*this, &MeterStrip::meter_metrics_expose));
// RedrawMetrics.connect (sigc::mem_fun(*this, &MeterStrip::redraw_metrics));
// meterbox.pack_start(meter_metric_area, true, false);
// mtr_vbox.pack_start (peakbx, false, false);
// mtr_vbox.pack_start (meterbox, true, true);
// mtr_vbox.pack_start (spacer, false, false);
// mtr_container.add(mtr_vbox);
// mtr_hsep.set_size_request(-1,1);
// mtr_hsep.set_name("BlackSeparator");
// nfo_vbox.pack_start (mtr_hsep, false, false);
// nfo_vbox.pack_start (btnbox, false, false);
// nfo_vbox.pack_start (namebx, false, false);
// pack_start (mtr_container, true, true);
// pack_start (nfo_vbox, false, false);
// peakbx.show();
// btnbox.show();
// meter_metric_area.show();
// meterbox.show();
// spacer.show();
// mtr_vbox.show();
// mtr_container.show();
// mtr_hsep.show();
// nfo_vbox.show();
UI::instance()->theme_changed.connect (sigc::mem_fun(*this, &MeterStrip::on_theme_changed)); UI::instance()->theme_changed.connect (sigc::mem_fun(*this, &MeterStrip::on_theme_changed));
ColorsChanged.connect (sigc::mem_fun (*this, &MeterStrip::on_theme_changed)); ColorsChanged.connect (sigc::mem_fun (*this, &MeterStrip::on_theme_changed));
DPIReset.connect (sigc::mem_fun (*this, &MeterStrip::on_theme_changed)); DPIReset.connect (sigc::mem_fun (*this, &MeterStrip::on_theme_changed));
@ -127,9 +88,6 @@ MeterStrip::MeterStrip (Session* sess, boost::shared_ptr<ARDOUR::Route> rt)
, peak_display (get_waves_button ("peak_display")) , peak_display (get_waves_button ("peak_display"))
, level_meter_home (get_box ("level_meter_home")) , level_meter_home (get_box ("level_meter_home"))
{ {
std::cout << "b) MeterStrip::MeterStrip ()" << std::endl;
// mtr_vbox.set_spacing(2);
// nfo_vbox.set_spacing(2);
RouteUI::set_route (rt); RouteUI::set_route (rt);
SessionHandlePtr::set_session (sess); SessionHandlePtr::set_session (sess);
@ -153,25 +111,9 @@ MeterStrip::MeterStrip (Session* sess, boost::shared_ptr<ARDOUR::Route> rt)
level_meter->MeterTypeChanged.connect_same_thread (level_meter_connection, boost::bind (&MeterStrip::meter_type_changed, this, _1)); level_meter->MeterTypeChanged.connect_same_thread (level_meter_connection, boost::bind (&MeterStrip::meter_type_changed, this, _1));
level_meter_home.add (*level_meter); level_meter_home.add (*level_meter);
// meter_align.set(0.5, 0.5, 0.0, 1.0);
// meter_align.add(*level_meter);
// meterbox.pack_start(meter_ticks1_area, true, false);
// meterbox.pack_start(meter_align, true, true);
// meterbox.pack_start(meter_ticks2_area, true, false);
// peak display // peak display
// peak_display.set_name ("meterbridge peakindicator");
// peak_display.set_elements((ArdourButton::Element) (ArdourButton::Edge|ArdourButton::Body));
max_peak = minus_infinity(); max_peak = minus_infinity();
peak_display.unset_flags (Gtk::CAN_FOCUS); peak_display.unset_flags (Gtk::CAN_FOCUS);
// peak_display.set_size_request(12, 8);
// peak_display.set_corner_radius(2);
// peak_align.set(0.5, 1.0, 1.0, 0.8);
// peak_align.add(peak_display);
// peakbx.pack_start(peak_align, true, true, 3);
// peakbx.set_size_request(-1, 14);
// add track-name label // add track-name label
name_label.set_text(_route->name()); name_label.set_text(_route->name());
@ -292,7 +234,6 @@ MeterStrip::fast_update ()
max_peak = mpeak; max_peak = mpeak;
if (mpeak >= Config->get_meter_peak()) { if (mpeak >= Config->get_meter_peak()) {
peak_display.set_name ("meterbridge peakindicator on"); peak_display.set_name ("meterbridge peakindicator on");
// peak_display.set_elements((ArdourButton::Element) (ArdourButton::Edge|ArdourButton::Body));
} }
} }
} }
@ -480,8 +421,6 @@ MeterStrip::reset_peak_display ()
_route->shared_peak_meter()->reset_max(); _route->shared_peak_meter()->reset_max();
level_meter->clear_meters(); level_meter->clear_meters();
max_peak = -INFINITY; max_peak = -INFINITY;
// peak_display.set_name ("meterbridge peakindicator");
// peak_display.set_elements((ArdourButton::Element) (ArdourButton::Edge|ArdourButton::Body));
} }
bool bool

View file

@ -105,16 +105,6 @@ class MeterStrip :public RouteUI
// Gtk::DrawingArea meter_ticks1_area; // Gtk::DrawingArea meter_ticks1_area;
// Gtk::DrawingArea meter_ticks2_area; // Gtk::DrawingArea meter_ticks2_area;
// Gtk::HBox mutebox;
// Gtk::HBox solobox;
// Gtk::HBox recbox;
// Gtk::HBox mon_in_box;
// Gtk::HBox mon_disk_box;
// Gtk::Alignment meter_align;
// Gtk::Alignment peak_align;
// Gtk::HBox peakbx;
// Gtk::VBox btnbox;
WavesButton& peak_display; WavesButton& peak_display;
std::vector<ARDOUR::DataType> _types; std::vector<ARDOUR::DataType> _types;

View file

@ -84,7 +84,6 @@ RouteUI::RouteUI (ARDOUR::Session* sess, const std::string& layout_script_file)
, monitor_disk_button (get_waves_button ("monitor_disk_button")) , monitor_disk_button (get_waves_button ("monitor_disk_button"))
{ {
set_attributes (*this, *xml_tree ()->root (), XMLNodeMap ()); set_attributes (*this, *xml_tree ()->root (), XMLNodeMap ());
std::cout << "RouteUI::RouteUI (" << layout_script_file << ")" << std::endl;
if (sess) init (); if (sess) init ();
} }

View file

@ -102,7 +102,6 @@ TimeAxisView::TimeAxisView (ARDOUR::Session* sess,
, name_label (ui.get_label ("name_label")) , name_label (ui.get_label ("name_label"))
, number_label (ui.get_label ("number_label")) , number_label (ui.get_label ("number_label"))
{ {
std::cout << "TimeAxisView::TimeAxisView ()" << std::endl;
if (extra_height == 0) { if (extra_height == 0) {
compute_heights (); compute_heights ();
} }

View file

@ -173,7 +173,7 @@
box.fill="true" box.fill="true"
box.expand="true"> box.expand="true">
<VBox> <VBox>
<EventBox id="master_bus_ui_home" height="99" bgnormal="#ffff00"/> <EventBox id="master_bus_ui_home"/>
<EventBox id="inspector_home" <EventBox id="inspector_home"
box.fill="true" box.fill="true"
box.expand="true"/> box.expand="true"/>

View file

@ -1,9 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<RouteUI bgnormal="#383838" bgactive="#6A6A6A"> <RouteUI width="97" height="99" bgnormal="#000000" bgactive="#6A6A6A">
<HBox> <VBox borderwidth="1" spacing="1">
<EventBox bgnormal="#000000"> <Button id="peak_display_button"
<VBox spacing="1" borderwidth="1"> x="0" y="0"
width="95" height="13"
bgnormal="#B1B1B1"
bgactive="#D83838"
fgnormal="#000000"
fgactive="#000000"
bghover="#C47474"/>
<HBox box.pack="end" spacing="1">
<VBox spacing="1">
<iconbutton id="master_mute_button" <iconbutton id="master_mute_button"
width="47" width="47"
height="27" height="27"
@ -23,8 +31,9 @@
activeicon="master_mute_active" activeicon="master_mute_active"
prelighticon="master_mute_prelight"/> prelighticon="master_mute_prelight"/>
</VBox> </VBox>
</EventBox> <Layout bgnormal="#383838" width="47" height="83">
<VBox id="gain_meter_home"/> <VBox id="level_meter_home" height="77" x="18" y="3"/>
</Layout>
<VBox visible="false" noshowall="true"> <VBox visible="false" noshowall="true">
<button id="rec_enable_button"/> <button id="rec_enable_button"/>
<button id="solo_button"/> <button id="solo_button"/>
@ -39,4 +48,5 @@
<Button id="automation_button"/> <Button id="automation_button"/>
</VBox> </VBox>
</HBox> </HBox>
</VBox>
</RouteUI> </RouteUI>

View file

@ -18,14 +18,12 @@
maxposy="0"/> maxposy="0"/>
<Button id="peak_display_button" <Button id="peak_display_button"
x="0" y="0" x="0" y="0"
width="97" height="18" width="95" height="13"
bgnormal="#B1B1B1" bgnormal="#B1B1B1"
bgactive="#D83838" bgactive="#D83838"
fgnormal="#000000" fgnormal="#000000"
fgactive="#000000" fgactive="#000000"
bghover="#C47474" bghover="#C47474"/>
bordercolor="#C9C9C9"
borderwidth="1 1 0 0"/>
<EventBox id="gain_display_home"/> <EventBox id="gain_display_home"/>
<Button id="gain_display_button" <Button id="gain_display_button"
x="0" y="0" x="0" y="0"

View file

@ -39,7 +39,6 @@ WavesUI::WavesUI (const std::string& layout_script_file, Gtk::Container& root)
, _root_container (root) , _root_container (root)
{ {
// To avoid a need of reading the same file many times: // To avoid a need of reading the same file many times:
std::cout << "WavesUI::WavesUI (" << layout_script_file << ")" << std::endl;
std::map<std::string, const XMLTree*>::const_iterator it = __xml_tree_cache.find(layout_script_file); std::map<std::string, const XMLTree*>::const_iterator it = __xml_tree_cache.find(layout_script_file);
if (it != __xml_tree_cache.end()) { if (it != __xml_tree_cache.end()) {
_xml_tree = (*it).second; _xml_tree = (*it).second;