forked from qt-creator/qt-creator
Make the side bar able to hide, implement missing shortcuts.
Reviewed-by: ck
This commit is contained in:
@@ -28,11 +28,19 @@
|
|||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
#include "externalhelpwindow.h"
|
#include "externalhelpwindow.h"
|
||||||
#include "helpconstants.h"
|
|
||||||
|
|
||||||
|
#include "centralwidget.h"
|
||||||
|
#include "helpconstants.h"
|
||||||
|
#include "openpagesmanager.h"
|
||||||
|
|
||||||
|
#include <coreplugin/coreconstants.h>
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
|
|
||||||
|
#include <QtGui/QAction>
|
||||||
|
#include <QtGui/QHBoxLayout>
|
||||||
#include <QtGui/QKeyEvent>
|
#include <QtGui/QKeyEvent>
|
||||||
|
#include <QtGui/QStatusBar>
|
||||||
|
#include <QtGui/QToolButton>
|
||||||
|
|
||||||
using namespace Help::Internal;
|
using namespace Help::Internal;
|
||||||
|
|
||||||
@@ -49,7 +57,86 @@ ExternalHelpWindow::ExternalHelpWindow(QWidget *parent)
|
|||||||
resize(640, 480);
|
resize(640, 480);
|
||||||
|
|
||||||
settings->endGroup();
|
settings->endGroup();
|
||||||
|
|
||||||
|
QAction *action = new QAction(this);
|
||||||
|
action->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_I));
|
||||||
|
connect(action, SIGNAL(triggered()), this, SIGNAL(activateIndex()));
|
||||||
|
addAction(action);
|
||||||
|
|
||||||
|
action = new QAction(this);
|
||||||
|
action->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_C));
|
||||||
|
connect(action, SIGNAL(triggered()), this, SIGNAL(activateContents()));
|
||||||
|
addAction(action);
|
||||||
|
|
||||||
|
action = new QAction(this);
|
||||||
|
action->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_Slash));
|
||||||
|
connect(action, SIGNAL(triggered()), this, SIGNAL(activateSearch()));
|
||||||
|
addAction(action);
|
||||||
|
|
||||||
|
action = new QAction(this);
|
||||||
|
action->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_B));
|
||||||
|
connect(action, SIGNAL(triggered()), this, SIGNAL(activateBookmarks()));
|
||||||
|
addAction(action);
|
||||||
|
|
||||||
|
action = new QAction(this);
|
||||||
|
action->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_O));
|
||||||
|
connect(action, SIGNAL(triggered()), this, SIGNAL(activateOpenPages()));
|
||||||
|
addAction(action);
|
||||||
|
|
||||||
|
action = new QAction(this);
|
||||||
|
action->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Plus));
|
||||||
|
connect(action, SIGNAL(triggered()), CentralWidget::instance(), SLOT(zoomIn()));
|
||||||
|
addAction(action);
|
||||||
|
|
||||||
|
action = new QAction(this);
|
||||||
|
action->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Minus));
|
||||||
|
connect(action, SIGNAL(triggered()), CentralWidget::instance(), SLOT(zoomOut()));
|
||||||
|
addAction(action);
|
||||||
|
|
||||||
|
action = new QAction(this);
|
||||||
|
action->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_0));
|
||||||
|
connect(action, SIGNAL(triggered()), CentralWidget::instance(), SLOT(resetZoom()));
|
||||||
|
addAction(action);
|
||||||
|
|
||||||
|
QAction *ctrlTab = new QAction(this);
|
||||||
|
connect(ctrlTab, SIGNAL(triggered()), &OpenPagesManager::instance(),
|
||||||
|
SLOT(gotoPreviousPage()));
|
||||||
|
addAction(ctrlTab);
|
||||||
|
|
||||||
|
QAction *ctrlShiftTab = new QAction(this);
|
||||||
|
connect(ctrlShiftTab, SIGNAL(triggered()), &OpenPagesManager::instance(),
|
||||||
|
SLOT(gotoNextPage()));
|
||||||
|
addAction(ctrlShiftTab);
|
||||||
|
|
||||||
|
action = new QAction(QIcon(Core::Constants::ICON_TOGGLE_SIDEBAR),
|
||||||
|
tr("Show Sidebar"), this);
|
||||||
|
connect(action, SIGNAL(triggered()), this, SIGNAL(showHideSidebar()));
|
||||||
|
|
||||||
|
#ifdef Q_WS_MAC
|
||||||
|
action->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_0));
|
||||||
|
ctrlTab->setShortcut(QKeySequence(tr("Alt+Tab")));
|
||||||
|
ctrlShiftTab->setShortcut(QKeySequence(tr("Alt+Shift+Tab")));
|
||||||
|
#else
|
||||||
|
action->setShortcut(QKeySequence(Qt::ALT + Qt::Key_0));
|
||||||
|
ctrlTab->setShortcut(QKeySequence(tr("Ctrl+Tab")));
|
||||||
|
ctrlShiftTab->setShortcut(QKeySequence(tr("Ctrl+Shift+Tab")));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
QToolButton *button = new QToolButton;
|
||||||
|
button->setDefaultAction(action);
|
||||||
|
|
||||||
|
QStatusBar *statusbar = statusBar();
|
||||||
|
statusbar->show();
|
||||||
|
statusbar->setProperty("p_styled", true);
|
||||||
|
statusbar->addPermanentWidget(button);
|
||||||
|
|
||||||
|
QWidget *w = new QWidget;
|
||||||
|
QHBoxLayout *layout = new QHBoxLayout(w);
|
||||||
|
layout->addStretch(1);
|
||||||
|
statusbar->insertWidget(1, w, 1);
|
||||||
|
|
||||||
installEventFilter(this);
|
installEventFilter(this);
|
||||||
|
setWindowTitle(tr("Qt Creator Offline Help"));
|
||||||
}
|
}
|
||||||
|
|
||||||
ExternalHelpWindow::~ExternalHelpWindow()
|
ExternalHelpWindow::~ExternalHelpWindow()
|
||||||
|
|||||||
@@ -33,16 +33,27 @@
|
|||||||
#include <QtGui/QMainWindow>
|
#include <QtGui/QMainWindow>
|
||||||
|
|
||||||
QT_FORWARD_DECLARE_CLASS(QCloseEvent)
|
QT_FORWARD_DECLARE_CLASS(QCloseEvent)
|
||||||
|
QT_FORWARD_DECLARE_CLASS(QToolButton)
|
||||||
|
|
||||||
namespace Help {
|
namespace Help {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
class ExternalHelpWindow : public QMainWindow
|
class ExternalHelpWindow : public QMainWindow
|
||||||
{
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ExternalHelpWindow(QWidget *parent = 0);
|
ExternalHelpWindow(QWidget *parent = 0);
|
||||||
virtual ~ExternalHelpWindow();
|
virtual ~ExternalHelpWindow();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void activateIndex();
|
||||||
|
void activateContents();
|
||||||
|
void activateSearch();
|
||||||
|
void activateBookmarks();
|
||||||
|
void activateOpenPages();
|
||||||
|
void showHideSidebar();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void closeEvent(QCloseEvent *event);
|
void closeEvent(QCloseEvent *event);
|
||||||
bool eventFilter(QObject *obj, QEvent *event);
|
bool eventFilter(QObject *obj, QEvent *event);
|
||||||
|
|||||||
@@ -117,8 +117,7 @@ HelpPlugin::HelpPlugin()
|
|||||||
m_bookmarkItem(0),
|
m_bookmarkItem(0),
|
||||||
m_sideBar(0),
|
m_sideBar(0),
|
||||||
m_firstModeChange(true),
|
m_firstModeChange(true),
|
||||||
m_oldMode(0),
|
m_oldMode(0)
|
||||||
m_externalWindow(new ExternalHelpWindow(0))
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -208,7 +207,8 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error)
|
|||||||
connect(action, SIGNAL(triggered()), this, SLOT(addBookmark()));
|
connect(action, SIGNAL(triggered()), this, SLOT(addBookmark()));
|
||||||
|
|
||||||
// Add Contents, Index, and Context menu items and a separator to the Help menu
|
// Add Contents, Index, and Context menu items and a separator to the Help menu
|
||||||
action = new QAction(QIcon::fromTheme(QLatin1String("help-contents")), tr(SB_CONTENTS), this);
|
action = new QAction(QIcon::fromTheme(QLatin1String("help-contents")),
|
||||||
|
tr(SB_CONTENTS), this);
|
||||||
cmd = am->registerAction(action, QLatin1String("Help.Contents"), globalcontext);
|
cmd = am->registerAction(action, QLatin1String("Help.Contents"), globalcontext);
|
||||||
am->actionContainer(M_HELP)->addAction(cmd, Core::Constants::G_HELP_HELP);
|
am->actionContainer(M_HELP)->addAction(cmd, Core::Constants::G_HELP_HELP);
|
||||||
connect(action, SIGNAL(triggered()), this, SLOT(activateContents()));
|
connect(action, SIGNAL(triggered()), this, SLOT(activateContents()));
|
||||||
@@ -324,6 +324,7 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error)
|
|||||||
connect(m_core->modeManager(), SIGNAL(currentModeChanged(Core::IMode*,
|
connect(m_core->modeManager(), SIGNAL(currentModeChanged(Core::IMode*,
|
||||||
Core::IMode*)), this, SLOT(modeChanged(Core::IMode*, Core::IMode*)));
|
Core::IMode*)), this, SLOT(modeChanged(Core::IMode*, Core::IMode*)));
|
||||||
|
|
||||||
|
m_externalWindow = new ExternalHelpWindow;
|
||||||
if (contextHelpOption() == Help::Constants::ExternalHelpAlways) {
|
if (contextHelpOption() == Help::Constants::ExternalHelpAlways) {
|
||||||
m_mode = new HelpMode(new QWidget);
|
m_mode = new HelpMode(new QWidget);
|
||||||
m_mode->setEnabled(false);
|
m_mode->setEnabled(false);
|
||||||
@@ -335,9 +336,6 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error)
|
|||||||
addAutoReleasedObject(m_mode);
|
addAutoReleasedObject(m_mode);
|
||||||
m_mode->setContext(modecontext);
|
m_mode->setContext(modecontext);
|
||||||
|
|
||||||
connect(Core::ICore::instance(), SIGNAL(coreAboutToClose()),
|
|
||||||
m_externalWindow, SLOT(close()));
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -561,8 +559,8 @@ void HelpPlugin::createRightPaneContextViewer()
|
|||||||
Core::Context(Constants::C_HELP_SIDEBAR), this));
|
Core::Context(Constants::C_HELP_SIDEBAR), this));
|
||||||
|
|
||||||
QAction *copy = new QAction(this);
|
QAction *copy = new QAction(this);
|
||||||
Core::Command *cmd = m_core->actionManager()->registerAction(copy, Core::Constants::COPY,
|
Core::Command *cmd = m_core->actionManager()->registerAction(copy,
|
||||||
Core::Context(Constants::C_HELP_SIDEBAR));
|
Core::Constants::COPY, Core::Context(Constants::C_HELP_SIDEBAR));
|
||||||
copy->setText(cmd->action()->text());
|
copy->setText(cmd->action()->text());
|
||||||
copy->setIcon(cmd->action()->icon());
|
copy->setIcon(cmd->action()->icon());
|
||||||
|
|
||||||
@@ -600,15 +598,22 @@ void HelpPlugin::slotHideRightPane()
|
|||||||
Core::RightPaneWidget::instance()->setShown(false);
|
Core::RightPaneWidget::instance()->setShown(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HelpPlugin::showHideSidebar()
|
||||||
|
{
|
||||||
|
m_sideBar->setVisible(!m_sideBar->isVisible());
|
||||||
|
}
|
||||||
|
|
||||||
void HelpPlugin::showExternalWindow()
|
void HelpPlugin::showExternalWindow()
|
||||||
{
|
{
|
||||||
bool firstTime = m_firstModeChange;
|
bool firstTime = m_firstModeChange;
|
||||||
setup();
|
setup();
|
||||||
m_externalWindow->show();
|
m_externalWindow->show();
|
||||||
m_externalWindow->activateWindow();
|
m_externalWindow->activateWindow();
|
||||||
if (firstTime)
|
if (firstTime) {
|
||||||
|
connectExternalHelpWindow();
|
||||||
Core::ICore::instance()->mainWindow()->activateWindow();
|
Core::ICore::instance()->mainWindow()->activateWindow();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void HelpPlugin::modeChanged(Core::IMode *mode, Core::IMode *old)
|
void HelpPlugin::modeChanged(Core::IMode *mode, Core::IMode *old)
|
||||||
{
|
{
|
||||||
@@ -707,6 +712,7 @@ void HelpPlugin::contextHelpOptionChanged()
|
|||||||
|
|
||||||
m_mode->setEnabled(true);
|
m_mode->setEnabled(true);
|
||||||
m_externalWindow->close();
|
m_externalWindow->close();
|
||||||
|
m_sideBar->setVisible(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1005,4 +1011,22 @@ int HelpPlugin::contextHelpOption() const
|
|||||||
Help::Constants::SideBySideIfPossible).toInt();
|
Help::Constants::SideBySideIfPossible).toInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HelpPlugin::connectExternalHelpWindow()
|
||||||
|
{
|
||||||
|
connect(Core::ICore::instance(), SIGNAL(coreAboutToClose()),
|
||||||
|
m_externalWindow, SLOT(close()));
|
||||||
|
connect(m_externalWindow, SIGNAL(activateIndex()), this,
|
||||||
|
SLOT(activateIndex()));
|
||||||
|
connect(m_externalWindow, SIGNAL(activateContents()), this,
|
||||||
|
SLOT(activateContents()));
|
||||||
|
connect(m_externalWindow, SIGNAL(activateSearch()), this,
|
||||||
|
SLOT(activateSearch()));
|
||||||
|
connect(m_externalWindow, SIGNAL(activateBookmarks()), this,
|
||||||
|
SLOT(activateBookmarks()));
|
||||||
|
connect(m_externalWindow, SIGNAL(activateOpenPages()), this,
|
||||||
|
SLOT(activateOpenPages()));
|
||||||
|
connect(m_externalWindow, SIGNAL(showHideSidebar()), this,
|
||||||
|
SLOT(showHideSidebar()));
|
||||||
|
}
|
||||||
|
|
||||||
Q_EXPORT_PLUGIN(HelpPlugin)
|
Q_EXPORT_PLUGIN(HelpPlugin)
|
||||||
|
|||||||
@@ -91,6 +91,7 @@ private slots:
|
|||||||
void switchToHelpMode();
|
void switchToHelpMode();
|
||||||
void switchToHelpMode(const QUrl &source);
|
void switchToHelpMode(const QUrl &source);
|
||||||
void slotHideRightPane();
|
void slotHideRightPane();
|
||||||
|
void showHideSidebar();
|
||||||
|
|
||||||
void updateSideBarSource();
|
void updateSideBarSource();
|
||||||
void updateSideBarSource(const QUrl &newUrl);
|
void updateSideBarSource(const QUrl &newUrl);
|
||||||
@@ -114,6 +115,7 @@ private:
|
|||||||
|
|
||||||
void setup();
|
void setup();
|
||||||
int contextHelpOption() const;
|
int contextHelpOption() const;
|
||||||
|
void connectExternalHelpWindow();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HelpMode *m_mode;
|
HelpMode *m_mode;
|
||||||
|
|||||||
@@ -124,6 +124,16 @@ bool OpenPagesSwitcher::eventFilter(QObject *object, QEvent *event)
|
|||||||
emit setCurrentPage(m_openPagesWidget->currentIndex());
|
emit setCurrentPage(m_openPagesWidget->currentIndex());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Qt::KeyboardModifier modifier = Qt::ControlModifier;
|
||||||
|
#ifdef Q_WS_MAC
|
||||||
|
modifier = Qt::AltModifier;
|
||||||
|
#endif
|
||||||
|
if (key == Qt::Key_Backtab
|
||||||
|
&& (ke->modifiers() == (modifier | Qt::ShiftModifier)))
|
||||||
|
gotoNextPage();
|
||||||
|
else if (key == Qt::Key_Tab && (ke->modifiers() == modifier))
|
||||||
|
gotoPreviousPage();
|
||||||
} else if (event->type() == QEvent::KeyRelease) {
|
} else if (event->type() == QEvent::KeyRelease) {
|
||||||
QKeyEvent *ke = static_cast<QKeyEvent*>(event);
|
QKeyEvent *ke = static_cast<QKeyEvent*>(event);
|
||||||
if (ke->modifiers() == 0
|
if (ke->modifiers() == 0
|
||||||
|
|||||||
Reference in New Issue
Block a user