Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
- Added shortcuts to switch between perspectives & views.

git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@24911 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
adeas31 committed Mar 4, 2015
1 parent 9429d8e commit 9abadda
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 29 deletions.
28 changes: 28 additions & 0 deletions OMEdit/OMEditGUI/MainWindow.cpp
Expand Up @@ -193,12 +193,25 @@ MainWindow::MainWindow(QSplashScreen *pSplashScreen, QWidget *parent)
mpStatusBar->addPermanentWidget(mpProgressBar);
mpStatusBar->addPermanentWidget(mpPointerXPositionLabel);
mpStatusBar->addPermanentWidget(mpPointerYPositionLabel);
// create the perspective tabs
mpPerspectiveTabbar = new QTabBar;
mpPerspectiveTabbar->setDocumentMode(true);
mpPerspectiveTabbar->setShape(QTabBar::RoundedSouth);
// welcome perspective
mpPerspectiveTabbar->addTab(QIcon(":/Resources/icons/omedit.png"), tr("Welcome"));
QShortcut *pWelcomeShortcut = new QShortcut(QKeySequence("Ctrl+f1"), this);
connect(pWelcomeShortcut, SIGNAL(activated()), SLOT(switchToWelcomePerspectiveSlot()));
mpPerspectiveTabbar->setTabToolTip(0, tr("Changes to welcome perspective (%1)").arg(pWelcomeShortcut->key().toString()));
// modeling perspective
mpPerspectiveTabbar->addTab(QIcon(":/Resources/icons/modeling.png"), tr("Modeling"));
QShortcut *pModelingShortcut = new QShortcut(QKeySequence("Ctrl+f2"), this);
connect(pModelingShortcut, SIGNAL(activated()), SLOT(switchToModelingPerspectiveSlot()));
mpPerspectiveTabbar->setTabToolTip(1, tr("Changes to modeling perspective (%1)").arg(pModelingShortcut->key().toString()));
// plotting perspective
mpPerspectiveTabbar->addTab(QIcon(":/Resources/icons/omplot.png"), tr("Plotting"));
QShortcut *pPlottingShortcut = new QShortcut(QKeySequence("Ctrl+f3"), this);
connect(pPlottingShortcut, SIGNAL(activated()), SLOT(switchToPlottingPerspectiveSlot()));
mpPerspectiveTabbar->setTabToolTip(2, tr("Changes to plotting perspective (%1)").arg(pPlottingShortcut->key().toString()));
connect(mpPerspectiveTabbar, SIGNAL(currentChanged(int)), SLOT(perspectiveTabChanged(int)));
mpStatusBar->addPermanentWidget(mpPerspectiveTabbar);
// set status bar for MainWindow
Expand Down Expand Up @@ -1908,6 +1921,21 @@ void MainWindow::autoSave()
}
}

void MainWindow::switchToWelcomePerspectiveSlot()
{
mpPerspectiveTabbar->setCurrentIndex(0);
}

void MainWindow::switchToModelingPerspectiveSlot()
{
mpPerspectiveTabbar->setCurrentIndex(1);
}

void MainWindow::switchToPlottingPerspectiveSlot()
{
mpPerspectiveTabbar->setCurrentIndex(2);
}

//! Defines the actions used by the toolbars
void MainWindow::createActions()
{
Expand Down
3 changes: 3 additions & 0 deletions OMEdit/OMEditGUI/MainWindow.h
Expand Up @@ -355,6 +355,9 @@ public slots:
private slots:
void perspectiveTabChanged(int tabIndex);
void autoSave();
void switchToWelcomePerspectiveSlot();
void switchToModelingPerspectiveSlot();
void switchToPlottingPerspectiveSlot();
private:
void createActions();
void createToolbars();
Expand Down
76 changes: 47 additions & 29 deletions OMEdit/OMEditGUI/Modeling/ModelWidgetContainer.cpp
Expand Up @@ -2865,57 +2865,75 @@ bool ModelWidgetContainer::isShowGridLines()

bool ModelWidgetContainer::eventFilter(QObject *object, QEvent *event)
{
if (!object || isHidden() || qApp->activeWindow() != mpMainWindow)
if (!object || isHidden() || qApp->activeWindow() != mpMainWindow) {
return QMdiArea::eventFilter(object, event);
}
// Global key events with Ctrl modifier.
if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease)
{
if (subWindowList(QMdiArea::ActivationHistoryOrder).size() > 0)
{
if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) {
if (subWindowList(QMdiArea::ActivationHistoryOrder).size() > 0) {
QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
// Ingore key events without a Ctrl modifier (except for press/release on the modifier itself).
#ifdef Q_OS_MAC
if (!(keyEvent->modifiers() & Qt::AltModifier) && keyEvent->key() != Qt::Key_Alt)
if (!(keyEvent->modifiers() & Qt::AltModifier) && keyEvent->key() != Qt::Key_Alt) {
#else
if (!(keyEvent->modifiers() & Qt::ControlModifier) && keyEvent->key() != Qt::Key_Control)
if (!(keyEvent->modifiers() & Qt::ControlModifier) && keyEvent->key() != Qt::Key_Control) {
#endif
return QMdiArea::eventFilter(object, event);
}
// check key press
const bool keyPress = (event->type() == QEvent::KeyPress) ? true : false;
ModelWidget *pCurrentModelWidget = getCurrentModelWidget();
switch (keyEvent->key()) {
#ifdef Q_OS_MAC
case Qt::Key_Alt:
#else
case Qt::Key_Control:
#endif
if (keyPress)
{
if (keyPress) {
// add items to mpRecentModelsList to show in mpModelSwitcherDialog
mpRecentModelsList->clear();
QList<QMdiSubWindow*> subWindowsList = subWindowList(QMdiArea::ActivationHistoryOrder);
for (int i = subWindowsList.size() - 1 ; i >= 0 ; i--)
{
for (int i = subWindowsList.size() - 1 ; i >= 0 ; i--) {
ModelWidget *pModelWidget = qobject_cast<ModelWidget*>(subWindowsList.at(i)->widget());
QListWidgetItem *listItem = new QListWidgetItem(mpRecentModelsList);
listItem->setText(pModelWidget->getLibraryTreeNode()->getNameStructure());
listItem->setData(Qt::UserRole, pModelWidget->getLibraryTreeNode()->getNameStructure());
}
}
else
{
if (!mpRecentModelsList->selectedItems().isEmpty())
} else {
if (!mpRecentModelsList->selectedItems().isEmpty()) {
openRecentModelWidget(mpRecentModelsList->selectedItems().at(0));
}
mpModelSwitcherDialog->hide();
}
break;
case Qt::Key_1: // Ctrl+1 switches to icon view
if (pCurrentModelWidget) {
pCurrentModelWidget->getIconViewToolButton()->setChecked(true);
}
return true;
case Qt::Key_2: // Ctrl+2 switches to diagram view
if (pCurrentModelWidget) {
pCurrentModelWidget->getDiagramViewToolButton()->setChecked(true);
}
return true;
case Qt::Key_3: // Ctrl+3 switches to text view
if (pCurrentModelWidget) {
pCurrentModelWidget->getTextViewToolButton()->setChecked(true);
}
return true;
case Qt::Key_4: // Ctrl+4 shows the documentation view
if (pCurrentModelWidget) {
pCurrentModelWidget->showDocumentationView();
}
return true;
case Qt::Key_Tab:
case Qt::Key_Backtab:
if (keyPress)
{
if (keyEvent->key() == Qt::Key_Tab)
if (keyPress) {
if (keyEvent->key() == Qt::Key_Tab) {
changeRecentModelsListSelection(true);
else
} else {
changeRecentModelsListSelection(false);
}
}
return true;
#ifndef QT_NO_RUBBERBAND
Expand All @@ -2937,22 +2955,22 @@ void ModelWidgetContainer::changeRecentModelsListSelection(bool moveDown)
mpModelSwitcherDialog->show();
mpRecentModelsList->setFocus();
int count = mpRecentModelsList->count();
if (count < 1)
if (count < 1) {
return;
}
int currentRow = mpRecentModelsList->currentRow();
if (moveDown)
{
if (currentRow < count - 1)
if (moveDown) {
if (currentRow < count - 1) {
mpRecentModelsList->setCurrentRow(currentRow + 1);
else
} else {
mpRecentModelsList->setCurrentRow(0);
}
else if (!moveDown)
{
if (currentRow == 0)
}
} else if (!moveDown) {
if (currentRow == 0) {
mpRecentModelsList->setCurrentRow(count - 1);
else
} else {
mpRecentModelsList->setCurrentRow(currentRow - 1);
}
}
}

Expand Down

0 comments on commit 9abadda

Please sign in to comment.