[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)
, RouteTimeAxisView(ed, sess, canvas, "audio_time_axis.xml")
{
std::cout << "AudioTimeAxisView::AudioTimeAxisView ()" << std::endl;
}
void

View file

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

View file

@ -124,6 +124,7 @@ class TimeFXDialog;
class TimeSelection;
class RegionLayeringOrderEditor;
class VerboseCursor;
class MasterBusUI;
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&);
// Width editor_mixer_strip_width;
// void maybe_add_mixer_strip_width (XMLNode&);
void show_editor_mixer (bool yn);
void create_editor_mixer ();
void show_editor_list (bool yn);
void set_selected_mixer_strip (TimeAxisView&);
// void mixer_strip_width_changed ();
void hide_track_in_display (TimeAxisView* tv, bool apply_to_selection = false);
/* nudge is initiated by transport controls owned by ARDOUR_UI */
@ -461,8 +459,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
protected:
void map_transport_state ();
void map_position_change (framepos_t);
void on_realize();
MasterBusUI* master_bus_ui () { return _master_bus_ui; }
private:
@ -688,11 +686,12 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
void add_routes (ARDOUR::RouteList&);
void timeaxisview_deleted (TimeAxisView *);
Gtk::HBox& global_hpacker;
Gtk::VBox& global_vpacker;
Gtk::Container& inspector_home;
Gtk::Container& master_bus_ui_home;
Gtk::VBox& vpacker;
Gtk::HBox& global_hpacker;
Gtk::VBox& global_vpacker;
Gtk::Container& inspector_home;
Gtk::Container& master_bus_ui_home;
Gtk::VBox& vpacker;
MasterBusUI* _master_bus_ui;
Gdk::Cursor* current_canvas_cursor;
Gdk::Cursor* which_grabber_cursor ();

View file

@ -178,8 +178,8 @@ Editor::create_editor_mixer ()
"editor_mixer.xml");
current_mixer_strip->Hiding.connect (sigc::mem_fun(*this, &Editor::current_mixer_strip_hidden));
current_mixer_strip->set_embedded (true);
MasterBusUI* mbu = new MasterBusUI (*this, _session);
master_bus_ui_home.add (*mbu);
_master_bus_ui = new MasterBusUI (*this, _session);
master_bus_ui_home.add (*_master_bus_ui);
}
void
@ -238,7 +238,6 @@ Editor::set_selected_mixer_strip (TimeAxisView& view)
if (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 "midi_time_axis.h"
#include "mixer_strip.h"
#include "master_bus_ui.h"
#include "gui_thread.h"
#include "actions.h"
#include "utils.h"
@ -50,6 +51,7 @@
#include "editor_routes.h"
#include "i18n.h"
#include "dbg_msg.h"
using namespace std;
using namespace ARDOUR;
@ -67,13 +69,13 @@ struct ColumnInfo {
EditorRoutes::EditorRoutes (Editor* e)
: EditorComponent (e)
, _ignore_reorder (false)
, _no_redisplay (false)
, _adding_routes (false)
, _menu (0)
, old_focus (0)
, selection_countdown (0)
, name_editable (0)
, _ignore_reorder (false)
, _no_redisplay (false)
, _adding_routes (false)
, _menu (0)
, old_focus (0)
, selection_countdown (0)
, name_editable (0)
{
static const int column_width = 22;
@ -515,6 +517,9 @@ EditorRoutes::redisplay ()
}
if (route->is_master()) {
if (_editor->master_bus_ui ()) {
_editor->master_bus_ui ()->set_route (route);
}
continue;
}

View file

@ -59,8 +59,8 @@ public:
std::list<TimeAxisView*> views () const;
void hide_all_tracks (bool);
void clear ();
void sync_order_keys_from_treeview ();
void reset_remote_control_ids ();
void sync_order_keys_from_treeview ();
void reset_remote_control_ids ();
private:
void initial_display ();
@ -98,14 +98,20 @@ private:
void show_all_miditracks ();
void hide_all_miditracks ();
void show_tracks_with_regions_at_playhead ();
void selection_changed ();
void selection_changed ();
void display_drag_data_received (
Glib::RefPtr<Gdk::DragContext> const &, gint, gint, Gtk::SelectionData const &, guint, guint
);
void display_drag_data_received (Glib::RefPtr<Gdk::DragContext> const &,
gint,
gint,
Gtk::SelectionData const &,
guint,
guint);
bool selection_filter (Glib::RefPtr<Gtk::TreeModel> const &, Gtk::TreeModel::Path const &, bool);
void name_edit (std::string const &, std::string const &);
bool selection_filter (Glib::RefPtr<Gtk::TreeModel> const &,
Gtk::TreeModel::Path const &,
bool);
void name_edit (std::string const &,
std::string const &);
void solo_changed_so_update_mute ();
struct ModelColumns : public Gtk::TreeModel::ColumnRecord {
@ -155,21 +161,21 @@ private:
bool _ignore_reorder;
bool _no_redisplay;
bool _adding_routes;
bool _adding_routes;
Gtk::Menu* _menu;
Gtk::Widget* old_focus;
uint32_t selection_countdown;
Gtk::CellEditable* name_editable;
Gtk::Widget* old_focus;
uint32_t selection_countdown;
Gtk::CellEditable* name_editable;
bool key_press (GdkEventKey* ev);
bool focus_in (GdkEventFocus*);
bool focus_out (GdkEventFocus*);
bool enter_notify (GdkEventCrossing*);
bool leave_notify (GdkEventCrossing*);
void name_edit_started (Gtk::CellEditable*, const Glib::ustring&);
bool key_press (GdkEventKey* ev);
bool focus_in (GdkEventFocus*);
bool focus_out (GdkEventFocus*);
bool enter_notify (GdkEventCrossing*);
bool leave_notify (GdkEventCrossing*);
void name_edit_started (Gtk::CellEditable*, const Glib::ustring&);
bool get_relevant_routes (boost::shared_ptr<ARDOUR::RouteList> rl);
bool get_relevant_routes (boost::shared_ptr<ARDOUR::RouteList> rl);
};
#endif /* __ardour_gtk_editor_route_h__ */

View file

@ -91,6 +91,8 @@ class GainMeter : virtual public sigc::trackable, ARDOUR::SessionHandlePtr, publ
LevelMeterHBox& get_level_meter() { return level_meter; }
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;
* return true if the event is handled.

View file

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

View file

@ -88,35 +88,65 @@ using namespace Editing;
using namespace std;
using std::list;
PBD::Signal1<void,MasterBusUI*> MasterBusUI::CatchDeletion;
MasterBusUI::MasterBusUI (PublicEditor& ed,
Session* sess)
: AxisView (sess)
, RouteUI (sess, "master_ui.xml")
, gain_meter_home (get_box ("gain_meter_home"))
, gm (sess, "master_ui_gain_meter.xml")
, peak_display_button (get_waves_button ("peak_display_button"))
, level_meter_home (get_box ("level_meter_home"))
{
LevelMeterHBox& level_meter = gm.get_level_meter();
if (level_meter.get_parent ()) {
level_meter.get_parent ()->remove (level_meter);
}
level_meter = new LevelMeterHBox(sess);
//level_meter->ButtonRelease.connect_same_thread (level_meter_connection, boost::bind (&MeterStrip::level_meter_button_release, this, _1));
//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
MasterBusUI::set_route (boost::shared_ptr<Route> rt)
{
RouteUI::set_route (rt);
}
MasterBusUI::~MasterBusUI ()
{
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);
}
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
MasterBusUI::state_id () const
{

View file

@ -72,13 +72,17 @@ public:
ARDOUR::Session*);
virtual ~MasterBusUI ();
void fast_update ();
void set_route (boost::shared_ptr<ARDOUR::Route>);
virtual void set_button_names ();
virtual std::string state_id () const;
static PBD::Signal1<void,MasterBusUI*> CatchDeletion;
private:
Gtk::Box& gain_meter_home;
GainMeter gm;
Gtk::Box& level_meter_home;
LevelMeterHBox* level_meter;
WavesButton& peak_display_button;
};
#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"))
, peak_display (get_waves_button ("peak_display"))
, 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);
// 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));
ColorsChanged.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"))
, 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);
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_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.set_name ("meterbridge peakindicator");
// peak_display.set_elements((ArdourButton::Element) (ArdourButton::Edge|ArdourButton::Body));
max_peak = minus_infinity();
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
name_label.set_text(_route->name());
@ -292,7 +234,6 @@ MeterStrip::fast_update ()
max_peak = mpeak;
if (mpeak >= Config->get_meter_peak()) {
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();
level_meter->clear_meters();
max_peak = -INFINITY;
// peak_display.set_name ("meterbridge peakindicator");
// peak_display.set_elements((ArdourButton::Element) (ArdourButton::Edge|ArdourButton::Body));
}
bool

View file

@ -105,16 +105,6 @@ class MeterStrip :public RouteUI
// Gtk::DrawingArea meter_ticks1_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;
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"))
{
set_attributes (*this, *xml_tree ()->root (), XMLNodeMap ());
std::cout << "RouteUI::RouteUI (" << layout_script_file << ")" << std::endl;
if (sess) init ();
}

View file

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

View file

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

View file

@ -1,42 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<RouteUI bgnormal="#383838" bgactive="#6A6A6A">
<HBox>
<EventBox bgnormal="#000000">
<VBox spacing="1" borderwidth="1">
<RouteUI width="97" height="99" bgnormal="#000000" bgactive="#6A6A6A">
<VBox borderwidth="1" spacing="1">
<Button id="peak_display_button"
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"
width="47"
height="27"
normalicon="master_mute"
activeicon="master_mute_active"
prelighticon="master_mute_prelight"/>
width="47"
height="27"
normalicon="master_mute"
activeicon="master_mute_active"
prelighticon="master_mute_prelight"/>
<iconbutton id="clear_solo_button"
width="47"
height="27"
normalicon="master_mute"
activeicon="master_mute_active"
prelighticon="master_mute_prelight"/>
width="47"
height="27"
normalicon="master_mute"
activeicon="master_mute_active"
prelighticon="master_mute_prelight"/>
<iconbutton id="global_rec_button"
width="47"
height="27"
normalicon="master_mute"
activeicon="master_mute_active"
prelighticon="master_mute_prelight"/>
width="47"
height="27"
normalicon="master_mute"
activeicon="master_mute_active"
prelighticon="master_mute_prelight"/>
</VBox>
</EventBox>
<VBox id="gain_meter_home"/>
<VBox visible="false" noshowall="true">
<button id="rec_enable_button"/>
<button id="solo_button"/>
<button id="mute_button"/>
<button id="monitor_input_button"/>
<Button id="show_sends_button"/>
<Button id="monitor_disk_button"/>
<Button id="comment_button"/>
<Button id="midi_input_enable_button"/>
<Button id="group_button" text="Grp"/>
<Button id="route_group_button"/>
<Button id="automation_button"/>
</VBox>
</HBox>
<Layout bgnormal="#383838" width="47" height="83">
<VBox id="level_meter_home" height="77" x="18" y="3"/>
</Layout>
<VBox visible="false" noshowall="true">
<button id="rec_enable_button"/>
<button id="solo_button"/>
<button id="mute_button"/>
<button id="monitor_input_button"/>
<Button id="show_sends_button"/>
<Button id="monitor_disk_button"/>
<Button id="comment_button"/>
<Button id="midi_input_enable_button"/>
<Button id="group_button" text="Grp"/>
<Button id="route_group_button"/>
<Button id="automation_button"/>
</VBox>
</HBox>
</VBox>
</RouteUI>

View file

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

View file

@ -39,7 +39,6 @@ WavesUI::WavesUI (const std::string& layout_script_file, Gtk::Container& root)
, _root_container (root)
{
// 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);
if (it != __xml_tree_cache.end()) {
_xml_tree = (*it).second;