void Plugin::handleWindow (int index, bool init) { auto rootWM = Proxy_->GetRootWindowsManager (); auto win = rootWM->GetMainWindow (index); auto mgr = new ViewManager (Proxy_, ShortcutMgr_, win, this); auto view = mgr->GetView (); auto mwProxy = rootWM->GetMWProxy (index); auto ictw = rootWM->GetTabWidget (index); win->statusBar ()->hide (); mgr->RegisterInternalComponent ((new LCMenuComponent (mwProxy))->GetComponent ()); auto launcher = new LauncherComponent (ictw, Proxy_, mgr); mgr->RegisterInternalComponent (launcher->GetComponent ()); if (init) connect (this, SIGNAL (pluginsAvailable ()), launcher, SLOT (handlePluginsAvailable ())); else launcher->handlePluginsAvailable (); auto tray = new TrayComponent (Proxy_, view); mgr->RegisterInternalComponent (tray->GetComponent ()); if (init) connect (this, SIGNAL (pluginsAvailable ()), tray, SLOT (handlePluginsAvailable ())); else tray->handlePluginsAvailable (); auto dock = new DockActionComponent (Proxy_, view); mgr->RegisterInternalComponent (dock->GetComponent ()); if (!init) mgr->SecondInit (); Managers_.push_back ({ mgr, tray, dock }); }
void Plugin::fillMenu () { auto rootWM = Proxy_->GetRootWindowsManager (); auto menu = rootWM->GetMWProxy (0)->GetMainMenu (); QMenu *lcMenu = 0; QList<QAction*> firstLevelActions; for (auto action : menu->actions ()) if (action->menu ()) { MenuBar_->addAction (action); if (!lcMenu) lcMenu = action->menu (); } else { if (action->menuRole () == QAction::TextHeuristicRole) action->setMenuRole (QAction::ApplicationSpecificRole); firstLevelActions << action; } for (auto act : firstLevelActions) lcMenu->addAction (act); if (!lcMenu->actions ().isEmpty ()) MenuBar_->addMenu (lcMenu); const auto& actors = Proxy_->GetPluginsManager ()-> GetAllCastableRoots<IActionsExporter*> (); for (auto actor : actors) connect (actor, SIGNAL (gotActions (QList<QAction*>, LeechCraft::ActionsEmbedPlace)), this, SLOT (handleGotActions (QList<QAction*>, LeechCraft::ActionsEmbedPlace)), Qt::UniqueConnection); }