New predefined settings for Window Layout

A new predefined simplified layout has been added with the only the basic
functions: schema, browsing and SQL execution. Ideal for courses.

Also added options for moving all the docked windows to the bottom, left
side or top (for the right, the default can be restored with Reset Window
Layout as before).

See issue #2307
This commit is contained in:
mgrojo
2020-07-26 20:28:12 +02:00
parent aaf671f4b5
commit 72ecf141ca
2 changed files with 38 additions and 2 deletions

View File

@@ -317,12 +317,38 @@ void MainWindow::init()
}
ui->viewMenu->addSeparator();
QAction* resetLayoutAction = ui->viewMenu->addAction(tr("Reset Window Layout"));
QMenu* layoutMenu = new QMenu(tr("Window Layout"), this);
ui->viewMenu->addMenu(layoutMenu);
QAction* resetLayoutAction = layoutMenu->addAction(tr("Reset Window Layout"));
resetLayoutAction->setShortcut(QKeySequence(tr("Alt+0")));
connect(resetLayoutAction, &QAction::triggered, [=]() {
restoreState(defaultWindowState);
restoreOpenTabs(defaultOpenTabs);
});
QAction* simplifyLayoutAction = layoutMenu->addAction(tr("Simplify Window Layout"));
simplifyLayoutAction->setShortcut(QKeySequence(tr("Shift+Alt+0")));
connect(simplifyLayoutAction, &QAction::triggered, [=]() {
toggleTabVisible(ui->pragmas, false);
ui->dockLog->hide();
ui->dockPlot->hide();
ui->dockSchema->hide();
ui->dockEdit->hide();
ui->dockRemote->hide();
});
QAction* atBottomLayoutAction = layoutMenu->addAction(tr("Dock Windows at Bottom"));
connect(atBottomLayoutAction, &QAction::triggered, [=]() {
moveDocksTo(Qt::BottomDockWidgetArea);
});
QAction* atLeftLayoutAction = layoutMenu->addAction(tr("Dock Windows at Left Side"));
connect(atLeftLayoutAction, &QAction::triggered, [=]() {
moveDocksTo(Qt::LeftDockWidgetArea);
});
QAction* atTopLayoutAction = layoutMenu->addAction(tr("Dock Windows at Top"));
connect(atTopLayoutAction, &QAction::triggered, [=]() {
moveDocksTo(Qt::TopDockWidgetArea);
});
// Set Alt+[1-4] shortcuts for opening the corresponding tab in that position.
// Note that it is safe to call setCurrentIndex with a tab that is currently closed,
@@ -1995,7 +2021,7 @@ void MainWindow::openSqlFile()
QFileInfo fileinfo(file);
ui->tabSqlAreas->setTabText(index, fileinfo.fileName());
ui->tabSqlAreas->setTabIcon(index, QIcon(":/icons/document_open"));
ui->tabSqlAreas->setTabIcon(index, QIcon(":/icons/document_open"));
}
}
}
@@ -3399,3 +3425,12 @@ void MainWindow::focusSqlEditor()
if(sqlArea)
sqlArea->getEditor()->setFocus();
}
void MainWindow::moveDocksTo(Qt::DockWidgetArea area)
{
addDockWidget(area, ui->dockEdit);
addDockWidget(area, ui->dockLog);
tabifyDockWidget(ui->dockLog, ui->dockPlot);
tabifyDockWidget(ui->dockLog, ui->dockSchema);
tabifyDockWidget(ui->dockLog, ui->dockRemote);
}

View File

@@ -115,6 +115,7 @@ private:
bool closeProject();
bool askSaveSqlTab(int index, bool& ignoreUnattachedBuffers);
void focusSqlEditor();
void moveDocksTo(Qt::DockWidgetArea area);
protected:
void closeEvent(QCloseEvent *) override;