CompilerExplorer: Add Toolbar button to add source

Change-Id: I0d8fb50fe1ce5305a93b524a9807997124ab119b
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Marcus Tillmanns
2023-09-27 08:36:40 +02:00
parent 23908b283e
commit 8169e233c0
4 changed files with 34 additions and 11 deletions

View File

@@ -38,6 +38,7 @@
#include <QStandardItemModel>
#include <QTemporaryFile>
#include <QTimer>
#include <QToolBar>
#include <QToolButton>
#include <QUndoStack>
@@ -719,17 +720,13 @@ void HelperWidget::mousePressEvent(QMouseEvent *event)
event->accept();
}
void EditorWidget::addNewSource()
{
auto newSource = std::make_shared<SourceSettings>(
[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<QToolBar>();
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,

View File

@@ -214,8 +214,6 @@ protected:
void setupHelpWidget();
QWidget *createHelpWidget() const;
void addNewSource();
void addCompiler(const std::shared_ptr<SourceSettings> &sourceSettings,
const std::shared_ptr<CompilerSettings> &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<JsonSettingsDocument> m_document;
QUndoStack m_undoStack;
std::unique_ptr<QToolBar> m_toolBar;
};
class EditorFactory : public Core::IEditorFactory

View File

@@ -337,4 +337,10 @@ CompilerExplorerSettings::CompilerExplorerSettings()
CompilerExplorerSettings::~CompilerExplorerSettings() = default;
void CompilerExplorerSettings::addNewSource()
{
auto newSource = std::make_shared<SourceSettings>([this] { return apiConfig(); });
m_sources.addItem(newSource);
}
} // namespace CompilerExplorer

View File

@@ -41,6 +41,8 @@ public:
return Api::Config(m_networkAccessManager, compilerExplorerUrl());
}
void addNewSource();
QNetworkAccessManager *networkAccessManager() const { return m_networkAccessManager; }
private: