mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-08 07:45:00 +01:00
initial work on livetrax
This commit is contained in:
parent
ab979bf664
commit
0cf2283f3f
13 changed files with 354 additions and 157 deletions
|
|
@ -620,6 +620,18 @@ private:
|
||||||
void primary_clock_value_changed ();
|
void primary_clock_value_changed ();
|
||||||
void secondary_clock_value_changed ();
|
void secondary_clock_value_changed ();
|
||||||
|
|
||||||
|
/* LiveTrax */
|
||||||
|
|
||||||
|
Gtk::HBox livetrax_top_bar;
|
||||||
|
Gtk::HBox livetrax_transport_bar;
|
||||||
|
Gtk::HBox livetrax_meter_bar;
|
||||||
|
Gtk::HBox livetrax_editor_bar;
|
||||||
|
Gtk::HBox livetrax_mixer_bar;
|
||||||
|
TimeInfoBox* livetrax_time_info_box;
|
||||||
|
ArdourWidgets::ArdourButton* livetrax_multi_out_button;
|
||||||
|
ArdourWidgets::ArdourButton* livetrax_stereo_out_button;
|
||||||
|
int livetrax_setup_windows ();
|
||||||
|
|
||||||
/* menu bar and associated stuff */
|
/* menu bar and associated stuff */
|
||||||
|
|
||||||
Gtk::MenuBar* menu_bar;
|
Gtk::MenuBar* menu_bar;
|
||||||
|
|
|
||||||
|
|
@ -36,9 +36,12 @@
|
||||||
|
|
||||||
#include "ardour/session.h"
|
#include "ardour/session.h"
|
||||||
#include "ardour/lv2_plugin.h"
|
#include "ardour/lv2_plugin.h"
|
||||||
|
#include "ardour/profile.h"
|
||||||
|
|
||||||
#include "gtkmm2ext/bindings.h"
|
#include "gtkmm2ext/bindings.h"
|
||||||
|
|
||||||
|
#include "widgets/ardour_button.h"
|
||||||
|
|
||||||
#include "actions.h"
|
#include "actions.h"
|
||||||
#include "ardour_message.h"
|
#include "ardour_message.h"
|
||||||
#include "ardour_ui.h"
|
#include "ardour_ui.h"
|
||||||
|
|
@ -47,6 +50,7 @@
|
||||||
#include "meterbridge.h"
|
#include "meterbridge.h"
|
||||||
#include "luainstance.h"
|
#include "luainstance.h"
|
||||||
#include "luawindow.h"
|
#include "luawindow.h"
|
||||||
|
#include "main_clock.h"
|
||||||
#include "mixer_ui.h"
|
#include "mixer_ui.h"
|
||||||
#include "recorder_ui.h"
|
#include "recorder_ui.h"
|
||||||
#include "trigger_page.h"
|
#include "trigger_page.h"
|
||||||
|
|
@ -54,6 +58,7 @@
|
||||||
#include "keyeditor.h"
|
#include "keyeditor.h"
|
||||||
#include "rc_option_editor.h"
|
#include "rc_option_editor.h"
|
||||||
#include "route_params_ui.h"
|
#include "route_params_ui.h"
|
||||||
|
#include "selection_properties_box.h"
|
||||||
#include "time_info_box.h"
|
#include "time_info_box.h"
|
||||||
#include "trigger_ui.h"
|
#include "trigger_ui.h"
|
||||||
#include "step_entry.h"
|
#include "step_entry.h"
|
||||||
|
|
@ -67,6 +72,7 @@
|
||||||
|
|
||||||
using namespace Gtk;
|
using namespace Gtk;
|
||||||
using namespace PBD;
|
using namespace PBD;
|
||||||
|
using namespace ArdourWidgets;
|
||||||
|
|
||||||
namespace ARDOUR {
|
namespace ARDOUR {
|
||||||
class Session;
|
class Session;
|
||||||
|
|
@ -130,9 +136,14 @@ ARDOUR_UI::connect_dependents_to_session (ARDOUR::Session *s)
|
||||||
editor->set_session (s);
|
editor->set_session (s);
|
||||||
BootMessage (_("Setup Mixer"));
|
BootMessage (_("Setup Mixer"));
|
||||||
mixer->set_session (s);
|
mixer->set_session (s);
|
||||||
recorder->set_session (s);
|
|
||||||
trigger_page->set_session (s);
|
if (!Profile->get_livetrax()) {
|
||||||
meterbridge->set_session (s);
|
recorder->set_session (s);
|
||||||
|
trigger_page->set_session (s);
|
||||||
|
meterbridge->set_session (s);
|
||||||
|
} else {
|
||||||
|
livetrax_time_info_box->set_session (s);
|
||||||
|
}
|
||||||
|
|
||||||
/* its safe to do this now */
|
/* its safe to do this now */
|
||||||
|
|
||||||
|
|
@ -249,11 +260,16 @@ tab_window_root_drop (GtkNotebook* src,
|
||||||
int
|
int
|
||||||
ARDOUR_UI::setup_windows ()
|
ARDOUR_UI::setup_windows ()
|
||||||
{
|
{
|
||||||
|
if (ARDOUR::Profile->get_livetrax()) {
|
||||||
|
return livetrax_setup_windows ();
|
||||||
|
}
|
||||||
|
|
||||||
_tabs.set_show_border(false);
|
_tabs.set_show_border(false);
|
||||||
_tabs.signal_switch_page().connect (sigc::mem_fun (*this, &ARDOUR_UI::tabs_switch));
|
_tabs.signal_switch_page().connect (sigc::mem_fun (*this, &ARDOUR_UI::tabs_switch));
|
||||||
_tabs.signal_page_added().connect (sigc::mem_fun (*this, &ARDOUR_UI::tabs_page_added));
|
_tabs.signal_page_added().connect (sigc::mem_fun (*this, &ARDOUR_UI::tabs_page_added));
|
||||||
_tabs.signal_page_removed().connect (sigc::mem_fun (*this, &ARDOUR_UI::tabs_page_removed));
|
_tabs.signal_page_removed().connect (sigc::mem_fun (*this, &ARDOUR_UI::tabs_page_removed));
|
||||||
|
|
||||||
|
|
||||||
rc_option_editor = new RCOptionEditor;
|
rc_option_editor = new RCOptionEditor;
|
||||||
rc_option_editor->StateChange.connect (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_state_change));
|
rc_option_editor->StateChange.connect (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_state_change));
|
||||||
|
|
||||||
|
|
@ -360,6 +376,102 @@ ARDOUR_UI::setup_windows ()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
ARDOUR_UI::livetrax_setup_windows ()
|
||||||
|
{
|
||||||
|
ArdourButton::set_default_tweaks (ArdourButton::Tweaks (ArdourButton::ForceBoxy|ArdourButton::ForceFlat));
|
||||||
|
|
||||||
|
if (create_editor()) {
|
||||||
|
error << _("UI: cannot setup editor") << endmsg;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (create_mixer()) {
|
||||||
|
error << _("UI: cannot setup mixer") << endmsg;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
livetrax_time_info_box = new TimeInfoBox ("LiveTraxTimeInfo", false);
|
||||||
|
|
||||||
|
Gtk::Label* l;
|
||||||
|
Gtk::VBox* vb;
|
||||||
|
|
||||||
|
livetrax_top_bar.set_spacing (12);
|
||||||
|
livetrax_top_bar.set_border_width (12);
|
||||||
|
livetrax_top_bar.pack_start (*livetrax_time_info_box, false, false);
|
||||||
|
livetrax_top_bar.pack_start (*primary_clock, false, false);
|
||||||
|
|
||||||
|
Gtk::EventBox* ev_dsp = manage (new EventBox);
|
||||||
|
Gtk::EventBox* ev_timecode = manage (new EventBox);
|
||||||
|
ev_dsp->set_name ("MainMenuBar");
|
||||||
|
ev_timecode->set_name ("MainMenuBar");
|
||||||
|
ev_dsp->add (dsp_load_label);
|
||||||
|
ev_timecode->add (timecode_format_label);
|
||||||
|
|
||||||
|
vb = manage (new Gtk::VBox);
|
||||||
|
|
||||||
|
vb->pack_start (*ev_dsp, true, true);
|
||||||
|
vb->pack_start (disk_space_label, true, true);
|
||||||
|
vb->show_all ();
|
||||||
|
|
||||||
|
livetrax_top_bar.pack_end (*vb, false, false);
|
||||||
|
|
||||||
|
livetrax_multi_out_button = manage (new ArdourWidgets::ArdourButton (_("Multi Out")));
|
||||||
|
livetrax_stereo_out_button = manage (new ArdourWidgets::ArdourButton (_("Stereo Out")));
|
||||||
|
|
||||||
|
vb = manage (new Gtk::VBox);
|
||||||
|
vb->pack_start (*livetrax_stereo_out_button, true, true);
|
||||||
|
vb->pack_start (*livetrax_multi_out_button, true, true);
|
||||||
|
vb->show_all ();
|
||||||
|
|
||||||
|
livetrax_top_bar.pack_end (*vb, false, false);
|
||||||
|
|
||||||
|
/* transport bar */
|
||||||
|
|
||||||
|
l = new Gtk::Label ("this is the transport bar with other controls too");
|
||||||
|
livetrax_transport_bar.pack_start (*l, true, true);
|
||||||
|
|
||||||
|
/* meter display */
|
||||||
|
|
||||||
|
l = new Gtk::Label ("this is the meter display");
|
||||||
|
livetrax_meter_bar.pack_start (*l, true, true);
|
||||||
|
|
||||||
|
livetrax_editor_bar.pack_start (editor->contents(), true, true);
|
||||||
|
livetrax_mixer_bar.pack_start (mixer->contents(), true, true);
|
||||||
|
|
||||||
|
we_have_dependents ();
|
||||||
|
|
||||||
|
/* order of addition affects order seen in initial window display */
|
||||||
|
|
||||||
|
main_vpacker.pack_start (menu_bar_base, false, false);
|
||||||
|
main_vpacker.pack_start (livetrax_top_bar, false, false);
|
||||||
|
main_vpacker.pack_start (livetrax_transport_bar, false, false);
|
||||||
|
main_vpacker.pack_start (livetrax_meter_bar, false, false);
|
||||||
|
main_vpacker.pack_start (livetrax_editor_bar, true, true);
|
||||||
|
main_vpacker.pack_start (livetrax_mixer_bar, true, true);
|
||||||
|
|
||||||
|
// setup_tooltips ();
|
||||||
|
|
||||||
|
_main_window.signal_delete_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::main_window_delete_event));
|
||||||
|
|
||||||
|
/* pack the main vpacker into the main window and show everything
|
||||||
|
*/
|
||||||
|
|
||||||
|
_main_window.add (main_vpacker);
|
||||||
|
|
||||||
|
apply_window_settings (true);
|
||||||
|
|
||||||
|
setup_toplevel_window (_main_window, "", this);
|
||||||
|
_main_window.show_all ();
|
||||||
|
|
||||||
|
#ifdef GDK_WINDOWING_X11
|
||||||
|
/* allow externalUIs to be transient, on top of the main window */
|
||||||
|
LV2Plugin::set_main_window_id (GDK_DRAWABLE_XID(_main_window.get_window()->gobj()));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ARDOUR_UI::apply_window_settings (bool with_size)
|
ARDOUR_UI::apply_window_settings (bool with_size)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -156,15 +156,18 @@ ARDOUR_UI::set_session (Session *s)
|
||||||
|
|
||||||
AutomationWatch::instance().set_session (s);
|
AutomationWatch::instance().set_session (s);
|
||||||
|
|
||||||
shuttle_box.set_session (s);
|
|
||||||
mini_timeline.set_session (s);
|
|
||||||
time_info_box->set_session (s);
|
|
||||||
|
|
||||||
primary_clock->set_session (s);
|
primary_clock->set_session (s);
|
||||||
secondary_clock->set_session (s);
|
|
||||||
big_clock->set_session (s);
|
if (!Profile->get_livetrax()) {
|
||||||
video_timeline->set_session (s);
|
shuttle_box.set_session (s);
|
||||||
rc_option_editor->set_session (s);
|
mini_timeline.set_session (s);
|
||||||
|
time_info_box->set_session (s);
|
||||||
|
|
||||||
|
secondary_clock->set_session (s);
|
||||||
|
big_clock->set_session (s);
|
||||||
|
video_timeline->set_session (s);
|
||||||
|
rc_option_editor->set_session (s);
|
||||||
|
}
|
||||||
|
|
||||||
roll_controllable->set_session (s);
|
roll_controllable->set_session (s);
|
||||||
stop_controllable->set_session (s);
|
stop_controllable->set_session (s);
|
||||||
|
|
|
||||||
|
|
@ -99,7 +99,9 @@ ARDOUR_UI::create_editor ()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
editor = new Editor ();
|
editor = new Editor ();
|
||||||
editor->StateChange.connect (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_state_change));
|
if (!ARDOUR::Profile->get_livetrax()) {
|
||||||
|
editor->StateChange.connect (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_state_change));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
catch (failed_constructor& err) {
|
catch (failed_constructor& err) {
|
||||||
|
|
@ -116,7 +118,9 @@ ARDOUR_UI::create_recorder ()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
recorder = new RecorderUI ();
|
recorder = new RecorderUI ();
|
||||||
recorder->StateChange.connect (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_state_change));
|
if (!ARDOUR::Profile->get_livetrax()) {
|
||||||
|
recorder->StateChange.connect (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_state_change));
|
||||||
|
}
|
||||||
} catch (failed_constructor& err) {
|
} catch (failed_constructor& err) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
@ -128,7 +132,9 @@ ARDOUR_UI::create_trigger_page ()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
trigger_page = new TriggerPage ();
|
trigger_page = new TriggerPage ();
|
||||||
trigger_page->StateChange.connect (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_state_change));
|
if (!ARDOUR::Profile->get_livetrax()) {
|
||||||
|
trigger_page->StateChange.connect (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_state_change));
|
||||||
|
}
|
||||||
} catch (failed_constructor& err) {
|
} catch (failed_constructor& err) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
@ -762,19 +768,25 @@ ARDOUR_UI::build_menu_bar ()
|
||||||
ev->set_name ("MainMenuBar");
|
ev->set_name ("MainMenuBar");
|
||||||
ev->show ();
|
ev->show ();
|
||||||
|
|
||||||
EventBox* ev_dsp = manage (new EventBox);
|
EventBox* ev_dsp;
|
||||||
|
EventBox* ev_timecode;
|
||||||
EventBox* ev_path = manage (new EventBox);
|
EventBox* ev_path = manage (new EventBox);
|
||||||
EventBox* ev_name = manage (new EventBox);
|
EventBox* ev_name = manage (new EventBox);
|
||||||
EventBox* ev_audio = manage (new EventBox);
|
EventBox* ev_audio = manage (new EventBox);
|
||||||
EventBox* ev_format = manage (new EventBox);
|
EventBox* ev_format = manage (new EventBox);
|
||||||
EventBox* ev_timecode = manage (new EventBox);
|
|
||||||
|
|
||||||
ev_dsp->set_name ("MainMenuBar");
|
if (!Profile->get_livetrax()) {
|
||||||
|
ev_dsp = manage (new EventBox);
|
||||||
|
ev_timecode = manage (new EventBox);
|
||||||
|
|
||||||
|
ev_dsp->set_name ("MainMenuBar");
|
||||||
|
ev_timecode->set_name ("MainMenuBar");
|
||||||
|
}
|
||||||
|
|
||||||
ev_path->set_name ("MainMenuBar");
|
ev_path->set_name ("MainMenuBar");
|
||||||
ev_name->set_name ("MainMenuBar");
|
ev_name->set_name ("MainMenuBar");
|
||||||
ev_audio->set_name ("MainMenuBar");
|
ev_audio->set_name ("MainMenuBar");
|
||||||
ev_format->set_name ("MainMenuBar");
|
ev_format->set_name ("MainMenuBar");
|
||||||
ev_timecode->set_name ("MainMenuBar");
|
|
||||||
|
|
||||||
Gtk::HBox* hbox = manage (new Gtk::HBox);
|
Gtk::HBox* hbox = manage (new Gtk::HBox);
|
||||||
hbox->show ();
|
hbox->show ();
|
||||||
|
|
@ -794,18 +806,22 @@ ARDOUR_UI::build_menu_bar ()
|
||||||
snapshot_name_label.set_name ("Name");
|
snapshot_name_label.set_name ("Name");
|
||||||
format_label.set_use_markup ();
|
format_label.set_use_markup ();
|
||||||
|
|
||||||
ev_dsp->add (dsp_load_label);
|
if (!Profile->get_livetrax()) {
|
||||||
|
ev_dsp->add (dsp_load_label);
|
||||||
|
ev_timecode->add (timecode_format_label);
|
||||||
|
}
|
||||||
ev_path->add (session_path_label);
|
ev_path->add (session_path_label);
|
||||||
ev_name->add (snapshot_name_label);
|
ev_name->add (snapshot_name_label);
|
||||||
ev_audio->add (sample_rate_label);
|
ev_audio->add (sample_rate_label);
|
||||||
ev_format->add (format_label);
|
ev_format->add (format_label);
|
||||||
ev_timecode->add (timecode_format_label);
|
|
||||||
|
|
||||||
ev_dsp->show ();
|
if (!Profile->get_livetrax()) {
|
||||||
|
ev_dsp->show ();
|
||||||
|
ev_timecode->show ();
|
||||||
|
}
|
||||||
ev_path->show ();
|
ev_path->show ();
|
||||||
ev_audio->show ();
|
ev_audio->show ();
|
||||||
ev_format->show ();
|
ev_format->show ();
|
||||||
ev_timecode->show ();
|
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
use_menubar_as_top_menubar ();
|
use_menubar_as_top_menubar ();
|
||||||
|
|
@ -817,7 +833,9 @@ ARDOUR_UI::build_menu_bar ()
|
||||||
hbox->pack_end (wall_clock_label, false, false, 10);
|
hbox->pack_end (wall_clock_label, false, false, 10);
|
||||||
|
|
||||||
hbox->pack_end (*ev_dsp, false, false, 6);
|
hbox->pack_end (*ev_dsp, false, false, 6);
|
||||||
hbox->pack_end (disk_space_label, false, false, 6);
|
if (!Profile->get_livetrax()) {
|
||||||
|
hbox->pack_end (disk_space_label, false, false, 6);
|
||||||
|
}
|
||||||
hbox->pack_end (*ev_audio, false, false, 6);
|
hbox->pack_end (*ev_audio, false, false, 6);
|
||||||
hbox->pack_end (*ev_timecode, false, false, 6);
|
hbox->pack_end (*ev_timecode, false, false, 6);
|
||||||
hbox->pack_end (*ev_format, false, false, 6);
|
hbox->pack_end (*ev_format, false, false, 6);
|
||||||
|
|
@ -834,10 +852,13 @@ ARDOUR_UI::build_menu_bar ()
|
||||||
_status_bar_visibility.add (&snapshot_name_label ,X_("Name"), _("Snapshot Name and Modified Indicator"), false);
|
_status_bar_visibility.add (&snapshot_name_label ,X_("Name"), _("Snapshot Name and Modified Indicator"), false);
|
||||||
_status_bar_visibility.add (&peak_thread_work_label,X_("Peakfile"), _("Active Peak-file Work"), false);
|
_status_bar_visibility.add (&peak_thread_work_label,X_("Peakfile"), _("Active Peak-file Work"), false);
|
||||||
_status_bar_visibility.add (&format_label, X_("Format"), _("File Format"), false);
|
_status_bar_visibility.add (&format_label, X_("Format"), _("File Format"), false);
|
||||||
_status_bar_visibility.add (&timecode_format_label, X_("TCFormat"), _("Timecode Format"), false);
|
|
||||||
_status_bar_visibility.add (&sample_rate_label, X_("Audio"), _("Audio"), true);
|
_status_bar_visibility.add (&sample_rate_label, X_("Audio"), _("Audio"), true);
|
||||||
_status_bar_visibility.add (&disk_space_label, X_("Disk"), _("Disk Space"), !Profile->get_small_screen());
|
|
||||||
_status_bar_visibility.add (&dsp_load_label, X_("DSP"), _("DSP"), true);
|
if (!Profile->get_livetrax()) {
|
||||||
|
_status_bar_visibility.add (&timecode_format_label, X_("TCFormat"), _("Timecode Format"), false);
|
||||||
|
_status_bar_visibility.add (&disk_space_label, X_("Disk"), _("Disk Space"), !Profile->get_small_screen());
|
||||||
|
_status_bar_visibility.add (&dsp_load_label, X_("DSP"), _("DSP"), true);
|
||||||
|
}
|
||||||
#ifndef __APPLE__
|
#ifndef __APPLE__
|
||||||
// OSX provides its own wallclock, thank you very much
|
// OSX provides its own wallclock, thank you very much
|
||||||
_status_bar_visibility.add (&wall_clock_label, X_("WallClock"), _("Wall Clock"), false);
|
_status_bar_visibility.add (&wall_clock_label, X_("WallClock"), _("Wall Clock"), false);
|
||||||
|
|
@ -845,13 +866,16 @@ ARDOUR_UI::build_menu_bar ()
|
||||||
|
|
||||||
ev->signal_button_press_event().connect (sigc::mem_fun (_status_bar_visibility, &VisibilityGroup::button_press_event));
|
ev->signal_button_press_event().connect (sigc::mem_fun (_status_bar_visibility, &VisibilityGroup::button_press_event));
|
||||||
|
|
||||||
ev_dsp->signal_button_press_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::xrun_button_press));
|
if (!Profile->get_livetrax()) {
|
||||||
ev_dsp->signal_button_release_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::xrun_button_release));
|
ev_dsp->signal_button_press_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::xrun_button_press));
|
||||||
|
ev_dsp->signal_button_release_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::xrun_button_release));
|
||||||
|
ev_timecode->signal_button_press_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::timecode_button_press));
|
||||||
|
}
|
||||||
|
|
||||||
ev_path->signal_button_press_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::path_button_press));
|
ev_path->signal_button_press_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::path_button_press));
|
||||||
ev_name->signal_button_press_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::path_button_press));
|
ev_name->signal_button_press_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::path_button_press));
|
||||||
ev_audio->signal_button_press_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::audio_button_press));
|
ev_audio->signal_button_press_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::audio_button_press));
|
||||||
ev_format->signal_button_press_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::format_button_press));
|
ev_format->signal_button_press_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::format_button_press));
|
||||||
ev_timecode->signal_button_press_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::timecode_button_press));
|
|
||||||
|
|
||||||
ArdourWidgets::set_tooltip (session_path_label, _("Double click to open session folder."));
|
ArdourWidgets::set_tooltip (session_path_label, _("Double click to open session folder."));
|
||||||
ArdourWidgets::set_tooltip (format_label, _("Double click to edit audio file format."));
|
ArdourWidgets::set_tooltip (format_label, _("Double click to edit audio file format."));
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,8 @@
|
||||||
is to cut down on the nasty compile times for these classes.
|
is to cut down on the nasty compile times for these classes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "ardour/profile.h"
|
||||||
|
|
||||||
#include "gtkmm2ext/keyboard.h"
|
#include "gtkmm2ext/keyboard.h"
|
||||||
|
|
||||||
#include "actions.h"
|
#include "actions.h"
|
||||||
|
|
@ -44,7 +46,9 @@ ARDOUR_UI::create_mixer ()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
mixer = Mixer_UI::instance ();
|
mixer = Mixer_UI::instance ();
|
||||||
mixer->StateChange.connect (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_state_change));
|
if (!ARDOUR::Profile->get_livetrax()) {
|
||||||
|
mixer->StateChange.connect (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_state_change));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
catch (failed_constructor& err) {
|
catch (failed_constructor& err) {
|
||||||
|
|
|
||||||
|
|
@ -121,6 +121,8 @@ ARDOUR_UI::setup_profile ()
|
||||||
if (g_getenv ("MIXBUS")) {
|
if (g_getenv ("MIXBUS")) {
|
||||||
Profile->set_mixbus ();
|
Profile->set_mixbus ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Profile->set_livetrax ();
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
|
||||||
|
|
@ -602,7 +602,9 @@ Editor::Editor ()
|
||||||
|
|
||||||
CairoWidget::set_focus_handler (sigc::mem_fun (ARDOUR_UI::instance(), &ARDOUR_UI::reset_focus));
|
CairoWidget::set_focus_handler (sigc::mem_fun (ARDOUR_UI::instance(), &ARDOUR_UI::reset_focus));
|
||||||
|
|
||||||
_summary = new EditorSummary (this);
|
if (!Profile->get_livetrax()) {
|
||||||
|
_summary = new EditorSummary (this);
|
||||||
|
}
|
||||||
|
|
||||||
TempoMap::MapChanged.connect (tempo_map_connection, invalidator (*this), boost::bind (&Editor::tempo_map_changed, this), gui_context());
|
TempoMap::MapChanged.connect (tempo_map_connection, invalidator (*this), boost::bind (&Editor::tempo_map_changed, this), gui_context());
|
||||||
|
|
||||||
|
|
@ -732,93 +734,104 @@ Editor::Editor ()
|
||||||
settings->get_property ("notebook-shrunk", _notebook_shrunk);
|
settings->get_property ("notebook-shrunk", _notebook_shrunk);
|
||||||
}
|
}
|
||||||
|
|
||||||
editor_summary_pane.set_check_divider_position (true);
|
if (!Profile->get_livetrax()) {
|
||||||
editor_summary_pane.add (edit_packer);
|
editor_summary_pane.set_check_divider_position (true);
|
||||||
|
editor_summary_pane.add (edit_packer);
|
||||||
|
|
||||||
Button* summary_arrow_left = manage (new Button);
|
Button* summary_arrow_left = manage (new Button);
|
||||||
summary_arrow_left->add (*manage (new Arrow (ARROW_LEFT, SHADOW_NONE)));
|
summary_arrow_left->add (*manage (new Arrow (ARROW_LEFT, SHADOW_NONE)));
|
||||||
summary_arrow_left->signal_pressed().connect (sigc::hide_return (sigc::bind (sigc::mem_fun (*this, &Editor::scroll_press), LEFT)));
|
summary_arrow_left->signal_pressed().connect (sigc::hide_return (sigc::bind (sigc::mem_fun (*this, &Editor::scroll_press), LEFT)));
|
||||||
summary_arrow_left->signal_released().connect (sigc::mem_fun (*this, &Editor::scroll_release));
|
summary_arrow_left->signal_released().connect (sigc::mem_fun (*this, &Editor::scroll_release));
|
||||||
|
|
||||||
Button* summary_arrow_right = manage (new Button);
|
Button* summary_arrow_right = manage (new Button);
|
||||||
summary_arrow_right->add (*manage (new Arrow (ARROW_RIGHT, SHADOW_NONE)));
|
summary_arrow_right->add (*manage (new Arrow (ARROW_RIGHT, SHADOW_NONE)));
|
||||||
summary_arrow_right->signal_pressed().connect (sigc::hide_return (sigc::bind (sigc::mem_fun (*this, &Editor::scroll_press), RIGHT)));
|
summary_arrow_right->signal_pressed().connect (sigc::hide_return (sigc::bind (sigc::mem_fun (*this, &Editor::scroll_press), RIGHT)));
|
||||||
summary_arrow_right->signal_released().connect (sigc::mem_fun (*this, &Editor::scroll_release));
|
summary_arrow_right->signal_released().connect (sigc::mem_fun (*this, &Editor::scroll_release));
|
||||||
|
|
||||||
VBox* summary_arrows_left = manage (new VBox);
|
VBox* summary_arrows_left = manage (new VBox);
|
||||||
summary_arrows_left->pack_start (*summary_arrow_left);
|
summary_arrows_left->pack_start (*summary_arrow_left);
|
||||||
|
|
||||||
VBox* summary_arrows_right = manage (new VBox);
|
VBox* summary_arrows_right = manage (new VBox);
|
||||||
summary_arrows_right->pack_start (*summary_arrow_right);
|
summary_arrows_right->pack_start (*summary_arrow_right);
|
||||||
|
|
||||||
Gtk::Frame* summary_frame = manage (new Gtk::Frame);
|
Gtk::Frame* summary_frame = manage (new Gtk::Frame);
|
||||||
summary_frame->set_shadow_type (Gtk::SHADOW_ETCHED_IN);
|
summary_frame->set_shadow_type (Gtk::SHADOW_ETCHED_IN);
|
||||||
|
|
||||||
summary_frame->add (*_summary);
|
summary_frame->add (*_summary);
|
||||||
summary_frame->show ();
|
summary_frame->show ();
|
||||||
|
|
||||||
_summary_hbox.pack_start (*summary_arrows_left, false, false);
|
_summary_hbox.pack_start (*summary_arrows_left, false, false);
|
||||||
_summary_hbox.pack_start (*summary_frame, true, true);
|
_summary_hbox.pack_start (*summary_frame, true, true);
|
||||||
_summary_hbox.pack_start (*summary_arrows_right, false, false);
|
_summary_hbox.pack_start (*summary_arrows_right, false, false);
|
||||||
|
|
||||||
editor_summary_pane.add (_summary_hbox);
|
editor_summary_pane.add (_summary_hbox);
|
||||||
edit_pane.set_check_divider_position (true);
|
edit_pane.set_check_divider_position (true);
|
||||||
edit_pane.add (editor_summary_pane);
|
edit_pane.add (editor_summary_pane);
|
||||||
_editor_list_vbox.pack_start (_the_notebook);
|
_editor_list_vbox.pack_start (_the_notebook);
|
||||||
_editor_list_vbox.pack_start (*_properties_box, false, false, 0);
|
_editor_list_vbox.pack_start (*_properties_box, false, false, 0);
|
||||||
edit_pane.add (_editor_list_vbox);
|
edit_pane.add (_editor_list_vbox);
|
||||||
edit_pane.set_child_minsize (_editor_list_vbox, 30); /* rough guess at width of notebook tabs */
|
edit_pane.set_child_minsize (_editor_list_vbox, 30); /* rough guess at width of notebook tabs */
|
||||||
|
|
||||||
edit_pane.set_drag_cursor (*_cursors->expand_left_right);
|
edit_pane.set_drag_cursor (*_cursors->expand_left_right);
|
||||||
editor_summary_pane.set_drag_cursor (*_cursors->expand_up_down);
|
editor_summary_pane.set_drag_cursor (*_cursors->expand_up_down);
|
||||||
|
|
||||||
float fract;
|
float fract;
|
||||||
if (!settings || !settings->get_property ("edit-horizontal-pane-pos", fract) || fract > 1.0) {
|
if (!settings || !settings->get_property ("edit-horizontal-pane-pos", fract) || fract > 1.0) {
|
||||||
/* initial allocation is 90% to canvas, 10% to notebook */
|
/* initial allocation is 90% to canvas, 10% to notebook */
|
||||||
fract = 0.90;
|
fract = 0.90;
|
||||||
|
}
|
||||||
|
edit_pane.set_divider (0, fract);
|
||||||
|
|
||||||
|
if (!settings || !settings->get_property ("edit-vertical-pane-pos", fract) || fract > 1.0) {
|
||||||
|
/* initial allocation is 90% to canvas, 10% to summary */
|
||||||
|
fract = 0.90;
|
||||||
|
}
|
||||||
|
editor_summary_pane.set_divider (0, fract);
|
||||||
}
|
}
|
||||||
edit_pane.set_divider (0, fract);
|
|
||||||
|
|
||||||
if (!settings || !settings->get_property ("edit-vertical-pane-pos", fract) || fract > 1.0) {
|
|
||||||
/* initial allocation is 90% to canvas, 10% to summary */
|
|
||||||
fract = 0.90;
|
|
||||||
}
|
|
||||||
editor_summary_pane.set_divider (0, fract);
|
|
||||||
|
|
||||||
global_vpacker.set_spacing (0);
|
global_vpacker.set_spacing (0);
|
||||||
global_vpacker.set_border_width (0);
|
global_vpacker.set_border_width (0);
|
||||||
|
|
||||||
/* the next three EventBoxes provide the ability for their child widgets to have a background color. That is all. */
|
if (!Profile->get_livetrax()) {
|
||||||
|
/* the next three EventBoxes provide the ability for their child widgets to have a background color. That is all. */
|
||||||
|
|
||||||
Gtk::EventBox* ebox = manage (new Gtk::EventBox); // a themeable box
|
Gtk::EventBox* ebox = manage (new Gtk::EventBox); // a themeable box
|
||||||
ebox->set_name("EditorWindow");
|
ebox->set_name("EditorWindow");
|
||||||
ebox->add (ebox_hpacker);
|
ebox->add (ebox_hpacker);
|
||||||
|
|
||||||
Gtk::EventBox* epane_box = manage (new EventBoxExt); // a themeable box
|
Gtk::EventBox* epane_box = manage (new EventBoxExt); // a themeable box
|
||||||
epane_box->set_name("EditorWindow");
|
epane_box->set_name("EditorWindow");
|
||||||
epane_box->add (edit_pane);
|
epane_box->add (edit_pane);
|
||||||
|
|
||||||
Gtk::EventBox* epane_box2 = manage (new EventBoxExt); // a themeable box
|
Gtk::EventBox* epane_box2 = manage (new EventBoxExt); // a themeable box
|
||||||
epane_box2->set_name("EditorWindow");
|
epane_box2->set_name("EditorWindow");
|
||||||
epane_box2->add (global_vpacker);
|
epane_box2->add (global_vpacker);
|
||||||
|
|
||||||
ArdourWidgets::ArdourDropShadow *toolbar_shadow = manage (new (ArdourWidgets::ArdourDropShadow));
|
ArdourWidgets::ArdourDropShadow *toolbar_shadow = manage (new (ArdourWidgets::ArdourDropShadow));
|
||||||
toolbar_shadow->set_size_request (-1, 4);
|
toolbar_shadow->set_size_request (-1, 4);
|
||||||
toolbar_shadow->set_mode(ArdourWidgets::ArdourDropShadow::DropShadowBoth);
|
toolbar_shadow->set_mode(ArdourWidgets::ArdourDropShadow::DropShadowBoth);
|
||||||
toolbar_shadow->set_name("EditorWindow");
|
toolbar_shadow->set_name("EditorWindow");
|
||||||
toolbar_shadow->show();
|
toolbar_shadow->show();
|
||||||
|
global_vpacker.pack_start (*toolbar_shadow, false, false);
|
||||||
|
|
||||||
global_vpacker.pack_start (*toolbar_shadow, false, false);
|
global_vpacker.pack_start (*ebox, false, false);
|
||||||
global_vpacker.pack_start (*ebox, false, false);
|
|
||||||
global_vpacker.pack_start (*epane_box, true, true);
|
|
||||||
global_hpacker.pack_start (*epane_box2, true, true);
|
|
||||||
|
|
||||||
/* need to show the "contents" widget so that notebook will show if tab is switched to
|
if (!Profile->get_livetrax()) {
|
||||||
*/
|
global_vpacker.pack_start (*epane_box, true, true);
|
||||||
|
global_hpacker.pack_start (*epane_box2, true, true);
|
||||||
|
}
|
||||||
|
/* need to show the "contents" widget so that notebook will show if tab is switched to
|
||||||
|
*/
|
||||||
|
|
||||||
global_hpacker.show ();
|
global_hpacker.show ();
|
||||||
ebox_hpacker.show();
|
ebox_hpacker.show();
|
||||||
ebox->show();
|
ebox->show();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
global_vpacker.pack_start (edit_packer, true, true);
|
||||||
|
global_hpacker.pack_start (global_vpacker, true, true);
|
||||||
|
global_hpacker.show ();
|
||||||
|
}
|
||||||
|
|
||||||
/* register actions now so that set_state() can find them and set toggles/checks etc */
|
/* register actions now so that set_state() can find them and set toggles/checks etc */
|
||||||
|
|
||||||
|
|
@ -1353,16 +1366,19 @@ Editor::set_session (Session *t)
|
||||||
* before the visible state has been loaded from instant.xml */
|
* before the visible state has been loaded from instant.xml */
|
||||||
_leftmost_sample = session_gui_extents().first.samples();
|
_leftmost_sample = session_gui_extents().first.samples();
|
||||||
|
|
||||||
nudge_clock->set_session (_session);
|
if (!Profile->get_livetrax()) {
|
||||||
_summary->set_session (_session);
|
nudge_clock->set_session (_session);
|
||||||
|
_summary->set_session (_session);
|
||||||
|
}
|
||||||
|
|
||||||
_group_tabs->set_session (_session);
|
_group_tabs->set_session (_session);
|
||||||
_route_groups->set_session (_session);
|
_route_groups->set_session (_session);
|
||||||
_regions->set_session (_session);
|
_regions->set_session (_session);
|
||||||
_sources->set_session (_session);
|
_sources->set_session (_session);
|
||||||
_snapshots->set_session (_session);
|
_snapshots->set_session (_session);
|
||||||
_sections->set_session (_session);
|
|
||||||
_routes->set_session (_session);
|
_routes->set_session (_session);
|
||||||
_locations->set_session (_session);
|
_locations->set_session (_session);
|
||||||
|
_sections->set_session (_session);
|
||||||
_properties_box->set_session (_session);
|
_properties_box->set_session (_session);
|
||||||
|
|
||||||
if (rhythm_ferret) {
|
if (rhythm_ferret) {
|
||||||
|
|
@ -5098,7 +5114,9 @@ Editor::on_samples_per_pixel_changed ()
|
||||||
}
|
}
|
||||||
|
|
||||||
refresh_location_display();
|
refresh_location_display();
|
||||||
_summary->set_overlays_dirty ();
|
if (_summary) {
|
||||||
|
_summary->set_overlays_dirty ();
|
||||||
|
}
|
||||||
|
|
||||||
update_section_box ();
|
update_section_box ();
|
||||||
update_marker_labels ();
|
update_marker_labels ();
|
||||||
|
|
@ -5237,7 +5255,9 @@ Editor::visual_changer (const VisualChange& vc)
|
||||||
}
|
}
|
||||||
|
|
||||||
_region_peak_cursor->hide ();
|
_region_peak_cursor->hide ();
|
||||||
_summary->set_overlays_dirty ();
|
if (_summary) {
|
||||||
|
_summary->set_overlays_dirty ();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct EditorOrderTimeAxisSorter {
|
struct EditorOrderTimeAxisSorter {
|
||||||
|
|
@ -5809,7 +5829,9 @@ Editor::region_view_added (RegionView * rv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_summary->set_background_dirty ();
|
if (_summary) {
|
||||||
|
_summary->set_background_dirty ();
|
||||||
|
}
|
||||||
|
|
||||||
mark_region_boundary_cache_dirty ();
|
mark_region_boundary_cache_dirty ();
|
||||||
}
|
}
|
||||||
|
|
@ -5817,7 +5839,9 @@ Editor::region_view_added (RegionView * rv)
|
||||||
void
|
void
|
||||||
Editor::region_view_removed ()
|
Editor::region_view_removed ()
|
||||||
{
|
{
|
||||||
_summary->set_background_dirty ();
|
if (_summary) {
|
||||||
|
_summary->set_background_dirty ();
|
||||||
|
}
|
||||||
|
|
||||||
mark_region_boundary_cache_dirty ();
|
mark_region_boundary_cache_dirty ();
|
||||||
}
|
}
|
||||||
|
|
@ -6216,7 +6240,9 @@ Editor::redisplay_track_views ()
|
||||||
vertical_adjustment.set_value (_full_canvas_height - _visible_canvas_height);
|
vertical_adjustment.set_value (_full_canvas_height - _visible_canvas_height);
|
||||||
}
|
}
|
||||||
|
|
||||||
_summary->set_background_dirty();
|
if (_summary) {
|
||||||
|
_summary->set_background_dirty();
|
||||||
|
}
|
||||||
_group_tabs->set_dirty ();
|
_group_tabs->set_dirty ();
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -632,6 +632,8 @@ public:
|
||||||
void remove_region_marker (ARDOUR::CueMarker&);
|
void remove_region_marker (ARDOUR::CueMarker&);
|
||||||
void make_region_markers_global (bool as_cd_markers);
|
void make_region_markers_global (bool as_cd_markers);
|
||||||
|
|
||||||
|
SelectionPropertiesBox& properties_box() const { return *_properties_box; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void map_transport_state ();
|
void map_transport_state ();
|
||||||
void map_position_change (samplepos_t);
|
void map_position_change (samplepos_t);
|
||||||
|
|
|
||||||
|
|
@ -367,7 +367,10 @@ Editor::track_canvas_viewport_size_allocated ()
|
||||||
update_tempo_based_rulers ();
|
update_tempo_based_rulers ();
|
||||||
redisplay_grid (false);
|
redisplay_grid (false);
|
||||||
redisplay_track_views ();
|
redisplay_track_views ();
|
||||||
_summary->set_overlays_dirty ();
|
|
||||||
|
if (_summary) {
|
||||||
|
_summary->set_overlays_dirty ();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
|
|
@ -485,7 +485,7 @@ Editor::update_ruler_visibility ()
|
||||||
videotl_label.hide();
|
videotl_label.hide();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (ruler_minsec_action->get_active()) {
|
if (!Profile->get_livetrax() && ruler_minsec_action->get_active()) {
|
||||||
old_unit_pos = minsec_ruler->position().y;
|
old_unit_pos = minsec_ruler->position().y;
|
||||||
if (tbpos != old_unit_pos) {
|
if (tbpos != old_unit_pos) {
|
||||||
minsec_ruler->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
minsec_ruler->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||||
|
|
@ -501,7 +501,7 @@ Editor::update_ruler_visibility ()
|
||||||
minsec_label.hide();
|
minsec_label.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ruler_timecode_action->get_active()) {
|
if (Profile->get_livetrax() || ruler_timecode_action->get_active()) {
|
||||||
old_unit_pos = timecode_ruler->position().y;
|
old_unit_pos = timecode_ruler->position().y;
|
||||||
if (tbpos != old_unit_pos) {
|
if (tbpos != old_unit_pos) {
|
||||||
timecode_ruler->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
timecode_ruler->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||||
|
|
@ -517,7 +517,7 @@ Editor::update_ruler_visibility ()
|
||||||
timecode_label.hide();
|
timecode_label.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ruler_samples_action->get_active()) {
|
if (!Profile->get_livetrax() && ruler_samples_action->get_active()) {
|
||||||
old_unit_pos = samples_ruler->position().y;
|
old_unit_pos = samples_ruler->position().y;
|
||||||
if (tbpos != old_unit_pos) {
|
if (tbpos != old_unit_pos) {
|
||||||
samples_ruler->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
samples_ruler->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||||
|
|
@ -533,7 +533,7 @@ Editor::update_ruler_visibility ()
|
||||||
samples_label.hide();
|
samples_label.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ruler_bbt_action->get_active()) {
|
if (!Profile->get_livetrax() && ruler_bbt_action->get_active()) {
|
||||||
old_unit_pos = bbt_ruler->position().y;
|
old_unit_pos = bbt_ruler->position().y;
|
||||||
if (tbpos != old_unit_pos) {
|
if (tbpos != old_unit_pos) {
|
||||||
bbt_ruler->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
bbt_ruler->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||||
|
|
@ -549,7 +549,7 @@ Editor::update_ruler_visibility ()
|
||||||
bbt_label.hide();
|
bbt_label.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ruler_tempo_action->get_active()) {
|
if (!Profile->get_livetrax() && ruler_tempo_action->get_active()) {
|
||||||
old_unit_pos = tempo_group->position().y;
|
old_unit_pos = tempo_group->position().y;
|
||||||
if (tbpos != old_unit_pos) {
|
if (tbpos != old_unit_pos) {
|
||||||
tempo_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
tempo_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||||
|
|
@ -564,7 +564,7 @@ Editor::update_ruler_visibility ()
|
||||||
tempo_label.hide();
|
tempo_label.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ruler_meter_action->get_active()) {
|
if (!Profile->get_livetrax() && ruler_meter_action->get_active()) {
|
||||||
old_unit_pos = meter_group->position().y;
|
old_unit_pos = meter_group->position().y;
|
||||||
if (tbpos != old_unit_pos) {
|
if (tbpos != old_unit_pos) {
|
||||||
meter_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
meter_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||||
|
|
@ -579,7 +579,7 @@ Editor::update_ruler_visibility ()
|
||||||
meter_label.hide();
|
meter_label.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ruler_range_action->get_active()) {
|
if (!Profile->get_livetrax() && ruler_range_action->get_active()) {
|
||||||
old_unit_pos = range_marker_group->position().y;
|
old_unit_pos = range_marker_group->position().y;
|
||||||
if (tbpos != old_unit_pos) {
|
if (tbpos != old_unit_pos) {
|
||||||
range_marker_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
range_marker_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||||
|
|
@ -597,7 +597,7 @@ Editor::update_ruler_visibility ()
|
||||||
range_mark_label.hide();
|
range_mark_label.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ruler_loop_punch_action->get_active()) {
|
if (!Profile->get_livetrax() && ruler_loop_punch_action->get_active()) {
|
||||||
old_unit_pos = transport_marker_group->position().y;
|
old_unit_pos = transport_marker_group->position().y;
|
||||||
if (tbpos != old_unit_pos) {
|
if (tbpos != old_unit_pos) {
|
||||||
transport_marker_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
transport_marker_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||||
|
|
@ -615,7 +615,7 @@ Editor::update_ruler_visibility ()
|
||||||
transport_mark_label.hide();
|
transport_mark_label.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ruler_cd_marker_action->get_active()) {
|
if (!Profile->get_livetrax() && ruler_cd_marker_action->get_active()) {
|
||||||
old_unit_pos = cd_marker_group->position().y;
|
old_unit_pos = cd_marker_group->position().y;
|
||||||
if (tbpos != old_unit_pos) {
|
if (tbpos != old_unit_pos) {
|
||||||
cd_marker_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
cd_marker_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||||
|
|
@ -637,7 +637,7 @@ Editor::update_ruler_visibility ()
|
||||||
update_marker_display();
|
update_marker_display();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ruler_marker_action->get_active()) {
|
if (Profile->get_livetrax() || ruler_marker_action->get_active()) {
|
||||||
old_unit_pos = marker_group->position().y;
|
old_unit_pos = marker_group->position().y;
|
||||||
if (tbpos != old_unit_pos) {
|
if (tbpos != old_unit_pos) {
|
||||||
marker_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
marker_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||||
|
|
@ -655,7 +655,7 @@ Editor::update_ruler_visibility ()
|
||||||
mark_label.hide();
|
mark_label.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ruler_cue_marker_action->get_active()) {
|
if (!Profile->get_livetrax() && ruler_cue_marker_action->get_active()) {
|
||||||
old_unit_pos = cue_marker_group->position().y;
|
old_unit_pos = cue_marker_group->position().y;
|
||||||
if (tbpos != old_unit_pos) {
|
if (tbpos != old_unit_pos) {
|
||||||
cue_marker_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
cue_marker_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||||
|
|
@ -673,7 +673,7 @@ Editor::update_ruler_visibility ()
|
||||||
cue_mark_label.hide();
|
cue_mark_label.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ruler_section_action->get_active()) {
|
if (!Profile->get_livetrax() && ruler_section_action->get_active()) {
|
||||||
old_unit_pos = section_marker_group->position().y;
|
old_unit_pos = section_marker_group->position().y;
|
||||||
if (tbpos != old_unit_pos) {
|
if (tbpos != old_unit_pos) {
|
||||||
section_marker_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
section_marker_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||||
|
|
@ -693,7 +693,7 @@ Editor::update_ruler_visibility ()
|
||||||
update_marker_display();
|
update_marker_display();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ruler_video_action->get_active()) {
|
if (!Profile->get_livetrax() && ruler_video_action->get_active()) {
|
||||||
old_unit_pos = videotl_group->position().y;
|
old_unit_pos = videotl_group->position().y;
|
||||||
if (tbpos != old_unit_pos) {
|
if (tbpos != old_unit_pos) {
|
||||||
videotl_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
videotl_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,7 @@
|
||||||
#include "ardour/monitor_control.h"
|
#include "ardour/monitor_control.h"
|
||||||
#include "ardour/panner_shell.h"
|
#include "ardour/panner_shell.h"
|
||||||
#include "ardour/plugin_manager.h"
|
#include "ardour/plugin_manager.h"
|
||||||
|
#include "ardour/profile.h"
|
||||||
#include "ardour/route_group.h"
|
#include "ardour/route_group.h"
|
||||||
#include "ardour/selection.h"
|
#include "ardour/selection.h"
|
||||||
#include "ardour/session.h"
|
#include "ardour/session.h"
|
||||||
|
|
@ -330,57 +331,62 @@ Mixer_UI::Mixer_UI ()
|
||||||
}
|
}
|
||||||
_mixer_scene_vbox.pack_start(_mixer_scene_table, false, false);
|
_mixer_scene_vbox.pack_start(_mixer_scene_table, false, false);
|
||||||
|
|
||||||
rhs_pane1.add (favorite_plugins_frame);
|
if (!Profile->get_livetrax()) {
|
||||||
rhs_pane1.add (track_display_frame);
|
rhs_pane1.add (favorite_plugins_frame);
|
||||||
|
rhs_pane1.add (track_display_frame);
|
||||||
|
|
||||||
rhs_pane2.add (rhs_pane1);
|
rhs_pane2.add (rhs_pane1);
|
||||||
rhs_pane2.add (group_display_frame);
|
rhs_pane2.add (group_display_frame);
|
||||||
|
|
||||||
list_vpacker.pack_start (rhs_pane2, true, true);
|
list_vpacker.pack_start (rhs_pane2, true, true);
|
||||||
|
|
||||||
//add a spacer; this fills the area that is normally taken by the pane resizers
|
|
||||||
_mixer_scene_spacer.set_size_request (-1, 6);
|
|
||||||
list_vpacker.pack_start (_mixer_scene_spacer, false, false);
|
|
||||||
|
|
||||||
_mixer_scene_frame.add(_mixer_scene_vbox);
|
//add a spacer; this fills the area that is normally taken by the pane resizers
|
||||||
list_vpacker.pack_start (_mixer_scene_frame, false, false);
|
_mixer_scene_spacer.set_size_request (-1, 6);
|
||||||
|
list_vpacker.pack_start (_mixer_scene_spacer, false, false);
|
||||||
|
|
||||||
vca_label_bar.set_size_request (-1, 16 + 1); /* must match height in GroupTabs::set_size_request() + 1 border px*/
|
_mixer_scene_frame.add(_mixer_scene_vbox);
|
||||||
vca_vpacker.pack_start (vca_label_bar, false, false);
|
list_vpacker.pack_start (_mixer_scene_frame, false, false);
|
||||||
|
|
||||||
vca_scroller_base.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
|
vca_label_bar.set_size_request (-1, 16 + 1); /* must match height in GroupTabs::set_size_request() + 1 border px*/
|
||||||
vca_scroller_base.set_name (X_("MixerWindow"));
|
vca_vpacker.pack_start (vca_label_bar, false, false);
|
||||||
vca_scroller_base.signal_button_press_event().connect (sigc::mem_fun(*this, &Mixer_UI::strip_scroller_button_event));
|
|
||||||
vca_scroller_base.signal_button_release_event().connect (sigc::mem_fun(*this, &Mixer_UI::strip_scroller_button_event));
|
|
||||||
|
|
||||||
vca_hpacker.signal_scroll_event().connect (sigc::mem_fun (*this, &Mixer_UI::on_vca_scroll_event), false);
|
vca_scroller_base.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
|
||||||
vca_scroller.add (vca_hpacker);
|
vca_scroller_base.set_name (X_("MixerWindow"));
|
||||||
vca_scroller.set_policy (Gtk::POLICY_ALWAYS, Gtk::POLICY_AUTOMATIC);
|
vca_scroller_base.signal_button_press_event().connect (sigc::mem_fun(*this, &Mixer_UI::strip_scroller_button_event));
|
||||||
|
vca_scroller_base.signal_button_release_event().connect (sigc::mem_fun(*this, &Mixer_UI::strip_scroller_button_event));
|
||||||
|
|
||||||
vca_vpacker.pack_start (vca_scroller, true, true);
|
vca_hpacker.signal_scroll_event().connect (sigc::mem_fun (*this, &Mixer_UI::on_vca_scroll_event), false);
|
||||||
|
vca_scroller.add (vca_hpacker);
|
||||||
|
vca_scroller.set_policy (Gtk::POLICY_ALWAYS, Gtk::POLICY_AUTOMATIC);
|
||||||
|
|
||||||
inner_pane.add (scroller);
|
vca_vpacker.pack_start (vca_scroller, true, true);
|
||||||
inner_pane.add (vca_vpacker);
|
|
||||||
|
|
||||||
global_hpacker.pack_start (inner_pane, true, true);
|
inner_pane.add (scroller);
|
||||||
global_hpacker.pack_start (out_packer, false, false);
|
inner_pane.add (vca_vpacker);
|
||||||
|
|
||||||
list_hpane.set_check_divider_position (true);
|
global_hpacker.pack_start (inner_pane, true, true);
|
||||||
list_hpane.add (list_vpacker);
|
global_hpacker.pack_start (out_packer, false, false);
|
||||||
list_hpane.add (global_hpacker);
|
|
||||||
list_hpane.set_child_minsize (list_vpacker, 30);
|
|
||||||
|
|
||||||
rhs_pane1.set_divider (0, .6);
|
list_hpane.set_check_divider_position (true);
|
||||||
rhs_pane2.set_divider (0, .7);
|
list_hpane.add (list_vpacker);
|
||||||
list_hpane.set_divider (0, .2);
|
list_hpane.add (global_hpacker);
|
||||||
inner_pane.set_divider (0, .8);
|
list_hpane.set_child_minsize (list_vpacker, 30);
|
||||||
|
|
||||||
rhs_pane1.set_drag_cursor (*PublicEditor::instance().cursors()->expand_up_down);
|
rhs_pane1.set_divider (0, .6);
|
||||||
rhs_pane2.set_drag_cursor (*PublicEditor::instance().cursors()->expand_up_down);
|
rhs_pane2.set_divider (0, .7);
|
||||||
list_hpane.set_drag_cursor (*PublicEditor::instance().cursors()->expand_left_right);
|
list_hpane.set_divider (0, .2);
|
||||||
inner_pane.set_drag_cursor (*PublicEditor::instance().cursors()->expand_left_right);
|
inner_pane.set_divider (0, .8);
|
||||||
|
|
||||||
_content.pack_start (list_hpane, true, true);
|
rhs_pane1.set_drag_cursor (*PublicEditor::instance().cursors()->expand_up_down);
|
||||||
|
rhs_pane2.set_drag_cursor (*PublicEditor::instance().cursors()->expand_up_down);
|
||||||
|
list_hpane.set_drag_cursor (*PublicEditor::instance().cursors()->expand_left_right);
|
||||||
|
inner_pane.set_drag_cursor (*PublicEditor::instance().cursors()->expand_left_right);
|
||||||
|
|
||||||
|
_content.pack_start (list_hpane, true, true);
|
||||||
|
} else {
|
||||||
|
_content.pack_start (scroller, true, true);
|
||||||
|
}
|
||||||
|
|
||||||
update_title ();
|
update_title ();
|
||||||
|
|
||||||
|
|
@ -2293,7 +2299,7 @@ Mixer_UI::toggle_mixer_list ()
|
||||||
void
|
void
|
||||||
Mixer_UI::showhide_mixer_list (bool yn)
|
Mixer_UI::showhide_mixer_list (bool yn)
|
||||||
{
|
{
|
||||||
if (yn) {
|
if (!Profile->get_livetrax() && yn) {
|
||||||
list_vpacker.show ();
|
list_vpacker.show ();
|
||||||
} else {
|
} else {
|
||||||
list_vpacker.hide ();
|
list_vpacker.hide ();
|
||||||
|
|
|
||||||
|
|
@ -105,6 +105,7 @@ class TempoMarker;
|
||||||
class TimeAxisView;
|
class TimeAxisView;
|
||||||
class VerboseCursor;
|
class VerboseCursor;
|
||||||
struct SelectionRect;
|
struct SelectionRect;
|
||||||
|
class SelectionPropertiesBox;
|
||||||
|
|
||||||
class DisplaySuspender;
|
class DisplaySuspender;
|
||||||
|
|
||||||
|
|
@ -600,6 +601,8 @@ public:
|
||||||
|
|
||||||
Gtkmm2ext::Bindings* bindings;
|
Gtkmm2ext::Bindings* bindings;
|
||||||
|
|
||||||
|
virtual SelectionPropertiesBox& properties_box() const = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend class DisplaySuspender;
|
friend class DisplaySuspender;
|
||||||
virtual void suspend_route_redisplay () = 0;
|
virtual void suspend_route_redisplay () = 0;
|
||||||
|
|
|
||||||
|
|
@ -175,7 +175,7 @@ SelectionPropertiesBox::selection_changed ()
|
||||||
|
|
||||||
_header_label.hide();
|
_header_label.hide();
|
||||||
|
|
||||||
if (!selection.time.empty()) {
|
if (Profile->get_livetrax() || !selection.time.empty()) {
|
||||||
_time_info_box->show();
|
_time_info_box->show();
|
||||||
_header_label.set_text(_("Range Properties (Press ESC to Deselect All)"));
|
_header_label.set_text(_("Range Properties (Press ESC to Deselect All)"));
|
||||||
_header_label.show();
|
_header_label.show();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue