--- /dev/null
+#include <QDebug>
+#include <QMultiMap>
+
+#include <iostream>
+using namespace std;
+
+#include "shortcuts.h"
+
+/////////////////////////////////////////////////////////////////
+// KeySwitch
+/////////////////////////////////////////////////////////////////
+KeySwitch::KeySwitch(const QString &kIdentifier, const QString &kName,
+ const QString &kGroup, const QString &kTag,
+ const QKeySequence &kseq)
+{
+ identifier = kIdentifier;
+ name = kName;
+ group = kGroup;
+ tag = kTag;
+ keySequence = kseq;
+}
+
+/////////////////////////////////////////////////////////////////
+// Switchboard
+/////////////////////////////////////////////////////////////////
+Switchboard::Switchboard() {}
+
+void Switchboard::addGroup(QString gIdentifier, QString gName)
+{
+ if (groups.contains(gIdentifier)) {
+ qDebug() << "Warning switchboard: Shortcut group " << gIdentifier
+ << " already exists";
+ return;
+ }
+ groups.insert(gIdentifier, gName);
+}
+
+void Switchboard::addSwitch(QString identifier, QString scope, QAction *action,
+ QString tag)
+{
+ if (!switches.contains(identifier)) {
+ KeySwitch ksw(identifier, action->text(), scope, tag,
+ action->shortcut());
+ switches.insert(scope, ksw);
+ }
+ else
+ qDebug()
+ << "Warning switchboard::addSwitch warning: Existing idenifier "
+ << identifier;
+}
+
+QString Switchboard::getASCII()
+{
+ QString s;
+ QString g;
+ foreach (g, switches.uniqueKeys()) {
+ s += "Scope " + g + ":\n";
+ QList<KeySwitch> values = switches.values(g);
+ for (int i = 0; i < values.size(); ++i) {
+ QString desc = values.at(i).name;
+ QString sc = values.at(i).keySequence.toString();
+ desc = desc.remove('&');
+ desc = desc.remove("...");
+ s += QString(" %1: %2\n").arg(sc, 12).arg(desc);
+ }
+ s += "\n";
+ }
+
+ /*
+ foreach (g, actions.uniqueKeys())
+ {
+ s += g +"\n";
+ QList <QAction*> values=actions.values(g);
+ for (int i=0;i<values.size();++i)
+ {
+ QString desc=values.at(i)->text();
+ QString sc=values.at(i)->shortcut().toString();
+ desc=desc.remove('&');
+ desc=desc.remove("...");
+ s+= QString(" %1: %2\n").arg(sc,12).arg(desc);
+ }
+ }
+ */
+ return s;
+}
+
+void Switchboard::printASCII() { cout << qPrintable(getASCII()); }
+
+void Switchboard::printLaTeX()
+{
+ QString g;
+ foreach (g, actions.uniqueKeys()) {
+ cout << "Group: " << qPrintable(g) << "\\\\ \\hline" << endl;
+ QList<QAction *> values = actions.values(g);
+ for (int i = 0; i < values.size(); ++i)
+ if (!values.at(i)->shortcut().toString().isEmpty()) {
+ QString desc = values.at(i)->text();
+ QString sc = values.at(i)->shortcut().toString();
+ desc = desc.remove('&');
+ desc = desc.remove("...");
+ cout << qPrintable(QString(" %1& %2").arg(sc, 12).arg(desc))
+ << endl;
+ }
+ cout << endl;
+ }
+}