13
0

OSC: Add session name change

This commit is contained in:
Len Ovens 2018-02-20 15:48:54 -08:00
parent 47970b0cd1
commit d4ae858bf6
2 changed files with 31 additions and 0 deletions

View File

@ -504,6 +504,7 @@ OSC::register_callbacks()
REGISTER_CALLBACK (serv, X_("/quick_snapshot_switch"), "f", quick_snapshot_switch);
REGISTER_CALLBACK (serv, X_("/quick_snapshot_stay"), "", quick_snapshot_stay);
REGISTER_CALLBACK (serv, X_("/quick_snapshot_stay"), "f", quick_snapshot_stay);
REGISTER_CALLBACK (serv, X_("/session_name"), "s", name_session);
REGISTER_CALLBACK (serv, X_("/fit_1_track"), "", fit_1_track);
REGISTER_CALLBACK (serv, X_("/fit_1_track"), "f", fit_1_track);
REGISTER_CALLBACK (serv, X_("/fit_2_tracks"), "", fit_2_tracks);
@ -2523,6 +2524,34 @@ OSC::use_group (float value, lo_message msg)
return 0;
}
int
OSC::name_session (char *n, lo_message msg)
{
if (!session) {
return -1;
}
string new_name = n;
char illegal = Session::session_name_is_legal (new_name);
if (illegal) {
PBD::warning << (string_compose (_("To ensure compatibility with various systems\n"
"session names may not contain a '%1' character"), illegal)) << endmsg;
return -1;
}
switch (session->rename (new_name)) {
case -1:
PBD::warning << (_("That name is already in use by another directory/folder. Please try again.")) << endmsg;
break;
case 0:
return 0;
break;
default:
PBD::warning << (_("Renaming this session failed.\nThings could be seriously messed up at this point")) << endmsg;
break;
}
return -1;
}
uint32_t
OSC::get_sid (boost::shared_ptr<ARDOUR::Stripable> strip, lo_address addr)
{

View File

@ -493,6 +493,7 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
PATH_CALLBACK1_MSG(jog_mode,f);
PATH_CALLBACK1_MSG(bank_delta,f);
PATH_CALLBACK1_MSG(use_group,f);
PATH_CALLBACK1_MSG_s(name_session,s);
PATH_CALLBACK1_MSG_s(sel_group,s);
PATH_CALLBACK1_MSG_s(sel_rename,s);
PATH_CALLBACK1_MSG_s(sel_comment,s);
@ -688,6 +689,7 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
int refresh_surface (lo_message msg);
int custom_clear (lo_message msg);
int custom_mode (float state, lo_message msg);
int name_session (char *n, lo_message msg);
// select
int sel_send_pagesize (uint32_t size, lo_message msg);
int sel_send_page (int page, lo_message msg);