Skip to content

Commit

Permalink
[FEATURE] toggle visibility of opened panels in main window
Browse files Browse the repository at this point in the history
Accessible via:
- View menu > Toggle Panels Visibility
- Ctrl+Tab keyboard shortcut
  • Loading branch information
nirvn committed Dec 15, 2016
1 parent 6377303 commit 3982498
Show file tree
Hide file tree
Showing 5 changed files with 76 additions and 10 deletions.
9 changes: 2 additions & 7 deletions src/app/composer/qgscomposer.cpp
Expand Up @@ -368,10 +368,10 @@ QgsComposer::QgsComposer( QgisApp *qgis, const QString& title )
mToolbarMenu = new QMenu( tr( "&Toolbars" ), this ); mToolbarMenu = new QMenu( tr( "&Toolbars" ), this );
mToolbarMenu->setObjectName( QStringLiteral( "mToolbarMenu" ) ); mToolbarMenu->setObjectName( QStringLiteral( "mToolbarMenu" ) );
viewMenu->addSeparator(); viewMenu->addSeparator();
viewMenu->addAction( mActionToggleFullScreen );
viewMenu->addAction( mActionHidePanels );
viewMenu->addMenu( mPanelMenu ); viewMenu->addMenu( mPanelMenu );
viewMenu->addMenu( mToolbarMenu ); viewMenu->addMenu( mToolbarMenu );
viewMenu->addAction( mActionToggleFullScreen );
viewMenu->addAction( mActionHidePanels );
// toolBar already exists, add other widgets as they are created // toolBar already exists, add other widgets as they are created
mToolbarMenu->addAction( mComposerToolbar->toggleViewAction() ); mToolbarMenu->addAction( mComposerToolbar->toggleViewAction() );
mToolbarMenu->addAction( mPaperNavToolbar->toggleViewAction() ); mToolbarMenu->addAction( mPaperNavToolbar->toggleViewAction() );
Expand Down Expand Up @@ -4048,11 +4048,6 @@ void QgsComposer::createComposerView()


//view does not accept focus via tab //view does not accept focus via tab
mView->setFocusPolicy( Qt::ClickFocus ); mView->setFocusPolicy( Qt::ClickFocus );
//instead, if view is focused and tab is pressed than mActionHidePanels is triggered,
//to toggle display of panels
QShortcut* tab = new QShortcut( Qt::Key_Tab, mView );
tab->setContext( Qt::WidgetWithChildrenShortcut );
connect( tab, SIGNAL( activated() ), mActionHidePanels, SLOT( trigger() ) );
} }


void QgsComposer::writeWorldFile( const QString& worldFileName, double a, double b, double c, double d, double e, double f ) const void QgsComposer::writeWorldFile( const QString& worldFileName, double a, double b, double c, double d, double e, double f ) const
Expand Down
59 changes: 59 additions & 0 deletions src/app/qgisapp.cpp
Expand Up @@ -1714,6 +1714,7 @@ void QgisApp::createActions()
// Settings Menu Items // Settings Menu Items


connect( mActionToggleFullScreen, SIGNAL( triggered() ), this, SLOT( toggleFullScreen() ) ); connect( mActionToggleFullScreen, SIGNAL( triggered() ), this, SLOT( toggleFullScreen() ) );
connect( mActionTogglePanelsVisibility, SIGNAL( triggered() ), this, SLOT( togglePanelsVisibility() ) );
connect( mActionProjectProperties, SIGNAL( triggered() ), this, SLOT( projectProperties() ) ); connect( mActionProjectProperties, SIGNAL( triggered() ), this, SLOT( projectProperties() ) );
connect( mActionOptions, SIGNAL( triggered() ), this, SLOT( options() ) ); connect( mActionOptions, SIGNAL( triggered() ), this, SLOT( options() ) );
connect( mActionCustomProjection, SIGNAL( triggered() ), this, SLOT( customProjection() ) ); connect( mActionCustomProjection, SIGNAL( triggered() ), this, SLOT( customProjection() ) );
Expand Down Expand Up @@ -1998,6 +1999,7 @@ void QgisApp::createMenus()
mViewMenu->addMenu( mPanelMenu ); mViewMenu->addMenu( mPanelMenu );
mViewMenu->addMenu( mToolbarMenu ); mViewMenu->addMenu( mToolbarMenu );
mViewMenu->addAction( mActionToggleFullScreen ); mViewMenu->addAction( mActionToggleFullScreen );
mViewMenu->addAction( mActionTogglePanelsVisibility );
} }
else else
{ {
Expand All @@ -2006,6 +2008,7 @@ void QgisApp::createMenus()
mSettingsMenu->insertMenu( before, mPanelMenu ); mSettingsMenu->insertMenu( before, mPanelMenu );
mSettingsMenu->insertMenu( before, mToolbarMenu ); mSettingsMenu->insertMenu( before, mToolbarMenu );
mSettingsMenu->insertAction( before, mActionToggleFullScreen ); mSettingsMenu->insertAction( before, mActionToggleFullScreen );
mSettingsMenu->insertAction( before, mActionTogglePanelsVisibility );
mSettingsMenu->insertSeparator( before ); mSettingsMenu->insertSeparator( before );
} }


Expand Down Expand Up @@ -5622,6 +5625,62 @@ void QgisApp::toggleFullScreen()
} }
} }


void QgisApp::togglePanelsVisibility()
{
QSettings settings;

QStringList docksTitle = settings.value( "UI/hiddenDocksTitle", QString() ).toStringList();
QStringList docksActive = settings.value( "UI/hiddenDocksActive", QString() ).toStringList();

QList<QDockWidget*> docks = findChildren<QDockWidget*>();
QList<QTabBar *> tabBars = findChildren<QTabBar *>();

if ( docksTitle.isEmpty() )
{

Q_FOREACH ( QDockWidget* dock, docks )
{
if ( dock->isVisible() && !dock->isFloating() )
{
docksTitle << dock->windowTitle();
dock->setVisible( false );
}
}

Q_FOREACH ( QTabBar* tabBar, tabBars )
{
docksActive << tabBar->tabText( tabBar->currentIndex() );
}

settings.setValue( QStringLiteral( "/UI/hiddenDocksTitle" ), docksTitle );
settings.setValue( QStringLiteral( "/UI/hiddenDocksActive" ), docksActive );
}
else
{
Q_FOREACH ( QDockWidget* dock, docks )
{
if ( docksTitle.contains( dock->windowTitle() ) )
{
dock->setVisible( true );
}
}

Q_FOREACH ( QTabBar* tabBar, tabBars )
{
for ( int i = 0; i < tabBar->count(); ++i )
{
if ( docksActive.contains( tabBar->tabText( i ) ) )
{
tabBar->setCurrentIndex( i );
}
}
}

settings.setValue( QStringLiteral( "/UI/hiddenDocksTitle" ), QStringList() );
settings.setValue( QStringLiteral( "/UI/hiddenDocksActive" ), QStringList() );
}
}

void QgisApp::showActiveWindowMinimized() void QgisApp::showActiveWindowMinimized()
{ {
QWidget *window = QApplication::activeWindow(); QWidget *window = QApplication::activeWindow();
Expand Down
4 changes: 4 additions & 0 deletions src/app/qgisapp.h
Expand Up @@ -418,6 +418,7 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
QAction *actionShowPythonDialog() { return mActionShowPythonDialog; } QAction *actionShowPythonDialog() { return mActionShowPythonDialog; }


QAction *actionToggleFullScreen() { return mActionToggleFullScreen; } QAction *actionToggleFullScreen() { return mActionToggleFullScreen; }
QAction *actionTogglePanelsVisibility() { return mActionTogglePanelsVisibility; }
QAction *actionOptions() { return mActionOptions; } QAction *actionOptions() { return mActionOptions; }
QAction *actionCustomProjection() { return mActionCustomProjection; } QAction *actionCustomProjection() { return mActionCustomProjection; }
QAction *actionConfigureShortcuts() { return mActionConfigureShortcuts; } QAction *actionConfigureShortcuts() { return mActionConfigureShortcuts; }
Expand Down Expand Up @@ -1279,6 +1280,9 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
//! Toggle full screen mode //! Toggle full screen mode
void toggleFullScreen(); void toggleFullScreen();


//! Toggle visibility of opened panels
void togglePanelsVisibility();

//! Set minimized mode of active window //! Set minimized mode of active window
void showActiveWindowMinimized(); void showActiveWindowMinimized();


Expand Down
4 changes: 2 additions & 2 deletions src/ui/composer/qgscomposerbase.ui
Expand Up @@ -1038,13 +1038,13 @@
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="text"> <property name="text">
<string>&amp;Hide Panels</string> <string>Toggle Panel &amp;Visibility</string>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Hide panels</string> <string>Hide panels</string>
</property> </property>
<property name="shortcut"> <property name="shortcut">
<string>F10</string> <string>Ctrl+Tab</string>
</property> </property>
</action> </action>
<action name="mActionShowPage"> <action name="mActionShowPage">
Expand Down
10 changes: 9 additions & 1 deletion src/ui/qgisapp.ui
Expand Up @@ -1548,12 +1548,20 @@
</action> </action>
<action name="mActionToggleFullScreen"> <action name="mActionToggleFullScreen">
<property name="text"> <property name="text">
<string>Toggle Full Screen Mode</string> <string>Toggle Full Scr&amp;een Mode</string>
</property> </property>
<property name="shortcut"> <property name="shortcut">
<string>F11</string> <string>F11</string>
</property> </property>
</action> </action>
<action name="mActionTogglePanelsVisibility">
<property name="text">
<string>Toggle Panel &amp;Visibility</string>
</property>
<property name="shortcut">
<string>Ctrl+Tab</string>
</property>
</action>
<action name="mActionProjectProperties"> <action name="mActionProjectProperties">
<property name="icon"> <property name="icon">
<iconset resource="../../images/images.qrc"> <iconset resource="../../images/images.qrc">
Expand Down

0 comments on commit 3982498

Please sign in to comment.