diff --git a/src/plugins/macros/macromanager.cpp b/src/plugins/macros/macromanager.cpp
index 2e68787904c..600544ed704 100644
--- a/src/plugins/macros/macromanager.cpp
+++ b/src/plugins/macros/macromanager.cpp
@@ -271,12 +271,6 @@ void MacroManager::MacroManagerPrivate::showSaveDialog()
QMainWindow *mainWindow = Core::ICore::instance()->mainWindow();
SaveDialog dialog(mainWindow);
if (dialog.exec()) {
- bool changed = false;
- if (settings.showSaveDialog == dialog.hideSaveDialog()) {
- settings.showSaveDialog = !dialog.hideSaveDialog();
- changed = true;
- }
-
if (dialog.name().isEmpty())
return;
@@ -293,16 +287,13 @@ void MacroManager::MacroManagerPrivate::showSaveDialog()
return;
settings.directories.append(directory);
settings.defaultDirectory= directory;
- changed = true;
+ q->saveSettings();
}
QString fileName = directory + '/' + dialog.name()
+ '.' + Constants::M_EXTENSION;
currentMacro->setDescription(dialog.description());
currentMacro->save(fileName);
addMacro(currentMacro);
-
- if (changed)
- q->saveSettings();
}
}
@@ -350,6 +341,7 @@ void MacroManager::startMacro()
am->command(Constants::START_MACRO)->action()->setEnabled(false);
am->command(Constants::END_MACRO)->action()->setEnabled(true);
am->command(Constants::EXECUTE_LAST_MACRO)->action()->setEnabled(false);
+ am->command(Constants::SAVE_LAST_MACRO)->action()->setEnabled(false);
foreach (IMacroHandler *handler, d->handlers)
handler->startRecording(d->currentMacro);
@@ -371,13 +363,11 @@ void MacroManager::endMacro()
am->command(Constants::START_MACRO)->action()->setEnabled(true);
am->command(Constants::END_MACRO)->action()->setEnabled(false);
am->command(Constants::EXECUTE_LAST_MACRO)->action()->setEnabled(true);
+ am->command(Constants::SAVE_LAST_MACRO)->action()->setEnabled(true);
foreach (IMacroHandler *handler, d->handlers)
handler->endRecordingMacro(d->currentMacro);
d->isRecording = false;
-
- if (d->currentMacro->events().count() && d->settings.showSaveDialog)
- d->showSaveDialog();
}
void MacroManager::executeLastMacro()
@@ -400,6 +390,10 @@ bool MacroManager::executeMacro(const QString &name)
if (d->currentMacro && d->currentMacro->displayName().isEmpty())
delete d->currentMacro;
d->currentMacro = macro;
+
+ Core::ActionManager *am = Core::ICore::instance()->actionManager();
+ am->command(Constants::SAVE_LAST_MACRO)->action()->setEnabled(true);
+
return true;
}
@@ -420,11 +414,6 @@ void MacroManager::setDefaultDirectory(const QString &directory)
d->settings.defaultDirectory = directory;
}
-void MacroManager::showSaveDialog(bool value)
-{
- d->settings.showSaveDialog = value;
-}
-
void MacroManager::deleteMacro(const QString &name)
{
Macro *macro = d->macros.value(name);
@@ -466,3 +455,9 @@ void MacroManager::changeMacro(const QString &name, const QString &description)
if (macro->description() != description)
d->changeMacroDescription(macro, description);
}
+
+void Macros::MacroManager::saveLastMacro()
+{
+ if (d->currentMacro->events().count())
+ d->showSaveDialog();
+}
diff --git a/src/plugins/macros/macromanager.h b/src/plugins/macros/macromanager.h
index 0e7883e0a61..e1713218182 100644
--- a/src/plugins/macros/macromanager.h
+++ b/src/plugins/macros/macromanager.h
@@ -71,6 +71,7 @@ public slots:
void startMacro();
void endMacro();
void executeLastMacro();
+ void saveLastMacro();
bool executeMacro(const QString &name);
protected:
@@ -81,7 +82,6 @@ protected:
void appendDirectory(const QString &directory);
void removeDirectory(const QString &directory);
void setDefaultDirectory(const QString &directory);
- void showSaveDialog(bool value);
void saveSettings();
private:
diff --git a/src/plugins/macros/macrooptionswidget.cpp b/src/plugins/macros/macrooptionswidget.cpp
index e2c2db854a5..7d1ca18d473 100644
--- a/src/plugins/macros/macrooptionswidget.cpp
+++ b/src/plugins/macros/macrooptionswidget.cpp
@@ -104,8 +104,6 @@ void MacroOptionsWidget::setSettings(const MacroSettings &s)
m_directories.clear();
ui->treeWidget->clear();
- ui->showSaveDialog->setChecked(s.showSaveDialog);
-
// Create the treeview
foreach (const QString &dir, s.directories)
appendDirectory(dir, s.defaultDirectory==dir);
@@ -231,8 +229,6 @@ void MacroOptionsWidget::apply()
foreach (const QString &dir, dirToRemove)
MacroManager::instance()->removeDirectory(dir);
- MacroManager::instance()->showSaveDialog(ui->showSaveDialog->checkState()==Qt::Checked);
-
MacroManager::instance()->saveSettings();
// Reinitialize the page
diff --git a/src/plugins/macros/macrooptionswidget.ui b/src/plugins/macros/macrooptionswidget.ui
index 57372c037b1..b4c749955f6 100644
--- a/src/plugins/macros/macrooptionswidget.ui
+++ b/src/plugins/macros/macrooptionswidget.ui
@@ -20,7 +20,7 @@
Preferences
- -
+
-
@@ -33,7 +33,7 @@
- -
+
-
@@ -43,14 +43,14 @@
- -
+
-
Add
- -
+
-
Qt::ElideLeft
@@ -87,14 +87,14 @@
- -
+
-
Default Directory
- -
+
-
Qt::Horizontal
@@ -107,20 +107,13 @@
- -
+
-
Remove
- -
-
-
- Show the save dialog at the end of the macro
-
-
-
diff --git a/src/plugins/macros/macrosconstants.h b/src/plugins/macros/macrosconstants.h
index 73b1fb3cf09..12b2b00572b 100644
--- a/src/plugins/macros/macrosconstants.h
+++ b/src/plugins/macros/macrosconstants.h
@@ -42,6 +42,7 @@ const char * const M_TOOLS_MACRO = "Macros.Tools.Menu";
const char * const START_MACRO = "Macros.StartMacro";
const char * const END_MACRO = "Macros.EndMacro";
const char * const EXECUTE_LAST_MACRO = "Macros.ExecuteLastMacro";
+const char * const SAVE_LAST_MACRO = "Macros.SaveLastMacro";
const char * const PREFIX_MACRO = "Macros.";
const char * const M_OPTIONS_PAGE = "Macros";
diff --git a/src/plugins/macros/macrosettings.cpp b/src/plugins/macros/macrosettings.cpp
index 1e75d5e7f64..c4191e995ba 100644
--- a/src/plugins/macros/macrosettings.cpp
+++ b/src/plugins/macros/macrosettings.cpp
@@ -39,13 +39,11 @@ using namespace Macros::Internal;
static const char GROUP[] = "Macro";
static const char DEFAULT_DIRECTORY[] = "DefaultDirectory";
-static const char SHOW_SAVE_DIALOG[] = "ShowSaveDialog";
static const char DIRECTORIES[] = "Directories";
static const char SHORTCUTS[] = "Shortcuts";
-MacroSettings::MacroSettings():
- showSaveDialog(false)
+MacroSettings::MacroSettings()
{
}
@@ -53,7 +51,6 @@ void MacroSettings::toSettings(QSettings *s) const
{
s->beginGroup(QLatin1String(GROUP));
s->setValue(QLatin1String(DEFAULT_DIRECTORY), defaultDirectory);
- s->setValue(QLatin1String(SHOW_SAVE_DIALOG), showSaveDialog);
s->setValue(QLatin1String(DIRECTORIES), directories);
s->setValue(QLatin1String(SHORTCUTS), shortcuts);
s->endGroup();
@@ -63,7 +60,6 @@ void MacroSettings::fromSettings(QSettings *s)
{
s->beginGroup(QLatin1String(GROUP));
defaultDirectory = s->value(QLatin1String(DEFAULT_DIRECTORY), QString("")).toString();
- showSaveDialog = s->value(QLatin1String(SHOW_SAVE_DIALOG), false).toBool();
directories = s->value(QLatin1String(DIRECTORIES)).toStringList();
shortcuts = s->value(QLatin1String(SHORTCUTS)).toMap();
s->endGroup();
@@ -73,6 +69,5 @@ bool MacroSettings::equals(const MacroSettings &ms) const
{
return defaultDirectory == ms.defaultDirectory &&
shortcuts == ms.shortcuts &&
- directories == ms.directories &&
- showSaveDialog == ms.showSaveDialog;
+ directories == ms.directories;
}
diff --git a/src/plugins/macros/macrosettings.h b/src/plugins/macros/macrosettings.h
index e72b4c69407..f8a490d282c 100644
--- a/src/plugins/macros/macrosettings.h
+++ b/src/plugins/macros/macrosettings.h
@@ -58,7 +58,6 @@ public:
QString defaultDirectory;
QStringList directories;
QMap shortcuts;
- bool showSaveDialog;
};
inline bool operator==(const MacroSettings &m1, const MacroSettings &m2) { return m1.equals(m2); }
diff --git a/src/plugins/macros/macrosplugin.cpp b/src/plugins/macros/macrosplugin.cpp
index add7629d1f4..fad8a3cd66d 100644
--- a/src/plugins/macros/macrosplugin.cpp
+++ b/src/plugins/macros/macrosplugin.cpp
@@ -115,6 +115,12 @@ bool MacrosPlugin::initialize(const QStringList &arguments, QString *error_messa
mmacrotools->addAction(command);
connect(executeLastMacro, SIGNAL(triggered()), m_macroManager, SLOT(executeLastMacro()));
+ QAction *saveLastMacro = new QAction(tr("Save Last Macro"), this);
+ saveLastMacro->setEnabled(false);
+ command = am->registerAction(saveLastMacro, Constants::SAVE_LAST_MACRO, textContext);
+ mmacrotools->addAction(command);
+ connect(saveLastMacro, SIGNAL(triggered()), m_macroManager, SLOT(saveLastMacro()));
+
return true;
}
diff --git a/src/plugins/macros/savedialog.cpp b/src/plugins/macros/savedialog.cpp
index 7b68ac69e58..d6a8ddfbe1c 100644
--- a/src/plugins/macros/savedialog.cpp
+++ b/src/plugins/macros/savedialog.cpp
@@ -62,8 +62,3 @@ QString SaveDialog::description() const
{
return ui->description->text();
}
-
-bool SaveDialog::hideSaveDialog() const
-{
- return ui->hideSaveDialog->isChecked();
-}
diff --git a/src/plugins/macros/savedialog.h b/src/plugins/macros/savedialog.h
index 7b389fb8bbc..fb27589f1a7 100644
--- a/src/plugins/macros/savedialog.h
+++ b/src/plugins/macros/savedialog.h
@@ -53,7 +53,6 @@ public:
QString name() const;
QString description() const;
- bool hideSaveDialog() const;
private:
Ui::SaveDialog *ui;
diff --git a/src/plugins/macros/savedialog.ui b/src/plugins/macros/savedialog.ui
index fbb7659bb92..1695cfe097f 100644
--- a/src/plugins/macros/savedialog.ui
+++ b/src/plugins/macros/savedialog.ui
@@ -7,7 +7,7 @@
0
0
219
- 116
+ 91
@@ -42,13 +42,6 @@
-
-
-
- Don't show this dialog again
-
-
-
- -
QDialogButtonBox::Cancel|QDialogButtonBox::Save
@@ -60,7 +53,6 @@
name
description
- hideSaveDialog