Register wizard windows so they appear in window list and get shortcuts

Change-Id: I69b3a49ba2e2162585502a523be835918b7b9533
Task-number: QTCREATORBUG-13766
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
This commit is contained in:
Eike Ziller
2015-01-05 11:12:39 +01:00
parent 98dbe9adca
commit 225e599c94
7 changed files with 29 additions and 3 deletions

View File

@@ -31,6 +31,7 @@
#include "basefilewizardfactory.h" #include "basefilewizardfactory.h"
#include "basefilewizard.h" #include "basefilewizard.h"
#include "icontext.h"
#include "icore.h" #include "icore.h"
#include "ifilewizardextension.h" #include "ifilewizardextension.h"
#include "mimedatabase.h" #include "mimedatabase.h"
@@ -220,6 +221,7 @@ void BaseFileWizardFactory::runWizard(const QString &path, QWidget *parent, cons
dialogParameterFlags, dialogParameterFlags,
extraValues))); extraValues)));
QTC_ASSERT(!wizard.isNull(), return); QTC_ASSERT(!wizard.isNull(), return);
ICore::registerWindow(wizard.data(), Context("Core.NewWizard"));
GeneratedFiles files; GeneratedFiles files;
// Run the wizard: Call generate files on switching to the first extension // Run the wizard: Call generate files on switching to the first extension

View File

@@ -33,6 +33,7 @@
#include <coreplugin/coreconstants.h> #include <coreplugin/coreconstants.h>
#include <coreplugin/documentmanager.h> #include <coreplugin/documentmanager.h>
#include <coreplugin/icontext.h>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
@@ -198,6 +199,7 @@ NewDialog::NewDialog(QWidget *parent) :
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
setWindowFlags(windowFlags()); setWindowFlags(windowFlags());
setAttribute(Qt::WA_DeleteOnClose); setAttribute(Qt::WA_DeleteOnClose);
ICore::registerWindow(this, Context("Core.NewDialog"));
m_ui->setupUi(this); m_ui->setupUi(this);
QPalette p = m_ui->frame->palette(); QPalette p = m_ui->frame->palette();
p.setColor(QPalette::Window, p.color(QPalette::Base)); p.setColor(QPalette::Window, p.color(QPalette::Base));

View File

@@ -743,7 +743,7 @@ void MainWindow::registerDefaultActions()
void MainWindow::newFile() void MainWindow::newFile()
{ {
showNewItemDialog(tr("New", "Title of dialog"), IWizardFactory::allWizardFactories(), QString()); showNewItemDialog(tr("New File or Project", "Title of dialog"), IWizardFactory::allWizardFactories(), QString());
} }
void MainWindow::openFile() void MainWindow::openFile()

View File

@@ -116,6 +116,11 @@ bool WindowSupport::eventFilter(QObject *obj, QEvent *event)
updateFullScreenAction(); updateFullScreenAction();
} else if (event->type() == QEvent::WindowActivate) { } else if (event->type() == QEvent::WindowActivate) {
WindowList::setActiveWindow(m_window); WindowList::setActiveWindow(m_window);
} else if (event->type() == QEvent::Hide) {
// minimized windows are hidden, but we still want to show them
WindowList::setWindowVisible(m_window, m_window->isMinimized());
} else if (event->type() == QEvent::Show) {
WindowList::setWindowVisible(m_window, true);
} }
return false; return false;
} }
@@ -165,6 +170,7 @@ void WindowList::addWindow(QWidget *window)
Context(Constants::C_GLOBAL)); Context(Constants::C_GLOBAL));
cmd->setAttribute(Command::CA_UpdateText); cmd->setAttribute(Command::CA_UpdateText);
ActionManager::actionContainer(Constants::M_WINDOW)->addAction(cmd, Constants::G_WINDOW_LIST); ActionManager::actionContainer(Constants::M_WINDOW)->addAction(cmd, Constants::G_WINDOW_LIST);
action->setVisible(window->isVisible() || window->isMinimized()); // minimized windows are hidden but should be shown
QObject::connect(window, &QWidget::windowTitleChanged, [window]() { WindowList::updateTitle(window); }); QObject::connect(window, &QWidget::windowTitleChanged, [window]() { WindowList::updateTitle(window); });
if (m_dockMenu) if (m_dockMenu)
m_dockMenu->addAction(action); m_dockMenu->addAction(action);
@@ -215,5 +221,13 @@ void WindowList::setActiveWindow(QWidget *window)
m_windowActions.at(i)->setChecked(m_windows.at(i) == window); m_windowActions.at(i)->setChecked(m_windows.at(i) == window);
} }
void WindowList::setWindowVisible(QWidget *window, bool visible)
{
int index = m_windows.indexOf(window);
QTC_ASSERT(index >= 0, return);
QTC_ASSERT(index < m_windowActions.size(), return);
m_windowActions.at(index)->setVisible(visible);
}
} // Internal } // Internal
} // Core } // Core

View File

@@ -50,6 +50,7 @@ public:
static void addWindow(QWidget *window); static void addWindow(QWidget *window);
static void removeWindow(QWidget *window); static void removeWindow(QWidget *window);
static void setActiveWindow(QWidget *window); static void setActiveWindow(QWidget *window);
static void setWindowVisible(QWidget *window, bool visible);
private: private:
static void activateWindow(QAction *action); static void activateWindow(QAction *action);

View File

@@ -37,6 +37,7 @@
#include "../projectexplorerconstants.h" #include "../projectexplorerconstants.h"
#include <coreplugin/coreconstants.h> #include <coreplugin/coreconstants.h>
#include <coreplugin/icontext.h>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/messagemanager.h> #include <coreplugin/messagemanager.h>
@@ -366,6 +367,7 @@ void JsonWizardFactory::runWizard(const QString &path, QWidget *parent, const QS
{ {
JsonWizard wizard(parent); JsonWizard wizard(parent);
wizard.setWindowIcon(icon()); wizard.setWindowIcon(icon());
wizard.setWindowTitle(displayName());
wizard.setValue(QStringLiteral("WizardDir"), m_wizardDir); wizard.setValue(QStringLiteral("WizardDir"), m_wizardDir);
Core::FeatureSet tmp = requiredFeatures(); Core::FeatureSet tmp = requiredFeatures();
@@ -434,10 +436,12 @@ void JsonWizardFactory::runWizard(const QString &path, QWidget *parent, const QS
wizard.addGenerator(gen); wizard.addGenerator(gen);
} }
if (!m_pages.isEmpty()) if (!m_pages.isEmpty()) {
Core::ICore::registerWindow(&wizard, Core::Context("Core.NewJSONWizard"));
wizard.exec(); wizard.exec();
else } else {
wizard.accept(); wizard.accept();
}
} }
QList<QVariant> JsonWizardFactory::objectOrList(const QVariant &data, QString *errorMessage) QList<QVariant> JsonWizardFactory::objectOrList(const QVariant &data, QString *errorMessage)

View File

@@ -31,6 +31,8 @@
#include "basecheckoutwizardfactory.h" #include "basecheckoutwizardfactory.h"
#include "basecheckoutwizard.h" #include "basecheckoutwizard.h"
#include <coreplugin/icontext.h>
#include <coreplugin/icore.h>
#include <coreplugin/featureprovider.h> #include <coreplugin/featureprovider.h>
#include <projectexplorer/projectexplorer.h> #include <projectexplorer/projectexplorer.h>
@@ -86,6 +88,7 @@ void BaseCheckoutWizardFactory::runWizard(const QString &path, QWidget *parent,
{ {
QScopedPointer<BaseCheckoutWizard> wizard(m_wizardCreator(Utils::FileName::fromString(path), parent)); QScopedPointer<BaseCheckoutWizard> wizard(m_wizardCreator(Utils::FileName::fromString(path), parent));
wizard->setWindowTitle(displayName()); wizard->setWindowTitle(displayName());
Core::ICore::registerWindow(wizard.data(), Core::Context("New.CheckoutWizard"));
checkoutPath = wizard->run(); checkoutPath = wizard->run();
} }