aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/macros/macroevent.cpp
diff options
context:
space:
mode:
authorNicolas Arnaud-Cormos <nicolas@kdab.com>2010-12-20 10:35:30 +0100
committerTobias Hunger <tobias.hunger@nokia.com>2010-12-20 11:16:15 +0100
commitf5fbbbfd4f247ac405a50b45bb8cfc0ad97bb305 (patch)
tree60a7419d777e9f879712bf470a6481b41200ba55 /src/plugins/macros/macroevent.cpp
parent11e21e16c17964f7734ef9c8b97e3225553b891a (diff)
New plugin: plugin macro
This plugin let the user record and replay some macros: * 3 handlers: action, find and texteditor * almost all texteditor and cpp actions recorded * options page to set the directories where the macros are stored * optional dialog to give a name and comment at the end of a macro * locator integration to play a macro * shortcuts assignment to macro The most important change outside the plugin macros is the isScriptable method for command: All scriptable commands can be stored in a macro. Merge-request: 2176 Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
Diffstat (limited to 'src/plugins/macros/macroevent.cpp')
-rw-r--r--src/plugins/macros/macroevent.cpp135
1 files changed, 135 insertions, 0 deletions
diff --git a/src/plugins/macros/macroevent.cpp b/src/plugins/macros/macroevent.cpp
new file mode 100644
index 0000000000..68916952a8
--- /dev/null
+++ b/src/plugins/macros/macroevent.cpp
@@ -0,0 +1,135 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nicolas Arnaud-Cormos.
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#include "macroevent.h"
+
+using namespace Macros;
+
+/*!
+ \class Macros::MacroEvent
+ \brief Represents an event in a macro
+
+ An event stores informations so it can be replayed. An event can be:
+ \list
+ \o menu action
+ \o key event on an editor
+ \o find/replace usage
+ \o ...
+ \endlist
+
+ The information are stored in a map of QVariants (using quint8 for keys).
+*/
+
+class MacroEvent::MacroEventPrivate
+{
+public:
+ QByteArray id;
+ QMap<quint8, QVariant> values;
+};
+
+
+// ---------- MacroEvent ------------
+
+MacroEvent::MacroEvent():
+ d(new MacroEventPrivate)
+{
+}
+
+MacroEvent::MacroEvent(const MacroEvent &other):
+ d(new MacroEventPrivate)
+{
+ d->id = other.d->id;
+ d->values = other.d->values;
+}
+
+MacroEvent::~MacroEvent()
+{
+ delete d;
+}
+
+MacroEvent& MacroEvent::operator=(const MacroEvent &other)
+{
+ if (this == &other)
+ return *this;
+ d->id = other.d->id;
+ d->values = other.d->values;
+ return *this;
+}
+
+QVariant MacroEvent::value(quint8 id) const
+{
+ if (d->values.contains(id))
+ return d->values.value(id);
+ return QVariant();
+}
+
+void MacroEvent::setValue(quint8 id, const QVariant &value)
+{
+ d->values[id] = value;
+}
+
+void MacroEvent::load(QDataStream &stream)
+{
+ stream >> d->id;
+ int count;
+ stream >> count;
+ quint8 id;
+ QVariant value;
+ for (int i = 0; i < count; ++i) {
+ stream >> id;
+ stream >> value;
+ d->values[id] = value;
+ }
+}
+
+void MacroEvent::save(QDataStream &stream) const
+{
+ stream << d->id;
+ stream << d->values.count();
+ QMapIterator<quint8, QVariant> i(d->values);
+ while (i.hasNext()) {
+ i.next();
+ stream << i.key() << i.value();
+ }
+}
+
+const QByteArray & MacroEvent::id() const
+{
+ return d->id;
+}
+
+void MacroEvent::setId(const char *id)
+{
+ d->id = id;
+}
+
+QMap<quint8, QVariant> MacroEvent::values() const
+{
+ return d->values;
+}