#include "exampleplugin.h" #include "exampleconstants.h" #include <coreplugin/icore.h> #include <coreplugin/icontext.h> #include <coreplugin/actionmanager/actionmanager.h> #include <coreplugin/actionmanager/command.h> #include <coreplugin/actionmanager/actioncontainer.h> #include <coreplugin/coreconstants.h> #include <QAction> #include <QMessageBox> #include <QMainWindow> #include <QMenu> #include <QtPlugin> using namespace Example::Internal; ExamplePlugin::ExamplePlugin() { // Create your members } ExamplePlugin::~ExamplePlugin() { // Unregister objects from the plugin manager's object pool // Delete members } bool ExamplePlugin::initialize(const QStringList &arguments, QString *errorString) { // Register objects in the plugin manager's object pool // Load settings // Add actions to menus // Connect to other plugins' signals // In the initialize method, a plugin can be sure that the plugins it // depends on have initialized their members. Q_UNUSED(arguments) Q_UNUSED(errorString) //! [add action] Core::ActionManager *am = Core::ICore::instance()->actionManager(); QAction *action = new QAction(tr("Example action"), this); Core::Command *cmd = am->registerAction(action, Constants::ACTION_ID, Core::Context(Core::Constants::C_GLOBAL)); cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Alt+Meta+A"))); connect(action, SIGNAL(triggered()), this, SLOT(triggerAction())); //! [add action] //! [add menu] Core::ActionContainer *menu = am->createMenu(Constants::MENU_ID); menu->menu()->setTitle(tr("Example")); menu->addAction(cmd); am->actionContainer(Core::Constants::M_TOOLS)->addMenu(menu); //! [add menu] return true; } void ExamplePlugin::extensionsInitialized() { // Retrieve objects from the plugin manager's object pool // In the extensionsInitialized method, a plugin can be sure that all // plugins that depend on it are completely initialized. } ExtensionSystem::IPlugin::ShutdownFlag ExamplePlugin::aboutToShutdown() { // Save settings // Disconnect from signals that are not needed during shutdown // Hide UI (if you add UI that is not in the main window directly) return SynchronousShutdown; } //! [slot implementation] void ExamplePlugin::triggerAction() { QMessageBox::information(Core::ICore::instance()->mainWindow(), tr("Action triggered"), tr("This is an action from Example.")); } //! [slot implementation] //! [export plugin] Q_EXPORT_PLUGIN2(Example, ExamplePlugin) //! [export plugin]