diff --git a/src/plugins/compilerexplorer/compilerexplorereditor.cpp b/src/plugins/compilerexplorer/compilerexplorereditor.cpp index 9fe794002cb..3e11f667d6c 100644 --- a/src/plugins/compilerexplorer/compilerexplorereditor.cpp +++ b/src/plugins/compilerexplorer/compilerexplorereditor.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #include #include @@ -719,17 +720,13 @@ void HelperWidget::mousePressEvent(QMouseEvent *event) event->accept(); } -void EditorWidget::addNewSource() -{ - auto newSource = std::make_shared( - [settings = m_document->settings()] { return settings->apiConfig(); }); - m_document->settings()->m_sources.addItem(newSource); -} - QWidget *EditorWidget::createHelpWidget() const { auto w = new HelperWidget; - connect(w, &HelperWidget::addSource, this, &EditorWidget::addNewSource); + connect(w, + &HelperWidget::addSource, + m_document->settings(), + &CompilerExplorerSettings::addNewSource); return w; } @@ -783,6 +780,25 @@ static bool childHasFocus(QWidget *parent) return false; } +QWidget *Editor::toolBar() +{ + if (!m_toolBar) { + m_toolBar = std::make_unique(); + + QAction *newSource = new QAction(m_toolBar.get()); + newSource->setIcon(Utils::Icons::PLUS_TOOLBAR.icon()); + newSource->setToolTip(Tr::tr("Add source")); + m_toolBar->addAction(newSource); + + connect(newSource, + &QAction::triggered, + m_document->settings(), + &CompilerExplorerSettings::addNewSource); + } + + return m_toolBar.get(); +} + EditorFactory::EditorFactory() : m_actionHandler(Constants::CE_EDITOR_ID, Constants::CE_EDITOR_ID, diff --git a/src/plugins/compilerexplorer/compilerexplorereditor.h b/src/plugins/compilerexplorer/compilerexplorereditor.h index 73b417c3ab1..2db21e4808c 100644 --- a/src/plugins/compilerexplorer/compilerexplorereditor.h +++ b/src/plugins/compilerexplorer/compilerexplorereditor.h @@ -214,8 +214,6 @@ protected: void setupHelpWidget(); QWidget *createHelpWidget() const; - void addNewSource(); - void addCompiler(const std::shared_ptr &sourceSettings, const std::shared_ptr &compilerSettings, int idx, @@ -244,10 +242,11 @@ public: ~Editor(); Core::IDocument *document() const override { return m_document.data(); } - QWidget *toolBar() override { return nullptr; } + QWidget *toolBar() override; QSharedPointer m_document; QUndoStack m_undoStack; + std::unique_ptr m_toolBar; }; class EditorFactory : public Core::IEditorFactory diff --git a/src/plugins/compilerexplorer/compilerexplorersettings.cpp b/src/plugins/compilerexplorer/compilerexplorersettings.cpp index 8accdbcc214..94059052d3b 100644 --- a/src/plugins/compilerexplorer/compilerexplorersettings.cpp +++ b/src/plugins/compilerexplorer/compilerexplorersettings.cpp @@ -337,4 +337,10 @@ CompilerExplorerSettings::CompilerExplorerSettings() CompilerExplorerSettings::~CompilerExplorerSettings() = default; +void CompilerExplorerSettings::addNewSource() +{ + auto newSource = std::make_shared([this] { return apiConfig(); }); + m_sources.addItem(newSource); +} + } // namespace CompilerExplorer diff --git a/src/plugins/compilerexplorer/compilerexplorersettings.h b/src/plugins/compilerexplorer/compilerexplorersettings.h index 64f67122fe6..fadb03798f6 100644 --- a/src/plugins/compilerexplorer/compilerexplorersettings.h +++ b/src/plugins/compilerexplorer/compilerexplorersettings.h @@ -41,6 +41,8 @@ public: return Api::Config(m_networkAccessManager, compilerExplorerUrl()); } + void addNewSource(); + QNetworkAccessManager *networkAccessManager() const { return m_networkAccessManager; } private: