aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/help/helpwidget.cpp
diff options
context:
space:
mode:
authorEike Ziller <[email protected]>2014-06-18 17:42:01 +0200
committerEike Ziller <[email protected]>2014-06-20 14:01:28 +0200
commite7ac9facd361f81f6922d583a4675b7d6019e24b (patch)
tree7634f19237525e97fa26993794609754c32574d2 /src/plugins/help/helpwidget.cpp
parentb2a2a893581433ac06ef29569aba491a7db92e90 (diff)
Help: Implement a real external help window
With this patch it is just used with the context help "always show in external window" option. Change-Id: I4bc6ba8e0e241500f6970d4cb72f66ba02075ef5 Reviewed-by: Karsten Heimrich <[email protected]>
Diffstat (limited to 'src/plugins/help/helpwidget.cpp')
-rw-r--r--src/plugins/help/helpwidget.cpp91
1 files changed, 69 insertions, 22 deletions
diff --git a/src/plugins/help/helpwidget.cpp b/src/plugins/help/helpwidget.cpp
index 652b5f06528..e4ba016de2c 100644
--- a/src/plugins/help/helpwidget.cpp
+++ b/src/plugins/help/helpwidget.cpp
@@ -29,6 +29,7 @@
#include "helpwidget.h"
+#include "helpconstants.h"
#include "helpplugin.h"
#include "helpviewer.h"
@@ -38,6 +39,7 @@
#include <coreplugin/icore.h>
#include <coreplugin/findplaceholder.h>
#include <texteditor/texteditorconstants.h>
+#include <utils/qtcassert.h>
#include <utils/styledbar.h>
#include <QHBoxLayout>
@@ -55,8 +57,11 @@ static QToolButton *toolButton(QAction *action)
namespace Help {
namespace Internal {
-HelpWidget::HelpWidget(const Core::Context &context, QWidget *parent) :
- QWidget(parent)
+HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget *parent) :
+ QWidget(parent),
+ m_scaleUp(0),
+ m_scaleDown(0),
+ m_resetScale(0)
{
Utils::StyledBar *toolBar = new Utils::StyledBar();
@@ -74,10 +79,6 @@ HelpWidget::HelpWidget(const Core::Context &context, QWidget *parent) :
connect(m_forwardMenu, SIGNAL(aboutToShow()), this, SLOT(updateForwardMenu()));
forward->setMenu(m_forwardMenu);
- QAction *close = new QAction(QIcon(QLatin1String(Core::Constants::ICON_CLOSE_DOCUMENT)),
- QString(), toolBar);
- connect(close, SIGNAL(triggered()), this, SIGNAL(close()));
-
QHBoxLayout *layout = new QHBoxLayout(toolBar);
layout->setSpacing(0);
layout->setMargin(0);
@@ -86,10 +87,8 @@ HelpWidget::HelpWidget(const Core::Context &context, QWidget *parent) :
layout->addWidget(toolButton(back));
layout->addWidget(toolButton(forward));
layout->addStretch();
- layout->addWidget(toolButton(close));
m_viewer = HelpPlugin::createHelpViewer(qreal(0.0));
- m_viewer->setOpenInNewWindowActionVisible(false);
QVBoxLayout *vLayout = new QVBoxLayout(this);
vLayout->setMargin(0);
@@ -106,10 +105,6 @@ HelpWidget::HelpWidget(const Core::Context &context, QWidget *parent) :
icontext->setWidget(m_viewer);
Core::ICore::addContextObject(icontext);
- QAction *copy = new QAction(this);
- Core::Command *cmd = Core::ActionManager::registerAction(copy, Core::Constants::COPY, context);
- connect(copy, SIGNAL(triggered()), m_viewer, SLOT(copy()));
-
back->setEnabled(m_viewer->isBackwardAvailable());
connect(back, SIGNAL(triggered()), m_viewer, SLOT(backward()));
connect(m_viewer, SIGNAL(backwardAvailable(bool)), back,
@@ -120,26 +115,64 @@ HelpWidget::HelpWidget(const Core::Context &context, QWidget *parent) :
connect(m_viewer, SIGNAL(forwardAvailable(bool)), forward,
SLOT(setEnabled(bool)));
- if (Core::ActionContainer *advancedMenu = Core::ActionManager::actionContainer(Core::Constants::M_EDIT_ADVANCED)) {
+ m_copy = new QAction(this);
+ Core::Command *cmd = Core::ActionManager::registerAction(m_copy, Core::Constants::COPY, context);
+ connect(m_copy, SIGNAL(triggered()), m_viewer, SLOT(copy()));
+
+ m_openHelpMode = new QAction(this);
+ cmd = Core::ActionManager::registerAction(m_openHelpMode,
+ Help::Constants::CONTEXT_HELP,
+ context);
+ connect(m_openHelpMode, SIGNAL(triggered()), this, SLOT(emitOpenHelpMode()));
+
+ Core::ActionContainer *advancedMenu = Core::ActionManager::actionContainer(Core::Constants::M_EDIT_ADVANCED);
+ QTC_CHECK(advancedMenu);
+ if (advancedMenu) {
// reuse TextEditor constants to avoid a second pair of menu actions
- QAction *action = new QAction(tr("Increase Font Size"), this);
- cmd = Core::ActionManager::registerAction(action, TextEditor::Constants::INCREASE_FONT_SIZE,
+ m_scaleUp = new QAction(tr("Increase Font Size"), this);
+ cmd = Core::ActionManager::registerAction(m_scaleUp, TextEditor::Constants::INCREASE_FONT_SIZE,
context);
- connect(action, SIGNAL(triggered()), m_viewer, SLOT(scaleUp()));
+ connect(m_scaleUp, SIGNAL(triggered()), m_viewer, SLOT(scaleUp()));
advancedMenu->addAction(cmd, Core::Constants::G_EDIT_FONT);
- action = new QAction(tr("Decrease Font Size"), this);
- cmd = Core::ActionManager::registerAction(action, TextEditor::Constants::DECREASE_FONT_SIZE,
+ m_scaleDown = new QAction(tr("Decrease Font Size"), this);
+ cmd = Core::ActionManager::registerAction(m_scaleDown, TextEditor::Constants::DECREASE_FONT_SIZE,
context);
- connect(action, SIGNAL(triggered()), m_viewer, SLOT(scaleDown()));
+ connect(m_scaleDown, SIGNAL(triggered()), m_viewer, SLOT(scaleDown()));
advancedMenu->addAction(cmd, Core::Constants::G_EDIT_FONT);
- action = new QAction(tr("Reset Font Size"), this);
- cmd = Core::ActionManager::registerAction(action, TextEditor::Constants::RESET_FONT_SIZE,
+ m_resetScale = new QAction(tr("Reset Font Size"), this);
+ cmd = Core::ActionManager::registerAction(m_resetScale, TextEditor::Constants::RESET_FONT_SIZE,
context);
- connect(action, SIGNAL(triggered()), m_viewer, SLOT(resetScale()));
+ connect(m_resetScale, SIGNAL(triggered()), m_viewer, SLOT(resetScale()));
advancedMenu->addAction(cmd, Core::Constants::G_EDIT_FONT);
}
+
+ if (style == SideBarWidget) {
+ QAction *close = new QAction(QIcon(QLatin1String(Core::Constants::ICON_CLOSE_DOCUMENT)),
+ QString(), toolBar);
+ connect(close, SIGNAL(triggered()), this, SIGNAL(closeButtonClicked()));
+ layout->addWidget(toolButton(close));
+ m_viewer->setOpenInNewWindowActionVisible(false);
+ } else if (style == ExternalWindow) {
+ setAttribute(Qt::WA_DeleteOnClose);
+ setAttribute(Qt::WA_QuitOnClose, false); // don't prevent Qt Creator from closing
+ connect(m_viewer, SIGNAL(titleChanged()), this, SLOT(updateWindowTitle()));
+ updateWindowTitle();
+ m_viewer->setOpenInNewWindowActionVisible(false);
+ }
+}
+
+HelpWidget::~HelpWidget()
+{
+ Core::ActionManager::unregisterAction(m_copy, Core::Constants::COPY);
+ Core::ActionManager::unregisterAction(m_openHelpMode, Help::Constants::CONTEXT_HELP);
+ if (m_scaleUp)
+ Core::ActionManager::unregisterAction(m_scaleUp, TextEditor::Constants::INCREASE_FONT_SIZE);
+ if (m_scaleDown)
+ Core::ActionManager::unregisterAction(m_scaleDown, TextEditor::Constants::DECREASE_FONT_SIZE);
+ if (m_resetScale)
+ Core::ActionManager::unregisterAction(m_resetScale, TextEditor::Constants::RESET_FONT_SIZE);
}
HelpViewer *HelpWidget::currentViewer() const
@@ -147,6 +180,11 @@ HelpViewer *HelpWidget::currentViewer() const
return m_viewer;
}
+void HelpWidget::closeEvent(QCloseEvent *)
+{
+ emit aboutToClose();
+}
+
void HelpWidget::updateBackMenu()
{
m_backMenu->clear();
@@ -159,6 +197,15 @@ void HelpWidget::updateForwardMenu()
m_viewer->addForwardHistoryItems(m_forwardMenu);
}
+void HelpWidget::updateWindowTitle()
+{
+ const QString pageTitle = m_viewer->title();
+ if (pageTitle.isEmpty())
+ setWindowTitle(tr("Help"));
+ else
+ setWindowTitle(tr("Help - %1").arg(pageTitle));
+}
+
void HelpWidget::emitOpenHelpMode()
{
emit openHelpMode(m_viewer->source());