TextEditor: add right sidebar
Task-number: QTCREATORBUG-9436 Change-Id: Ic0406758a30d52c22c58433f5f35305b798cb462 Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Alessandro Portale <alessandro.portale@qt.io> Reviewed-by: André Hartmann <aha_1980@gmx.de>
|
Before Width: | Height: | Size: 99 B After Width: | Height: | Size: 99 B |
|
Before Width: | Height: | Size: 104 B After Width: | Height: | Size: 104 B |
BIN
src/libs/utils/images/rightsidebaricon.png
Normal file
|
After Width: | Height: | Size: 99 B |
BIN
src/libs/utils/images/rightsidebaricon@2x.png
Normal file
|
After Width: | Height: | Size: 104 B |
@@ -80,8 +80,10 @@
|
|||||||
<file>images/replace_b.png</file>
|
<file>images/replace_b.png</file>
|
||||||
<file>images/replace_b@2x.png</file>
|
<file>images/replace_b@2x.png</file>
|
||||||
<file>images/reset.png</file>
|
<file>images/reset.png</file>
|
||||||
<file>images/sidebaricon.png</file>
|
<file>images/leftsidebaricon.png</file>
|
||||||
<file>images/sidebaricon@2x.png</file>
|
<file>images/leftsidebaricon@2x.png</file>
|
||||||
|
<file>images/rightsidebaricon.png</file>
|
||||||
|
<file>images/rightsidebaricon@2x.png</file>
|
||||||
<file>images/splitbutton_horizontal.png</file>
|
<file>images/splitbutton_horizontal.png</file>
|
||||||
<file>images/splitbutton_horizontal@2x.png</file>
|
<file>images/splitbutton_horizontal@2x.png</file>
|
||||||
<file>images/undo.png</file>
|
<file>images/undo.png</file>
|
||||||
|
|||||||
@@ -131,10 +131,14 @@ const Icon CLEAN_TOOLBAR({
|
|||||||
{QLatin1String(":/utils/images/clean_pane_small.png"), Theme::IconsBaseColor}});
|
{QLatin1String(":/utils/images/clean_pane_small.png"), Theme::IconsBaseColor}});
|
||||||
const Icon RELOAD({
|
const Icon RELOAD({
|
||||||
{QLatin1String(":/utils/images/reload_gray.png"), Theme::IconsBaseColor}});
|
{QLatin1String(":/utils/images/reload_gray.png"), Theme::IconsBaseColor}});
|
||||||
const Icon TOGGLE_SIDEBAR({
|
const Icon TOGGLE_LEFT_SIDEBAR({
|
||||||
{QLatin1String(":/utils/images/sidebaricon.png"), Theme::PanelTextColorMid}}, Icon::MenuTintedStyle);
|
{QLatin1String(":/utils/images/leftsidebaricon.png"), Theme::PanelTextColorMid}}, Icon::MenuTintedStyle);
|
||||||
const Icon TOGGLE_SIDEBAR_TOOLBAR({
|
const Icon TOGGLE_LEFT_SIDEBAR_TOOLBAR({
|
||||||
{QLatin1String(":/utils/images/sidebaricon.png"), Theme::IconsBaseColor}});
|
{QLatin1String(":/utils/images/leftsidebaricon.png"), Theme::IconsBaseColor}});
|
||||||
|
const Icon TOGGLE_RIGHT_SIDEBAR({
|
||||||
|
{QLatin1String(":/utils/images/rightsidebaricon.png"), Theme::PanelTextColorMid}}, Icon::MenuTintedStyle);
|
||||||
|
const Icon TOGGLE_RIGHT_SIDEBAR_TOOLBAR({
|
||||||
|
{QLatin1String(":/utils/images/rightsidebaricon.png"), Theme::IconsBaseColor}});
|
||||||
const Icon CLOSE_TOOLBAR({
|
const Icon CLOSE_TOOLBAR({
|
||||||
{QLatin1String(":/utils/images/close.png"), Theme::IconsBaseColor}});
|
{QLatin1String(":/utils/images/close.png"), Theme::IconsBaseColor}});
|
||||||
const Icon CLOSE_FOREGROUND({
|
const Icon CLOSE_FOREGROUND({
|
||||||
|
|||||||
@@ -81,8 +81,10 @@ QTCREATOR_UTILS_EXPORT extern const Icon MAGNIFIER;
|
|||||||
QTCREATOR_UTILS_EXPORT extern const Icon CLEAN;
|
QTCREATOR_UTILS_EXPORT extern const Icon CLEAN;
|
||||||
QTCREATOR_UTILS_EXPORT extern const Icon CLEAN_TOOLBAR;
|
QTCREATOR_UTILS_EXPORT extern const Icon CLEAN_TOOLBAR;
|
||||||
QTCREATOR_UTILS_EXPORT extern const Icon RELOAD;
|
QTCREATOR_UTILS_EXPORT extern const Icon RELOAD;
|
||||||
QTCREATOR_UTILS_EXPORT extern const Icon TOGGLE_SIDEBAR;
|
QTCREATOR_UTILS_EXPORT extern const Icon TOGGLE_LEFT_SIDEBAR;
|
||||||
QTCREATOR_UTILS_EXPORT extern const Icon TOGGLE_SIDEBAR_TOOLBAR;
|
QTCREATOR_UTILS_EXPORT extern const Icon TOGGLE_LEFT_SIDEBAR_TOOLBAR;
|
||||||
|
QTCREATOR_UTILS_EXPORT extern const Icon TOGGLE_RIGHT_SIDEBAR;
|
||||||
|
QTCREATOR_UTILS_EXPORT extern const Icon TOGGLE_RIGHT_SIDEBAR_TOOLBAR;
|
||||||
QTCREATOR_UTILS_EXPORT extern const Icon CLOSE_TOOLBAR;
|
QTCREATOR_UTILS_EXPORT extern const Icon CLOSE_TOOLBAR;
|
||||||
QTCREATOR_UTILS_EXPORT extern const Icon CLOSE_FOREGROUND;
|
QTCREATOR_UTILS_EXPORT extern const Icon CLOSE_FOREGROUND;
|
||||||
QTCREATOR_UTILS_EXPORT extern const Icon CLOSE_BACKGROUND;
|
QTCREATOR_UTILS_EXPORT extern const Icon CLOSE_BACKGROUND;
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ public:
|
|||||||
BookmarkViewFactory(BookmarkManager *bm);
|
BookmarkViewFactory(BookmarkManager *bm);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Core::NavigationView createWidget();
|
Core::NavigationView createWidget() override;
|
||||||
|
|
||||||
BookmarkManager *m_manager;
|
BookmarkManager *m_manager;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -70,33 +70,29 @@ Core::NavigationView NavigationWidgetFactory::createWidget()
|
|||||||
*/
|
*/
|
||||||
static QString settingsPrefix(int position)
|
static QString settingsPrefix(int position)
|
||||||
{
|
{
|
||||||
return QString::fromLatin1("ClassView/Treewidget.%1/FlatMode").arg(position);
|
return QString::fromLatin1("ClassView.Treewidget.%1.FlatMode").arg(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Flat mode settings
|
//! Flat mode settings
|
||||||
|
|
||||||
void NavigationWidgetFactory::saveSettings(int position, QWidget *widget)
|
void NavigationWidgetFactory::saveSettings(QSettings *settings, int position, QWidget *widget)
|
||||||
{
|
{
|
||||||
NavigationWidget *pw = qobject_cast<NavigationWidget *>(widget);
|
NavigationWidget *pw = qobject_cast<NavigationWidget *>(widget);
|
||||||
QTC_ASSERT(pw, return);
|
QTC_ASSERT(pw, return);
|
||||||
|
|
||||||
// .beginGroup is not used - to prevent simultaneous access
|
// .beginGroup is not used - to prevent simultaneous access
|
||||||
QString group = settingsPrefix(position);
|
QString settingsGroup = settingsPrefix(position);
|
||||||
|
settings->setValue(settingsGroup, pw->flatMode());
|
||||||
// Save settings
|
|
||||||
Core::ICore::settings()->setValue(group, pw->flatMode());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigationWidgetFactory::restoreSettings(int position, QWidget *widget)
|
void NavigationWidgetFactory::restoreSettings(QSettings *settings, int position, QWidget *widget)
|
||||||
{
|
{
|
||||||
NavigationWidget *pw = qobject_cast<NavigationWidget *>(widget);
|
NavigationWidget *pw = qobject_cast<NavigationWidget *>(widget);
|
||||||
QTC_ASSERT(pw, return);
|
QTC_ASSERT(pw, return);
|
||||||
|
|
||||||
// .beginGroup is not used - to prevent simultaneous access
|
// .beginGroup is not used - to prevent simultaneous access
|
||||||
QString group = settingsPrefix(position);
|
QString settingsGroup = settingsPrefix(position);
|
||||||
|
pw->setFlatMode(settings->value(settingsGroup, false).toBool());
|
||||||
// Load settings
|
|
||||||
pw->setFlatMode(Core::ICore::settings()->value(group, false).toBool());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|||||||
@@ -38,13 +38,13 @@ public:
|
|||||||
NavigationWidgetFactory();
|
NavigationWidgetFactory();
|
||||||
|
|
||||||
//! \implements Core::INavigationWidgetFactory::createWidget
|
//! \implements Core::INavigationWidgetFactory::createWidget
|
||||||
Core::NavigationView createWidget();
|
Core::NavigationView createWidget() override;
|
||||||
|
|
||||||
//! \implements Core::INavigationWidgetFactory::saveSettings
|
//! \implements Core::INavigationWidgetFactory::saveSettings
|
||||||
void saveSettings(int position, QWidget *widget);
|
void saveSettings(QSettings *settings, int position, QWidget *widget) override;
|
||||||
|
|
||||||
//! \implements Core::INavigationWidgetFactory::restoreSettings
|
//! \implements Core::INavigationWidgetFactory::restoreSettings
|
||||||
void restoreSettings(int position, QWidget *widget);
|
void restoreSettings(QSettings *settings, int position, QWidget *widget) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|||||||
@@ -89,13 +89,17 @@ const char PRINT[] = "QtCreator.Print";
|
|||||||
const char EXIT[] = "QtCreator.Exit";
|
const char EXIT[] = "QtCreator.Exit";
|
||||||
|
|
||||||
const char OPTIONS[] = "QtCreator.Options";
|
const char OPTIONS[] = "QtCreator.Options";
|
||||||
const char TOGGLE_SIDEBAR[] = "QtCreator.ToggleSidebar";
|
const char TOGGLE_LEFT_SIDEBAR[] = "QtCreator.ToggleLeftSidebar";
|
||||||
|
const char TOGGLE_RIGHT_SIDEBAR[] = "QtCreator.ToggleRightSidebar";
|
||||||
const char TOGGLE_MODE_SELECTOR[] = "QtCreator.ToggleModeSelector";
|
const char TOGGLE_MODE_SELECTOR[] = "QtCreator.ToggleModeSelector";
|
||||||
const char TOGGLE_FULLSCREEN[] = "QtCreator.ToggleFullScreen";
|
const char TOGGLE_FULLSCREEN[] = "QtCreator.ToggleFullScreen";
|
||||||
const char THEMEOPTIONS[] = "QtCreator.ThemeOptions";
|
const char THEMEOPTIONS[] = "QtCreator.ThemeOptions";
|
||||||
|
|
||||||
const char TR_SHOW_SIDEBAR[] = QT_TRANSLATE_NOOP("Core", "Show Sidebar");
|
const char TR_SHOW_LEFT_SIDEBAR[] = QT_TRANSLATE_NOOP("Core", "Show Left Sidebar");
|
||||||
const char TR_HIDE_SIDEBAR[] = QT_TRANSLATE_NOOP("Core", "Hide Sidebar");
|
const char TR_HIDE_LEFT_SIDEBAR[] = QT_TRANSLATE_NOOP("Core", "Hide Left Sidebar");
|
||||||
|
|
||||||
|
const char TR_SHOW_RIGHT_SIDEBAR[] = QT_TRANSLATE_NOOP("Core", "Show Right Sidebar");
|
||||||
|
const char TR_HIDE_RIGHT_SIDEBAR[] = QT_TRANSLATE_NOOP("Core", "Hide Right Sidebar");
|
||||||
|
|
||||||
const char MINIMIZE_WINDOW[] = "QtCreator.MinimizeWindow";
|
const char MINIMIZE_WINDOW[] = "QtCreator.MinimizeWindow";
|
||||||
const char ZOOM_WINDOW[] = "QtCreator.ZoomWindow";
|
const char ZOOM_WINDOW[] = "QtCreator.ZoomWindow";
|
||||||
|
|||||||
@@ -76,10 +76,12 @@ EditMode::EditMode() :
|
|||||||
splitter->setStretchFactor(0, 3);
|
splitter->setStretchFactor(0, 3);
|
||||||
splitter->setStretchFactor(1, 0);
|
splitter->setStretchFactor(1, 0);
|
||||||
|
|
||||||
m_splitter->insertWidget(0, new NavigationWidgetPlaceHolder(Constants::MODE_EDIT));
|
m_splitter->insertWidget(0, new NavigationWidgetPlaceHolder(Constants::MODE_EDIT, Side::Left));
|
||||||
m_splitter->insertWidget(1, splitter);
|
m_splitter->insertWidget(1, splitter);
|
||||||
|
m_splitter->insertWidget(2, new NavigationWidgetPlaceHolder(Constants::MODE_EDIT, Side::Right));
|
||||||
m_splitter->setStretchFactor(0, 0);
|
m_splitter->setStretchFactor(0, 0);
|
||||||
m_splitter->setStretchFactor(1, 1);
|
m_splitter->setStretchFactor(1, 1);
|
||||||
|
m_splitter->setStretchFactor(2, 0);
|
||||||
|
|
||||||
connect(ModeManager::instance(), &ModeManager::currentModeChanged,
|
connect(ModeManager::instance(), &ModeManager::currentModeChanged,
|
||||||
this, &EditMode::grabEditorManager);
|
this, &EditMode::grabEditorManager);
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ QKeySequence INavigationWidgetFactory::activationSequence() const
|
|||||||
|
|
||||||
\sa INavigationWidgetFactory::restoreSettings()
|
\sa INavigationWidgetFactory::restoreSettings()
|
||||||
*/
|
*/
|
||||||
void INavigationWidgetFactory::saveSettings(int /* position */, QWidget * /* widget */)
|
void INavigationWidgetFactory::saveSettings(QSettings * /* settings */, int /* position */, QWidget * /* widget */)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -157,6 +157,6 @@ void INavigationWidgetFactory::saveSettings(int /* position */, QWidget * /* wid
|
|||||||
|
|
||||||
\sa INavigationWidgetFactory::saveSettings()
|
\sa INavigationWidgetFactory::saveSettings()
|
||||||
*/
|
*/
|
||||||
void INavigationWidgetFactory::restoreSettings(int /* position */, QWidget * /* widget */)
|
void INavigationWidgetFactory::restoreSettings(QSettings * /* settings */, int /* position */, QWidget * /* widget */)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,7 @@
|
|||||||
#include <QKeySequence>
|
#include <QKeySequence>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
class QSettings;
|
||||||
class QToolButton;
|
class QToolButton;
|
||||||
class QWidget;
|
class QWidget;
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
@@ -69,8 +70,8 @@ public:
|
|||||||
// Similar to how IView
|
// Similar to how IView
|
||||||
virtual NavigationView createWidget() = 0;
|
virtual NavigationView createWidget() = 0;
|
||||||
|
|
||||||
virtual void saveSettings(int position, QWidget *widget);
|
virtual void saveSettings(QSettings *settings, int position, QWidget *widget);
|
||||||
virtual void restoreSettings(int position, QWidget *widget);
|
virtual void restoreSettings(QSettings *settings, int position, QWidget *widget);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString m_displayName;
|
QString m_displayName;
|
||||||
|
|||||||
@@ -122,7 +122,8 @@ MainWindow::MainWindow() :
|
|||||||
m_toolSettings(new ToolSettings),
|
m_toolSettings(new ToolSettings),
|
||||||
m_mimeTypeSettings(new MimeTypeSettings),
|
m_mimeTypeSettings(new MimeTypeSettings),
|
||||||
m_systemEditor(new SystemEditor),
|
m_systemEditor(new SystemEditor),
|
||||||
m_toggleSideBarButton(new QToolButton)
|
m_toggleLeftSideBarButton(new QToolButton),
|
||||||
|
m_toggleRightSideBarButton(new QToolButton)
|
||||||
{
|
{
|
||||||
(void) new DocumentManager(this);
|
(void) new DocumentManager(this);
|
||||||
OutputPaneManager::create();
|
OutputPaneManager::create();
|
||||||
@@ -171,7 +172,8 @@ MainWindow::MainWindow() :
|
|||||||
registerDefaultContainers();
|
registerDefaultContainers();
|
||||||
registerDefaultActions();
|
registerDefaultActions();
|
||||||
|
|
||||||
m_navigationWidget = new NavigationWidget(m_toggleSideBarAction);
|
m_leftNavigationWidget = new NavigationWidget(m_toggleLeftSideBarAction, Side::Left);
|
||||||
|
m_rightNavigationWidget = new NavigationWidget(m_toggleRightSideBarAction, Side::Right);
|
||||||
m_rightPaneWidget = new RightPaneWidget();
|
m_rightPaneWidget = new RightPaneWidget();
|
||||||
|
|
||||||
m_statusBarManager = new StatusBarManager(this);
|
m_statusBarManager = new StatusBarManager(this);
|
||||||
@@ -184,8 +186,11 @@ MainWindow::MainWindow() :
|
|||||||
m_progressManager->progressView()->setReferenceWidget(m_modeStack->statusBar());
|
m_progressManager->progressView()->setReferenceWidget(m_modeStack->statusBar());
|
||||||
|
|
||||||
connect(qApp, &QApplication::focusChanged, this, &MainWindow::updateFocusWidget);
|
connect(qApp, &QApplication::focusChanged, this, &MainWindow::updateFocusWidget);
|
||||||
// Add a small Toolbutton for toggling the navigation widget
|
|
||||||
statusBar()->insertPermanentWidget(0, m_toggleSideBarButton);
|
// Add small Toolbuttons for toggling the navigation widgets
|
||||||
|
statusBar()->insertPermanentWidget(0, m_toggleLeftSideBarButton);
|
||||||
|
int childsCount = statusBar()->findChildren<QWidget *>(QString(), Qt::FindDirectChildrenOnly).count();
|
||||||
|
statusBar()->insertPermanentWidget(childsCount - 1, m_toggleRightSideBarButton); // before QSizeGrip
|
||||||
|
|
||||||
// setUnifiedTitleAndToolBarOnMac(true);
|
// setUnifiedTitleAndToolBarOnMac(true);
|
||||||
//if (HostOsInfo::isAnyUnixHost())
|
//if (HostOsInfo::isAnyUnixHost())
|
||||||
@@ -200,22 +205,22 @@ MainWindow::MainWindow() :
|
|||||||
this, &MainWindow::openDroppedFiles);
|
this, &MainWindow::openDroppedFiles);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::setSidebarVisible(bool visible)
|
NavigationWidget *MainWindow::navigationWidget(Side side) const
|
||||||
{
|
{
|
||||||
if (NavigationWidgetPlaceHolder::current()) {
|
return side == Side::Left ? m_leftNavigationWidget : m_rightNavigationWidget;
|
||||||
if (m_navigationWidget->isSuppressed() && visible) {
|
|
||||||
m_navigationWidget->setShown(true);
|
|
||||||
m_navigationWidget->setSuppressed(false);
|
|
||||||
} else {
|
|
||||||
m_navigationWidget->setShown(visible);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::setSuppressNavigationWidget(bool suppress)
|
void MainWindow::setSidebarVisible(bool visible, Side side)
|
||||||
{
|
{
|
||||||
if (NavigationWidgetPlaceHolder::current())
|
if (NavigationWidgetPlaceHolder::current(side)) {
|
||||||
m_navigationWidget->setSuppressed(suppress);
|
NavigationWidget *navWidget = navigationWidget(side);
|
||||||
|
if (navWidget->isSuppressed() && visible) {
|
||||||
|
navWidget->setShown(true);
|
||||||
|
navWidget->setSuppressed(false);
|
||||||
|
} else {
|
||||||
|
navWidget->setShown(visible);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::setOverrideColor(const QColor &color)
|
void MainWindow::setOverrideColor(const QColor &color)
|
||||||
@@ -281,8 +286,10 @@ MainWindow::~MainWindow()
|
|||||||
PluginManager::removeObject(m_outputView);
|
PluginManager::removeObject(m_outputView);
|
||||||
delete m_outputView;
|
delete m_outputView;
|
||||||
|
|
||||||
delete m_navigationWidget;
|
delete m_leftNavigationWidget;
|
||||||
m_navigationWidget = nullptr;
|
delete m_rightNavigationWidget;
|
||||||
|
m_leftNavigationWidget = nullptr;
|
||||||
|
m_rightNavigationWidget = nullptr;
|
||||||
|
|
||||||
delete m_editorManager;
|
delete m_editorManager;
|
||||||
m_editorManager = nullptr;
|
m_editorManager = nullptr;
|
||||||
@@ -341,7 +348,8 @@ void MainWindow::extensionsInitialized()
|
|||||||
m_statusBarManager->extensionsInitalized();
|
m_statusBarManager->extensionsInitalized();
|
||||||
OutputPaneManager::instance()->init();
|
OutputPaneManager::instance()->init();
|
||||||
m_vcsManager->extensionsInitialized();
|
m_vcsManager->extensionsInitialized();
|
||||||
m_navigationWidget->setFactories(PluginManager::getObjects<INavigationWidgetFactory>());
|
m_leftNavigationWidget->setFactories(PluginManager::getObjects<INavigationWidgetFactory>());
|
||||||
|
m_rightNavigationWidget->setFactories(PluginManager::getObjects<INavigationWidgetFactory>());
|
||||||
|
|
||||||
readSettings();
|
readSettings();
|
||||||
updateContext();
|
updateContext();
|
||||||
@@ -373,7 +381,8 @@ void MainWindow::closeEvent(QCloseEvent *event)
|
|||||||
|
|
||||||
saveWindowSettings();
|
saveWindowSettings();
|
||||||
|
|
||||||
m_navigationWidget->closeSubWidgets();
|
m_leftNavigationWidget->closeSubWidgets();
|
||||||
|
m_rightNavigationWidget->closeSubWidgets();
|
||||||
|
|
||||||
event->accept();
|
event->accept();
|
||||||
}
|
}
|
||||||
@@ -678,21 +687,37 @@ void MainWindow::registerDefaultActions()
|
|||||||
mwindow->addSeparator(Constants::G_WINDOW_SIZE);
|
mwindow->addSeparator(Constants::G_WINDOW_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show Sidebar Action
|
// Show Left Sidebar Action
|
||||||
m_toggleSideBarAction = new QAction(Utils::Icons::TOGGLE_SIDEBAR.icon(),
|
m_toggleLeftSideBarAction = new QAction(Utils::Icons::TOGGLE_LEFT_SIDEBAR.icon(),
|
||||||
QCoreApplication::translate("Core", Constants::TR_SHOW_SIDEBAR),
|
QCoreApplication::translate("Core", Constants::TR_SHOW_LEFT_SIDEBAR),
|
||||||
this);
|
this);
|
||||||
m_toggleSideBarAction->setCheckable(true);
|
m_toggleLeftSideBarAction->setCheckable(true);
|
||||||
cmd = ActionManager::registerAction(m_toggleSideBarAction, Constants::TOGGLE_SIDEBAR);
|
cmd = ActionManager::registerAction(m_toggleLeftSideBarAction, Constants::TOGGLE_LEFT_SIDEBAR);
|
||||||
cmd->setAttribute(Command::CA_UpdateText);
|
cmd->setAttribute(Command::CA_UpdateText);
|
||||||
cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Ctrl+0") : tr("Alt+0")));
|
cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Ctrl+0") : tr("Alt+0")));
|
||||||
connect(m_toggleSideBarAction, &QAction::triggered, this, &MainWindow::setSidebarVisible);
|
connect(m_toggleLeftSideBarAction, &QAction::triggered,
|
||||||
ProxyAction *toggleSideBarProxyAction =
|
this, [this](bool visible) { setSidebarVisible(visible, Side::Left); });
|
||||||
ProxyAction::proxyActionWithIcon(cmd->action(),
|
ProxyAction *toggleLeftSideBarProxyAction =
|
||||||
Utils::Icons::TOGGLE_SIDEBAR_TOOLBAR.icon());
|
ProxyAction::proxyActionWithIcon(cmd->action(), Utils::Icons::TOGGLE_LEFT_SIDEBAR_TOOLBAR.icon());
|
||||||
m_toggleSideBarButton->setDefaultAction(toggleSideBarProxyAction);
|
m_toggleLeftSideBarButton->setDefaultAction(toggleLeftSideBarProxyAction);
|
||||||
mwindow->addAction(cmd, Constants::G_WINDOW_VIEWS);
|
mwindow->addAction(cmd, Constants::G_WINDOW_VIEWS);
|
||||||
m_toggleSideBarAction->setEnabled(false);
|
m_toggleLeftSideBarAction->setEnabled(false);
|
||||||
|
|
||||||
|
// Show Right Sidebar Action
|
||||||
|
m_toggleRightSideBarAction = new QAction(Utils::Icons::TOGGLE_RIGHT_SIDEBAR.icon(),
|
||||||
|
QCoreApplication::translate("Core", Constants::TR_SHOW_RIGHT_SIDEBAR),
|
||||||
|
this);
|
||||||
|
m_toggleRightSideBarAction->setCheckable(true);
|
||||||
|
cmd = ActionManager::registerAction(m_toggleRightSideBarAction, Constants::TOGGLE_RIGHT_SIDEBAR);
|
||||||
|
cmd->setAttribute(Command::CA_UpdateText);
|
||||||
|
cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Ctrl+Meta+0") : tr("Ctrl+Shift+0")));
|
||||||
|
connect(m_toggleRightSideBarAction, &QAction::triggered,
|
||||||
|
this, [this](bool visible) { setSidebarVisible(visible, Side::Right); });
|
||||||
|
ProxyAction *toggleRightSideBarProxyAction =
|
||||||
|
ProxyAction::proxyActionWithIcon(cmd->action(), Utils::Icons::TOGGLE_RIGHT_SIDEBAR_TOOLBAR.icon());
|
||||||
|
m_toggleRightSideBarButton->setDefaultAction(toggleRightSideBarProxyAction);
|
||||||
|
mwindow->addAction(cmd, Constants::G_WINDOW_VIEWS);
|
||||||
|
m_toggleRightSideBarButton->setEnabled(false);
|
||||||
|
|
||||||
// Show Mode Selector Action
|
// Show Mode Selector Action
|
||||||
m_toggleModeSelectorAction = new QAction(tr("Show Mode Selector"), this);
|
m_toggleModeSelectorAction = new QAction(tr("Show Mode Selector"), this);
|
||||||
@@ -959,7 +984,8 @@ void MainWindow::readSettings()
|
|||||||
settings->endGroup();
|
settings->endGroup();
|
||||||
|
|
||||||
EditorManagerPrivate::readSettings();
|
EditorManagerPrivate::readSettings();
|
||||||
m_navigationWidget->restoreSettings(settings);
|
m_leftNavigationWidget->restoreSettings(settings);
|
||||||
|
m_rightNavigationWidget->restoreSettings(settings);
|
||||||
m_rightPaneWidget->readSettings(settings);
|
m_rightPaneWidget->readSettings(settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -976,7 +1002,8 @@ void MainWindow::saveSettings()
|
|||||||
DocumentManager::saveSettings();
|
DocumentManager::saveSettings();
|
||||||
ActionManager::saveSettings();
|
ActionManager::saveSettings();
|
||||||
EditorManagerPrivate::saveSettings();
|
EditorManagerPrivate::saveSettings();
|
||||||
m_navigationWidget->saveSettings(settings);
|
m_leftNavigationWidget->saveSettings(settings);
|
||||||
|
m_rightNavigationWidget->saveSettings(settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::saveWindowSettings()
|
void MainWindow::saveWindowSettings()
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ class MessageManager;
|
|||||||
class ModeManager;
|
class ModeManager;
|
||||||
class ProgressManager;
|
class ProgressManager;
|
||||||
class NavigationWidget;
|
class NavigationWidget;
|
||||||
|
enum class Side;
|
||||||
class RightPaneWidget;
|
class RightPaneWidget;
|
||||||
class SettingsDatabase;
|
class SettingsDatabase;
|
||||||
class VcsManager;
|
class VcsManager;
|
||||||
@@ -102,8 +103,6 @@ public:
|
|||||||
void updateAdditionalContexts(const Context &remove, const Context &add,
|
void updateAdditionalContexts(const Context &remove, const Context &add,
|
||||||
ICore::ContextPriority priority);
|
ICore::ContextPriority priority);
|
||||||
|
|
||||||
void setSuppressNavigationWidget(bool suppress);
|
|
||||||
|
|
||||||
void setOverrideColor(const QColor &color);
|
void setOverrideColor(const QColor &color);
|
||||||
|
|
||||||
QStringList additionalAboutInformation() const;
|
QStringList additionalAboutInformation() const;
|
||||||
@@ -135,7 +134,8 @@ private:
|
|||||||
void aboutQtCreator();
|
void aboutQtCreator();
|
||||||
void aboutPlugins();
|
void aboutPlugins();
|
||||||
void updateFocusWidget(QWidget *old, QWidget *now);
|
void updateFocusWidget(QWidget *old, QWidget *now);
|
||||||
void setSidebarVisible(bool visible);
|
NavigationWidget *navigationWidget(Side side) const;
|
||||||
|
void setSidebarVisible(bool visible, Side side);
|
||||||
void destroyVersionDialog();
|
void destroyVersionDialog();
|
||||||
void openDroppedFiles(const QList<Utils::DropSupport::FileSpec> &files);
|
void openDroppedFiles(const QList<Utils::DropSupport::FileSpec> &files);
|
||||||
void restoreWindowState();
|
void restoreWindowState();
|
||||||
@@ -166,7 +166,8 @@ private:
|
|||||||
ModeManager *m_modeManager = nullptr;
|
ModeManager *m_modeManager = nullptr;
|
||||||
HelpManager *m_helpManager = nullptr;
|
HelpManager *m_helpManager = nullptr;
|
||||||
FancyTabWidget *m_modeStack = nullptr;
|
FancyTabWidget *m_modeStack = nullptr;
|
||||||
NavigationWidget *m_navigationWidget = nullptr;
|
NavigationWidget *m_leftNavigationWidget = nullptr;
|
||||||
|
NavigationWidget *m_rightNavigationWidget = nullptr;
|
||||||
RightPaneWidget *m_rightPaneWidget = nullptr;
|
RightPaneWidget *m_rightPaneWidget = nullptr;
|
||||||
StatusBarWidget *m_outputView = nullptr;
|
StatusBarWidget *m_outputView = nullptr;
|
||||||
VersionDialog *m_versionDialog = nullptr;
|
VersionDialog *m_versionDialog = nullptr;
|
||||||
@@ -190,11 +191,13 @@ private:
|
|||||||
QAction *m_saveAllAction = nullptr;
|
QAction *m_saveAllAction = nullptr;
|
||||||
QAction *m_exitAction = nullptr;
|
QAction *m_exitAction = nullptr;
|
||||||
QAction *m_optionsAction = nullptr;
|
QAction *m_optionsAction = nullptr;
|
||||||
QAction *m_toggleSideBarAction = nullptr;
|
QAction *m_toggleLeftSideBarAction = nullptr;
|
||||||
|
QAction *m_toggleRightSideBarAction = nullptr;
|
||||||
QAction *m_toggleModeSelectorAction = nullptr;
|
QAction *m_toggleModeSelectorAction = nullptr;
|
||||||
QAction *m_themeAction = nullptr;
|
QAction *m_themeAction = nullptr;
|
||||||
|
|
||||||
QToolButton *m_toggleSideBarButton = nullptr;
|
QToolButton *m_toggleLeftSideBarButton = nullptr;
|
||||||
|
QToolButton *m_toggleRightSideBarButton = nullptr;
|
||||||
QColor m_overrideColor;
|
QColor m_overrideColor;
|
||||||
QList<std::function<bool()>> m_preCloseListeners;
|
QList<std::function<bool()>> m_preCloseListeners;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
#include "actionmanager/command.h"
|
#include "actionmanager/command.h"
|
||||||
#include "id.h"
|
#include "id.h"
|
||||||
|
|
||||||
|
#include <coreplugin/icore.h>
|
||||||
#include <utils/styledbar.h>
|
#include <utils/styledbar.h>
|
||||||
#include <utils/utilsicons.h>
|
#include <utils/utilsicons.h>
|
||||||
|
|
||||||
@@ -137,6 +138,7 @@ void NavigationSubWidget::comboBoxIndexChanged(int factoryIndex)
|
|||||||
}
|
}
|
||||||
|
|
||||||
restoreSettings();
|
restoreSettings();
|
||||||
|
emit factoryIndexChanged(factoryIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigationSubWidget::populateSplitMenu()
|
void NavigationSubWidget::populateSplitMenu()
|
||||||
@@ -167,14 +169,22 @@ void NavigationSubWidget::saveSettings()
|
|||||||
{
|
{
|
||||||
if (!m_navigationWidget || !factory())
|
if (!m_navigationWidget || !factory())
|
||||||
return;
|
return;
|
||||||
factory()->saveSettings(position(), m_navigationWidget);
|
|
||||||
|
QSettings *settings = Core::ICore::settings();
|
||||||
|
settings->beginGroup(m_parentWidget->settingsGroup());
|
||||||
|
factory()->saveSettings(settings, position(), m_navigationWidget);
|
||||||
|
settings->endGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigationSubWidget::restoreSettings()
|
void NavigationSubWidget::restoreSettings()
|
||||||
{
|
{
|
||||||
if (!m_navigationWidget || !factory())
|
if (!m_navigationWidget || !factory())
|
||||||
return;
|
return;
|
||||||
factory()->restoreSettings(position(), m_navigationWidget);
|
|
||||||
|
QSettings *settings = Core::ICore::settings();
|
||||||
|
settings->beginGroup(m_parentWidget->settingsGroup());
|
||||||
|
factory()->restoreSettings(settings, position(), m_navigationWidget);
|
||||||
|
settings->endGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::Command *NavigationSubWidget::command(const QString &title) const
|
Core::Command *NavigationSubWidget::command(const QString &title) const
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ class NavigationSubWidget : public QWidget
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
NavigationSubWidget(NavigationWidget *parentWidget, int position, int index);
|
NavigationSubWidget(NavigationWidget *parentWidget, int position, int factoryIndex);
|
||||||
virtual ~NavigationSubWidget();
|
virtual ~NavigationSubWidget();
|
||||||
|
|
||||||
INavigationWidgetFactory *factory();
|
INavigationWidgetFactory *factory();
|
||||||
@@ -71,6 +71,7 @@ public:
|
|||||||
signals:
|
signals:
|
||||||
void splitMe(int factoryIndex);
|
void splitMe(int factoryIndex);
|
||||||
void closeMe();
|
void closeMe();
|
||||||
|
void factoryIndexChanged(int factoryIndex);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void comboBoxIndexChanged(int);
|
void comboBoxIndexChanged(int);
|
||||||
|
|||||||
@@ -34,6 +34,7 @@
|
|||||||
#include "id.h"
|
#include "id.h"
|
||||||
#include "imode.h"
|
#include "imode.h"
|
||||||
|
|
||||||
|
#include <utils/qtcassert.h>
|
||||||
#include <utils/utilsicons.h>
|
#include <utils/utilsicons.h>
|
||||||
|
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
@@ -49,15 +50,24 @@ Q_DECLARE_METATYPE(Core::INavigationWidgetFactory *)
|
|||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
|
||||||
NavigationWidgetPlaceHolder *NavigationWidgetPlaceHolder::m_current = 0;
|
NavigationWidgetPlaceHolder *NavigationWidgetPlaceHolder::s_currentLeft = nullptr;
|
||||||
|
NavigationWidgetPlaceHolder *NavigationWidgetPlaceHolder::s_currentRight = nullptr;
|
||||||
|
|
||||||
NavigationWidgetPlaceHolder* NavigationWidgetPlaceHolder::current()
|
NavigationWidgetPlaceHolder *NavigationWidgetPlaceHolder::current(Side side)
|
||||||
{
|
{
|
||||||
return m_current;
|
return side == Side::Left ? s_currentLeft : s_currentRight;
|
||||||
}
|
}
|
||||||
|
|
||||||
NavigationWidgetPlaceHolder::NavigationWidgetPlaceHolder(Id mode, QWidget *parent)
|
void NavigationWidgetPlaceHolder::setCurrent(Side side, NavigationWidgetPlaceHolder *navWidget)
|
||||||
:QWidget(parent), m_mode(mode)
|
{
|
||||||
|
if (side == Side::Left)
|
||||||
|
s_currentLeft = navWidget;
|
||||||
|
else
|
||||||
|
s_currentRight = navWidget;
|
||||||
|
}
|
||||||
|
|
||||||
|
NavigationWidgetPlaceHolder::NavigationWidgetPlaceHolder(Id mode, Side side, QWidget *parent)
|
||||||
|
:QWidget(parent), m_mode(mode), m_side(side)
|
||||||
{
|
{
|
||||||
setLayout(new QVBoxLayout);
|
setLayout(new QVBoxLayout);
|
||||||
layout()->setMargin(0);
|
layout()->setMargin(0);
|
||||||
@@ -67,9 +77,9 @@ NavigationWidgetPlaceHolder::NavigationWidgetPlaceHolder(Id mode, QWidget *paren
|
|||||||
|
|
||||||
NavigationWidgetPlaceHolder::~NavigationWidgetPlaceHolder()
|
NavigationWidgetPlaceHolder::~NavigationWidgetPlaceHolder()
|
||||||
{
|
{
|
||||||
if (m_current == this) {
|
if (NavigationWidgetPlaceHolder::current(m_side) == this) {
|
||||||
if (NavigationWidget *nw = NavigationWidget::instance()) {
|
if (NavigationWidget *nw = NavigationWidget::instance(m_side)) {
|
||||||
nw->setParent(0);
|
nw->setParent(nullptr);
|
||||||
nw->hide();
|
nw->hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -84,12 +94,20 @@ void NavigationWidgetPlaceHolder::applyStoredSize(int width)
|
|||||||
QList<int> sizes = splitter->sizes();
|
QList<int> sizes = splitter->sizes();
|
||||||
int index = splitter->indexOf(this);
|
int index = splitter->indexOf(this);
|
||||||
int diff = width - sizes.at(index);
|
int diff = width - sizes.at(index);
|
||||||
int adjust = sizes.count() > 1 ? (diff / (sizes.count() - 1)) : 0;
|
|
||||||
|
int count = sizes.count();
|
||||||
for (int i = 0; i < sizes.count(); ++i) {
|
for (int i = 0; i < sizes.count(); ++i) {
|
||||||
if (i != index)
|
if (qobject_cast<NavigationWidgetPlaceHolder *>(splitter->widget(i)))
|
||||||
|
--count;
|
||||||
|
}
|
||||||
|
|
||||||
|
int adjust = count > 1 ? (diff / (count - 1)) : 0;
|
||||||
|
for (int i = 0; i < sizes.count(); ++i) {
|
||||||
|
if (!qobject_cast<NavigationWidgetPlaceHolder *>(splitter->widget(i)))
|
||||||
sizes[i] += adjust;
|
sizes[i] += adjust;
|
||||||
}
|
}
|
||||||
sizes[index]= width;
|
|
||||||
|
sizes[index] = width;
|
||||||
splitter->setSizes(sizes);
|
splitter->setSizes(sizes);
|
||||||
} else {
|
} else {
|
||||||
QSize s = size();
|
QSize s = size();
|
||||||
@@ -107,16 +125,18 @@ void NavigationWidgetPlaceHolder::applyStoredSize(int width)
|
|||||||
// And that the parent of the NavigationWidget gets the correct parent
|
// And that the parent of the NavigationWidget gets the correct parent
|
||||||
void NavigationWidgetPlaceHolder::currentModeAboutToChange(Id mode)
|
void NavigationWidgetPlaceHolder::currentModeAboutToChange(Id mode)
|
||||||
{
|
{
|
||||||
NavigationWidget *navigationWidget = NavigationWidget::instance();
|
NavigationWidget *navigationWidget = NavigationWidget::instance(m_side);
|
||||||
|
NavigationWidgetPlaceHolder *current = NavigationWidgetPlaceHolder::current(m_side);
|
||||||
|
|
||||||
if (m_current == this) {
|
if (current == this) {
|
||||||
m_current = 0;
|
setCurrent(m_side, nullptr);
|
||||||
navigationWidget->setParent(0);
|
navigationWidget->setParent(nullptr);
|
||||||
navigationWidget->hide();
|
navigationWidget->hide();
|
||||||
navigationWidget->placeHolderChanged(m_current);
|
navigationWidget->placeHolderChanged(nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_mode == mode) {
|
if (m_mode == mode) {
|
||||||
m_current = this;
|
setCurrent(m_side, this);
|
||||||
|
|
||||||
int width = navigationWidget->storedWidth();
|
int width = navigationWidget->storedWidth();
|
||||||
|
|
||||||
@@ -125,13 +145,19 @@ void NavigationWidgetPlaceHolder::currentModeAboutToChange(Id mode)
|
|||||||
|
|
||||||
applyStoredSize(width);
|
applyStoredSize(width);
|
||||||
setVisible(navigationWidget->isShown());
|
setVisible(navigationWidget->isShown());
|
||||||
navigationWidget->placeHolderChanged(m_current);
|
navigationWidget->placeHolderChanged(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct ActivationInfo {
|
||||||
|
Side side;
|
||||||
|
int position;
|
||||||
|
};
|
||||||
|
using ActivationsMap = QHash<Id, ActivationInfo>;
|
||||||
|
|
||||||
struct NavigationWidgetPrivate
|
struct NavigationWidgetPrivate
|
||||||
{
|
{
|
||||||
explicit NavigationWidgetPrivate(QAction *toggleSideBarAction);
|
explicit NavigationWidgetPrivate(QAction *toggleSideBarAction, Side side);
|
||||||
~NavigationWidgetPrivate() { delete m_factoryModel; }
|
~NavigationWidgetPrivate() { delete m_factoryModel; }
|
||||||
|
|
||||||
QList<Internal::NavigationSubWidget *> m_subWidgets;
|
QList<Internal::NavigationSubWidget *> m_subWidgets;
|
||||||
@@ -142,55 +168,97 @@ struct NavigationWidgetPrivate
|
|||||||
bool m_shown;
|
bool m_shown;
|
||||||
bool m_suppressed;
|
bool m_suppressed;
|
||||||
int m_width;
|
int m_width;
|
||||||
static NavigationWidget* m_instance;
|
|
||||||
QAction *m_toggleSideBarAction; // does not take ownership
|
QAction *m_toggleSideBarAction; // does not take ownership
|
||||||
|
Side m_side;
|
||||||
|
|
||||||
|
static NavigationWidget *s_instanceLeft;
|
||||||
|
static NavigationWidget *s_instanceRight;
|
||||||
|
|
||||||
|
static ActivationsMap s_activationsMap;
|
||||||
|
|
||||||
|
static void updateActivationsMap(Id activatedId, const ActivationInfo &activationInfo);
|
||||||
|
static void removeFromActivationsMap(const ActivationInfo &activationInfo);
|
||||||
};
|
};
|
||||||
|
|
||||||
NavigationWidgetPrivate::NavigationWidgetPrivate(QAction *toggleSideBarAction) :
|
NavigationWidgetPrivate::NavigationWidgetPrivate(QAction *toggleSideBarAction, Side side) :
|
||||||
m_factoryModel(new QStandardItemModel),
|
m_factoryModel(new QStandardItemModel),
|
||||||
m_shown(true),
|
m_shown(true),
|
||||||
m_suppressed(false),
|
m_suppressed(false),
|
||||||
m_width(0),
|
m_width(0),
|
||||||
m_toggleSideBarAction(toggleSideBarAction)
|
m_toggleSideBarAction(toggleSideBarAction),
|
||||||
|
m_side(side)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
NavigationWidget *NavigationWidgetPrivate::m_instance = 0;
|
void NavigationWidgetPrivate::updateActivationsMap(Id activatedId, const ActivationInfo &activationInfo)
|
||||||
|
{
|
||||||
|
s_activationsMap.insert(activatedId, activationInfo);
|
||||||
|
}
|
||||||
|
|
||||||
NavigationWidget::NavigationWidget(QAction *toggleSideBarAction) :
|
NavigationWidget *NavigationWidgetPrivate::s_instanceLeft = nullptr;
|
||||||
d(new NavigationWidgetPrivate(toggleSideBarAction))
|
NavigationWidget *NavigationWidgetPrivate::s_instanceRight = nullptr;
|
||||||
|
ActivationsMap NavigationWidgetPrivate::s_activationsMap;
|
||||||
|
|
||||||
|
NavigationWidget::NavigationWidget(QAction *toggleSideBarAction, Side side) :
|
||||||
|
d(new NavigationWidgetPrivate(toggleSideBarAction, side))
|
||||||
{
|
{
|
||||||
d->m_factoryModel->setSortRole(FactoryPriorityRole);
|
d->m_factoryModel->setSortRole(FactoryPriorityRole);
|
||||||
setOrientation(Qt::Vertical);
|
setOrientation(Qt::Vertical);
|
||||||
d->m_instance = this;
|
|
||||||
|
if (side == Side::Left)
|
||||||
|
d->s_instanceLeft = this;
|
||||||
|
else
|
||||||
|
d->s_instanceRight = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
NavigationWidget::~NavigationWidget()
|
NavigationWidget::~NavigationWidget()
|
||||||
{
|
{
|
||||||
NavigationWidgetPrivate::m_instance = 0;
|
if (d->m_side == Side::Left)
|
||||||
|
NavigationWidgetPrivate::s_instanceLeft = nullptr;
|
||||||
|
else
|
||||||
|
NavigationWidgetPrivate::s_instanceRight = nullptr;
|
||||||
|
|
||||||
delete d;
|
delete d;
|
||||||
}
|
}
|
||||||
|
|
||||||
NavigationWidget *NavigationWidget::instance()
|
NavigationWidget *NavigationWidget::instance(Side side)
|
||||||
{
|
{
|
||||||
return NavigationWidgetPrivate::m_instance;
|
return side == Side::Left ? NavigationWidgetPrivate::s_instanceLeft
|
||||||
|
: NavigationWidgetPrivate::s_instanceRight;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget *NavigationWidget::activateSubWidget(Id factoryId, Side fallbackSide)
|
||||||
|
{
|
||||||
|
NavigationWidget *navigationWidget = NavigationWidget::instance(fallbackSide);
|
||||||
|
int preferredPosition = -1;
|
||||||
|
|
||||||
|
if (NavigationWidgetPrivate::s_activationsMap.contains(factoryId)) {
|
||||||
|
const ActivationInfo info = NavigationWidgetPrivate::s_activationsMap.value(factoryId);
|
||||||
|
navigationWidget = NavigationWidget::instance(info.side);
|
||||||
|
preferredPosition = info.position;
|
||||||
|
}
|
||||||
|
|
||||||
|
navigationWidget->activateSubWidget(factoryId, preferredPosition);
|
||||||
|
return navigationWidget;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigationWidget::setFactories(const QList<INavigationWidgetFactory *> &factories)
|
void NavigationWidget::setFactories(const QList<INavigationWidgetFactory *> &factories)
|
||||||
{
|
{
|
||||||
Context navicontext(Constants::C_NAVIGATION_PANE);
|
Context navicontext(Constants::C_NAVIGATION_PANE);
|
||||||
|
|
||||||
foreach (INavigationWidgetFactory *factory, factories) {
|
foreach (INavigationWidgetFactory *factory, factories) {
|
||||||
const Id id = factory->id();
|
const Id id = factory->id();
|
||||||
QAction *action = new QAction(tr("Activate %1 View").arg(factory->displayName()), this);
|
const Id actionId = id.withPrefix("QtCreator.Sidebar.");
|
||||||
d->m_actionMap.insert(action, id);
|
|
||||||
connect(action, &QAction::triggered,
|
|
||||||
this, [this, action]() { activateSubWidget(d->m_actionMap[action]); });
|
|
||||||
|
|
||||||
Command *cmd = ActionManager::registerAction(action,
|
if (!ActionManager::command(actionId)) {
|
||||||
id.withPrefix("QtCreator.Sidebar."), navicontext);
|
QAction *action = new QAction(tr("Activate %1 View").arg(factory->displayName()), this);
|
||||||
cmd->setDefaultKeySequence(factory->activationSequence());
|
d->m_actionMap.insert(action, id);
|
||||||
d->m_commandMap.insert(id, cmd);
|
connect(action, &QAction::triggered, this, [this, action]() {
|
||||||
|
NavigationWidget::activateSubWidget(d->m_actionMap[action], Side::Left);
|
||||||
|
});
|
||||||
|
Command *cmd = ActionManager::registerAction(action, actionId, navicontext);
|
||||||
|
cmd->setDefaultKeySequence(factory->activationSequence());
|
||||||
|
d->m_commandMap.insert(id, cmd);
|
||||||
|
}
|
||||||
|
|
||||||
QStandardItem *newRow = new QStandardItem(factory->displayName());
|
QStandardItem *newRow = new QStandardItem(factory->displayName());
|
||||||
newRow->setData(qVariantFromValue(factory), FactoryObjectRole);
|
newRow->setData(qVariantFromValue(factory), FactoryObjectRole);
|
||||||
@@ -202,6 +270,13 @@ void NavigationWidget::setFactories(const QList<INavigationWidgetFactory *> &fac
|
|||||||
updateToggleText();
|
updateToggleText();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString NavigationWidget::settingsGroup() const
|
||||||
|
{
|
||||||
|
const QString side(d->m_side == Side::Left ? QStringLiteral("Left")
|
||||||
|
: QStringLiteral("Right"));
|
||||||
|
return QStringLiteral("Navigation%1").arg(side);
|
||||||
|
}
|
||||||
|
|
||||||
int NavigationWidget::storedWidth()
|
int NavigationWidget::storedWidth()
|
||||||
{
|
{
|
||||||
return d->m_width;
|
return d->m_width;
|
||||||
@@ -216,12 +291,13 @@ void NavigationWidget::updateToggleText()
|
|||||||
{
|
{
|
||||||
bool haveData = d->m_factoryModel->rowCount();
|
bool haveData = d->m_factoryModel->rowCount();
|
||||||
d->m_toggleSideBarAction->setVisible(haveData);
|
d->m_toggleSideBarAction->setVisible(haveData);
|
||||||
d->m_toggleSideBarAction->setEnabled(haveData && NavigationWidgetPlaceHolder::m_current);
|
d->m_toggleSideBarAction->setEnabled(haveData && NavigationWidgetPlaceHolder::current(d->m_side));
|
||||||
|
|
||||||
if (isShown())
|
const char *trToolTip = d->m_side == Side::Left
|
||||||
d->m_toggleSideBarAction->setToolTip(QCoreApplication::translate("Core", Constants::TR_HIDE_SIDEBAR));
|
? (isShown() ? Constants::TR_HIDE_LEFT_SIDEBAR : Constants::TR_SHOW_LEFT_SIDEBAR)
|
||||||
else
|
: (isShown() ? Constants::TR_HIDE_RIGHT_SIDEBAR : Constants::TR_SHOW_RIGHT_SIDEBAR);
|
||||||
d->m_toggleSideBarAction->setToolTip(QCoreApplication::translate("Core", Constants::TR_SHOW_SIDEBAR));
|
|
||||||
|
d->m_toggleSideBarAction->setToolTip(QCoreApplication::translate("Core", trToolTip));
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigationWidget::placeHolderChanged(NavigationWidgetPlaceHolder *holder)
|
void NavigationWidget::placeHolderChanged(NavigationWidgetPlaceHolder *holder)
|
||||||
@@ -237,28 +313,33 @@ void NavigationWidget::resizeEvent(QResizeEvent *re)
|
|||||||
MiniSplitter::resizeEvent(re);
|
MiniSplitter::resizeEvent(re);
|
||||||
}
|
}
|
||||||
|
|
||||||
Internal::NavigationSubWidget *NavigationWidget::insertSubItem(int position,int index)
|
Internal::NavigationSubWidget *NavigationWidget::insertSubItem(int position, int factoryIndex)
|
||||||
{
|
{
|
||||||
for (int pos = position + 1; pos < d->m_subWidgets.size(); ++pos) {
|
for (int pos = position + 1; pos < d->m_subWidgets.size(); ++pos) {
|
||||||
d->m_subWidgets.at(pos)->setPosition(pos + 1);
|
Internal::NavigationSubWidget *nsw = d->m_subWidgets.at(pos);
|
||||||
|
nsw->setPosition(pos + 1);
|
||||||
|
NavigationWidgetPrivate::updateActivationsMap(nsw->factory()->id(), {d->m_side, pos + 1});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!d->m_subWidgets.isEmpty()) // Make all icons the bottom icon
|
if (!d->m_subWidgets.isEmpty()) // Make all icons the bottom icon
|
||||||
d->m_subWidgets.at(0)->setCloseIcon(Utils::Icons::CLOSE_SPLIT_BOTTOM.icon());
|
d->m_subWidgets.at(0)->setCloseIcon(Utils::Icons::CLOSE_SPLIT_BOTTOM.icon());
|
||||||
|
|
||||||
Internal::NavigationSubWidget *nsw = new Internal::NavigationSubWidget(this, position, index);
|
Internal::NavigationSubWidget *nsw = new Internal::NavigationSubWidget(this, position, factoryIndex);
|
||||||
connect(nsw, &Internal::NavigationSubWidget::splitMe,
|
connect(nsw, &Internal::NavigationSubWidget::splitMe, this, &NavigationWidget::splitSubWidget);
|
||||||
this, &NavigationWidget::splitSubWidget);
|
|
||||||
connect(nsw, &Internal::NavigationSubWidget::closeMe, this, &NavigationWidget::closeSubWidget);
|
connect(nsw, &Internal::NavigationSubWidget::closeMe, this, &NavigationWidget::closeSubWidget);
|
||||||
|
connect(nsw, &Internal::NavigationSubWidget::factoryIndexChanged,
|
||||||
|
this, &NavigationWidget::onSubWidgetFactoryIndexChanged);
|
||||||
insertWidget(position, nsw);
|
insertWidget(position, nsw);
|
||||||
|
|
||||||
d->m_subWidgets.insert(position, nsw);
|
d->m_subWidgets.insert(position, nsw);
|
||||||
d->m_subWidgets.at(0)->setCloseIcon(d->m_subWidgets.size() == 1
|
d->m_subWidgets.at(0)->setCloseIcon(d->m_subWidgets.size() == 1
|
||||||
? Utils::Icons::CLOSE_SPLIT_LEFT.icon()
|
? Utils::Icons::CLOSE_SPLIT_LEFT.icon()
|
||||||
: Utils::Icons::CLOSE_SPLIT_TOP.icon());
|
: Utils::Icons::CLOSE_SPLIT_TOP.icon());
|
||||||
|
NavigationWidgetPrivate::updateActivationsMap(nsw->factory()->id(), {d->m_side, position});
|
||||||
return nsw;
|
return nsw;
|
||||||
}
|
}
|
||||||
|
|
||||||
QWidget *NavigationWidget::activateSubWidget(Id factoryId)
|
QWidget *NavigationWidget::activateSubWidget(Id factoryId, int preferredPosition)
|
||||||
{
|
{
|
||||||
setShown(true);
|
setShown(true);
|
||||||
foreach (Internal::NavigationSubWidget *subWidget, d->m_subWidgets) {
|
foreach (Internal::NavigationSubWidget *subWidget, d->m_subWidgets) {
|
||||||
@@ -271,10 +352,13 @@ QWidget *NavigationWidget::activateSubWidget(Id factoryId)
|
|||||||
|
|
||||||
int index = factoryIndex(factoryId);
|
int index = factoryIndex(factoryId);
|
||||||
if (index >= 0) {
|
if (index >= 0) {
|
||||||
d->m_subWidgets.first()->setFactoryIndex(index);
|
bool preferredIndexValid = 0 <= preferredPosition && preferredPosition < d->m_subWidgets.count();
|
||||||
d->m_subWidgets.first()->setFocusWidget();
|
const int activationIndex = preferredIndexValid ? preferredPosition : 0;
|
||||||
|
Internal::NavigationSubWidget *subWidget = d->m_subWidgets.at(activationIndex);
|
||||||
|
subWidget->setFactoryIndex(index);
|
||||||
|
subWidget->setFocusWidget();
|
||||||
ICore::raiseWindow(this);
|
ICore::raiseWindow(this);
|
||||||
return d->m_subWidgets.first()->widget();
|
return subWidget->widget();
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
@@ -291,6 +375,14 @@ void NavigationWidget::closeSubWidget()
|
|||||||
if (d->m_subWidgets.count() != 1) {
|
if (d->m_subWidgets.count() != 1) {
|
||||||
Internal::NavigationSubWidget *subWidget = qobject_cast<Internal::NavigationSubWidget *>(sender());
|
Internal::NavigationSubWidget *subWidget = qobject_cast<Internal::NavigationSubWidget *>(sender());
|
||||||
subWidget->saveSettings();
|
subWidget->saveSettings();
|
||||||
|
|
||||||
|
int position = d->m_subWidgets.indexOf(subWidget);
|
||||||
|
for (int pos = position + 1; pos < d->m_subWidgets.size(); ++pos) {
|
||||||
|
Internal::NavigationSubWidget *nsw = d->m_subWidgets.at(pos);
|
||||||
|
nsw->setPosition(pos - 1);
|
||||||
|
NavigationWidgetPrivate::updateActivationsMap(nsw->factory()->id(), {d->m_side, pos - 1});
|
||||||
|
}
|
||||||
|
|
||||||
d->m_subWidgets.removeOne(subWidget);
|
d->m_subWidgets.removeOne(subWidget);
|
||||||
subWidget->hide();
|
subWidget->hide();
|
||||||
subWidget->deleteLater();
|
subWidget->deleteLater();
|
||||||
@@ -311,10 +403,18 @@ void NavigationWidget::saveSettings(QSettings *settings)
|
|||||||
d->m_subWidgets.at(i)->saveSettings();
|
d->m_subWidgets.at(i)->saveSettings();
|
||||||
viewIds.append(d->m_subWidgets.at(i)->factory()->id().toString());
|
viewIds.append(d->m_subWidgets.at(i)->factory()->id().toString());
|
||||||
}
|
}
|
||||||
settings->setValue(QLatin1String("Navigation/Views"), viewIds);
|
settings->setValue(settingsKey("Views"), viewIds);
|
||||||
settings->setValue(QLatin1String("Navigation/Visible"), isShown());
|
settings->setValue(settingsKey("Visible"), isShown());
|
||||||
settings->setValue(QLatin1String("Navigation/VerticalPosition"), saveState());
|
settings->setValue(settingsKey("VerticalPosition"), saveState());
|
||||||
settings->setValue(QLatin1String("Navigation/Width"), d->m_width);
|
settings->setValue(settingsKey("Width"), d->m_width);
|
||||||
|
|
||||||
|
const QString activationKey = QStringLiteral("ActivationPosition.");
|
||||||
|
const auto keys = NavigationWidgetPrivate::s_activationsMap.keys();
|
||||||
|
for (const auto &factoryId : keys) {
|
||||||
|
const auto &info = NavigationWidgetPrivate::s_activationsMap[factoryId];
|
||||||
|
if (info.side == d->m_side)
|
||||||
|
settings->setValue(settingsKey(activationKey + factoryId.toString()), info.position);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigationWidget::restoreSettings(QSettings *settings)
|
void NavigationWidget::restoreSettings(QSettings *settings)
|
||||||
@@ -325,17 +425,19 @@ void NavigationWidget::restoreSettings(QSettings *settings)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int version = settings->value(QLatin1String("Navigation/Version"), 1).toInt();
|
const bool isLeftSide = d->m_side == Side::Left;
|
||||||
QStringList viewIds = settings->value(QLatin1String("Navigation/Views"),
|
QLatin1String defaultFirstView = isLeftSide ? QLatin1String("Projects") : QLatin1String("Outline");
|
||||||
QStringList(QLatin1String("Projects"))).toStringList();
|
QStringList viewIds = settings->value(settingsKey("Views"), QStringList(defaultFirstView)).toStringList();
|
||||||
|
|
||||||
bool restoreSplitterState = true;
|
bool restoreSplitterState = true;
|
||||||
|
int version = settings->value(settingsKey("Version"), 1).toInt();
|
||||||
if (version == 1) {
|
if (version == 1) {
|
||||||
if (!viewIds.contains(QLatin1String("Open Documents"))) {
|
QLatin1String defaultSecondView = isLeftSide ? QLatin1String("Open Documents") : QLatin1String("Bookmarks");
|
||||||
viewIds += QLatin1String("Open Documents");
|
if (!viewIds.contains(defaultSecondView)) {
|
||||||
|
viewIds += defaultSecondView;
|
||||||
restoreSplitterState = false;
|
restoreSplitterState = false;
|
||||||
}
|
}
|
||||||
settings->setValue(QLatin1String("Navigation/Version"), 2);
|
settings->setValue(settingsKey("Version"), 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
int position = 0;
|
int position = 0;
|
||||||
@@ -351,13 +453,13 @@ void NavigationWidget::restoreSettings(QSettings *settings)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (d->m_subWidgets.isEmpty())
|
if (d->m_subWidgets.isEmpty())
|
||||||
// Make sure we have at least the projects widget
|
// Make sure we have at least the projects widget or outline widget
|
||||||
insertSubItem(0, qMax(0, factoryIndex("Projects")));
|
insertSubItem(0, qMax(0, factoryIndex(defaultFirstView.data())));
|
||||||
|
|
||||||
setShown(settings->value(QLatin1String("Navigation/Visible"), true).toBool());
|
setShown(settings->value(settingsKey("Visible"), isLeftSide).toBool());
|
||||||
|
|
||||||
if (restoreSplitterState && settings->contains(QLatin1String("Navigation/VerticalPosition"))) {
|
if (restoreSplitterState && settings->contains(settingsKey("VerticalPosition"))) {
|
||||||
restoreState(settings->value(QLatin1String("Navigation/VerticalPosition")).toByteArray());
|
restoreState(settings->value(settingsKey("VerticalPosition")).toByteArray());
|
||||||
} else {
|
} else {
|
||||||
QList<int> sizes;
|
QList<int> sizes;
|
||||||
sizes += 256;
|
sizes += 256;
|
||||||
@@ -366,13 +468,27 @@ void NavigationWidget::restoreSettings(QSettings *settings)
|
|||||||
setSizes(sizes);
|
setSizes(sizes);
|
||||||
}
|
}
|
||||||
|
|
||||||
d->m_width = settings->value(QLatin1String("Navigation/Width"), 240).toInt();
|
d->m_width = settings->value(settingsKey("Width"), 240).toInt();
|
||||||
if (d->m_width < 40)
|
if (d->m_width < 40)
|
||||||
d->m_width = 40;
|
d->m_width = 40;
|
||||||
|
|
||||||
// Apply
|
// Apply
|
||||||
if (NavigationWidgetPlaceHolder::m_current)
|
if (NavigationWidgetPlaceHolder::current(d->m_side))
|
||||||
NavigationWidgetPlaceHolder::m_current->applyStoredSize(d->m_width);
|
NavigationWidgetPlaceHolder::current(d->m_side)->applyStoredSize(d->m_width);
|
||||||
|
|
||||||
|
// Restore last activation positions
|
||||||
|
settings->beginGroup(settingsGroup());
|
||||||
|
const QString activationKey = QStringLiteral("ActivationPosition.");
|
||||||
|
const auto keys = settings->allKeys();
|
||||||
|
for (const QString &key : keys) {
|
||||||
|
if (!key.startsWith(activationKey))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
int position = settings->value(key).toInt();
|
||||||
|
Id factoryId = Id::fromString(key.mid(activationKey.length()));
|
||||||
|
NavigationWidgetPrivate::updateActivationsMap(factoryId, {d->m_side, position});
|
||||||
|
}
|
||||||
|
settings->endGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigationWidget::closeSubWidgets()
|
void NavigationWidget::closeSubWidgets()
|
||||||
@@ -390,9 +506,11 @@ void NavigationWidget::setShown(bool b)
|
|||||||
return;
|
return;
|
||||||
bool haveData = d->m_factoryModel->rowCount();
|
bool haveData = d->m_factoryModel->rowCount();
|
||||||
d->m_shown = b;
|
d->m_shown = b;
|
||||||
if (NavigationWidgetPlaceHolder::m_current) {
|
NavigationWidgetPlaceHolder *current = NavigationWidgetPlaceHolder::current(d->m_side);
|
||||||
NavigationWidgetPlaceHolder::m_current->setVisible(d->m_shown && !d->m_suppressed && haveData);
|
if (current) {
|
||||||
d->m_toggleSideBarAction->setChecked(d->m_shown && !d->m_suppressed && haveData);
|
bool visible = d->m_shown && !d->m_suppressed && haveData;
|
||||||
|
current->setVisible(visible);
|
||||||
|
d->m_toggleSideBarAction->setChecked(visible);
|
||||||
} else {
|
} else {
|
||||||
d->m_toggleSideBarAction->setChecked(false);
|
d->m_toggleSideBarAction->setChecked(false);
|
||||||
}
|
}
|
||||||
@@ -414,8 +532,8 @@ void NavigationWidget::setSuppressed(bool b)
|
|||||||
if (d->m_suppressed == b)
|
if (d->m_suppressed == b)
|
||||||
return;
|
return;
|
||||||
d->m_suppressed = b;
|
d->m_suppressed = b;
|
||||||
if (NavigationWidgetPlaceHolder::m_current)
|
if (NavigationWidgetPlaceHolder::current(d->m_side))
|
||||||
NavigationWidgetPlaceHolder::m_current->setVisible(d->m_shown && !d->m_suppressed);
|
NavigationWidgetPlaceHolder::current(d->m_side)->setVisible(d->m_shown && !d->m_suppressed);
|
||||||
}
|
}
|
||||||
|
|
||||||
int NavigationWidget::factoryIndex(Id id)
|
int NavigationWidget::factoryIndex(Id id)
|
||||||
@@ -427,6 +545,20 @@ int NavigationWidget::factoryIndex(Id id)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString NavigationWidget::settingsKey(const QString &key) const
|
||||||
|
{
|
||||||
|
return QStringLiteral("%1/%2").arg(settingsGroup(), key);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NavigationWidget::onSubWidgetFactoryIndexChanged(int factoryIndex)
|
||||||
|
{
|
||||||
|
Q_UNUSED(factoryIndex);
|
||||||
|
Internal::NavigationSubWidget *subWidget = qobject_cast<Internal::NavigationSubWidget *>(sender());
|
||||||
|
QTC_ASSERT(subWidget, return);
|
||||||
|
Id factoryId = subWidget->factory()->id();
|
||||||
|
NavigationWidgetPrivate::updateActivationsMap(factoryId, {d->m_side, subWidget->position()});
|
||||||
|
}
|
||||||
|
|
||||||
QHash<Id, Command *> NavigationWidget::commandMap() const
|
QHash<Id, Command *> NavigationWidget::commandMap() const
|
||||||
{
|
{
|
||||||
return d->m_commandMap;
|
return d->m_commandMap;
|
||||||
|
|||||||
@@ -43,22 +43,30 @@ class NavigationWidget;
|
|||||||
struct NavigationWidgetPrivate;
|
struct NavigationWidgetPrivate;
|
||||||
namespace Internal { class NavigationSubWidget; }
|
namespace Internal { class NavigationSubWidget; }
|
||||||
|
|
||||||
|
enum class Side {
|
||||||
|
Left,
|
||||||
|
Right
|
||||||
|
};
|
||||||
|
|
||||||
class CORE_EXPORT NavigationWidgetPlaceHolder : public QWidget
|
class CORE_EXPORT NavigationWidgetPlaceHolder : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
friend class Core::NavigationWidget;
|
friend class Core::NavigationWidget;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit NavigationWidgetPlaceHolder(Id mode, QWidget *parent = 0);
|
explicit NavigationWidgetPlaceHolder(Id mode, Side side, QWidget *parent = 0);
|
||||||
virtual ~NavigationWidgetPlaceHolder();
|
virtual ~NavigationWidgetPlaceHolder();
|
||||||
static NavigationWidgetPlaceHolder* current();
|
static NavigationWidgetPlaceHolder *current(Side side);
|
||||||
|
static void setCurrent(Side side, NavigationWidgetPlaceHolder *navWidget);
|
||||||
void applyStoredSize(int width);
|
void applyStoredSize(int width);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void currentModeAboutToChange(Id mode);
|
void currentModeAboutToChange(Id mode);
|
||||||
|
|
||||||
Id m_mode;
|
Id m_mode;
|
||||||
static NavigationWidgetPlaceHolder* m_current;
|
Side m_side;
|
||||||
|
static NavigationWidgetPlaceHolder *s_currentLeft;
|
||||||
|
static NavigationWidgetPlaceHolder *s_currentRight;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CORE_EXPORT NavigationWidget : public MiniSplitter
|
class CORE_EXPORT NavigationWidget : public MiniSplitter
|
||||||
@@ -72,15 +80,16 @@ public:
|
|||||||
FactoryPriorityRole
|
FactoryPriorityRole
|
||||||
};
|
};
|
||||||
|
|
||||||
explicit NavigationWidget(QAction *toggleSideBarAction);
|
explicit NavigationWidget(QAction *toggleSideBarAction, Side side);
|
||||||
virtual ~NavigationWidget();
|
virtual ~NavigationWidget();
|
||||||
|
|
||||||
void setFactories(const QList<INavigationWidgetFactory*> &factories);
|
void setFactories(const QList<INavigationWidgetFactory*> &factories);
|
||||||
|
|
||||||
|
QString settingsGroup() const;
|
||||||
void saveSettings(QSettings *settings);
|
void saveSettings(QSettings *settings);
|
||||||
void restoreSettings(QSettings *settings);
|
void restoreSettings(QSettings *settings);
|
||||||
|
|
||||||
QWidget *activateSubWidget(Id factoryId);
|
QWidget *activateSubWidget(Id factoryId, int preferredPosition);
|
||||||
void closeSubWidgets();
|
void closeSubWidgets();
|
||||||
|
|
||||||
bool isShown() const;
|
bool isShown() const;
|
||||||
@@ -89,7 +98,8 @@ public:
|
|||||||
bool isSuppressed() const;
|
bool isSuppressed() const;
|
||||||
void setSuppressed(bool b);
|
void setSuppressed(bool b);
|
||||||
|
|
||||||
static NavigationWidget* instance();
|
static NavigationWidget *instance(Side side);
|
||||||
|
static QWidget *activateSubWidget(Id factoryId, Side fallbackSide);
|
||||||
|
|
||||||
int storedWidth();
|
int storedWidth();
|
||||||
|
|
||||||
@@ -106,8 +116,10 @@ private:
|
|||||||
void splitSubWidget(int factoryIndex);
|
void splitSubWidget(int factoryIndex);
|
||||||
void closeSubWidget();
|
void closeSubWidget();
|
||||||
void updateToggleText();
|
void updateToggleText();
|
||||||
Internal::NavigationSubWidget *insertSubItem(int position, int index);
|
Internal::NavigationSubWidget *insertSubItem(int position, int factoryIndex);
|
||||||
int factoryIndex(Id id);
|
int factoryIndex(Id id);
|
||||||
|
QString settingsKey(const QString &key) const;
|
||||||
|
void onSubWidgetFactoryIndexChanged(int factoryIndex);
|
||||||
|
|
||||||
NavigationWidgetPrivate *d;
|
NavigationWidgetPrivate *d;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -366,8 +366,7 @@ QList<QObject *> CppEditorPlugin::createTestObjects() const
|
|||||||
void CppEditorPlugin::openTypeHierarchy()
|
void CppEditorPlugin::openTypeHierarchy()
|
||||||
{
|
{
|
||||||
if (currentCppEditorWidget()) {
|
if (currentCppEditorWidget()) {
|
||||||
NavigationWidget *navigation = NavigationWidget::instance();
|
NavigationWidget::activateSubWidget(Constants::TYPE_HIERARCHY_ID, Side::Left);
|
||||||
navigation->activateSubWidget(Constants::TYPE_HIERARCHY_ID);
|
|
||||||
emit typeHierarchyRequested();
|
emit typeHierarchyRequested();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -375,8 +374,7 @@ void CppEditorPlugin::openTypeHierarchy()
|
|||||||
void CppEditorPlugin::openIncludeHierarchy()
|
void CppEditorPlugin::openIncludeHierarchy()
|
||||||
{
|
{
|
||||||
if (currentCppEditorWidget()) {
|
if (currentCppEditorWidget()) {
|
||||||
NavigationWidget *navigation = NavigationWidget::instance();
|
NavigationWidget::activateSubWidget(Constants::INCLUDE_HIERARCHY_ID, Side::Left);
|
||||||
navigation->activateSubWidget(Id(Constants::INCLUDE_HIERARCHY_ID));
|
|
||||||
emit includeHierarchyRequested();
|
emit includeHierarchyRequested();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ class CppTypeHierarchyFactory : public Core::INavigationWidgetFactory
|
|||||||
public:
|
public:
|
||||||
CppTypeHierarchyFactory();
|
CppTypeHierarchyFactory();
|
||||||
|
|
||||||
virtual Core::NavigationView createWidget();
|
Core::NavigationView createWidget() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|||||||
@@ -258,7 +258,7 @@ QWidget *createModeWindow(const Core::Id &mode, DebuggerMainWindow *mainWindow)
|
|||||||
// Navigation and right-side window.
|
// Navigation and right-side window.
|
||||||
auto splitter = new MiniSplitter;
|
auto splitter = new MiniSplitter;
|
||||||
splitter->setFocusProxy(mainWindow->centralWidgetStack());
|
splitter->setFocusProxy(mainWindow->centralWidgetStack());
|
||||||
splitter->addWidget(new NavigationWidgetPlaceHolder(mode));
|
splitter->addWidget(new NavigationWidgetPlaceHolder(mode, Side::Left));
|
||||||
splitter->addWidget(mainWindowSplitter);
|
splitter->addWidget(mainWindowSplitter);
|
||||||
splitter->setStretchFactor(0, 0);
|
splitter->setStretchFactor(0, 0);
|
||||||
splitter->setStretchFactor(1, 1);
|
splitter->setStretchFactor(1, 1);
|
||||||
|
|||||||
@@ -127,19 +127,19 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
|
|||||||
setAttribute(Qt::WA_QuitOnClose, false); // don't prevent Qt Creator from closing
|
setAttribute(Qt::WA_QuitOnClose, false); // don't prevent Qt Creator from closing
|
||||||
}
|
}
|
||||||
if (style != SideBarWidget) {
|
if (style != SideBarWidget) {
|
||||||
m_toggleSideBarAction = new QAction(Utils::Icons::TOGGLE_SIDEBAR_TOOLBAR.icon(),
|
m_toggleSideBarAction = new QAction(Utils::Icons::TOGGLE_LEFT_SIDEBAR_TOOLBAR.icon(),
|
||||||
QCoreApplication::translate("Core", Core::Constants::TR_SHOW_SIDEBAR),
|
QCoreApplication::translate("Core", Core::Constants::TR_SHOW_LEFT_SIDEBAR),
|
||||||
toolBar);
|
toolBar);
|
||||||
m_toggleSideBarAction->setCheckable(true);
|
m_toggleSideBarAction->setCheckable(true);
|
||||||
m_toggleSideBarAction->setChecked(false);
|
m_toggleSideBarAction->setChecked(false);
|
||||||
cmd = Core::ActionManager::registerAction(m_toggleSideBarAction,
|
cmd = Core::ActionManager::registerAction(m_toggleSideBarAction,
|
||||||
Core::Constants::TOGGLE_SIDEBAR, context);
|
Core::Constants::TOGGLE_LEFT_SIDEBAR, context);
|
||||||
connect(m_toggleSideBarAction, &QAction::toggled, m_toggleSideBarAction,
|
connect(m_toggleSideBarAction, &QAction::toggled, m_toggleSideBarAction,
|
||||||
[this](bool checked) {
|
[this](bool checked) {
|
||||||
m_toggleSideBarAction->setText(
|
m_toggleSideBarAction->setText(
|
||||||
QCoreApplication::translate("Core",
|
QCoreApplication::translate("Core",
|
||||||
checked ? Core::Constants::TR_HIDE_SIDEBAR
|
checked ? Core::Constants::TR_HIDE_LEFT_SIDEBAR
|
||||||
: Core::Constants::TR_SHOW_SIDEBAR));
|
: Core::Constants::TR_SHOW_LEFT_SIDEBAR));
|
||||||
});
|
});
|
||||||
addSideBar();
|
addSideBar();
|
||||||
m_toggleSideBarAction->setChecked(m_sideBar->isVisibleTo(this));
|
m_toggleSideBarAction->setChecked(m_sideBar->isVisibleTo(this));
|
||||||
@@ -299,7 +299,7 @@ HelpWidget::~HelpWidget()
|
|||||||
Core::ActionManager::unregisterAction(m_copy, Core::Constants::COPY);
|
Core::ActionManager::unregisterAction(m_copy, Core::Constants::COPY);
|
||||||
Core::ActionManager::unregisterAction(m_printAction, Core::Constants::PRINT);
|
Core::ActionManager::unregisterAction(m_printAction, Core::Constants::PRINT);
|
||||||
if (m_toggleSideBarAction)
|
if (m_toggleSideBarAction)
|
||||||
Core::ActionManager::unregisterAction(m_toggleSideBarAction, Core::Constants::TOGGLE_SIDEBAR);
|
Core::ActionManager::unregisterAction(m_toggleSideBarAction, Core::Constants::TOGGLE_LEFT_SIDEBAR);
|
||||||
if (m_switchToHelp)
|
if (m_switchToHelp)
|
||||||
Core::ActionManager::unregisterAction(m_switchToHelp, Constants::CONTEXT_HELP);
|
Core::ActionManager::unregisterAction(m_switchToHelp, Constants::CONTEXT_HELP);
|
||||||
Core::ActionManager::unregisterAction(m_homeAction, Constants::HELP_HOME);
|
Core::ActionManager::unregisterAction(m_homeAction, Constants::HELP_HOME);
|
||||||
|
|||||||
@@ -433,21 +433,19 @@ Core::NavigationView FolderNavigationWidgetFactory::createWidget()
|
|||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FolderNavigationWidgetFactory::saveSettings(int position, QWidget *widget)
|
void FolderNavigationWidgetFactory::saveSettings(QSettings *settings, int position, QWidget *widget)
|
||||||
{
|
{
|
||||||
auto fnw = qobject_cast<FolderNavigationWidget *>(widget);
|
auto fnw = qobject_cast<FolderNavigationWidget *>(widget);
|
||||||
QTC_ASSERT(fnw, return);
|
QTC_ASSERT(fnw, return);
|
||||||
QSettings *settings = Core::ICore::settings();
|
|
||||||
const QString baseKey = QLatin1String("FolderNavigationWidget.") + QString::number(position);
|
const QString baseKey = QLatin1String("FolderNavigationWidget.") + QString::number(position);
|
||||||
settings->setValue(baseKey + QLatin1String(".HiddenFilesFilter"), fnw->hiddenFilesFilter());
|
settings->setValue(baseKey + QLatin1String(".HiddenFilesFilter"), fnw->hiddenFilesFilter());
|
||||||
settings->setValue(baseKey + QLatin1String(".SyncWithEditor"), fnw->autoSynchronization());
|
settings->setValue(baseKey + QLatin1String(".SyncWithEditor"), fnw->autoSynchronization());
|
||||||
}
|
}
|
||||||
|
|
||||||
void FolderNavigationWidgetFactory::restoreSettings(int position, QWidget *widget)
|
void FolderNavigationWidgetFactory::restoreSettings(QSettings *settings, int position, QWidget *widget)
|
||||||
{
|
{
|
||||||
auto fnw = qobject_cast<FolderNavigationWidget *>(widget);
|
auto fnw = qobject_cast<FolderNavigationWidget *>(widget);
|
||||||
QTC_ASSERT(fnw, return);
|
QTC_ASSERT(fnw, return);
|
||||||
QSettings *settings = Core::ICore::settings();
|
|
||||||
const QString baseKey = QLatin1String("FolderNavigationWidget.") + QString::number(position);
|
const QString baseKey = QLatin1String("FolderNavigationWidget.") + QString::number(position);
|
||||||
fnw->setHiddenFilesFilter(settings->value(baseKey + QLatin1String(".HiddenFilesFilter"), false).toBool());
|
fnw->setHiddenFilesFilter(settings->value(baseKey + QLatin1String(".HiddenFilesFilter"), false).toBool());
|
||||||
fnw->setAutoSynchronization(settings->value(baseKey + QLatin1String(".SyncWithEditor"), true).toBool());
|
fnw->setAutoSynchronization(settings->value(baseKey + QLatin1String(".SyncWithEditor"), true).toBool());
|
||||||
|
|||||||
@@ -94,8 +94,8 @@ public:
|
|||||||
FolderNavigationWidgetFactory();
|
FolderNavigationWidgetFactory();
|
||||||
|
|
||||||
Core::NavigationView createWidget() override;
|
Core::NavigationView createWidget() override;
|
||||||
void saveSettings(int position, QWidget *widget) override;
|
void saveSettings(QSettings *settings, int position, QWidget *widget) override;
|
||||||
void restoreSettings(int position, QWidget *widget) override;
|
void restoreSettings(QSettings *settings, int position, QWidget *widget) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|||||||
@@ -366,10 +366,9 @@ void ProjectTree::highlightProject(Project *project, const QString &message)
|
|||||||
{
|
{
|
||||||
|
|
||||||
Core::ModeManager::activateMode(Core::Constants::MODE_EDIT);
|
Core::ModeManager::activateMode(Core::Constants::MODE_EDIT);
|
||||||
Core::NavigationWidget *navigation = Core::NavigationWidget::instance();
|
|
||||||
|
|
||||||
// Shows and focusses a project tree
|
// Shows and focusses a project tree
|
||||||
QWidget *widget = navigation->activateSubWidget(ProjectExplorer::Constants::PROJECTTREE_ID);
|
QWidget *widget = Core::NavigationWidget::activateSubWidget(ProjectExplorer::Constants::PROJECTTREE_ID, Core::Side::Left);
|
||||||
|
|
||||||
if (auto *projectTreeWidget = qobject_cast<ProjectTreeWidget *>(widget))
|
if (auto *projectTreeWidget = qobject_cast<ProjectTreeWidget *>(widget))
|
||||||
projectTreeWidget->showMessage(project->rootProjectNode(), message);
|
projectTreeWidget->showMessage(project->rootProjectNode(), message);
|
||||||
|
|||||||
@@ -468,22 +468,20 @@ NavigationView ProjectTreeWidgetFactory::createWidget()
|
|||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectTreeWidgetFactory::saveSettings(int position, QWidget *widget)
|
void ProjectTreeWidgetFactory::saveSettings(QSettings *settings, int position, QWidget *widget)
|
||||||
{
|
{
|
||||||
auto ptw = qobject_cast<ProjectTreeWidget *>(widget);
|
auto ptw = qobject_cast<ProjectTreeWidget *>(widget);
|
||||||
Q_ASSERT(ptw);
|
Q_ASSERT(ptw);
|
||||||
QSettings *settings = ICore::settings();
|
|
||||||
const QString baseKey = QLatin1String("ProjectTreeWidget.") + QString::number(position);
|
const QString baseKey = QLatin1String("ProjectTreeWidget.") + QString::number(position);
|
||||||
settings->setValue(baseKey + QLatin1String(".ProjectFilter"), ptw->projectFilter());
|
settings->setValue(baseKey + QLatin1String(".ProjectFilter"), ptw->projectFilter());
|
||||||
settings->setValue(baseKey + QLatin1String(".GeneratedFilter"), ptw->generatedFilesFilter());
|
settings->setValue(baseKey + QLatin1String(".GeneratedFilter"), ptw->generatedFilesFilter());
|
||||||
settings->setValue(baseKey + QLatin1String(".SyncWithEditor"), ptw->autoSynchronization());
|
settings->setValue(baseKey + QLatin1String(".SyncWithEditor"), ptw->autoSynchronization());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectTreeWidgetFactory::restoreSettings(int position, QWidget *widget)
|
void ProjectTreeWidgetFactory::restoreSettings(QSettings *settings, int position, QWidget *widget)
|
||||||
{
|
{
|
||||||
auto ptw = qobject_cast<ProjectTreeWidget *>(widget);
|
auto ptw = qobject_cast<ProjectTreeWidget *>(widget);
|
||||||
Q_ASSERT(ptw);
|
Q_ASSERT(ptw);
|
||||||
QSettings *settings = ICore::settings();
|
|
||||||
const QString baseKey = QLatin1String("ProjectTreeWidget.") + QString::number(position);
|
const QString baseKey = QLatin1String("ProjectTreeWidget.") + QString::number(position);
|
||||||
ptw->setProjectFilter(settings->value(baseKey + QLatin1String(".ProjectFilter"), false).toBool());
|
ptw->setProjectFilter(settings->value(baseKey + QLatin1String(".ProjectFilter"), false).toBool());
|
||||||
ptw->setGeneratedFilesFilter(settings->value(baseKey + QLatin1String(".GeneratedFilter"), true).toBool());
|
ptw->setGeneratedFilesFilter(settings->value(baseKey + QLatin1String(".GeneratedFilter"), true).toBool());
|
||||||
|
|||||||
@@ -101,8 +101,8 @@ public:
|
|||||||
ProjectTreeWidgetFactory();
|
ProjectTreeWidgetFactory();
|
||||||
|
|
||||||
Core::NavigationView createWidget();
|
Core::NavigationView createWidget();
|
||||||
void restoreSettings(int position, QWidget *widget);
|
void restoreSettings(QSettings *settings, int position, QWidget *widget);
|
||||||
void saveSettings(int position, QWidget *widget);
|
void saveSettings(QSettings *settings, int position, QWidget *widget);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|||||||
@@ -266,7 +266,7 @@ void ShortCutManager::registerActions(const Core::Context &qmlDesignerMainContex
|
|||||||
command->setDefaultKeySequence(QKeySequence(Qt::Key_Escape));
|
command->setDefaultKeySequence(QKeySequence(Qt::Key_Escape));
|
||||||
m_escapeAction.setEnabled(false);
|
m_escapeAction.setEnabled(false);
|
||||||
|
|
||||||
Core::ActionManager::registerAction(&m_hideSidebarsAction, Core::Constants::TOGGLE_SIDEBAR, qmlDesignerMainContext);
|
Core::ActionManager::registerAction(&m_hideSidebarsAction, Core::Constants::TOGGLE_LEFT_SIDEBAR, qmlDesignerMainContext);
|
||||||
|
|
||||||
connect(designerActionManager.view(), &DesignerActionManagerView::selectionChanged, this, [this](bool itemsSelected, bool rootItemIsSelected) {
|
connect(designerActionManager.view(), &DesignerActionManagerView::selectionChanged, this, [this](bool itemsSelected, bool rootItemIsSelected) {
|
||||||
m_deleteAction.setEnabled(itemsSelected && !rootItemIsSelected);
|
m_deleteAction.setEnabled(itemsSelected && !rootItemIsSelected);
|
||||||
|
|||||||
@@ -89,39 +89,38 @@ QToolButton *OutlineWidgetStack::filterButton()
|
|||||||
return m_filterButton;
|
return m_filterButton;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OutlineWidgetStack::restoreSettings(int position)
|
void OutlineWidgetStack::saveSettings(QSettings *settings, int position)
|
||||||
{
|
{
|
||||||
QSettings *settings = Core::ICore::settings();
|
const QString baseKey = QStringLiteral("Outline.%1.").arg(position);
|
||||||
settings->beginGroup(QLatin1String("Sidebar.Outline.") + QString::number(position));
|
settings->setValue(baseKey + QLatin1String("SyncWithEditor"), toggleSyncButton()->isChecked());
|
||||||
|
for (auto iter = m_widgetSettings.constBegin(); iter != m_widgetSettings.constEnd(); ++iter)
|
||||||
|
settings->setValue(baseKey + iter.key(), iter.value());
|
||||||
|
}
|
||||||
|
|
||||||
|
void OutlineWidgetStack::restoreSettings(QSettings *settings, int position)
|
||||||
|
{
|
||||||
|
const QString baseKey = QStringLiteral("Outline.%1.").arg(position);
|
||||||
|
|
||||||
bool syncWithEditor = true;
|
bool syncWithEditor = true;
|
||||||
m_widgetSettings.clear();
|
m_widgetSettings.clear();
|
||||||
foreach (const QString &key, settings->allKeys()) {
|
foreach (const QString &longKey, settings->allKeys()) {
|
||||||
|
if (!longKey.startsWith(baseKey))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
const QString key = longKey.mid(baseKey.length());
|
||||||
|
|
||||||
if (key == QLatin1String("SyncWithEditor")) {
|
if (key == QLatin1String("SyncWithEditor")) {
|
||||||
syncWithEditor = settings->value(key).toBool();
|
syncWithEditor = settings->value(longKey).toBool();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
m_widgetSettings.insert(key, settings->value(key));
|
m_widgetSettings.insert(key, settings->value(longKey));
|
||||||
}
|
}
|
||||||
settings->endGroup();
|
|
||||||
|
|
||||||
toggleSyncButton()->setChecked(syncWithEditor);
|
toggleSyncButton()->setChecked(syncWithEditor);
|
||||||
if (IOutlineWidget *outlineWidget = qobject_cast<IOutlineWidget*>(currentWidget()))
|
if (IOutlineWidget *outlineWidget = qobject_cast<IOutlineWidget*>(currentWidget()))
|
||||||
outlineWidget->restoreSettings(m_widgetSettings);
|
outlineWidget->restoreSettings(m_widgetSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OutlineWidgetStack::saveSettings(int position)
|
|
||||||
{
|
|
||||||
QSettings *settings = Core::ICore::settings();
|
|
||||||
settings->beginGroup(QLatin1String("Sidebar.Outline.") + QString::number(position));
|
|
||||||
|
|
||||||
settings->setValue(QLatin1String("SyncWithEditor"), toggleSyncButton()->isChecked());
|
|
||||||
for (auto iter = m_widgetSettings.constBegin(); iter != m_widgetSettings.constEnd(); ++iter)
|
|
||||||
settings->setValue(iter.key(), iter.value());
|
|
||||||
|
|
||||||
settings->endGroup();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool OutlineWidgetStack::isCursorSynchronized() const
|
bool OutlineWidgetStack::isCursorSynchronized() const
|
||||||
{
|
{
|
||||||
return m_syncWithEditor;
|
return m_syncWithEditor;
|
||||||
@@ -206,18 +205,18 @@ Core::NavigationView OutlineFactory::createWidget()
|
|||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OutlineFactory::saveSettings(int position, QWidget *widget)
|
void OutlineFactory::saveSettings(QSettings *settings, int position, QWidget *widget)
|
||||||
{
|
{
|
||||||
OutlineWidgetStack *widgetStack = qobject_cast<OutlineWidgetStack *>(widget);
|
OutlineWidgetStack *widgetStack = qobject_cast<OutlineWidgetStack *>(widget);
|
||||||
Q_ASSERT(widgetStack);
|
Q_ASSERT(widgetStack);
|
||||||
widgetStack->saveSettings(position);
|
widgetStack->saveSettings(settings, position);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OutlineFactory::restoreSettings(int position, QWidget *widget)
|
void OutlineFactory::restoreSettings(QSettings *settings, int position, QWidget *widget)
|
||||||
{
|
{
|
||||||
OutlineWidgetStack *widgetStack = qobject_cast<OutlineWidgetStack *>(widget);
|
OutlineWidgetStack *widgetStack = qobject_cast<OutlineWidgetStack *>(widget);
|
||||||
Q_ASSERT(widgetStack);
|
Q_ASSERT(widgetStack);
|
||||||
widgetStack->restoreSettings(position);
|
widgetStack->restoreSettings(settings, position);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|||||||
@@ -47,8 +47,8 @@ public:
|
|||||||
QToolButton *toggleSyncButton();
|
QToolButton *toggleSyncButton();
|
||||||
QToolButton *filterButton();
|
QToolButton *filterButton();
|
||||||
|
|
||||||
void saveSettings(int position);
|
void saveSettings(QSettings *settings, int position);
|
||||||
void restoreSettings(int position);
|
void restoreSettings(QSettings *settings, int position);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool isCursorSynchronized() const;
|
bool isCursorSynchronized() const;
|
||||||
@@ -77,8 +77,8 @@ public:
|
|||||||
|
|
||||||
// from INavigationWidgetFactory
|
// from INavigationWidgetFactory
|
||||||
virtual Core::NavigationView createWidget();
|
virtual Core::NavigationView createWidget();
|
||||||
virtual void saveSettings(int position, QWidget *widget);
|
virtual void saveSettings(QSettings *settings, int position, QWidget *widget);
|
||||||
virtual void restoreSettings(int position, QWidget *widget);
|
virtual void restoreSettings(QSettings *settings, int position, QWidget *widget);
|
||||||
private:
|
private:
|
||||||
QList<IOutlineWidgetFactory*> m_factories;
|
QList<IOutlineWidgetFactory*> m_factories;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2349,7 +2349,7 @@
|
|||||||
transform="translate(0,-100)" />
|
transform="translate(0,-100)" />
|
||||||
</g>
|
</g>
|
||||||
<g
|
<g
|
||||||
id="src/libs/utils/images/sidebaricon"
|
id="src/libs/utils/images/leftsidebaricon"
|
||||||
clip-path="none"
|
clip-path="none"
|
||||||
transform="translate(399,0)">
|
transform="translate(399,0)">
|
||||||
<rect
|
<rect
|
||||||
@@ -4213,6 +4213,14 @@
|
|||||||
transform="matrix(1,0,0,-1,16,1152)"
|
transform="matrix(1,0,0,-1,16,1152)"
|
||||||
width="100%"
|
width="100%"
|
||||||
height="100%" />
|
height="100%" />
|
||||||
|
<use
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
xlink:href="#src/libs/utils/images/leftsidebaricon"
|
||||||
|
id="src/libs/utils/images/rightsidebaricon"
|
||||||
|
width="100%"
|
||||||
|
height="100%"
|
||||||
|
transform="matrix(-1,0,0,1,2293,0)" />
|
||||||
</g>
|
</g>
|
||||||
<g
|
<g
|
||||||
inkscape:groupmode="layer"
|
inkscape:groupmode="layer"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 254 KiB After Width: | Height: | Size: 254 KiB |