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 "helpconstants.h"
|
||||
|
||||
#include "centralwidget.h"
|
||||
#include "helpconstants.h"
|
||||
#include "openpagesmanager.h"
|
||||
|
||||
#include <coreplugin/coreconstants.h>
|
||||
#include <coreplugin/icore.h>
|
||||
|
||||
#include <QtGui/QAction>
|
||||
#include <QtGui/QHBoxLayout>
|
||||
#include <QtGui/QKeyEvent>
|
||||
#include <QtGui/QStatusBar>
|
||||
#include <QtGui/QToolButton>
|
||||
|
||||
using namespace Help::Internal;
|
||||
|
||||
@@ -49,7 +57,86 @@ ExternalHelpWindow::ExternalHelpWindow(QWidget *parent)
|
||||
resize(640, 480);
|
||||
|
||||
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);
|
||||
setWindowTitle(tr("Qt Creator Offline Help"));
|
||||
}
|
||||
|
||||
ExternalHelpWindow::~ExternalHelpWindow()
|
||||
|
||||
@@ -33,16 +33,27 @@
|
||||
#include <QtGui/QMainWindow>
|
||||
|
||||
QT_FORWARD_DECLARE_CLASS(QCloseEvent)
|
||||
QT_FORWARD_DECLARE_CLASS(QToolButton)
|
||||
|
||||
namespace Help {
|
||||
namespace Internal {
|
||||
|
||||
class ExternalHelpWindow : public QMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ExternalHelpWindow(QWidget *parent = 0);
|
||||
virtual ~ExternalHelpWindow();
|
||||
|
||||
signals:
|
||||
void activateIndex();
|
||||
void activateContents();
|
||||
void activateSearch();
|
||||
void activateBookmarks();
|
||||
void activateOpenPages();
|
||||
void showHideSidebar();
|
||||
|
||||
protected:
|
||||
void closeEvent(QCloseEvent *event);
|
||||
bool eventFilter(QObject *obj, QEvent *event);
|
||||
|
||||
@@ -117,8 +117,7 @@ HelpPlugin::HelpPlugin()
|
||||
m_bookmarkItem(0),
|
||||
m_sideBar(0),
|
||||
m_firstModeChange(true),
|
||||
m_oldMode(0),
|
||||
m_externalWindow(new ExternalHelpWindow(0))
|
||||
m_oldMode(0)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -208,7 +207,8 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error)
|
||||
connect(action, SIGNAL(triggered()), this, SLOT(addBookmark()));
|
||||
|
||||
// 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);
|
||||
am->actionContainer(M_HELP)->addAction(cmd, Core::Constants::G_HELP_HELP);
|
||||
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*,
|
||||
Core::IMode*)), this, SLOT(modeChanged(Core::IMode*, Core::IMode*)));
|
||||
|
||||
m_externalWindow = new ExternalHelpWindow;
|
||||
if (contextHelpOption() == Help::Constants::ExternalHelpAlways) {
|
||||
m_mode = new HelpMode(new QWidget);
|
||||
m_mode->setEnabled(false);
|
||||
@@ -335,9 +336,6 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error)
|
||||
addAutoReleasedObject(m_mode);
|
||||
m_mode->setContext(modecontext);
|
||||
|
||||
connect(Core::ICore::instance(), SIGNAL(coreAboutToClose()),
|
||||
m_externalWindow, SLOT(close()));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -561,8 +559,8 @@ void HelpPlugin::createRightPaneContextViewer()
|
||||
Core::Context(Constants::C_HELP_SIDEBAR), this));
|
||||
|
||||
QAction *copy = new QAction(this);
|
||||
Core::Command *cmd = m_core->actionManager()->registerAction(copy, Core::Constants::COPY,
|
||||
Core::Context(Constants::C_HELP_SIDEBAR));
|
||||
Core::Command *cmd = m_core->actionManager()->registerAction(copy,
|
||||
Core::Constants::COPY, Core::Context(Constants::C_HELP_SIDEBAR));
|
||||
copy->setText(cmd->action()->text());
|
||||
copy->setIcon(cmd->action()->icon());
|
||||
|
||||
@@ -600,14 +598,21 @@ void HelpPlugin::slotHideRightPane()
|
||||
Core::RightPaneWidget::instance()->setShown(false);
|
||||
}
|
||||
|
||||
void HelpPlugin::showHideSidebar()
|
||||
{
|
||||
m_sideBar->setVisible(!m_sideBar->isVisible());
|
||||
}
|
||||
|
||||
void HelpPlugin::showExternalWindow()
|
||||
{
|
||||
bool firstTime = m_firstModeChange;
|
||||
setup();
|
||||
m_externalWindow->show();
|
||||
m_externalWindow->activateWindow();
|
||||
if (firstTime)
|
||||
if (firstTime) {
|
||||
connectExternalHelpWindow();
|
||||
Core::ICore::instance()->mainWindow()->activateWindow();
|
||||
}
|
||||
}
|
||||
|
||||
void HelpPlugin::modeChanged(Core::IMode *mode, Core::IMode *old)
|
||||
@@ -707,6 +712,7 @@ void HelpPlugin::contextHelpOptionChanged()
|
||||
|
||||
m_mode->setEnabled(true);
|
||||
m_externalWindow->close();
|
||||
m_sideBar->setVisible(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1005,4 +1011,22 @@ int HelpPlugin::contextHelpOption() const
|
||||
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)
|
||||
|
||||
@@ -91,6 +91,7 @@ private slots:
|
||||
void switchToHelpMode();
|
||||
void switchToHelpMode(const QUrl &source);
|
||||
void slotHideRightPane();
|
||||
void showHideSidebar();
|
||||
|
||||
void updateSideBarSource();
|
||||
void updateSideBarSource(const QUrl &newUrl);
|
||||
@@ -114,6 +115,7 @@ private:
|
||||
|
||||
void setup();
|
||||
int contextHelpOption() const;
|
||||
void connectExternalHelpWindow();
|
||||
|
||||
private:
|
||||
HelpMode *m_mode;
|
||||
|
||||
@@ -124,6 +124,16 @@ bool OpenPagesSwitcher::eventFilter(QObject *object, QEvent *event)
|
||||
emit setCurrentPage(m_openPagesWidget->currentIndex());
|
||||
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) {
|
||||
QKeyEvent *ke = static_cast<QKeyEvent*>(event);
|
||||
if (ke->modifiers() == 0
|
||||
|
||||
Reference in New Issue
Block a user