forked from qt-creator/qt-creator
JsonWizard: Move code for opening files into JsonWizard
Move code opening files and projects directly into the JsonWizard. It makes no sense to keep reimplementing this functionality in generators. Change-Id: Ib4686a262fa9b2c78028146d138c5bba5d5b604a Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -32,6 +32,10 @@
|
|||||||
|
|
||||||
#include "jsonwizardgeneratorfactory.h"
|
#include "jsonwizardgeneratorfactory.h"
|
||||||
|
|
||||||
|
#include "../project.h"
|
||||||
|
#include "../projectexplorer.h"
|
||||||
|
|
||||||
|
#include <coreplugin/editormanager/editormanager.h>
|
||||||
#include <coreplugin/messagemanager.h>
|
#include <coreplugin/messagemanager.h>
|
||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
@@ -223,6 +227,8 @@ void JsonWizard::accept()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
emit allDone(m_files);
|
emit allDone(m_files);
|
||||||
|
|
||||||
|
openFiles(m_files);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonWizard::handleNewPages(int pageId)
|
void JsonWizard::handleNewPages(int pageId)
|
||||||
@@ -239,4 +245,59 @@ void JsonWizard::handleError(const QString &message)
|
|||||||
Core::MessageManager::write(message, Core::MessageManager::ModeSwitch);
|
Core::MessageManager::write(message, Core::MessageManager::ModeSwitch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void JsonWizard::openFiles(const JsonWizard::GeneratorFiles &files)
|
||||||
|
{
|
||||||
|
QString errorMessage;
|
||||||
|
bool openedSomething = false;
|
||||||
|
foreach (const JsonWizard::GeneratorFile &f, files) {
|
||||||
|
const Core::GeneratedFile &file = f.file;
|
||||||
|
if (!QFileInfo(file.path()).exists()) {
|
||||||
|
errorMessage = QCoreApplication::translate("ProjectExplorer::JsonWizard",
|
||||||
|
"\"%1\" does not exist in the file system.")
|
||||||
|
.arg(QDir::toNativeSeparators(file.path()));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (file.attributes() & Core::GeneratedFile::OpenProjectAttribute) {
|
||||||
|
Project *project = ProjectExplorerPlugin::instance()->openProject(file.path(), &errorMessage);
|
||||||
|
if (!project) {
|
||||||
|
if (errorMessage.isEmpty()) {
|
||||||
|
errorMessage = QCoreApplication::translate("ProjectExplorer::JsonWizard",
|
||||||
|
"Failed to open \"%1\" as a project.")
|
||||||
|
.arg(QDir::toNativeSeparators(file.path()));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
openedSomething = true;
|
||||||
|
}
|
||||||
|
if (file.attributes() & Core::GeneratedFile::OpenEditorAttribute) {
|
||||||
|
if (!Core::EditorManager::openEditor(file.path(), file.editorId())) {
|
||||||
|
errorMessage = QCoreApplication::translate("ProjectExplorer::JsonWizard",
|
||||||
|
"Failed to open an editor for \"%1\".")
|
||||||
|
.arg(QDir::toNativeSeparators(file.path()));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
openedSomething = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const QString path
|
||||||
|
= QDir::toNativeSeparators(m_expander.expand(value(QLatin1String("TargetPath")).toString()));
|
||||||
|
|
||||||
|
// Now try to find the project file and open
|
||||||
|
if (!openedSomething) {
|
||||||
|
errorMessage = QCoreApplication::translate("ProjectExplorer::JsonWizard",
|
||||||
|
"No file to open found in \"%1\".")
|
||||||
|
.arg(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!errorMessage.isEmpty()) {
|
||||||
|
const QString text = path.isEmpty() ? tr("Failed to open project.")
|
||||||
|
: tr("Failed to open project in \"%1\".").arg(path);
|
||||||
|
QMessageBox msgBox(QMessageBox::Warning, tr("Cannot Open Project"), text);
|
||||||
|
msgBox.setDetailedText(errorMessage);
|
||||||
|
msgBox.addButton(QMessageBox::Ok);
|
||||||
|
msgBox.exec();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ProjectExplorer
|
} // namespace ProjectExplorer
|
||||||
|
|||||||
@@ -101,6 +101,8 @@ private slots:
|
|||||||
void handleError(const QString &message);
|
void handleError(const QString &message);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void openFiles(const GeneratorFiles &files);
|
||||||
|
|
||||||
QList<JsonWizardGenerator *> m_generators;
|
QList<JsonWizardGenerator *> m_generators;
|
||||||
|
|
||||||
GeneratorFiles m_files;
|
GeneratorFiles m_files;
|
||||||
|
|||||||
@@ -210,25 +210,8 @@ bool JsonWizardFileGenerator::polish(const JsonWizard *wizard, Core::GeneratedFi
|
|||||||
bool JsonWizardFileGenerator::allDone(const JsonWizard *wizard, Core::GeneratedFile *file, QString *errorMessage)
|
bool JsonWizardFileGenerator::allDone(const JsonWizard *wizard, Core::GeneratedFile *file, QString *errorMessage)
|
||||||
{
|
{
|
||||||
Q_UNUSED(wizard);
|
Q_UNUSED(wizard);
|
||||||
if (file->attributes() & Core::GeneratedFile::OpenProjectAttribute) {
|
Q_UNUSED(file);
|
||||||
Project *project = ProjectExplorerPlugin::instance()->openProject(file->path(), errorMessage);
|
Q_UNUSED(errorMessage);
|
||||||
if (!project) {
|
|
||||||
*errorMessage = QCoreApplication::translate("ProjectExplorer::JsonWizard",
|
|
||||||
"Failed to open \"%1\" as a project.")
|
|
||||||
.arg(QDir::toNativeSeparators(file->path()));
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (file->attributes() & Core::GeneratedFile::OpenEditorAttribute) {
|
|
||||||
if (!Core::EditorManager::openEditor(file->path(), file->editorId())) {
|
|
||||||
if (errorMessage)
|
|
||||||
*errorMessage = QCoreApplication::translate("ProjectExplorer::JsonWizard",
|
|
||||||
"Failed to open an editor for \"%1\".")
|
|
||||||
.arg(QDir::toNativeSeparators(file->path()));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user