From 242d9088521a07a6f3918e9f0d6c3a7980708135 Mon Sep 17 00:00:00 2001 From: petern Date: Fri, 27 Nov 2009 17:18:46 +0000 Subject: [PATCH] Add optional local aliases git-svn-id: file:///home/vcs/svn/jsweeper/trunk@9 6611ac79-6612-48ef-a1e9-b906f853523e --- src/config.cpp | 6 ++++++ src/config.h | 1 + src/portmanager.cpp | 52 ++++++++++++++++++++++++++++++--------------- src/portmanager.h | 1 + 4 files changed, 43 insertions(+), 17 deletions(-) diff --git a/src/config.cpp b/src/config.cpp index db3a42c..eccef32 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -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); diff --git a/src/config.h b/src/config.h index 8c931ad..e2e865f 100644 --- a/src/config.h +++ b/src/config.h @@ -15,6 +15,7 @@ public: int FontSize; std::string FontFace; + bool LocalAliases; bool SeparateByPortType; bool ExpandClients; bool ExpandGroups; diff --git a/src/portmanager.cpp b/src/portmanager.cpp index 2170760..a3d4af2 100644 --- a/src/portmanager.cpp +++ b/src/portmanager.cpp @@ -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); diff --git a/src/portmanager.h b/src/portmanager.h index 8aeb6ed..d51c3bc 100644 --- a/src/portmanager.h +++ b/src/portmanager.h @@ -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);