aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/macros/macromanager.cpp
diff options
context:
space:
mode:
authorNicolas Arnaud-Cormos <[email protected]>2011-02-07 11:34:02 +0100
committercon <[email protected]>2011-02-07 14:26:10 +0100
commitacf607f0093475eb9e073e0520151e0a2ac0ef65 (patch)
treef25bb5925c7c5a0648072dc98b611b153164bbca /src/plugins/macros/macromanager.cpp
parent23e024de640bd3d1983e655e2733e03ef8c0fa60 (diff)
The macros plugin use a directory in userResourcePath.
It is not possible to manage different directory for the macro plugin, it uses the user resource path per default. This change cleans a lot of code, specially we don't need any specific settings for the macro plugin, and the option page is more simple. Merge-request: 240 Reviewed-by: con <[email protected]>
Diffstat (limited to 'src/plugins/macros/macromanager.cpp')
-rw-r--r--src/plugins/macros/macromanager.cpp104
1 files changed, 20 insertions, 84 deletions
diff --git a/src/plugins/macros/macromanager.cpp b/src/plugins/macros/macromanager.cpp
index 600544ed704..f7d7e8f0254 100644
--- a/src/plugins/macros/macromanager.cpp
+++ b/src/plugins/macros/macromanager.cpp
@@ -36,7 +36,6 @@
#include "macrosconstants.h"
#include "macroevent.h"
#include "macro.h"
-#include "macrosettings.h"
#include "imacrohandler.h"
#include "savedialog.h"
#include "actionmacrohandler.h"
@@ -63,7 +62,6 @@
#include <QtCore/QList>
#include <QtGui/QShortcut>
-#include <QtGui/QKeySequence>
#include <QtGui/QMainWindow>
#include <QtGui/QAction>
#include <QtGui/QFileDialog>
@@ -107,7 +105,6 @@ public:
MacroManagerPrivate(MacroManager *qq);
MacroManager *q;
- MacroSettings settings;
QMap<QString, Macro *> macros;
Macro *currentMacro;
bool isRecording;
@@ -120,10 +117,8 @@ public:
TextEditorMacroHandler *textEditorHandler;
FindMacroHandler *findHandler;
- void init();
- void appendDirectory(const QString &directory);
- void removeDirectory(const QString &directory);
- void addMacro(Macro *macro, QKeySequence ks=QKeySequence());
+ void initialize();
+ void addMacro(Macro *macro);
void removeMacro(const QString &name);
void changeMacroDescription(Macro *macro, const QString &description);
@@ -137,23 +132,20 @@ MacroManager::MacroManagerPrivate::MacroManagerPrivate(MacroManager *qq):
isRecording(false),
mapper(new QSignalMapper(qq))
{
- settings.fromSettings(Core::ICore::instance()->settings());
-
connect(mapper, SIGNAL(mapped(QString)), q, SLOT(executeMacro(QString)));
- // Load/unload macros
- foreach (const QString &dir, settings.directories)
- appendDirectory(dir);
+ // Load existing macros
+ initialize();
actionHandler = new ActionMacroHandler;
textEditorHandler = new TextEditorMacroHandler;
findHandler = new FindMacroHandler;
}
-void MacroManager::MacroManagerPrivate::appendDirectory(const QString &directory)
+void MacroManager::MacroManagerPrivate::initialize()
{
macros.clear();
- QDir dir(directory);
+ QDir dir(q->macrosDirectory());
QStringList filter;
filter << QString("*.")+Constants::M_EXTENSION;
QStringList files = dir.entryList(filter, QDir::Files);
@@ -162,32 +154,11 @@ void MacroManager::MacroManagerPrivate::appendDirectory(const QString &directory
QString fileName = dir.absolutePath()+"/"+name;
Macro *macro = new Macro;
macro->loadHeader(fileName);
-
- // Create shortcut
- QKeySequence ks;
- if (settings.shortcuts.contains(macro->displayName()))
- ks.fromString(settings.shortcuts.value(macro->displayName()).toString());
-
- addMacro(macro, ks);
- }
-}
-
-void MacroManager::MacroManagerPrivate::removeDirectory(const QString &directory)
-{
- QMapIterator<QString, Macro *> it(macros);
- QDir dir(directory);
- QStringList removeList;
- while (it.hasNext()) {
- it.next();
- QFileInfo fileInfo(it.value()->fileName());
- if (fileInfo.absoluteDir() == dir.absolutePath())
- removeList.append(it.key());
+ addMacro(macro);
}
- foreach (const QString &name, removeList)
- removeMacro(name);
}
-void MacroManager::MacroManagerPrivate::addMacro(Macro *macro, QKeySequence ks)
+void MacroManager::MacroManagerPrivate::addMacro(Macro *macro)
{
// Add sortcut
Core::Context context(TextEditor::Constants::C_TEXTEDITOR);
@@ -196,9 +167,7 @@ void MacroManager::MacroManagerPrivate::addMacro(Macro *macro, QKeySequence ks)
QShortcut *shortcut = new QShortcut(core->mainWindow());
shortcut->setWhatsThis(macro->description());
const QString macroId = QLatin1String(Constants::PREFIX_MACRO) + macro->displayName();
- Core::Command *command = am->registerShortcut(shortcut, macroId, context);
- if (!ks.isEmpty())
- command->setDefaultKeySequence(ks);
+ am->registerShortcut(shortcut, macroId, context);
connect(shortcut, SIGNAL(activated()), mapper, SLOT(map()));
mapper->setMapping(shortcut, macro->displayName());
@@ -274,22 +243,8 @@ void MacroManager::MacroManagerPrivate::showSaveDialog()
if (dialog.name().isEmpty())
return;
- // Check if there's a default directory
- // If not, ask a directory to the user
- QString directory = settings.defaultDirectory;
- QDir dir(directory);
- if (directory.isEmpty() || !dir.exists()) {
- directory = QFileDialog::getExistingDirectory(
- mainWindow,
- tr("Choose a default macro directory"),
- QDir::homePath());
- if (directory.isNull())
- return;
- settings.directories.append(directory);
- settings.defaultDirectory= directory;
- q->saveSettings();
- }
- QString fileName = directory + '/' + dialog.name()
+ // Save in the resource path
+ QString fileName = q->macrosDirectory() + '/' + dialog.name()
+ '.' + Constants::M_EXTENSION;
currentMacro->setDescription(dialog.description());
currentMacro->save(fileName);
@@ -324,11 +279,6 @@ MacroManager::~MacroManager()
delete d;
}
-const MacroSettings &MacroManager::settings() const
-{
- return d->settings;
-}
-
void MacroManager::startMacro()
{
d->isRecording = true;
@@ -397,30 +347,12 @@ bool MacroManager::executeMacro(const QString &name)
return true;
}
-void MacroManager::appendDirectory(const QString &directory)
-{
- d->appendDirectory(directory);
- d->settings.directories.append(directory);
-}
-
-void MacroManager::removeDirectory(const QString &directory)
-{
- d->removeDirectory(directory);
- d->settings.directories.removeAll(directory);
-}
-
-void MacroManager::setDefaultDirectory(const QString &directory)
-{
- d->settings.defaultDirectory = directory;
-}
-
void MacroManager::deleteMacro(const QString &name)
{
Macro *macro = d->macros.value(name);
if (macro) {
QString fileName = macro->fileName();
d->removeMacro(name);
- d->settings.shortcuts.remove(name);
QFile::remove(fileName);
}
}
@@ -430,11 +362,6 @@ const QMap<QString,Macro*> &MacroManager::macros() const
return d->macros;
}
-void MacroManager::saveSettings()
-{
- d->settings.toSettings(Core::ICore::instance()->settings());
-}
-
void MacroManager::registerMacroHandler(IMacroHandler *handler)
{
d->handlers.prepend(handler);
@@ -461,3 +388,12 @@ void Macros::MacroManager::saveLastMacro()
if (d->currentMacro->events().count())
d->showSaveDialog();
}
+
+QString Macros::MacroManager::macrosDirectory() const
+{
+ const QString &path =
+ Core::ICore::instance()->userResourcePath() + QLatin1String("/macros");
+ if (QFile::exists(path) || QDir().mkpath(path))
+ return path;
+ return QString();
+}