KTextAddons

ollamaconfigurewidget.cpp
1/*
2 SPDX-FileCopyrightText: 2025 Laurent Montel <montel@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5*/
6
7#include "ollamaconfigurewidget.h"
8#include "ollamacomboboxwidget.h"
9#include "ollamamanager.h"
10#include "ollamasettings.h"
11
12#include <KLineEditEventHandler>
13#include <KLocalizedString>
14#include <KMessageWidget>
15#include <QFormLayout>
16#include <QLineEdit>
17#include <QPlainTextEdit>
18
19OllamaConfigureWidget::OllamaConfigureWidget(QWidget *parent)
20 : QWidget{parent}
21 , mServerUrl(new QLineEdit(this))
22 , mPrompt(new QPlainTextEdit(this))
23 , mModelComboBoxWidget(new OllamaComboBoxWidget(this))
24 , mMessageWidget(new KMessageWidget(this))
25{
26 auto mainLayout = new QFormLayout(this);
27 mainLayout->setObjectName(QStringLiteral("mainLayout"));
28 mainLayout->setContentsMargins({});
29
30 mMessageWidget->setObjectName(QStringLiteral("mMessageWidget"));
31 mainLayout->addWidget(mMessageWidget);
32 mMessageWidget->setVisible(false);
33 mMessageWidget->setMessageType(KMessageWidget::MessageType::Error);
34
35 mServerUrl->setObjectName(QStringLiteral("mServerUrl"));
37 mainLayout->addRow(i18n("Server Url:"), mServerUrl);
38 mServerUrl->setPlaceholderText(QStringLiteral("http://127.0.0.1:11434"));
39
40 mModelComboBoxWidget->setObjectName(QStringLiteral("mModelComboBoxWidget"));
41 mainLayout->addRow(i18n("Model:"), mModelComboBoxWidget);
42
43 mPrompt->setObjectName(QStringLiteral("mPrompt"));
44 mainLayout->addRow(i18n("Prompt:"), mPrompt);
45 mPrompt->setPlaceholderText(i18n("No system prompt"));
46
47 connect(mModelComboBoxWidget, &OllamaComboBoxWidget::reloadModel, this, &OllamaConfigureWidget::fillModels);
48 fillModels();
49}
50
51OllamaConfigureWidget::~OllamaConfigureWidget() = default;
52
53void OllamaConfigureWidget::loadSettings()
54{
55 mServerUrl->setText(OllamaSettings::serverUrl().toString());
56 mPrompt->setPlainText(OllamaSettings::systemPrompt());
57 mModelComboBoxWidget->setCurrentModel(OllamaSettings::model());
58}
59
60void OllamaConfigureWidget::saveSettings()
61{
62 OllamaSettings::setSystemPrompt(mPrompt->toPlainText());
63 OllamaSettings::setServerUrl(QUrl(mServerUrl->text()));
64 OllamaSettings::setModel(mModelComboBoxWidget->currentModel());
65 OllamaSettings::self()->save();
66}
67
68void OllamaConfigureWidget::fillModels()
69{
70 mMessageWidget->animatedHide();
71 connect(OllamaManager::self(), &OllamaManager::modelsLoadDone, this, [this](const OllamaManager::ModelsInfo &modelinfo) {
72 qDebug() << " OllamaConfigureWidget::fillModels() " << modelinfo;
73 if (modelinfo.hasError) {
74 mMessageWidget->setText(modelinfo.errorOccured);
75 mMessageWidget->animatedShow();
76 } else {
77 mModelComboBoxWidget->setModels(modelinfo.models);
78 loadSettings();
79 }
80 });
81 OllamaManager::self()->loadModels();
82}
83
84#include "moc_ollamaconfigurewidget.cpp"
QString i18n(const char *text, const TYPE &arg...)
char * toString(const EngineQuery &query)
void catchReturnKey(QObject *lineEdit)
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Apr 18 2025 12:00:52 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.