initial work on livetrax
This commit is contained in:
parent
4a5c05e00c
commit
ec89c3b45e
@ -620,6 +620,18 @@ private:
|
||||
void primary_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 */
|
||||
|
||||
Gtk::MenuBar* menu_bar;
|
||||
|
@ -36,9 +36,12 @@
|
||||
|
||||
#include "ardour/session.h"
|
||||
#include "ardour/lv2_plugin.h"
|
||||
#include "ardour/profile.h"
|
||||
|
||||
#include "gtkmm2ext/bindings.h"
|
||||
|
||||
#include "widgets/ardour_button.h"
|
||||
|
||||
#include "actions.h"
|
||||
#include "ardour_message.h"
|
||||
#include "ardour_ui.h"
|
||||
@ -47,6 +50,7 @@
|
||||
#include "meterbridge.h"
|
||||
#include "luainstance.h"
|
||||
#include "luawindow.h"
|
||||
#include "main_clock.h"
|
||||
#include "mixer_ui.h"
|
||||
#include "recorder_ui.h"
|
||||
#include "trigger_page.h"
|
||||
@ -54,6 +58,7 @@
|
||||
#include "keyeditor.h"
|
||||
#include "rc_option_editor.h"
|
||||
#include "route_params_ui.h"
|
||||
#include "selection_properties_box.h"
|
||||
#include "time_info_box.h"
|
||||
#include "trigger_ui.h"
|
||||
#include "step_entry.h"
|
||||
@ -67,6 +72,7 @@
|
||||
|
||||
using namespace Gtk;
|
||||
using namespace PBD;
|
||||
using namespace ArdourWidgets;
|
||||
|
||||
namespace ARDOUR {
|
||||
class Session;
|
||||
@ -130,9 +136,14 @@ ARDOUR_UI::connect_dependents_to_session (ARDOUR::Session *s)
|
||||
editor->set_session (s);
|
||||
BootMessage (_("Setup Mixer"));
|
||||
mixer->set_session (s);
|
||||
recorder->set_session (s);
|
||||
trigger_page->set_session (s);
|
||||
meterbridge->set_session (s);
|
||||
|
||||
if (!Profile->get_livetrax()) {
|
||||
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 */
|
||||
|
||||
@ -249,11 +260,16 @@ tab_window_root_drop (GtkNotebook* src,
|
||||
int
|
||||
ARDOUR_UI::setup_windows ()
|
||||
{
|
||||
if (ARDOUR::Profile->get_livetrax()) {
|
||||
return livetrax_setup_windows ();
|
||||
}
|
||||
|
||||
_tabs.set_show_border(false);
|
||||
_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_removed().connect (sigc::mem_fun (*this, &ARDOUR_UI::tabs_page_removed));
|
||||
|
||||
|
||||
rc_option_editor = new RCOptionEditor;
|
||||
rc_option_editor->StateChange.connect (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_state_change));
|
||||
|
||||
@ -360,6 +376,102 @@ ARDOUR_UI::setup_windows ()
|
||||
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
|
||||
ARDOUR_UI::apply_window_settings (bool with_size)
|
||||
{
|
||||
|
@ -156,15 +156,18 @@ ARDOUR_UI::set_session (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);
|
||||
secondary_clock->set_session (s);
|
||||
big_clock->set_session (s);
|
||||
video_timeline->set_session (s);
|
||||
rc_option_editor->set_session (s);
|
||||
|
||||
if (!Profile->get_livetrax()) {
|
||||
shuttle_box.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);
|
||||
stop_controllable->set_session (s);
|
||||
|
@ -99,7 +99,9 @@ ARDOUR_UI::create_editor ()
|
||||
{
|
||||
try {
|
||||
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) {
|
||||
@ -116,7 +118,9 @@ ARDOUR_UI::create_recorder ()
|
||||
{
|
||||
try {
|
||||
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) {
|
||||
return -1;
|
||||
}
|
||||
@ -128,7 +132,9 @@ ARDOUR_UI::create_trigger_page ()
|
||||
{
|
||||
try {
|
||||
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) {
|
||||
return -1;
|
||||
}
|
||||
@ -762,19 +768,25 @@ ARDOUR_UI::build_menu_bar ()
|
||||
ev->set_name ("MainMenuBar");
|
||||
ev->show ();
|
||||
|
||||
EventBox* ev_dsp = manage (new EventBox);
|
||||
EventBox* ev_dsp;
|
||||
EventBox* ev_timecode;
|
||||
EventBox* ev_path = manage (new EventBox);
|
||||
EventBox* ev_name = manage (new EventBox);
|
||||
EventBox* ev_audio = 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_name->set_name ("MainMenuBar");
|
||||
ev_audio->set_name ("MainMenuBar");
|
||||
ev_format->set_name ("MainMenuBar");
|
||||
ev_timecode->set_name ("MainMenuBar");
|
||||
|
||||
Gtk::HBox* hbox = manage (new Gtk::HBox);
|
||||
hbox->show ();
|
||||
@ -794,18 +806,22 @@ ARDOUR_UI::build_menu_bar ()
|
||||
snapshot_name_label.set_name ("Name");
|
||||
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_name->add (snapshot_name_label);
|
||||
ev_audio->add (sample_rate_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_audio->show ();
|
||||
ev_format->show ();
|
||||
ev_timecode->show ();
|
||||
|
||||
#ifdef __APPLE__
|
||||
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 (*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_timecode, 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 (&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 (&timecode_format_label, X_("TCFormat"), _("Timecode Format"), false);
|
||||
_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__
|
||||
// OSX provides its own wallclock, thank you very much
|
||||
_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_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));
|
||||
if (!Profile->get_livetrax()) {
|
||||
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_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_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 (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.
|
||||
*/
|
||||
|
||||
#include "ardour/profile.h"
|
||||
|
||||
#include "gtkmm2ext/keyboard.h"
|
||||
|
||||
#include "actions.h"
|
||||
@ -44,7 +46,9 @@ ARDOUR_UI::create_mixer ()
|
||||
{
|
||||
try {
|
||||
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) {
|
||||
|
@ -121,6 +121,8 @@ ARDOUR_UI::setup_profile ()
|
||||
if (g_getenv ("MIXBUS")) {
|
||||
Profile->set_mixbus ();
|
||||
}
|
||||
|
||||
Profile->set_livetrax ();
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -610,7 +610,9 @@ Editor::Editor ()
|
||||
|
||||
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());
|
||||
|
||||
@ -740,93 +742,104 @@ Editor::Editor ()
|
||||
settings->get_property ("notebook-shrunk", _notebook_shrunk);
|
||||
}
|
||||
|
||||
editor_summary_pane.set_check_divider_position (true);
|
||||
editor_summary_pane.add (edit_packer);
|
||||
if (!Profile->get_livetrax()) {
|
||||
editor_summary_pane.set_check_divider_position (true);
|
||||
editor_summary_pane.add (edit_packer);
|
||||
|
||||
Button* summary_arrow_left = manage (new Button);
|
||||
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_released().connect (sigc::mem_fun (*this, &Editor::scroll_release));
|
||||
Button* summary_arrow_left = manage (new Button);
|
||||
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_released().connect (sigc::mem_fun (*this, &Editor::scroll_release));
|
||||
|
||||
Button* summary_arrow_right = manage (new Button);
|
||||
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_released().connect (sigc::mem_fun (*this, &Editor::scroll_release));
|
||||
Button* summary_arrow_right = manage (new Button);
|
||||
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_released().connect (sigc::mem_fun (*this, &Editor::scroll_release));
|
||||
|
||||
VBox* summary_arrows_left = manage (new VBox);
|
||||
summary_arrows_left->pack_start (*summary_arrow_left);
|
||||
VBox* summary_arrows_left = manage (new VBox);
|
||||
summary_arrows_left->pack_start (*summary_arrow_left);
|
||||
|
||||
VBox* summary_arrows_right = manage (new VBox);
|
||||
summary_arrows_right->pack_start (*summary_arrow_right);
|
||||
VBox* summary_arrows_right = manage (new VBox);
|
||||
summary_arrows_right->pack_start (*summary_arrow_right);
|
||||
|
||||
Gtk::Frame* summary_frame = manage (new Gtk::Frame);
|
||||
summary_frame->set_shadow_type (Gtk::SHADOW_ETCHED_IN);
|
||||
Gtk::Frame* summary_frame = manage (new Gtk::Frame);
|
||||
summary_frame->set_shadow_type (Gtk::SHADOW_ETCHED_IN);
|
||||
|
||||
summary_frame->add (*_summary);
|
||||
summary_frame->show ();
|
||||
summary_frame->add (*_summary);
|
||||
summary_frame->show ();
|
||||
|
||||
_summary_hbox.pack_start (*summary_arrows_left, false, false);
|
||||
_summary_hbox.pack_start (*summary_frame, true, true);
|
||||
_summary_hbox.pack_start (*summary_arrows_right, false, false);
|
||||
_summary_hbox.pack_start (*summary_arrows_left, false, false);
|
||||
_summary_hbox.pack_start (*summary_frame, true, true);
|
||||
_summary_hbox.pack_start (*summary_arrows_right, false, false);
|
||||
|
||||
editor_summary_pane.add (_summary_hbox);
|
||||
edit_pane.set_check_divider_position (true);
|
||||
edit_pane.add (editor_summary_pane);
|
||||
_editor_list_vbox.pack_start (_the_notebook);
|
||||
_editor_list_vbox.pack_start (*_properties_box, false, false, 0);
|
||||
edit_pane.add (_editor_list_vbox);
|
||||
edit_pane.set_child_minsize (_editor_list_vbox, 30); /* rough guess at width of notebook tabs */
|
||||
editor_summary_pane.add (_summary_hbox);
|
||||
edit_pane.set_check_divider_position (true);
|
||||
edit_pane.add (editor_summary_pane);
|
||||
_editor_list_vbox.pack_start (_the_notebook);
|
||||
_editor_list_vbox.pack_start (*_properties_box, false, false, 0);
|
||||
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_drag_cursor (*_cursors->expand_left_right);
|
||||
editor_summary_pane.set_drag_cursor (*_cursors->expand_up_down);
|
||||
edit_pane.set_drag_cursor (*_cursors->expand_left_right);
|
||||
editor_summary_pane.set_drag_cursor (*_cursors->expand_up_down);
|
||||
|
||||
float fract;
|
||||
if (!settings || !settings->get_property ("edit-horizontal-pane-pos", fract) || fract > 1.0) {
|
||||
/* initial allocation is 90% to canvas, 10% to notebook */
|
||||
fract = 0.90;
|
||||
float fract;
|
||||
if (!settings || !settings->get_property ("edit-horizontal-pane-pos", fract) || fract > 1.0) {
|
||||
/* initial allocation is 90% to canvas, 10% to notebook */
|
||||
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_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
|
||||
ebox->set_name("EditorWindow");
|
||||
ebox->add (ebox_hpacker);
|
||||
Gtk::EventBox* ebox = manage (new Gtk::EventBox); // a themeable box
|
||||
ebox->set_name("EditorWindow");
|
||||
ebox->add (ebox_hpacker);
|
||||
|
||||
Gtk::EventBox* epane_box = manage (new EventBoxExt); // a themeable box
|
||||
epane_box->set_name("EditorWindow");
|
||||
epane_box->add (edit_pane);
|
||||
Gtk::EventBox* epane_box = manage (new EventBoxExt); // a themeable box
|
||||
epane_box->set_name("EditorWindow");
|
||||
epane_box->add (edit_pane);
|
||||
|
||||
Gtk::EventBox* epane_box2 = manage (new EventBoxExt); // a themeable box
|
||||
epane_box2->set_name("EditorWindow");
|
||||
epane_box2->add (global_vpacker);
|
||||
Gtk::EventBox* epane_box2 = manage (new EventBoxExt); // a themeable box
|
||||
epane_box2->set_name("EditorWindow");
|
||||
epane_box2->add (global_vpacker);
|
||||
|
||||
ArdourWidgets::ArdourDropShadow *toolbar_shadow = manage (new (ArdourWidgets::ArdourDropShadow));
|
||||
toolbar_shadow->set_size_request (-1, 4);
|
||||
toolbar_shadow->set_mode(ArdourWidgets::ArdourDropShadow::DropShadowBoth);
|
||||
toolbar_shadow->set_name("EditorWindow");
|
||||
toolbar_shadow->show();
|
||||
ArdourWidgets::ArdourDropShadow *toolbar_shadow = manage (new (ArdourWidgets::ArdourDropShadow));
|
||||
toolbar_shadow->set_size_request (-1, 4);
|
||||
toolbar_shadow->set_mode(ArdourWidgets::ArdourDropShadow::DropShadowBoth);
|
||||
toolbar_shadow->set_name("EditorWindow");
|
||||
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 (*epane_box, true, true);
|
||||
global_hpacker.pack_start (*epane_box2, true, true);
|
||||
global_vpacker.pack_start (*ebox, false, false);
|
||||
|
||||
/* 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 ();
|
||||
ebox_hpacker.show();
|
||||
ebox->show();
|
||||
global_hpacker.show ();
|
||||
ebox_hpacker.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 */
|
||||
|
||||
@ -1361,16 +1374,19 @@ Editor::set_session (Session *t)
|
||||
* before the visible state has been loaded from instant.xml */
|
||||
_leftmost_sample = session_gui_extents().first.samples();
|
||||
|
||||
nudge_clock->set_session (_session);
|
||||
_summary->set_session (_session);
|
||||
if (!Profile->get_livetrax()) {
|
||||
nudge_clock->set_session (_session);
|
||||
_summary->set_session (_session);
|
||||
}
|
||||
|
||||
_group_tabs->set_session (_session);
|
||||
_route_groups->set_session (_session);
|
||||
_regions->set_session (_session);
|
||||
_sources->set_session (_session);
|
||||
_snapshots->set_session (_session);
|
||||
_sections->set_session (_session);
|
||||
_routes->set_session (_session);
|
||||
_locations->set_session (_session);
|
||||
_sections->set_session (_session);
|
||||
_properties_box->set_session (_session);
|
||||
|
||||
if (rhythm_ferret) {
|
||||
@ -5106,7 +5122,9 @@ Editor::on_samples_per_pixel_changed ()
|
||||
}
|
||||
|
||||
refresh_location_display();
|
||||
_summary->set_overlays_dirty ();
|
||||
if (_summary) {
|
||||
_summary->set_overlays_dirty ();
|
||||
}
|
||||
|
||||
update_section_box ();
|
||||
update_marker_labels ();
|
||||
@ -5245,7 +5263,9 @@ Editor::visual_changer (const VisualChange& vc)
|
||||
}
|
||||
|
||||
_region_peak_cursor->hide ();
|
||||
_summary->set_overlays_dirty ();
|
||||
if (_summary) {
|
||||
_summary->set_overlays_dirty ();
|
||||
}
|
||||
}
|
||||
|
||||
struct EditorOrderTimeAxisSorter {
|
||||
@ -5817,7 +5837,9 @@ Editor::region_view_added (RegionView * rv)
|
||||
}
|
||||
}
|
||||
|
||||
_summary->set_background_dirty ();
|
||||
if (_summary) {
|
||||
_summary->set_background_dirty ();
|
||||
}
|
||||
|
||||
mark_region_boundary_cache_dirty ();
|
||||
}
|
||||
@ -5825,7 +5847,9 @@ Editor::region_view_added (RegionView * rv)
|
||||
void
|
||||
Editor::region_view_removed ()
|
||||
{
|
||||
_summary->set_background_dirty ();
|
||||
if (_summary) {
|
||||
_summary->set_background_dirty ();
|
||||
}
|
||||
|
||||
mark_region_boundary_cache_dirty ();
|
||||
}
|
||||
@ -6224,7 +6248,9 @@ Editor::redisplay_track_views ()
|
||||
vertical_adjustment.set_value (_full_canvas_height - _visible_canvas_height);
|
||||
}
|
||||
|
||||
_summary->set_background_dirty();
|
||||
if (_summary) {
|
||||
_summary->set_background_dirty();
|
||||
}
|
||||
_group_tabs->set_dirty ();
|
||||
|
||||
return false;
|
||||
|
@ -632,6 +632,8 @@ public:
|
||||
void remove_region_marker (ARDOUR::CueMarker&);
|
||||
void make_region_markers_global (bool as_cd_markers);
|
||||
|
||||
SelectionPropertiesBox& properties_box() const { return *_properties_box; }
|
||||
|
||||
protected:
|
||||
void map_transport_state ();
|
||||
void map_position_change (samplepos_t);
|
||||
|
@ -373,7 +373,10 @@ Editor::track_canvas_viewport_size_allocated ()
|
||||
update_tempo_based_rulers ();
|
||||
redisplay_grid (false);
|
||||
redisplay_track_views ();
|
||||
_summary->set_overlays_dirty ();
|
||||
|
||||
if (_summary) {
|
||||
_summary->set_overlays_dirty ();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -490,7 +490,7 @@ Editor::update_ruler_visibility ()
|
||||
videotl_label.hide();
|
||||
#endif
|
||||
|
||||
if (ruler_minsec_action->get_active()) {
|
||||
if (!Profile->get_livetrax() && ruler_minsec_action->get_active()) {
|
||||
old_unit_pos = minsec_ruler->position().y;
|
||||
if (tbpos != old_unit_pos) {
|
||||
minsec_ruler->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||
@ -506,7 +506,7 @@ Editor::update_ruler_visibility ()
|
||||
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;
|
||||
if (tbpos != old_unit_pos) {
|
||||
timecode_ruler->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||
@ -522,7 +522,7 @@ Editor::update_ruler_visibility ()
|
||||
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;
|
||||
if (tbpos != old_unit_pos) {
|
||||
samples_ruler->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||
@ -538,7 +538,7 @@ Editor::update_ruler_visibility ()
|
||||
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;
|
||||
if (tbpos != old_unit_pos) {
|
||||
bbt_ruler->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||
@ -554,7 +554,7 @@ Editor::update_ruler_visibility ()
|
||||
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;
|
||||
if (tbpos != old_unit_pos) {
|
||||
tempo_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||
@ -569,7 +569,7 @@ Editor::update_ruler_visibility ()
|
||||
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;
|
||||
if (tbpos != old_unit_pos) {
|
||||
meter_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||
@ -584,7 +584,7 @@ Editor::update_ruler_visibility ()
|
||||
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;
|
||||
if (tbpos != old_unit_pos) {
|
||||
range_marker_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||
@ -602,7 +602,7 @@ Editor::update_ruler_visibility ()
|
||||
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;
|
||||
if (tbpos != old_unit_pos) {
|
||||
transport_marker_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||
@ -620,7 +620,7 @@ Editor::update_ruler_visibility ()
|
||||
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;
|
||||
if (tbpos != old_unit_pos) {
|
||||
cd_marker_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||
@ -642,7 +642,7 @@ Editor::update_ruler_visibility ()
|
||||
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;
|
||||
if (tbpos != old_unit_pos) {
|
||||
marker_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||
@ -660,7 +660,7 @@ Editor::update_ruler_visibility ()
|
||||
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;
|
||||
if (tbpos != old_unit_pos) {
|
||||
cue_marker_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
|
||||
@ -717,7 +717,7 @@ Editor::update_ruler_visibility ()
|
||||
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;
|
||||
if (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/panner_shell.h"
|
||||
#include "ardour/plugin_manager.h"
|
||||
#include "ardour/profile.h"
|
||||
#include "ardour/route_group.h"
|
||||
#include "ardour/selection.h"
|
||||
#include "ardour/session.h"
|
||||
@ -330,57 +331,62 @@ Mixer_UI::Mixer_UI ()
|
||||
}
|
||||
_mixer_scene_vbox.pack_start(_mixer_scene_table, false, false);
|
||||
|
||||
rhs_pane1.add (favorite_plugins_frame);
|
||||
rhs_pane1.add (track_display_frame);
|
||||
if (!Profile->get_livetrax()) {
|
||||
rhs_pane1.add (favorite_plugins_frame);
|
||||
rhs_pane1.add (track_display_frame);
|
||||
|
||||
rhs_pane2.add (rhs_pane1);
|
||||
rhs_pane2.add (group_display_frame);
|
||||
rhs_pane2.add (rhs_pane1);
|
||||
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);
|
||||
list_vpacker.pack_start (_mixer_scene_frame, false, false);
|
||||
//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);
|
||||
|
||||
vca_label_bar.set_size_request (-1, 16 + 1); /* must match height in GroupTabs::set_size_request() + 1 border px*/
|
||||
vca_vpacker.pack_start (vca_label_bar, false, false);
|
||||
_mixer_scene_frame.add(_mixer_scene_vbox);
|
||||
list_vpacker.pack_start (_mixer_scene_frame, false, false);
|
||||
|
||||
vca_scroller_base.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
|
||||
vca_scroller_base.set_name (X_("MixerWindow"));
|
||||
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_label_bar.set_size_request (-1, 16 + 1); /* must match height in GroupTabs::set_size_request() + 1 border px*/
|
||||
vca_vpacker.pack_start (vca_label_bar, false, false);
|
||||
|
||||
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);
|
||||
vca_scroller_base.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
|
||||
vca_scroller_base.set_name (X_("MixerWindow"));
|
||||
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);
|
||||
inner_pane.add (vca_vpacker);
|
||||
vca_vpacker.pack_start (vca_scroller, true, true);
|
||||
|
||||
global_hpacker.pack_start (inner_pane, true, true);
|
||||
global_hpacker.pack_start (out_packer, false, false);
|
||||
inner_pane.add (scroller);
|
||||
inner_pane.add (vca_vpacker);
|
||||
|
||||
list_hpane.set_check_divider_position (true);
|
||||
list_hpane.add (list_vpacker);
|
||||
list_hpane.add (global_hpacker);
|
||||
list_hpane.set_child_minsize (list_vpacker, 30);
|
||||
global_hpacker.pack_start (inner_pane, true, true);
|
||||
global_hpacker.pack_start (out_packer, false, false);
|
||||
|
||||
rhs_pane1.set_divider (0, .6);
|
||||
rhs_pane2.set_divider (0, .7);
|
||||
list_hpane.set_divider (0, .2);
|
||||
inner_pane.set_divider (0, .8);
|
||||
list_hpane.set_check_divider_position (true);
|
||||
list_hpane.add (list_vpacker);
|
||||
list_hpane.add (global_hpacker);
|
||||
list_hpane.set_child_minsize (list_vpacker, 30);
|
||||
|
||||
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);
|
||||
rhs_pane1.set_divider (0, .6);
|
||||
rhs_pane2.set_divider (0, .7);
|
||||
list_hpane.set_divider (0, .2);
|
||||
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 ();
|
||||
|
||||
@ -2293,7 +2299,7 @@ Mixer_UI::toggle_mixer_list ()
|
||||
void
|
||||
Mixer_UI::showhide_mixer_list (bool yn)
|
||||
{
|
||||
if (yn) {
|
||||
if (!Profile->get_livetrax() && yn) {
|
||||
list_vpacker.show ();
|
||||
} else {
|
||||
list_vpacker.hide ();
|
||||
|
@ -105,6 +105,7 @@ class TempoMarker;
|
||||
class TimeAxisView;
|
||||
class VerboseCursor;
|
||||
struct SelectionRect;
|
||||
class SelectionPropertiesBox;
|
||||
|
||||
class DisplaySuspender;
|
||||
|
||||
@ -600,6 +601,8 @@ public:
|
||||
|
||||
Gtkmm2ext::Bindings* bindings;
|
||||
|
||||
virtual SelectionPropertiesBox& properties_box() const = 0;
|
||||
|
||||
protected:
|
||||
friend class DisplaySuspender;
|
||||
virtual void suspend_route_redisplay () = 0;
|
||||
|
@ -175,7 +175,7 @@ SelectionPropertiesBox::selection_changed ()
|
||||
|
||||
_header_label.hide();
|
||||
|
||||
if (!selection.time.empty()) {
|
||||
if (Profile->get_livetrax() || !selection.time.empty()) {
|
||||
_time_info_box->show();
|
||||
_header_label.set_text(_("Range Properties (Press ESC to Deselect All)"));
|
||||
_header_label.show();
|
||||
|
Loading…
Reference in New Issue
Block a user