Add optional local aliases

git-svn-id: file:///home/vcs/svn/jsweeper/trunk@9 6611ac79-6612-48ef-a1e9-b906f853523e
master
petern 2009-11-27 17:18:46 +00:00
parent f9298c351d
commit 242d908852
4 changed files with 43 additions and 17 deletions

View File

@ -22,6 +22,9 @@ void Config::Read()
CellPadding = group->GetValue("cellpadding", 3);
FontSize = group->GetValue("fontsize", 10);
FontFace = group->GetValue("fontface", "Sans");
group = ini.GetGroup("general");
LocalAliases = group->GetValue("localaliases", true);
SeparateByPortType = group->GetValue("separatebyporttype", false);
ExpandClients = group->GetValue("expandclients", true);
ExpandGroups = group->GetValue("expandgroups", false);
@ -55,6 +58,9 @@ void Config::Write()
group->SetValue("cellpadding", CellPadding);
group->SetValue("fontsize", FontSize);
group->SetValue("fontface", FontFace);
group = ini.GetGroup("general");
group->SetValue("localaliases", LocalAliases);
group->SetValue("separatebyporttype", SeparateByPortType);
group->SetValue("expandclients", ExpandClients);
group->SetValue("expandgroups", ExpandGroups);

View File

@ -15,6 +15,7 @@ public:
int FontSize;
std::string FontFace;
bool LocalAliases;
bool SeparateByPortType;
bool ExpandClients;
bool ExpandGroups;

View File

@ -27,7 +27,7 @@ void PortManager::Refresh()
const char **connections = jack_port_get_all_connections(client, port);
if (connections != NULL) {
for (int j = 0; connections[j] != NULL; ++j) {
pm.Connect(port, jack_port_by_name(client, connections[j]));
Connect(port, jack_port_by_name(client, connections[j]));
}
free(connections);
}
@ -44,25 +44,30 @@ void PortManager::Add(jack_port_t *port)
std::string group_name;
std::string port_name;
char *aliases[2];
aliases[0] = new char[jack_port_name_size()];
aliases[1] = new char[jack_port_name_size()];
int num_aliases = jack_port_get_aliases(port, aliases);
if (cfg.LocalAliases) {
jack_name = GetAlias(jack_name);
} else {
char *aliases[2];
aliases[0] = new char[jack_port_name_size()];
aliases[1] = new char[jack_port_name_size()];
if (num_aliases < 2) {
pm.AliasBay(port, num_aliases, aliases);
num_aliases = jack_port_get_aliases(port, aliases);
int num_aliases = jack_port_get_aliases(port, aliases);
if (num_aliases < 2) {
AliasBay(port, num_aliases, aliases);
num_aliases = jack_port_get_aliases(port, aliases);
}
if (num_aliases == 2) {
jack_name = aliases[1];
} else if (num_aliases == 1) {
jack_name = aliases[0];
}
delete aliases[0];
delete aliases[1];
}
if (num_aliases == 2) {
jack_name = aliases[1];
} else if (num_aliases == 1) {
jack_name = aliases[0];
}
delete aliases[0];
delete aliases[1];
size_t pos1 = jack_name.find(':');
size_t pos2 = jack_name.find('.', pos1);
@ -320,6 +325,19 @@ void PortManager::ToggleConnect(PortGroup *a, PortGroup *b)
}
}
std::string PortManager::GetAlias(std::string port_name)
{
AliasList::iterator it;
for (it = m_aliases.begin(); it != m_aliases.end(); ++it) {
Alias &a = *it;
if (a.name == port_name) {
return a.alias;
}
}
return port_name;
}
void PortManager::AliasBay(jack_port_t *port, int num_aliases, char *aliases[2])
{
std::string port_name = jack_port_name(port);

View File

@ -38,6 +38,7 @@ public:
void ToggleConnect(PortGroup *a, Port *b);
void ToggleConnect(PortGroup *a, PortGroup *b);
std::string GetAlias(std::string port_name);
void AliasBay(jack_port_t *port, int num_aliases, char *aliases[2]);
void AliasClear();
void AliasAdd(std::string source, std::string target);