void ModeManager::objectAdded(QObject *obj) { IMode *mode = Aggregation::query<IMode>(obj); if (!mode) return; m_mainWindow->addContextObject(mode); // Count the number of modes with a higher priority int index = 0; foreach (const IMode *m, m_modes) if (m->priority() > mode->priority()) ++index; m_modes.insert(index, mode); m_modeStack->insertTab(index, mode->widget(), mode->icon(), mode->name()); // Register mode shortcut ActionManager *am = m_mainWindow->actionManager(); const QString shortcutId = QLatin1String("GCS.Mode.") + mode->uniqueModeName(); QShortcut *shortcut = new QShortcut(m_mainWindow); shortcut->setWhatsThis(tr("Switch to %1 mode").arg(mode->name())); Command *cmd = am->registerShortcut(shortcut, shortcutId, QList<int>() << Constants::C_GLOBAL_ID); m_modeShortcuts.insert(index, cmd); connect(cmd, SIGNAL(keySequenceChanged()), this, SLOT(updateModeToolTip())); setDefaultKeyshortcuts(); m_signalMapper->setMapping(shortcut, mode->uniqueModeName()); connect(shortcut, SIGNAL(activated()), m_signalMapper, SLOT(map())); }
void ModeManager::objectAdded(QObject *obj) { IMode *mode = Aggregation::query<IMode>(obj); if (!mode) return; d->m_mainWindow->addContextObject(mode); // Count the number of modes with a higher priority int index = 0; foreach (const IMode *m, d->m_modes) if (m->priority() > mode->priority()) ++index; d->m_modes.insert(index, mode); d->m_modeStack->insertTab(index, mode->widget(), mode->icon(), mode->displayName()); d->m_modeStack->setTabEnabled(index, mode->isEnabled()); // Register mode shortcut ActionManager *am = d->m_mainWindow->actionManager(); const QString shortcutId = QLatin1String("QtCreator.Mode.") + mode->id(); QShortcut *shortcut = new QShortcut(d->m_mainWindow); shortcut->setWhatsThis(tr("Switch to <b>%1</b> mode").arg(mode->displayName())); Command *cmd = am->registerShortcut(shortcut, shortcutId, Context(Constants::C_GLOBAL)); d->m_modeShortcuts.insert(index, cmd); connect(cmd, SIGNAL(keySequenceChanged()), this, SLOT(updateModeToolTip())); for (int i = 0; i < d->m_modeShortcuts.size(); ++i) { Command *currentCmd = d->m_modeShortcuts.at(i); // we need this hack with currentlyHasDefaultSequence // because we call setDefaultShortcut multiple times on the same cmd // and still expect the current shortcut to change with it bool currentlyHasDefaultSequence = (currentCmd->keySequence() == currentCmd->defaultKeySequence()); #ifdef Q_WS_MAC currentCmd->setDefaultKeySequence(QKeySequence(QString("Meta+%1").arg(i+1))); #else currentCmd->setDefaultKeySequence(QKeySequence(QString("Ctrl+%1").arg(i+1))); #endif if (currentlyHasDefaultSequence) currentCmd->setKeySequence(currentCmd->defaultKeySequence()); } d->m_signalMapper->setMapping(shortcut, mode->id()); connect(shortcut, SIGNAL(activated()), d->m_signalMapper, SLOT(map())); connect(mode, SIGNAL(enabledStateChanged(bool)), this, SLOT(enabledStateChanged())); }
void ModeManager::objectAdded(QObject *obj) { IMode *mode = qobject_cast<IMode *>(obj); if (!mode) return; d->m_mainWindow->addContextObject(mode); // Count the number of modes with a higher priority int index = 0; foreach (const IMode *m, d->m_modes) if (m->priority() > mode->priority()) ++index; d->m_modes.insert(index, mode); d->m_modeStack->insertTab(index, mode->widget(), mode->icon(), mode->displayName()); d->m_modeStack->setTabEnabled(index, mode->isEnabled()); // Register mode shortcut const Id actionId = mode->id().withPrefix("QtCreator.Mode."); QAction *action = new QAction(tr("Switch to <b>%1</b> mode").arg(mode->displayName()), this); Command *cmd = ActionManager::registerAction(action, actionId); d->m_modeCommands.insert(index, cmd); connect(cmd, &Command::keySequenceChanged, m_instance, &ModeManager::updateModeToolTip); for (int i = 0; i < d->m_modeCommands.size(); ++i) { Command *currentCmd = d->m_modeCommands.at(i); // we need this hack with currentlyHasDefaultSequence // because we call setDefaultShortcut multiple times on the same cmd // and still expect the current shortcut to change with it bool currentlyHasDefaultSequence = (currentCmd->keySequence() == currentCmd->defaultKeySequence()); currentCmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? QString::fromLatin1("Meta+%1").arg(i+1) : QString::fromLatin1("Ctrl+%1").arg(i+1))); if (currentlyHasDefaultSequence) currentCmd->setKeySequence(currentCmd->defaultKeySequence()); } Id id = mode->id(); connect(action, &QAction::triggered, [id] { m_instance->activateMode(id); ICore::raiseWindow(d->m_modeStack); }); connect(mode, &IMode::enabledStateChanged, m_instance, &ModeManager::enabledStateChanged); }