]> git.sven.stormbind.net Git - sven/vym.git/blobdiff - src/shortcuts.cpp
New upstream version 2.9.22
[sven/vym.git] / src / shortcuts.cpp
diff --git a/src/shortcuts.cpp b/src/shortcuts.cpp
new file mode 100644 (file)
index 0000000..7858fba
--- /dev/null
@@ -0,0 +1,106 @@
+#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;
+    }
+}