kate: add config page with 'Automatic completion' toggle
Adds a Settings → Configure Kate → Plugins → Ollie config page with a checkbox to enable/disable automatic ghost text completion. The setting persists via KConfig and is applied when the ghost provider is created.
This commit is contained in:
parent
1df0daf9de
commit
e4c831df89
|
|
@ -12,6 +12,7 @@
|
|||
#endif
|
||||
|
||||
#include <QApplication>
|
||||
#include <QCheckBox>
|
||||
#include <QDir>
|
||||
#include <QFileInfo>
|
||||
#include <QHash>
|
||||
|
|
@ -19,6 +20,7 @@
|
|||
#include <QMainWindow>
|
||||
#include <QMenu>
|
||||
#include <QStatusBar>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
K_PLUGIN_CLASS_WITH_JSON(OllieKatePlugin, "metadata.json")
|
||||
|
||||
|
|
@ -54,6 +56,64 @@ void OllieKatePlugin::loadConfig()
|
|||
m_completionEnabled = grp.readEntry("CompletionEnabled", true);
|
||||
}
|
||||
|
||||
void OllieKatePlugin::saveConfig()
|
||||
{
|
||||
KConfigGroup grp(KSharedConfig::openConfig(), QStringLiteral("Ollie"));
|
||||
grp.writeEntry("CompletionEnabled", m_completionEnabled);
|
||||
grp.sync();
|
||||
}
|
||||
|
||||
void OllieKatePlugin::setCompletionEnabled(bool enabled)
|
||||
{
|
||||
m_completionEnabled = enabled;
|
||||
saveConfig();
|
||||
}
|
||||
|
||||
int OllieKatePlugin::configPages() const
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
KTextEditor::ConfigPage *OllieKatePlugin::configPage(int number, QWidget *parent)
|
||||
{
|
||||
if (number != 0) return nullptr;
|
||||
|
||||
class OllieConfigPage : public KTextEditor::ConfigPage
|
||||
{
|
||||
public:
|
||||
OllieConfigPage(OllieKatePlugin *plugin, QWidget *parent)
|
||||
: KTextEditor::ConfigPage(parent), m_plugin(plugin)
|
||||
{
|
||||
auto *layout = new QVBoxLayout(this);
|
||||
m_enabledCheck = new QCheckBox(QStringLiteral("Automatic completion (ghost text)"), this);
|
||||
layout->addWidget(m_enabledCheck);
|
||||
layout->addStretch();
|
||||
reset();
|
||||
connect(m_enabledCheck, &QCheckBox::toggled, this, &ConfigPage::changed);
|
||||
}
|
||||
|
||||
QString name() const override { return QStringLiteral("Ollie"); }
|
||||
QString fullName() const override { return QStringLiteral("Ollie Settings"); }
|
||||
QIcon icon() const override { return QIcon::fromTheme(QStringLiteral("system-run")); }
|
||||
|
||||
void apply() override {
|
||||
m_plugin->setCompletionEnabled(m_enabledCheck->isChecked());
|
||||
}
|
||||
void reset() override {
|
||||
m_enabledCheck->setChecked(m_plugin->completionEnabled());
|
||||
}
|
||||
void defaults() override {
|
||||
m_enabledCheck->setChecked(true);
|
||||
}
|
||||
|
||||
private:
|
||||
OllieKatePlugin *m_plugin;
|
||||
QCheckBox *m_enabledCheck;
|
||||
};
|
||||
|
||||
return new OllieConfigPage(this, parent);
|
||||
}
|
||||
|
||||
// --- View ---
|
||||
|
||||
OllieKateView::OllieKateView(OllieKatePlugin *plugin, KTextEditor::MainWindow *mainWindow)
|
||||
|
|
@ -494,6 +554,7 @@ void OllieKateView::setupGhostProvider()
|
|||
}
|
||||
|
||||
m_ghost = new OllieGhostProvider(view, m_plugin, this);
|
||||
m_ghost->setEnabled(m_plugin->completionEnabled());
|
||||
|
||||
if (QWidget *proxy = view->focusProxy()) {
|
||||
proxy->installEventFilter(this);
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#define OLLIE_KATE_PLUGIN_H
|
||||
|
||||
#include <KTextEditor/Plugin>
|
||||
#include <KTextEditor/ConfigPage>
|
||||
#include <KTextEditor/MainWindow>
|
||||
#include <KTextEditor/View>
|
||||
#if QT_VERSION_MAJOR >= 6
|
||||
|
|
@ -32,14 +33,18 @@ public:
|
|||
~OllieKatePlugin() override = default;
|
||||
|
||||
QObject *createView(KTextEditor::MainWindow *mainWindow) override;
|
||||
int configPages() const override;
|
||||
KTextEditor::ConfigPage *configPage(int number, QWidget *parent) override;
|
||||
|
||||
// Completion config accessors
|
||||
QString completionBackend() const { return m_completionBackend; }
|
||||
QString completionModel() const { return m_completionModel; }
|
||||
bool completionEnabled() const { return m_completionEnabled; }
|
||||
void setCompletionEnabled(bool enabled);
|
||||
|
||||
private:
|
||||
void loadConfig();
|
||||
void saveConfig();
|
||||
|
||||
QString m_completionBackend;
|
||||
QString m_completionModel;
|
||||
|
|
|
|||
Reference in New Issue