App: Add dialog to pick preferred workbenches

Signed-off-by: Przemo Firszt <przemo@firszt.eu>
This commit is contained in:
Przemo Firszt
2015-05-07 22:22:23 +01:00
committed by wmayer
parent 09652a0f46
commit da0e25b709
12 changed files with 1199 additions and 16 deletions

View File

@@ -40,6 +40,7 @@
#include "Application.h"
#include "Command.h"
#include "DlgUndoRedo.h"
#include "DlgWorkbenchesImp.h"
#include "FileDialog.h"
#include "MainWindow.h"
#include "WhatsThis.h"
@@ -519,26 +520,22 @@ void WorkbenchGroup::refreshWorkbenchList()
{
QString active = QString::fromAscii(WorkbenchManager::instance()->active()->name().c_str());
QStringList items = Application::Instance->workbenches();
QStringList enabled_wbs_list = DlgWorkbenchesImp::load_enabled_workbenches();
QList<QAction*> workbenches = _group->actions();
int numWorkbenches = std::min<int>(workbenches.count(), items.count());
// sort by workbench menu text
QMap<QString, QString> menuText;
for (int index = 0; index < numWorkbenches; index++) {
QString text = Application::Instance->workbenchMenuText(items[index]);
menuText[text] = items[index];
}
int i=0;
for (QMap<QString, QString>::Iterator it = menuText.begin(); it != menuText.end(); ++it, i++) {
QPixmap px = Application::Instance->workbenchIcon(it.value());
QString tip = Application::Instance->workbenchToolTip(it.value());
workbenches[i]->setObjectName(it.value());
for (QStringList::Iterator it = enabled_wbs_list.begin(); it != enabled_wbs_list.end(); ++it, i++) {
QString s = *it;
QString name = Application::Instance->workbenchMenuText(*it);
QPixmap px = Application::Instance->workbenchIcon(*it);
QString tip = Application::Instance->workbenchToolTip(*it);
workbenches[i]->setObjectName(*it);
workbenches[i]->setIcon(px);
workbenches[i]->setText(it.key());
workbenches[i]->setText(name);
workbenches[i]->setToolTip(tip);
workbenches[i]->setStatusTip(tr("Select the '%1' workbench").arg(it.key()));
workbenches[i]->setStatusTip(tr("Select the '%1' workbench").arg(name));
workbenches[i]->setVisible(false);
workbenches[i]->setVisible(true);
// Note: See remark at WorkbenchComboBox::onWorkbenchActivated
// Calling setChecked() here causes to uncheck the current item