/*
- Copyright (C) 2001 Paul Davis
+ Copyright (C) 2001-2006 Paul Davis
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include <pbd/whitespace.h>
+#include <ardour/audio_library.h>
#include <ardour/session.h>
#include <ardour/audioengine.h>
#include <ardour/configuration.h>
#include "i18n.h"
using namespace ARDOUR;
+using namespace PBD;
using namespace Gtk;
using namespace Editing;
using namespace Gtkmm2ext;
/* Paths */
path_table (11, 2),
- sfdb_path_columns(),
- sfdb_paths(ListStore::create(sfdb_path_columns)),
- sfdb_path_view(sfdb_paths),
+ sfdb_path_view(),
/* Fades */
click_emphasis_path_entry.set_sensitive (false);
session_raid_entry.set_sensitive (false);
- smpte_fps_combo.set_sensitive (false);
short_xfade_slider.set_sensitive (false);
smpte_offset_negative_button.set_sensitive (false);
return;
}
-
click_path_entry.set_sensitive (true);
click_emphasis_path_entry.set_sensitive (true);
session_raid_entry.set_sensitive (true);
- smpte_fps_combo.set_sensitive (true);
short_xfade_slider.set_sensitive (true);
smpte_offset_negative_button.set_sensitive (true);
- if (!s->smpte_drop_frames) {
- // non-drop frames
- if (s->smpte_frames_per_second == 24.0)
- smpte_fps_combo.set_active_text (_("24 FPS"));
- else if (s->smpte_frames_per_second == 25.0)
- smpte_fps_combo.set_active_text (_("25 FPS"));
- else if (s->smpte_frames_per_second == 30.0)
- smpte_fps_combo.set_active_text (_("30 FPS"));
- else
- smpte_fps_combo.set_active_text (_("???"));
- } else {
- // drop frames
- if (floor(s->smpte_frames_per_second) == 29.0)
- smpte_fps_combo.set_active_text (_("30 FPS drop"));
- else
- smpte_fps_combo.set_active_text (_("???"));
- }
-
smpte_offset_clock.set_session (s);
smpte_offset_clock.set (s->smpte_offset (), true);
path_table.attach(*label, 0, 1, 2, 3, FILL|EXPAND, FILL);
path_table.attach(sfdb_path_view, 1, 3, 2, 3, Gtk::FILL|Gtk::EXPAND, FILL);
- sfdb_path_view.append_column(_("Paths"), sfdb_path_columns.paths);
- sfdb_path_view.set_size_request(-1, 100);
+ sfdb_path_view.set_paths(Library->get_paths());
+ sfdb_path_view.PathsUpdated.connect (mem_fun(*this, &OptionEditor::sfdb_paths_changed));
path_table.show_all();
}
+void
+OptionEditor::sfdb_paths_changed ()
+{
+ Library->set_paths (sfdb_path_view.get_paths());
+}
+
void
OptionEditor::add_session_paths ()
{
click_emphasis_path_entry.set_sensitive (true);
session_raid_entry.set_sensitive (true);
- if (session->click_sound.length() == 0) {
+ if (Config->get_click_sound().empty()) {
click_path_entry.set_text (_("internal"));
} else {
- click_path_entry.set_text (session->click_sound);
+ click_path_entry.set_text (Config->get_click_sound());
}
- if (session->click_emphasis_sound.length() == 0) {
+ if (Config->get_click_emphasis_sound().empty()) {
click_emphasis_path_entry.set_text (_("internal"));
} else {
- click_emphasis_path_entry.set_text (session->click_emphasis_sound);
+ click_emphasis_path_entry.set_text (Config->get_click_emphasis_sound());
}
session_raid_entry.set_text(session->raid_path());
/* val is in msecs */
- Crossfade::set_short_xfade_length ((jack_nframes_t) floor (session->frame_rate() * (val / 1000.0)));
+ Crossfade::set_short_xfade_length ((nframes_t) floor (session->frame_rate() * (val / 1000.0)));
}
}
float val = destructo_xfade_adjustment.get_value();
/* val is in msecs */
+
Config->set_destructive_xfade_msecs ((uint32_t) floor (val));
if (session) {
- DestructiveFileSource::setup_standard_crossfades (session->frame_rate());
+ SndFileSource::setup_standard_crossfades (session->frame_rate());
}
}
HBox* hbox;
vector<string> dumb;
- dumb.clear ();
- dumb.push_back (X_("24 FPS"));
- dumb.push_back (X_("25 FPS"));
- dumb.push_back (X_("30 FPS drop"));
- dumb.push_back (X_("30 FPS non-drop"));
-
- set_popdown_strings (smpte_fps_combo, dumb);
- smpte_fps_combo.signal_changed().connect (mem_fun(*this, &OptionEditor::smpte_fps_chosen));
-
smpte_offset_clock.set_mode (AudioClock::SMPTE);
smpte_offset_clock.ValueChanged.connect (mem_fun(*this, &OptionEditor::smpte_offset_chosen));
smpte_offset_negative_button.unset_flags (Gtk::CAN_FOCUS);
- Label *smpte_fps_label = manage (new Label (_("SMPTE Frames/second")));
Label *smpte_offset_label = manage (new Label (_("SMPTE Offset")));
- smpte_fps_label->set_name("OptionsLabel");
smpte_offset_label->set_name("OptionsLabel");
- hbox = manage (new HBox);
- hbox->set_border_width (5);
- hbox->set_spacing (10);
- hbox->pack_start (*smpte_fps_label, false, false);
- hbox->pack_start (smpte_fps_combo, false, false);
-
- sync_packer.pack_start (*hbox, false, false);
-
hbox = manage (new HBox);
hbox->set_border_width (5);
hbox->set_spacing (10);
}
}
-void
-OptionEditor::smpte_fps_chosen ()
-{
- if (session) {
- string str = smpte_fps_combo.get_active_text();
-
- if (str == X_("24 FPS")) {
- session->set_smpte_type (24.0, false);
- } else if (str == X_("25 FPS")) {
- session->set_smpte_type (25.0, false);
- } else if (str == X_("30 FPS drop")) {
- session->set_smpte_type (29.97, true);
- } else if (str == X_("30 FPS non-drop")) {
- session->set_smpte_type (30.0, false);
- }
- }
-}
-
void
OptionEditor::smpte_offset_chosen()
{
if (session) {
- jack_nframes_t frames = smpte_offset_clock.current_duration();
+ nframes_t frames = smpte_offset_clock.current_duration();
session->set_smpte_offset (frames);
}
}
}
tb->set_active (!(*i).second->input()->offline());
- tb->signal_button_press_event().connect (bind (mem_fun(*this, &OptionEditor::port_online_toggled), (*i).second, tb));
+ tb->signal_toggled().connect (bind (mem_fun(*this, &OptionEditor::port_online_toggled), (*i).second, tb));
(*i).second->input()->OfflineStatusChanged.connect (bind (mem_fun(*this, &OptionEditor::map_port_online), (*i).second, tb));
table->attach (*tb, 1, 2, n+2, n+3, FILL|EXPAND, FILL);
tb = manage (new ToggleButton ());
tb->set_name ("OptionEditorToggleButton");
- tb->signal_button_press_event().connect (bind (mem_fun(*this, &OptionEditor::port_trace_in_toggled), (*i).second, tb));
+ tb->signal_toggled().connect (bind (mem_fun(*this, &OptionEditor::port_trace_in_toggled), (*i).second, tb));
tb->set_size_request (10, 10);
table->attach (*tb, 2, 3, n+2, n+3, FILL|EXPAND, FILL);
tb = manage (new ToggleButton ());
tb->set_name ("OptionEditorToggleButton");
- tb->signal_button_press_event().connect (bind (mem_fun(*this, &OptionEditor::port_trace_out_toggled), (*i).second, tb));
+ tb->signal_toggled().connect (bind (mem_fun(*this, &OptionEditor::port_trace_out_toggled), (*i).second, tb));
tb->set_size_request (10, 10);
table->attach (*tb, 3, 4, n+2, n+3, FILL|EXPAND, FILL);
}
}
-gint
-OptionEditor::port_online_toggled (GdkEventButton* ev, MIDI::Port* port, ToggleButton* tb)
+void
+OptionEditor::port_online_toggled (MIDI::Port* port, ToggleButton* tb)
{
- bool wanted = tb->get_active(); /* it hasn't changed at this point */
-
+ bool wanted = tb->get_active();
+
if (wanted != port->input()->offline()) {
port->input()->set_offline (wanted);
}
- return stop_signal (*tb, "button_press_event");
}
void
}
}
-gint
-OptionEditor::port_trace_in_toggled (GdkEventButton* ev, MIDI::Port* port, ToggleButton* tb)
+void
+OptionEditor::port_trace_in_toggled (MIDI::Port* port, ToggleButton* tb)
{
- /* XXX not very good MVC style here */
+ bool trace = tb->get_active();
- port->input()->trace (!tb->get_active(), &cerr, string (port->name()) + string (" input: "));
- tb->set_active (!tb->get_active());
- return stop_signal (*tb, "button_press_event");
+ if (port->input()->tracing() != trace) {
+ port->output()->trace (trace, &cerr, string (port->name()) + string (" input: "));
+ }
}
-gint
-OptionEditor::port_trace_out_toggled (GdkEventButton* ev,MIDI::Port* port, ToggleButton* tb)
+void
+OptionEditor::port_trace_out_toggled (MIDI::Port* port, ToggleButton* tb)
{
- /* XXX not very good MVC style here */
+ bool trace = tb->get_active();
- port->output()->trace (!tb->get_active(), &cerr, string (port->name()) + string (" output: "));
- tb->set_active (!tb->get_active());
- return stop_signal (*tb, "button_press_event");
+ if (port->output()->tracing() != trace) {
+ port->output()->trace (trace, &cerr, string (port->name()) + string (" output: "));
+ }
}
void
OptionEditor::raid_path_changed ()
{
if (session) {
- session->set_raid_path (session_raid_entry.get_text());
+ Config->set_raid_path (session_raid_entry.get_text());
}
}
if (session) {
string path = click_path_entry.get_text();
- if (path == session->click_sound) {
+ if (path == Config->get_click_sound()) {
return;
}
- if (path.length() == 0) {
+ if (path.empty()) {
- session->set_click_sound ("");
+ Config->set_click_sound ("");
} else {
strip_whitespace_edges (path);
if (path == _("internal")) {
- session->set_click_sound ("");
+ Config->set_click_sound ("");
} else {
- session->set_click_sound (path);
+ Config->set_click_sound (path);
}
}
}
if (session) {
string path = click_emphasis_path_entry.get_text();
- if (path == session->click_emphasis_sound) {
+ if (path == Config->get_click_emphasis_sound()) {
return;
}
- if (path.length() == 0) {
+ if (path.empty()) {
- session->set_click_emphasis_sound ("");
+ Config->set_click_emphasis_sound ("");
} else {
strip_whitespace_edges (path);
if (path == _("internal")) {
- session->set_click_emphasis_sound ("");
+ Config->set_click_emphasis_sound ("");
} else {
- session->set_click_emphasis_sound (path);
+ Config->set_click_emphasis_sound (path);
}
}
}