00001 /*========================================================================= 00002 00003 Program: Medical Imaging & Interaction Toolkit 00004 Language: C++ 00005 Date: $Date$ 00006 Version: $Revision$ 00007 00008 Copyright (c) German Cancer Research Center, Division of Medical and 00009 Biological Informatics. All rights reserved. 00010 See MITKCopyright.txt or https://www.mitk.org/copyright.html for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 #include "QmitkWorkbenchWindowAdvisor.h" 00019 #include "QmitkActionBarAdvisor.h" 00020 00021 00022 #include <QMenu> 00023 #include <QMenuBar> 00024 #include <QMainWindow> 00025 #include <QStatusBar> 00026 00027 #include <berryPlatform.h> 00028 #include <berryPlatformUI.h> 00029 #include <berryIWorkbenchWindow.h> 00030 #include <berryIPreferencesService.h> 00031 00032 #include <internal/berryQtShowViewAction.h> 00033 00034 #include <QmitkFileOpenAction.h> 00035 #include <QmitkFileExitAction.h> 00036 #include <QmitkStatusBar.h> 00037 #include <QmitkProgressBar.h> 00038 #include <QmitkMemoryUsageIndicatorView.h> 00039 00040 #include <QToolBar> 00041 00042 QmitkWorkbenchWindowAdvisor::QmitkWorkbenchWindowAdvisor(berry::IWorkbenchWindowConfigurer::Pointer configurer) 00043 : berry::WorkbenchWindowAdvisor(configurer) 00044 { 00045 00046 } 00047 00048 berry::ActionBarAdvisor::Pointer 00049 QmitkWorkbenchWindowAdvisor::CreateActionBarAdvisor( 00050 berry::IActionBarConfigurer::Pointer configurer) 00051 { 00052 berry::ActionBarAdvisor::Pointer actionBarAdvisor(new QmitkActionBarAdvisor(configurer)); 00053 return actionBarAdvisor; 00054 } 00055 00056 void QmitkWorkbenchWindowAdvisor::PostWindowCreate() 00057 { 00058 // very bad hack... 00059 berry::IWorkbenchWindow::Pointer window = this->GetWindowConfigurer()->GetWindow(); 00060 QMainWindow* mainWindow = static_cast<QMainWindow*>(window->GetShell()->GetControl()); 00061 00062 QMenuBar* menuBar = mainWindow->menuBar(); 00063 00064 QMenu* fileMenu = menuBar->addMenu("&File"); 00065 00066 fileMenu->addAction(new QmitkFileOpenAction(window)); 00067 fileMenu->addSeparator(); 00068 fileMenu->addAction(new QmitkFileExitAction(window)); 00069 00070 berry::IViewRegistry* viewRegistry = berry::PlatformUI::GetWorkbench()->GetViewRegistry(); 00071 const std::vector<berry::IViewDescriptor::Pointer>& viewDescriptors = viewRegistry->GetViews(); 00072 00073 QMenu* viewMenu = menuBar->addMenu("Show &View"); 00074 00075 // sort elements (converting vector to map...) 00076 std::vector<berry::IViewDescriptor::Pointer>::const_iterator iter; 00077 std::map<std::string, berry::IViewDescriptor::Pointer> VDMap; 00078 00079 for (iter = viewDescriptors.begin(); iter != viewDescriptors.end(); ++iter) 00080 { 00081 if ((*iter)->GetId() == "org.blueberry.ui.internal.introview") 00082 continue; 00083 std::pair<std::string, berry::IViewDescriptor::Pointer> p((*iter)->GetLabel(), (*iter)); 00084 VDMap.insert(p); 00085 } 00086 00087 QToolBar* qToolbar = new QToolBar; 00088 00089 std::map<std::string, berry::IViewDescriptor::Pointer>::const_iterator MapIter; 00090 for (MapIter = VDMap.begin(); MapIter != VDMap.end(); ++MapIter) 00091 { 00092 berry::QtShowViewAction* viewAction = new berry::QtShowViewAction(window, (*MapIter).second); 00093 //m_ViewActions.push_back(viewAction); 00094 viewMenu->addAction(viewAction); 00095 qToolbar->addAction(viewAction); 00096 } 00097 00098 mainWindow->addToolBar(qToolbar); 00099 00100 QStatusBar* qStatusBar = new QStatusBar(); 00101 00102 //creating a QmitkStatusBar for Output on the QStatusBar and connecting it with the MainStatusBar 00103 QmitkStatusBar *statusBar = new QmitkStatusBar(qStatusBar); 00104 //disabling the SizeGrip in the lower right corner 00105 statusBar->SetSizeGripEnabled(false); 00106 00107 QmitkProgressBar *progBar = new QmitkProgressBar(); 00108 qStatusBar->addPermanentWidget(progBar, 0); 00109 progBar->hide(); 00110 mainWindow->setStatusBar(qStatusBar); 00111 00112 QmitkMemoryUsageIndicatorView* memoryIndicator = new QmitkMemoryUsageIndicatorView(); 00113 qStatusBar->addPermanentWidget(memoryIndicator, 0); 00114 }