#include "engine_dialog.h"
#include "gain_meter.h"
#include "global_port_matrix.h"
+#include "gui_object.h"
#include "gui_thread.h"
#include "keyboard.h"
#include "location_ui.h"
: Gtkmm2ext::UI (PROGRAM_NAME, argcp, argvp)
+ , gui_object_state (new GUIObjectState)
, primary_clock (new AudioClock (X_("primary"), false, X_("TransportClockDisplay"), true, true, false, true))
, secondary_clock (new AudioClock (X_("secondary"), false, X_("SecondaryClockDisplay"), true, true, false, true))
, preroll_clock (new AudioClock (X_("preroll"), false, X_("PreRollClock"), true, false, true))
keyboard = new ArdourKeyboard(*this);
-
XMLNode* node = ARDOUR_UI::instance()->keyboard_settings();
if (node) {
keyboard->set_state (*node, Stateful::loading_state_version);
sample_rate_label.set_text (buf);
}
+void
+ARDOUR_UI::update_format ()
+{
+ if (!_session) {
+ format_label.set_text ("");
+ return;
+ }
+
+ stringstream s;
+
+ switch (_session->config.get_native_file_header_format ()) {
+ case BWF:
+ s << "BWF";
+ break;
+ case WAVE:
+ s << "WAV";
+ break;
+ case WAVE64:
+ s << "WAV64";
+ break;
+ case CAF:
+ s << "CAF";
+ break;
+ case AIFF:
+ s << "AIFF";
+ break;
+ case iXML:
+ s << "iXML";
+ break;
+ case RF64:
+ s << "RF64";
+ break;
+ }
+
+ s << " ";
+
+ switch (_session->config.get_native_file_data_format ()) {
+ case FormatFloat:
+ s << "32-float";
+ break;
+ case FormatInt24:
+ s << "24-int";
+ break;
+ case FormatInt16:
+ s << "16-int";
+ break;
+ }
+
+ format_label.set_text (s.str ());
+}
+
void
ARDOUR_UI::update_cpu_load ()
{
ARDOUR_UI::update_buffer_load ()
{
char buf[64];
- uint32_t c, p;
if (_session) {
- c = _session->capture_load ();
- p = _session->playback_load ();
-
snprintf (buf, sizeof (buf), _("Buffers p:%" PRIu32 "%% c:%" PRIu32 "%%"),
_session->playback_load(), _session->capture_load());
buffer_load_label.set_text (buf);
if (routes.size() != how_many) {
if (how_many == 1) {
- error << _("could not create a new audio track") << endmsg;
+ error << _("could not create a new audio bus") << endmsg;
} else {
- error << string_compose (_("could not create %1 new audio tracks"), how_many) << endmsg;
+ error << string_compose (_("could not create %1 new audio busses"), how_many) << endmsg;
}
}
}
prompter.set_name ("Prompter");
prompter.add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT);
prompter.set_title (_("Take Snapshot"));
- prompter.set_title (_("Take Snapshot"));
prompter.set_prompt (_("Name of new snapshot"));
if (!switch_to_it) {
}
}
+/** Ask the user for the name of a new shapshot and then take it.
+ */
+
+void
+ARDOUR_UI::rename_session ()
+{
+ if (!_session) {
+ return;
+ }
+
+ ArdourPrompter prompter (true);
+ string name;
+
+ prompter.set_name ("Prompter");
+ prompter.add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT);
+ prompter.set_title (_("Rename Session"));
+ prompter.set_prompt (_("New session name"));
+
+ again:
+ switch (prompter.run()) {
+ case RESPONSE_ACCEPT:
+ {
+ prompter.get_result (name);
+
+ bool do_rename = (name.length() != 0);
+
+ if (do_rename) {
+ if (name.find ('/') != string::npos) {
+ MessageDialog msg (_("To ensure compatibility with various systems\n"
+ "session names may not contain a '/' character"));
+ msg.run ();
+ goto again;
+ }
+ if (name.find ('\\') != string::npos) {
+ MessageDialog msg (_("To ensure compatibility with various systems\n"
+ "session names may not contain a '\\' character"));
+ msg.run ();
+ goto again;
+ }
+
+ switch (_session->rename (name)) {
+ case -1: {
+ MessageDialog msg (_("That name is already in use by another directory/folder. Please try again."));
+ msg.set_position (WIN_POS_MOUSE);
+ msg.run ();
+ goto again;
+ break;
+ }
+ case 0:
+ break;
+ default: {
+ MessageDialog msg (_("Renaming this session failed.\nThings could be seriously messed up at this point"));
+ msg.set_position (WIN_POS_MOUSE);
+ msg.run ();
+ break;
+ }
+ }
+ }
+
+ break;
+ }
+
+ default:
+ break;
+ }
+}
+
void
ARDOUR_UI::save_state (const string & name, bool switch_to_it)
{
}
}
+ node->add_child_nocopy (gui_object_state->get_state());
+
_session->add_extra_xml (*node);
save_state_canfail (name, switch_to_it);
session_name = _startup->session_name (likely_new);
+ string::size_type suffix = session_name.find (statefile_suffix);
+
+ if (suffix != string::npos) {
+ session_name = session_name.substr (0, suffix);
+ }
+
/* this shouldn't happen, but we catch it just in case it does */
if (session_name.empty()) {
}
int
-ARDOUR_UI::ambiguous_file (std::string file, std::string path, std::vector<std::string> hits)
+ARDOUR_UI::ambiguous_file (std::string file, std::string /*path*/, std::vector<std::string> hits)
{
AmbiguousFileDialog dialog (file, hits);