Add optional local aliases
git-svn-id: file:///home/vcs/svn/jsweeper/trunk@9 6611ac79-6612-48ef-a1e9-b906f853523e
This commit is contained in:
@@ -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);
|
||||
|
@@ -15,6 +15,7 @@ public:
|
||||
int FontSize;
|
||||
std::string FontFace;
|
||||
|
||||
bool LocalAliases;
|
||||
bool SeparateByPortType;
|
||||
bool ExpandClients;
|
||||
bool ExpandGroups;
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user