ActionManager::ActionManager(QObject *parent) : QObject(parent), runAction(new QAction(QIcon(":/icons/images/run.png"), tr("Run tests"), this)), waitAction(new QAction(QIcon(":/icons/images/stop.png"), tr("Stop coverage execution"), this)), renderAction(new QAction(QIcon(":/icons/images/render.png"), tr("Show code coverage"), this)) { renderAction->setCheckable(true); // Add action to menu Core::ActionManager *pluginActionManager = Core::ICore::actionManager(); Core::Command *runCommand = pluginActionManager->registerAction(runAction, RUN_ACTION_ID, Core::Context(Core::Constants::C_GLOBAL)); Core::Command *renderCommand = pluginActionManager->registerAction(renderAction, RENDER_ACTION_ID, Core::Context(Core::Constants::C_GLOBAL)); runCommand->setKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_E); renderCommand->setKeySequence(Qt::CTRL + Qt::Key_H); Core::ActionContainer *menu = pluginActionManager->createMenu(MENU_ID); menu->menu()->setTitle(tr("CodeCoverage")); menu->addAction(runCommand); menu->addAction(renderCommand); pluginActionManager->actionContainer(Core::Constants::M_TOOLS)->addMenu(menu); // Add action as icon to left bar Core::ModeManager *modeManager = Core::ModeManager::instance(); modeManager->addAction(runAction, RUN_ACTION_PRIORITY); modeManager->addAction(waitAction, WAIT_ACTION_PRIORITY); }
/*! Initializes the plugin. Returns true on success. Plugins want to register objects with the plugin manager here. \a error_message can be used to pass an error message to the plugin system, if there was any. */ bool HelloWorldPlugin::initialize(const QStringList &arguments, QString *error_message) { Q_UNUSED(arguments) Q_UNUSED(error_message) // Get the primary access point to the workbench. Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject<Core::ICore>(); // Create a unique context id for our own view, that will be used for the // menu entry later. QList<int> context = QList<int>() << core->uniqueIDManager()->uniqueIdentifier( QLatin1String("HelloWorld.MainView")); // Create an action to be triggered by a menu entry QAction *helloWorldAction = new QAction("Say \"&Hello World!\"", this); connect(helloWorldAction, SIGNAL(triggered()), SLOT(sayHelloWorld())); // Register the action with the action manager Core::ActionManagerInterface *actionManager = core->actionManager(); Core::ICommand *command = actionManager->registerAction( helloWorldAction, "HelloWorld.HelloWorldAction", context); // Create our own menu to place in the Tools menu Core::IActionContainer *helloWorldMenu = actionManager->createMenu("HelloWorld.HelloWorldMenu"); QMenu *menu = helloWorldMenu->menu(); menu->setTitle(tr("&Hello World")); menu->setEnabled(true); // Add the Hello World action command to the menu helloWorldMenu->addAction(command); // Request the Tools menu and add the Hello World menu to it Core::IActionContainer *toolsMenu = actionManager->actionContainer(Core::Constants::M_TOOLS); toolsMenu->addMenu(helloWorldMenu); // Add a mode with a push button based on BaseMode. Like the BaseView, // it will unregister itself from the plugin manager when it is deleted. Core::BaseMode *baseMode = new Core::BaseMode; baseMode->setUniqueModeName("HelloWorld.HelloWorldMode"); baseMode->setName(tr("Hello world!")); baseMode->setIcon(QIcon()); baseMode->setPriority(0); baseMode->setWidget(new QPushButton(tr("Hello World PushButton!"))); addAutoReleasedObject(baseMode); // Add the Hello World action command to the mode manager (with 0 priority) Core::ModeManager *modeManager = core->modeManager(); modeManager->addAction(command, 0); return true; }