diff options
author | Eike Ziller <eike.ziller@digia.com> | 2014-10-13 19:40:39 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@theqtcompany.com> | 2014-10-14 17:33:07 +0200 |
commit | f4b3f20cf2dbf6c5bd736d24c2c489e51351e163 (patch) | |
tree | 0de6cba47372db79abff8dc013033122ae9c38ff /src | |
parent | 8fcf27fd4271e0e0f4304a761ae41e71234bdad0 (diff) | |
download | qt-creator-f4b3f20cf2dbf6c5bd736d24c2c489e51351e163.tar.gz |
Help: Remove the now duplicate side bar code for central widget
By adding the open pages widget to the shared help widget for the mode
widget.
Change-Id: Ib2d63134d1e17356a285ad048529c50e151a2354
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/help/helpplugin.cpp | 149 | ||||
-rw-r--r-- | src/plugins/help/helpplugin.h | 12 | ||||
-rw-r--r-- | src/plugins/help/helpwidget.cpp | 78 | ||||
-rw-r--r-- | src/plugins/help/helpwidget.h | 3 |
4 files changed, 77 insertions, 165 deletions
diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index 311522d5f9..b58557dff3 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -97,7 +97,6 @@ using namespace Help::Internal; static const char kExternalWindowStateKey[] = "Help/ExternalWindowState"; -static const char kHelpModeSideBarKey[] = "Help/ModeSideBar"; #define IMAGEPATH ":/help/images/" @@ -107,7 +106,6 @@ HelpPlugin::HelpPlugin() : m_mode(0), m_centralWidget(0), m_rightPaneSideBarWidget(0), - m_sideBar(0), m_setupNeeded(true), m_helpManager(0), m_openPagesManager(0) @@ -116,10 +114,7 @@ HelpPlugin::HelpPlugin() HelpPlugin::~HelpPlugin() { - delete m_centralWidget; delete m_openPagesManager; - delete m_rightPaneSideBarWidget; - delete m_helpManager; } @@ -176,7 +171,6 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error) connect(HelpManager::instance(), SIGNAL(setupFinished()), this, SLOT(unregisterOldQtCreatorDocumentation())); - m_splitter = new MiniSplitter; Command *cmd; QAction *action; @@ -227,8 +221,6 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error) SLOT(gotoNextPage())); } - m_splitter->addWidget(m_centralWidget); - HelpIndexFilter *helpIndexFilter = new HelpIndexFilter(); addAutoReleasedObject(helpIndexFilter); connect(helpIndexFilter, SIGNAL(linkActivated(QUrl)), this, @@ -244,7 +236,7 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error) this, SLOT(modeChanged(Core::IMode*,Core::IMode*))); m_mode = new HelpMode; - m_mode->setWidget(m_splitter); + m_mode->setWidget(m_centralWidget); addAutoReleasedObject(m_mode); return true; @@ -260,9 +252,12 @@ void HelpPlugin::extensionsInitialized() ExtensionSystem::IPlugin::ShutdownFlag HelpPlugin::aboutToShutdown() { - if (m_sideBar) - m_sideBar->saveSettings(ICore::settings(), QLatin1String(kHelpModeSideBarKey)); - + if (m_externalWindow) + delete m_externalWindow.data(); + if (m_centralWidget) + delete m_centralWidget; + if (m_rightPaneSideBarWidget) + delete m_rightPaneSideBarWidget; return SynchronousShutdown; } @@ -282,97 +277,6 @@ void HelpPlugin::unregisterOldQtCreatorDocumentation() HelpManager::unregisterDocumentation(documentationToUnregister); } -void HelpPlugin::setupUi() -{ - // side bar widgets and shortcuts - Context modecontext(Constants::C_MODE_HELP); - - IndexWindow *indexWindow = new IndexWindow(); - indexWindow->setWindowTitle(tr(Constants::SB_INDEX)); - auto indexItem = new SideBarItem(indexWindow, QLatin1String(Constants::HELP_INDEX)); - - connect(indexWindow, &IndexWindow::linkActivated, - m_centralWidget, &HelpWidget::open); - connect(indexWindow, &IndexWindow::linksActivated, - m_centralWidget, &HelpWidget::showTopicChooser); - - QMap<QString, Command*> shortcutMap; - QAction *action = new QAction(tr("Activate Help Index View"), m_splitter); - Command *cmd = ActionManager::registerAction(action, Constants::HELP_INDEX, modecontext); - cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+I") : tr("Ctrl+Shift+I"))); - connect(action, SIGNAL(triggered()), this, SLOT(activateIndex())); - shortcutMap.insert(QLatin1String(Constants::HELP_INDEX), cmd); - - ContentWindow *contentWindow = new ContentWindow(); - contentWindow->setWindowTitle(tr(Constants::SB_CONTENTS)); - auto contentItem = new SideBarItem(contentWindow, QLatin1String(Constants::HELP_CONTENTS)); - connect(contentWindow, &ContentWindow::linkActivated, m_centralWidget, &HelpWidget::open); - - action = new QAction(tr("Activate Help Contents View"), m_splitter); - cmd = ActionManager::registerAction(action, Constants::HELP_CONTENTS, modecontext); - cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+Shift+C") : tr("Ctrl+Shift+C"))); - connect(action, SIGNAL(triggered()), this, SLOT(activateContents())); - shortcutMap.insert(QLatin1String(Constants::HELP_CONTENTS), cmd); - - auto searchItem = new SearchSideBarItem; - connect(searchItem, &SearchSideBarItem::linkActivated, - m_centralWidget, &HelpWidget::openFromSearch); - - action = new QAction(tr("Activate Help Search View"), m_splitter); - cmd = ActionManager::registerAction(action, Constants::HELP_SEARCH, modecontext); - cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+/") : tr("Ctrl+Shift+/"))); - connect(action, SIGNAL(triggered()), this, SLOT(activateSearch())); - shortcutMap.insert(searchItem->id(), cmd); - - BookmarkManager *manager = &LocalHelpManager::bookmarkManager(); - BookmarkWidget *bookmarkWidget = new BookmarkWidget(manager); - bookmarkWidget->setWindowTitle(tr(Constants::SB_BOOKMARKS)); - auto bookmarkItem = new SideBarItem(bookmarkWidget, QLatin1String(Constants::HELP_BOOKMARKS)); - connect(bookmarkWidget, SIGNAL(linkActivated(QUrl)), m_centralWidget, - SLOT(setSource(QUrl))); - connect(bookmarkWidget, SIGNAL(createPage(QUrl,bool)), &OpenPagesManager::instance(), - SLOT(createPage(QUrl,bool))); - - action = new QAction(tr("Activate Help Bookmarks View"), m_splitter); - cmd = ActionManager::registerAction(action, Constants::HELP_BOOKMARKS, modecontext); - cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+B") : tr("Ctrl+Shift+B"))); - connect(action, SIGNAL(triggered()), this, SLOT(activateBookmarks())); - shortcutMap.insert(QLatin1String(Constants::HELP_BOOKMARKS), cmd); - - QWidget *openPagesWidget = OpenPagesManager::instance().openPagesWidget(); - openPagesWidget->setWindowTitle(tr(Constants::SB_OPENPAGES)); - auto openPagesItem = new SideBarItem(openPagesWidget, QLatin1String(Constants::HELP_OPENPAGES)); - - action = new QAction(tr("Activate Open Help Pages View"), m_splitter); - cmd = ActionManager::registerAction(action, Constants::HELP_OPENPAGES, modecontext); - cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+O") : tr("Ctrl+Shift+O"))); - connect(action, SIGNAL(triggered()), this, SLOT(activateOpenPages())); - shortcutMap.insert(QLatin1String(Constants::HELP_OPENPAGES), cmd); - - QList<SideBarItem*> itemList; - itemList << contentItem << indexItem << searchItem << bookmarkItem - << openPagesItem; - m_sideBar = new SideBar(itemList, QList<SideBarItem*>() - << contentItem << openPagesItem); - m_sideBar->setCloseWhenEmpty(true); - m_sideBar->setShortcutMap(shortcutMap); - connect(m_sideBar, SIGNAL(sideBarClosed()), this, SLOT(onSideBarVisibilityChanged())); - - m_splitter->setOpaqueResize(false); - m_splitter->insertWidget(0, m_sideBar); - m_splitter->setStretchFactor(0, 0); - m_splitter->setStretchFactor(1, 1); - m_sideBar->readSettings(ICore::settings(), QLatin1String(kHelpModeSideBarKey)); - m_splitter->setSizes(QList<int>() << m_sideBar->size().width() << 300); - - m_toggleSideBarAction = new QAction(QIcon(QLatin1String(Core::Constants::ICON_TOGGLE_SIDEBAR)), - tr(Core::Constants::TR_SHOW_SIDEBAR), this); - m_toggleSideBarAction->setCheckable(true); - m_toggleSideBarAction->setChecked(m_sideBar->isVisibleTo(m_splitter)); - connect(m_toggleSideBarAction, SIGNAL(triggered(bool)), this, SLOT(setSideBarVisible(bool))); - cmd = ActionManager::registerAction(m_toggleSideBarAction, Core::Constants::TOGGLE_SIDEBAR, modecontext); -} - void HelpPlugin::resetFilter() { const QString &filterInternal = QString::fromLatin1("Qt Creator %1.%2.%3") @@ -515,14 +419,6 @@ void HelpPlugin::slotHideRightPane() RightPaneWidget::instance()->setShown(false); } -void HelpPlugin::setSideBarVisible(bool visible) -{ - if (visible == m_sideBar->isVisible()) - return; - m_sideBar->setVisible(visible); - onSideBarVisibilityChanged(); -} - void HelpPlugin::modeChanged(IMode *mode, IMode *old) { Q_UNUSED(old) @@ -688,31 +584,13 @@ void HelpPlugin::showContextHelp() void HelpPlugin::activateIndex() { activateHelpMode(); - m_sideBar->activateItem(QLatin1String(Constants::HELP_INDEX)); + m_centralWidget->activateSideBarItem(QLatin1String(Constants::HELP_INDEX)); } void HelpPlugin::activateContents() { activateHelpMode(); - m_sideBar->activateItem(QLatin1String(Constants::HELP_CONTENTS)); -} - -void HelpPlugin::activateSearch() -{ - activateHelpMode(); - m_sideBar->activateItem(QLatin1String(Constants::HELP_SEARCH)); -} - -void HelpPlugin::activateOpenPages() -{ - activateHelpMode(); - m_sideBar->activateItem(QLatin1String(Constants::HELP_OPENPAGES)); -} - -void HelpPlugin::activateBookmarks() -{ - activateHelpMode(); - m_sideBar->activateItem(QLatin1String(Constants::HELP_BOOKMARKS)); + m_centralWidget->activateSideBarItem(QLatin1String(Constants::HELP_CONTENTS)); } void HelpPlugin::highlightSearchTermsInContextHelp() @@ -762,20 +640,11 @@ void HelpPlugin::slotReportBug() QDesktopServices::openUrl(QUrl(QLatin1String("https://bugreports.qt-project.org"))); } -void HelpPlugin::onSideBarVisibilityChanged() -{ - bool visible = m_sideBar->isVisibleTo(m_splitter); - m_toggleSideBarAction->setChecked(visible); - m_toggleSideBarAction->setToolTip(visible ? tr(Core::Constants::TR_HIDE_SIDEBAR) - : tr(Core::Constants::TR_SHOW_SIDEBAR)); -} - void HelpPlugin::doSetupIfNeeded() { m_helpManager->setupGuiHelpEngine(); if (m_setupNeeded) { qApp->processEvents(); - setupUi(); resetFilter(); m_setupNeeded = false; OpenPagesManager::instance().setupInitialPages(); diff --git a/src/plugins/help/helpplugin.h b/src/plugins/help/helpplugin.h index 82e369ca0d..582346aa85 100644 --- a/src/plugins/help/helpplugin.h +++ b/src/plugins/help/helpplugin.h @@ -92,14 +92,10 @@ private slots: void showContextHelp(); void activateIndex(); void activateContents(); - void activateSearch(); - void activateOpenPages(); - void activateBookmarks(); void saveExternalWindowSettings(); void switchToHelpMode(const QUrl &source); void slotHideRightPane(); - void setSideBarVisible(bool visible); void updateSideBarSource(); void updateSideBarSource(const QUrl &newUrl); @@ -114,10 +110,7 @@ private slots: void slotOpenSupportPage(); void slotReportBug(); - void onSideBarVisibilityChanged(); - private: - void setupUi(); void resetFilter(); void activateHelpMode(); bool canShowHelpSideBySide() const; @@ -140,19 +133,14 @@ private: GeneralSettingsPage *m_generalSettingsPage; SearchTaskHandler *m_searchTaskHandler; - Core::SideBar *m_sideBar; - bool m_setupNeeded; LocalHelpManager *m_helpManager; OpenPagesManager *m_openPagesManager; - Core::MiniSplitter *m_splitter; QString m_contextHelpHighlightId; QPointer<HelpWidget> m_externalWindow; QRect m_externalWindowState; - - QAction *m_toggleSideBarAction; }; } // namespace Internal diff --git a/src/plugins/help/helpwidget.cpp b/src/plugins/help/helpwidget.cpp index 449603da44..f87526aef0 100644 --- a/src/plugins/help/helpwidget.cpp +++ b/src/plugins/help/helpwidget.cpp @@ -63,7 +63,8 @@ #include <QStackedWidget> #include <QToolButton> -static const char kSideBarSettingsKey[] = "Help/WindowSideBar"; +static const char kWindowSideBarSettingsKey[] = "Help/WindowSideBar"; +static const char kModeSideBarSettingsKey[] = "Help/ModeSideBar"; namespace Help { namespace Internal { @@ -80,7 +81,11 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget m_resetScale(0), m_printer(0), m_sideBar(0), - m_indexAction(0) + m_contentsAction(0), + m_indexAction(0), + m_bookmarkAction(0), + m_searchAction(0), + m_openPagesAction(0) { m_viewerStack = new QStackedWidget; @@ -123,7 +128,8 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget Core::Context(Core::Id("Help.Window.").withSuffix(++windowId))); setAttribute(Qt::WA_DeleteOnClose); setAttribute(Qt::WA_QuitOnClose, false); // don't prevent Qt Creator from closing - + } + if (style != SideBarWidget) { m_toggleSideBarAction = new QAction(QIcon(QLatin1String(Core::Constants::ICON_TOGGLE_SIDEBAR)), tr(Core::Constants::TR_SHOW_SIDEBAR), toolBar); m_toggleSideBarAction->setCheckable(true); @@ -136,12 +142,14 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget : tr(Core::Constants::TR_SHOW_SIDEBAR)); }); addSideBar(); + m_toggleSideBarAction->setChecked(m_sideBar->isVisibleTo(this)); connect(m_toggleSideBarAction, &QAction::triggered, m_sideBar, &Core::SideBar::setVisible); connect(m_sideBar, &Core::SideBar::sideBarClosed, m_toggleSideBarAction, [this]() { m_toggleSideBarAction->setChecked(false); }); - layout->addWidget(Core::Command::toolButtonWithAppendedShortcut(m_toggleSideBarAction, cmd)); } + if (style == ExternalWindow) + layout->addWidget(Core::Command::toolButtonWithAppendedShortcut(m_toggleSideBarAction, cmd)); if (style != ModeWidget) { m_switchToHelp = new QAction(tr("Go to Help Mode"), toolBar); @@ -258,11 +266,13 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget HelpWidget::~HelpWidget() { if (m_sideBar) { - m_sideBar->saveSettings(Core::ICore::settings(), QLatin1String(kSideBarSettingsKey)); + m_sideBar->saveSettings(Core::ICore::settings(), sideBarSettingsKey()); Core::ActionManager::unregisterAction(m_contentsAction, Constants::HELP_CONTENTS); Core::ActionManager::unregisterAction(m_indexAction, Constants::HELP_INDEX); Core::ActionManager::unregisterAction(m_bookmarkAction, Constants::HELP_BOOKMARKS); Core::ActionManager::unregisterAction(m_searchAction, Constants::HELP_SEARCH); + if (m_openPagesAction) + Core::ActionManager::unregisterAction(m_openPagesAction, Constants::HELP_OPENPAGES); } Core::ICore::removeContextObject(m_context); Core::ActionManager::unregisterAction(m_copy, Core::Constants::COPY); @@ -287,14 +297,15 @@ void HelpWidget::addSideBar() { QMap<QString, Core::Command *> shortcutMap; Core::Command *cmd; + bool supportsNewPages = (m_style == ModeWidget); auto contentWindow = new ContentWindow; auto contentItem = new Core::SideBarItem(contentWindow, QLatin1String(Constants::HELP_CONTENTS)); - contentWindow->setOpenInNewPageActionVisible(false); + contentWindow->setOpenInNewPageActionVisible(supportsNewPages); contentWindow->setWindowTitle(tr(Constants::SB_CONTENTS)); connect(contentWindow, &ContentWindow::linkActivated, this, &HelpWidget::open); - m_contentsAction = new QAction(tr("Activate Help Contents View"), this); + m_contentsAction = new QAction(tr(Constants::SB_CONTENTS), this); cmd = Core::ActionManager::registerAction(m_contentsAction, Constants::HELP_CONTENTS, m_context->context()); cmd->setDefaultKeySequence(QKeySequence(Core::UseMacShortcuts ? tr("Meta+Shift+C") : tr("Ctrl+Shift+C"))); @@ -302,13 +313,13 @@ void HelpWidget::addSideBar() auto indexWindow = new IndexWindow(); auto indexItem = new Core::SideBarItem(indexWindow, QLatin1String(Constants::HELP_INDEX)); - indexWindow->setOpenInNewPageActionVisible(false); + indexWindow->setOpenInNewPageActionVisible(supportsNewPages); indexWindow->setWindowTitle(tr(Constants::SB_INDEX)); connect(indexWindow, &IndexWindow::linkActivated, this, &HelpWidget::open); connect(indexWindow, &IndexWindow::linksActivated, this, &HelpWidget::showTopicChooser); - m_indexAction = new QAction(tr("Activate Help Index View"), this); + m_indexAction = new QAction(tr(Constants::SB_INDEX), this); cmd = Core::ActionManager::registerAction(m_indexAction, Constants::HELP_INDEX, m_context->context()); cmd->setDefaultKeySequence(QKeySequence(Core::UseMacShortcuts ? tr("Meta+I") : tr("Ctrl+Shift+I"))); @@ -316,7 +327,7 @@ void HelpWidget::addSideBar() auto bookmarkWidget = new BookmarkWidget(&LocalHelpManager::bookmarkManager()); bookmarkWidget->setWindowTitle(tr(Constants::SB_BOOKMARKS)); - bookmarkWidget->setOpenInNewPageActionVisible(false); + bookmarkWidget->setOpenInNewPageActionVisible(supportsNewPages); auto bookmarkItem = new Core::SideBarItem(bookmarkWidget, QLatin1String(Constants::HELP_BOOKMARKS)); connect(bookmarkWidget, &BookmarkWidget::linkActivated, this, &HelpWidget::setSource); @@ -336,10 +347,27 @@ void HelpWidget::addSideBar() : tr("Ctrl+Shift+/"))); shortcutMap.insert(QLatin1String(Constants::HELP_SEARCH), cmd); + Core::SideBarItem *openPagesItem = 0; + if (m_style == ModeWidget) { + QWidget *openPagesWidget = OpenPagesManager::instance().openPagesWidget(); + openPagesWidget->setWindowTitle(tr(Constants::SB_OPENPAGES)); + openPagesItem = new Core::SideBarItem(openPagesWidget, + QLatin1String(Constants::HELP_OPENPAGES)); + m_openPagesAction = new QAction(tr("Activate Open Help Pages View"), this); + cmd = Core::ActionManager::registerAction(m_openPagesAction, Constants::HELP_OPENPAGES, + m_context->context()); + cmd->setDefaultKeySequence(QKeySequence(Core::UseMacShortcuts ? tr("Meta+O") + : tr("Ctrl+Shift+O"))); + shortcutMap.insert(QLatin1String(Constants::HELP_OPENPAGES), cmd); + } + QList<Core::SideBarItem *> itemList; itemList << contentItem << indexItem << bookmarkItem << searchItem; + if (openPagesItem) + itemList << openPagesItem; m_sideBar = new Core::SideBar(itemList, - QList<Core::SideBarItem *>() << contentItem << indexItem); + QList<Core::SideBarItem *>() << contentItem + << (openPagesItem ? openPagesItem : indexItem)); m_sideBar->setShortcutMap(shortcutMap); m_sideBar->setCloseWhenEmpty(true); m_sideBarSplitter->insertWidget(0, m_sideBar); @@ -347,9 +375,8 @@ void HelpWidget::addSideBar() m_sideBarSplitter->setStretchFactor(1, 1); m_sideBar->setVisible(false); m_sideBar->resize(250, size().height()); - m_sideBar->readSettings(Core::ICore::settings(), QLatin1String(kSideBarSettingsKey)); + m_sideBar->readSettings(Core::ICore::settings(), sideBarSettingsKey()); m_sideBarSplitter->setSizes(QList<int>() << m_sideBar->size().width() << 300); - m_toggleSideBarAction->setChecked(m_sideBar->isVisibleTo(this)); connect(m_indexAction, &QAction::triggered, m_sideBar, [this]() { m_sideBar->activateItem(QLatin1String(Constants::HELP_INDEX)); @@ -360,6 +387,25 @@ void HelpWidget::addSideBar() connect(m_searchAction, &QAction::triggered, m_sideBar, [this]() { m_sideBar->activateItem(QLatin1String(Constants::HELP_SEARCH)); }); + if (m_openPagesAction) { + connect(m_openPagesAction, &QAction::triggered, m_sideBar, [this]() { + m_sideBar->activateItem(QLatin1String(Constants::HELP_OPENPAGES)); + }); + } +} + +QString HelpWidget::sideBarSettingsKey() const +{ + switch (m_style) { + case ModeWidget: + return QLatin1String(kModeSideBarSettingsKey); + case ExternalWindow: + return QLatin1String(kWindowSideBarSettingsKey); + case SideBarWidget: + QTC_CHECK(false); + break; + } + return QString(); } HelpViewer *HelpWidget::currentViewer() const @@ -459,6 +505,12 @@ void HelpWidget::showTopicChooser(const QMap<QString, QUrl> &links, open(tc.link(), newPage); } +void HelpWidget::activateSideBarItem(const QString &id) +{ + QTC_ASSERT(m_sideBar, return); + m_sideBar->activateItem(id); +} + void HelpWidget::setSource(const QUrl &url) { HelpViewer* viewer = currentViewer(); diff --git a/src/plugins/help/helpwidget.h b/src/plugins/help/helpwidget.h index 70d032ea13..daafb849ab 100644 --- a/src/plugins/help/helpwidget.h +++ b/src/plugins/help/helpwidget.h @@ -84,6 +84,7 @@ public: void openFromSearch(const QUrl &url, bool newPage = false); void showTopicChooser(const QMap<QString, QUrl> &links, const QString &key, bool newPage = false); + void activateSideBarItem(const QString &id); public slots: void setSource(const QUrl &url); @@ -117,6 +118,7 @@ private: void print(HelpViewer *viewer); void highlightSearchTerms(); void addSideBar(); + QString sideBarSettingsKey() const; Core::IContext *m_context; WidgetStyle m_style; @@ -145,6 +147,7 @@ private: QAction *m_indexAction; QAction *m_bookmarkAction; QAction *m_searchAction; + QAction *m_openPagesAction; }; } // Internal |