Hi Sascha,
thanks. I went for the subclassing option. So, I subclassed
QmitkExtWorkbenchWindowAdvisor and wrote a PostWindowCreate method to connect
back to my own slot in that class, which meant my subclass also extends
QObject. It seems to trigger the method, so I think it should be ok.
Thanks
Matt
PS. Also raised bug 9182.
QmitkMyAppWorkbenchWindowAdvisor::QmitkMyAppWorkbenchWindowAdvisor(
berry::WorkbenchAdvisor* wbAdvisor,
berry::IWorkbenchWindowConfigurer::Pointer configurer)
: QmitkExtWorkbenchWindowAdvisor(wbAdvisor, configurer)
{
}
void QmitkMyAppWorkbenchWindowAdvisor::PostWindowCreate()
{
QmitkExtWorkbenchWindowAdvisor::PostWindowCreate();
// All this to call our own About dialog box.
// 1. Get hold of menu bar
berry::IWorkbenchWindow::Pointer window =
this->GetWindowConfigurer()->GetWindow();
QMainWindow* mainWindow =
static_cast<QMainWindow*> (window->GetShell()->GetControl());
QMenuBar* menuBar = mainWindow->menuBar();
QList<QMenu *> allMenus = menuBar->findChildren<QMenu *>();
for (int i = 0; i < allMenus.count(); i++)
{
QList<QAction*> actionsForMenu =
allMenus.at<http://allMenus.at>(i)->findChildren<QAction*>();
for (int j = 0; j < actionsForMenu.count(); j++)
{
QAction *action = actionsForMenu.at<http://actionsForMenu.at>(j);
if (action != NULL && action->text() == "&About")
{
// 2. Disconnect existing slot
action->disconnect();
// 3. Reconnect slot to our method to call our About Dialog.
QObject::connect(action, SIGNAL(triggered()), this,
SLOT(OnHelpAbout()));
}
}
}
}
void QmitkMyAppWorkbenchWindowAdvisor::OnHelpAbout()
{
std::cerr << "OnHelpAbout::Triggered()" << std::endl;
}
On 25 Aug 2011, at 19:48, Sascha Zelzer wrote:
Hi Matt,
Your are right that the QmitkExtWorkbenchWindowAdvisor contains a lot of
sub-optimal code due to the lack of a generic mechanism for plugins to
contribute menu items. However, even for a mid-term solution, I see only two
possibilities:
1.) Create your own QmitkExtWorkbenchWindowAdvisor, either by subclassing or
copying the code, as Miklos already suggested. You don't need a separate
plug-in, just put the code where your berry::IApplication implementation lives.
2.) We could add a method in QmitkExtWorkbenchWindowAdvisor which would allow
you to inject a custom about dialog, or something similar. You would then just
use QmitkExtWorkbenchWindowAdvisor, similar as the QmitkExtAppWorkbenchAdvisor
class in org.mitk.gui.qt.extapplication does.
On 08/25/2011 06:07 PM, Clarkson, Matt wrote:
I also noticed that on a MAC, the About dialog box has no exit button, so I
have to kill the application to get rid of it.
Could you maybe enter a bug report?
Thanks,
Sascha
------------------------------------------------------------------------------
EMC VNX: the world's simplest storage, starting under $10K
The only unified storage solution that offers unified management
Up to 160% more powerful than alternatives and 25% more efficient.
Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev
_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users