diff --git a/QodeAssist.json.in b/QodeAssist.json.in
index 37cd649..993742d 100644
--- a/QodeAssist.json.in
+++ b/QodeAssist.json.in
@@ -1,6 +1,6 @@
{
"Name" : "QodeAssist",
- "Version" : "0.3.6",
+ "Version" : "0.3.7",
"CompatVersion" : "${IDE_VERSION_COMPAT}",
"Vendor" : "Petr Mironychev",
"Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} Petr Mironychev, (C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd",
diff --git a/settings/ContextSettings.cpp b/settings/ContextSettings.cpp
deleted file mode 100644
index c66683a..0000000
--- a/settings/ContextSettings.cpp
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright (C) 2024 Petr Mironychev
- *
- * This file is part of QodeAssist.
- *
- * QodeAssist is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * QodeAssist is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with QodeAssist. If not, see .
- */
-
-#include "ContextSettings.hpp"
-
-#include
-#include
-#include
-#include
-
-#include "SettingsConstants.hpp"
-#include "SettingsTr.hpp"
-#include "SettingsUtils.hpp"
-
-namespace QodeAssist::Settings {
-ContextSettings &contextSettings()
-{
- static ContextSettings settings;
- return settings;
-}
-
-ContextSettings::ContextSettings()
-{
- setAutoApply(false);
-
- setDisplayName(Tr::tr("Context"));
-
- readFullFile.setSettingsKey(Constants::CC_READ_FULL_FILE);
- readFullFile.setLabelText(Tr::tr("Read Full File"));
- readFullFile.setDefaultValue(false);
-
- readStringsBeforeCursor.setSettingsKey(Constants::CC_READ_STRINGS_BEFORE_CURSOR);
- readStringsBeforeCursor.setLabelText(Tr::tr("Read Strings Before Cursor"));
- readStringsBeforeCursor.setRange(0, 10000);
- readStringsBeforeCursor.setDefaultValue(50);
-
- readStringsAfterCursor.setSettingsKey(Constants::CC_READ_STRINGS_AFTER_CURSOR);
- readStringsAfterCursor.setLabelText(Tr::tr("Read Strings After Cursor"));
- readStringsAfterCursor.setRange(0, 10000);
- readStringsAfterCursor.setDefaultValue(30);
-
- useFilePathInContext.setSettingsKey(Constants::CC_USE_FILE_PATH_IN_CONTEXT);
- useFilePathInContext.setDefaultValue(false);
- useFilePathInContext.setLabelText(Tr::tr("Use File Path in Context"));
-
- useSystemPrompt.setSettingsKey(Constants::CC_USE_SYSTEM_PROMPT);
- useSystemPrompt.setDefaultValue(true);
- useSystemPrompt.setLabelText(Tr::tr("Use System Prompt"));
-
- systemPrompt.setSettingsKey(Constants::CC_SYSTEM_PROMPT);
- systemPrompt.setDisplayStyle(Utils::StringAspect::TextEditDisplay);
- systemPrompt.setDefaultValue(
- "You are an expert C++, Qt, and QML code completion AI. Your task is to provide accurate "
- "and "
- "contextually appropriate code suggestions. Focus on completing the code in a way that "
- "follows best practices, is efficient, and matches the surrounding code style. Prioritize "
- "Qt and QML-specific completions when appropriate. Avoid adding comments or explanations "
- "in your completions.");
-
- useChatSystemPrompt.setSettingsKey(Constants::CA_SYSTEM_PROMPT);
- useChatSystemPrompt.setDefaultValue(true);
- useChatSystemPrompt.setLabelText(Tr::tr("Use System Prompt for chat"));
-
- chatSystemPrompt.setSettingsKey(Constants::CA_SYSTEM_PROMPT);
- chatSystemPrompt.setDisplayStyle(Utils::StringAspect::TextEditDisplay);
- chatSystemPrompt.setDefaultValue(
- "You are an advanced AI assistant specializing in C++, Qt, and QML development. Your role "
- "is "
- "to provide helpful, accurate, and detailed responses to questions about coding, "
- "debugging, "
- "and best practices in these technologies. Offer clear explanations, code examples when "
- "appropriate, and guidance on Qt Creator usage. Always prioritize officially recommended "
- "Qt "
- "and C++ practices. If you're unsure about something, state it clearly and suggest where "
- "the "
- "user might find more information.");
-
- resetToDefaults.m_buttonText = Tr::tr("Reset Page to Defaults");
-
- useProjectChangesCache.setSettingsKey(Constants::CC_USE_PROJECT_CHANGES_CACHE);
- useProjectChangesCache.setDefaultValue(true);
- useProjectChangesCache.setLabelText(Tr::tr("Use Project Changes Cache"));
-
- maxChangesCacheSize.setSettingsKey(Constants::CC_MAX_CHANGES_CACHE_SIZE);
- maxChangesCacheSize.setLabelText(Tr::tr("Max Changes Cache Size"));
- maxChangesCacheSize.setRange(2, 1000);
- maxChangesCacheSize.setDefaultValue(20);
-
- readSettings();
-
- readStringsAfterCursor.setEnabled(!readFullFile());
- readStringsBeforeCursor.setEnabled(!readFullFile());
- systemPrompt.setEnabled(useSystemPrompt());
-
- setupConnection();
-
- setLayouter([this]() {
- using namespace Layouting;
- return Column{Row{Stretch{1}, resetToDefaults},
- Group{title(Tr::tr("AI Suggestions Context")),
- Column{Row{readFullFile, Stretch{1}},
- Row{readStringsBeforeCursor, Stretch{1}},
- Row{readStringsAfterCursor, Stretch{1}},
- useFilePathInContext,
- useSystemPrompt,
- systemPrompt,
- useProjectChangesCache,
- Row{maxChangesCacheSize, Stretch{1}},
- Stretch{1}}},
- Space{16},
- Group{title(Tr::tr("AI Chat Context")),
- Column{useChatSystemPrompt, chatSystemPrompt}}};
- });
-}
-
-void ContextSettings::setupConnection()
-{
- connect(&readFullFile, &Utils::BoolAspect::volatileValueChanged, this, [this]() {
- readStringsAfterCursor.setEnabled(!readFullFile.volatileValue());
- readStringsBeforeCursor.setEnabled(!readFullFile.volatileValue());
- });
- connect(&useSystemPrompt, &Utils::BoolAspect::volatileValueChanged, this, [this]() {
- systemPrompt.setEnabled(useSystemPrompt.volatileValue());
- });
- connect(&resetToDefaults, &ButtonAspect::clicked, this, &ContextSettings::resetPageToDefaults);
-}
-
-void ContextSettings::resetPageToDefaults()
-{
- QMessageBox::StandardButton reply;
- reply = QMessageBox::question(
- Core::ICore::dialogParent(),
- Tr::tr("Reset Settings"),
- Tr::tr("Are you sure you want to reset all settings to default values?"),
- QMessageBox::Yes | QMessageBox::No);
-
- if (reply == QMessageBox::Yes) {
- resetAspect(readFullFile);
- resetAspect(readStringsBeforeCursor);
- resetAspect(readStringsAfterCursor);
- resetAspect(useFilePathInContext);
- resetAspect(useSystemPrompt);
- resetAspect(systemPrompt);
- resetAspect(useChatSystemPrompt);
- resetAspect(chatSystemPrompt);
- }
-}
-
-class ContextSettingsPage : public Core::IOptionsPage
-{
-public:
- ContextSettingsPage()
- {
- setId(Constants::QODE_ASSIST_CONTEXT_SETTINGS_PAGE_ID);
- setDisplayName(Tr::tr("Context"));
- setCategory(Constants::QODE_ASSIST_GENERAL_OPTIONS_CATEGORY);
- setDisplayCategory(Constants::QODE_ASSIST_GENERAL_OPTIONS_DISPLAY_CATEGORY);
- setCategoryIconPath(":/resources/images/qoderassist-icon.png");
- setSettingsProvider([] { return &contextSettings(); });
- }
-};
-
-const ContextSettingsPage contextSettingsPage;
-
-} // namespace QodeAssist::Settings
diff --git a/settings/ContextSettings.hpp b/settings/ContextSettings.hpp
deleted file mode 100644
index e207af0..0000000
--- a/settings/ContextSettings.hpp
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2024 Petr Mironychev
- *
- * This file is part of QodeAssist.
- *
- * QodeAssist is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * QodeAssist is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with QodeAssist. If not, see .
- */
-
-#pragma once
-
-#include
-
-#include "ButtonAspect.hpp"
-
-namespace QodeAssist::Settings {
-
-class ContextSettings : public Utils::AspectContainer
-{
-public:
- ContextSettings();
-
- Utils::BoolAspect readFullFile{this};
- Utils::IntegerAspect readStringsBeforeCursor{this};
- Utils::IntegerAspect readStringsAfterCursor{this};
-
- Utils::BoolAspect useSystemPrompt{this};
- Utils::StringAspect systemPrompt{this};
- Utils::BoolAspect useFilePathInContext{this};
- Utils::BoolAspect useProjectChangesCache{this};
- Utils::IntegerAspect maxChangesCacheSize{this};
- Utils::BoolAspect useChatSystemPrompt{this};
- Utils::StringAspect chatSystemPrompt{this};
-
- ButtonAspect resetToDefaults{this};
-
-private:
- void setupConnection();
- void resetPageToDefaults();
-};
-
-ContextSettings &contextSettings();
-
-} // namespace QodeAssist::Settings
diff --git a/settings/GeneralSettings.cpp b/settings/GeneralSettings.cpp
index ea39e9b..efba2a3 100644
--- a/settings/GeneralSettings.cpp
+++ b/settings/GeneralSettings.cpp
@@ -200,6 +200,8 @@ public:
setId(Constants::QODE_ASSIST_GENERAL_SETTINGS_PAGE_ID);
setDisplayName(TrConstants::GENERAL);
setCategory(Constants::QODE_ASSIST_GENERAL_OPTIONS_CATEGORY);
+ setDisplayCategory(Constants::QODE_ASSIST_GENERAL_OPTIONS_DISPLAY_CATEGORY);
+ setCategoryIconPath(":/resources/images/qoderassist-icon.png");
setSettingsProvider([] { return &generalSettings(); });
}
};
diff --git a/settings/PresetPromptsSettings.cpp b/settings/PresetPromptsSettings.cpp
deleted file mode 100644
index 3132c7f..0000000
--- a/settings/PresetPromptsSettings.cpp
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- * Copyright (C) 2024 Petr Mironychev
- *
- * This file is part of QodeAssist.
- *
- * QodeAssist is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * QodeAssist is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with QodeAssist. If not, see .
- */
-
-#include "PresetPromptsSettings.hpp"
-
-#include
-#include
-#include
-#include
-
-#include "SettingsConstants.hpp"
-#include "SettingsTr.hpp"
-#include "SettingsUtils.hpp"
-
-namespace QodeAssist::Settings {
-
-PresetPromptsSettings &presetPromptsSettings()
-{
- static PresetPromptsSettings settings;
- return settings;
-}
-
-PresetPromptsSettings::PresetPromptsSettings()
-{
- setAutoApply(false);
-
- setDisplayName(Tr::tr("Preset Prompts Params"));
-
- fimTemperature.setSettingsKey(Constants::CC_TEMPERATURE);
- fimTemperature.setLabelText(Tr::tr("Temperature:"));
- fimTemperature.setDefaultValue(0.2);
- fimTemperature.setRange(0.0, 10.0);
- fimTemperature.setSingleStep(0.1);
-
- chatTemperature.setSettingsKey(Constants::CA_TEMPERATURE);
- chatTemperature.setLabelText(Tr::tr("Temperature:"));
- chatTemperature.setDefaultValue(0.5);
- chatTemperature.setRange(0.0, 10.0);
- chatTemperature.setSingleStep(0.1);
-
- fimOllamaLivetime.setSettingsKey(Constants::CC_OLLAMA_LIVETIME);
- fimOllamaLivetime.setLabelText(
- Tr::tr("Time to suspend Ollama after completion request (in minutes), "
- "Only Ollama, -1 to disable"));
- fimOllamaLivetime.setDefaultValue("5m");
- fimOllamaLivetime.setDisplayStyle(Utils::StringAspect::LineEditDisplay);
-
- chatOllamaLivetime.setSettingsKey(Constants::CA_OLLAMA_LIVETIME);
- chatOllamaLivetime.setLabelText(
- Tr::tr("Time to suspend Ollama after completion request (in minutes), "
- "Only Ollama, -1 to disable"));
- chatOllamaLivetime.setDefaultValue("5m");
- chatOllamaLivetime.setDisplayStyle(Utils::StringAspect::LineEditDisplay);
-
- fimMaxTokens.setSettingsKey(Constants::CC_MAX_TOKENS);
- fimMaxTokens.setLabelText(Tr::tr("Max Tokens"));
- fimMaxTokens.setRange(-1, 10000);
- fimMaxTokens.setDefaultValue(50);
-
- chatMaxTokens.setSettingsKey(Constants::CA_MAX_TOKENS);
- chatMaxTokens.setLabelText(Tr::tr("Max Tokens"));
- chatMaxTokens.setRange(-1, 10000);
- chatMaxTokens.setDefaultValue(2000);
-
- fimUseTopP.setSettingsKey(Constants::CC_USE_TOP_P);
- fimUseTopP.setDefaultValue(false);
-
- fimTopP.setSettingsKey(Constants::CC_TOP_P);
- fimTopP.setLabelText(Tr::tr("use top_p"));
- fimTopP.setDefaultValue(0.9);
- fimTopP.setRange(0.0, 1.0);
- fimTopP.setSingleStep(0.1);
-
- chatUseTopP.setSettingsKey(Constants::CA_USE_TOP_P);
- chatUseTopP.setDefaultValue(false);
-
- chatTopP.setSettingsKey(Constants::CA_TOP_P);
- chatTopP.setLabelText(Tr::tr("use top_p"));
- chatTopP.setDefaultValue(0.9);
- chatTopP.setRange(0.0, 1.0);
- chatTopP.setSingleStep(0.1);
-
- fimUseTopK.setSettingsKey(Constants::CC_USE_TOP_K);
- fimUseTopK.setDefaultValue(false);
-
- fimTopK.setSettingsKey(Constants::CC_TOP_K);
- fimTopK.setLabelText(Tr::tr("use top_k"));
- fimTopK.setDefaultValue(50);
- fimTopK.setRange(1, 1000);
-
- chatUseTopK.setSettingsKey(Constants::CA_USE_TOP_K);
- chatUseTopK.setDefaultValue(false);
-
- chatTopK.setSettingsKey(Constants::CA_TOP_K);
- chatTopK.setLabelText(Tr::tr("use top_k"));
- chatTopK.setDefaultValue(50);
- chatTopK.setRange(1, 1000);
-
- fimUsePresencePenalty.setSettingsKey(Constants::CC_USE_PRESENCE_PENALTY);
- fimUsePresencePenalty.setDefaultValue(false);
-
- fimPresencePenalty.setSettingsKey(Constants::CC_PRESENCE_PENALTY);
- fimPresencePenalty.setLabelText(Tr::tr("use presence_penalty"));
- fimPresencePenalty.setDefaultValue(0.0);
- fimPresencePenalty.setRange(-2.0, 2.0);
- fimPresencePenalty.setSingleStep(0.1);
-
- chatUsePresencePenalty.setSettingsKey(Constants::CA_USE_PRESENCE_PENALTY);
- chatUsePresencePenalty.setDefaultValue(false);
-
- chatPresencePenalty.setSettingsKey(Constants::CA_PRESENCE_PENALTY);
- chatPresencePenalty.setLabelText(Tr::tr("use presence_penalty"));
- chatPresencePenalty.setDefaultValue(0.0);
- chatPresencePenalty.setRange(-2.0, 2.0);
- chatPresencePenalty.setSingleStep(0.1);
-
- fimUseFrequencyPenalty.setSettingsKey(Constants::CC_USE_FREQUENCY_PENALTY);
- fimUseFrequencyPenalty.setDefaultValue(false);
-
- fimFrequencyPenalty.setSettingsKey(Constants::CC_FREQUENCY_PENALTY);
- fimFrequencyPenalty.setLabelText(Tr::tr("use frequency_penalty"));
- fimFrequencyPenalty.setDefaultValue(0.0);
- fimFrequencyPenalty.setRange(-2.0, 2.0);
- fimFrequencyPenalty.setSingleStep(0.1);
-
- chatUseFrequencyPenalty.setSettingsKey(Constants::CA_USE_FREQUENCY_PENALTY);
- chatUseFrequencyPenalty.setDefaultValue(false);
-
- chatFrequencyPenalty.setSettingsKey(Constants::CA_FREQUENCY_PENALTY);
- chatFrequencyPenalty.setLabelText(Tr::tr("use frequency_penalty"));
- chatFrequencyPenalty.setDefaultValue(0.0);
- chatFrequencyPenalty.setRange(-2.0, 2.0);
- chatFrequencyPenalty.setSingleStep(0.1);
-
- fimApiKey.setSettingsKey(Constants::CC_API_KEY);
- fimApiKey.setLabelText(Tr::tr("API Key:"));
- fimApiKey.setDisplayStyle(Utils::StringAspect::LineEditDisplay);
- fimApiKey.setPlaceHolderText(Tr::tr("Enter your API key here"));
-
- chatApiKey.setSettingsKey(Constants::CA_API_KEY);
- chatApiKey.setLabelText(Tr::tr("API Key:"));
- chatApiKey.setDisplayStyle(Utils::StringAspect::LineEditDisplay);
- chatApiKey.setPlaceHolderText(Tr::tr("Enter your API key here"));
-
- resetToDefaults.m_buttonText = Tr::tr("Reset Page to Defaults");
-
- readSettings();
-
- setupConnections();
-
- setLayouter([this]() {
- using namespace Layouting;
- return Column{Row{Stretch{1}, resetToDefaults},
- Group{title(Tr::tr("Prompt settings for FIM")),
- Column{Row{fimTemperature, Stretch{1}},
- Row{fimMaxTokens, Stretch{1}},
- Row{fimUseTopP, fimTopP, Stretch{1}},
- Row{fimUseTopK, fimTopK, Stretch{1}},
- Row{fimUsePresencePenalty, fimPresencePenalty, Stretch{1}},
- Row{fimUseFrequencyPenalty, fimFrequencyPenalty, Stretch{1}},
- Row{fimOllamaLivetime, Stretch{1}},
- fimApiKey}},
- Space{16},
- Group{title(Tr::tr("Prompt settings for Chat")),
- Column{Row{chatTemperature, Stretch{1}},
- Row{chatMaxTokens, Stretch{1}},
- Row{chatUseTopP, chatTopP, Stretch{1}},
- Row{chatUseTopK, chatTopK, Stretch{1}},
- Row{fimUsePresencePenalty, fimPresencePenalty, Stretch{1}},
- Row{fimUseFrequencyPenalty, fimFrequencyPenalty, Stretch{1}},
- Row{chatOllamaLivetime, Stretch{1}},
- chatApiKey}},
- Stretch{1}};
- });
-}
-
-PresetPromptsSettings::PromptSettings PresetPromptsSettings::getSettings(int type) const
-{
- PromptSettings settings;
- if (type == 0) {
- settings.temperature = fimTemperature();
- settings.maxTokens = fimMaxTokens();
- settings.useTopP = fimUseTopP();
- settings.topP = fimTopP();
- settings.useTopK = fimUseTopK();
- settings.topK = fimTopK();
- settings.usePresencePenalty = fimUsePresencePenalty();
- settings.presencePenalty = fimPresencePenalty();
- settings.useFrequencyPenalty = fimUseFrequencyPenalty();
- settings.frequencyPenalty = fimFrequencyPenalty();
- settings.ollamaLivetime = fimOllamaLivetime();
- settings.apiKey = fimApiKey();
- } else if (type = 1) {
- settings.temperature = chatTemperature();
- settings.maxTokens = chatMaxTokens();
- settings.useTopP = chatUseTopP();
- settings.topP = chatTopP();
- settings.useTopK = chatUseTopK();
- settings.topK = chatTopK();
- settings.usePresencePenalty = chatUsePresencePenalty();
- settings.presencePenalty = chatPresencePenalty();
- settings.useFrequencyPenalty = chatUseFrequencyPenalty();
- settings.frequencyPenalty = chatFrequencyPenalty();
- settings.ollamaLivetime = chatOllamaLivetime();
- settings.apiKey = chatApiKey();
- }
- return settings;
-}
-
-void PresetPromptsSettings::setupConnections()
-{
- connect(&resetToDefaults,
- &ButtonAspect::clicked,
- this,
- &PresetPromptsSettings::resetSettingsToDefaults);
-}
-
-void PresetPromptsSettings::resetSettingsToDefaults()
-{
- QMessageBox::StandardButton reply;
- reply = QMessageBox::question(
- Core::ICore::dialogParent(),
- Tr::tr("Reset Settings"),
- Tr::tr("Are you sure you want to reset all settings to default values?"),
- QMessageBox::Yes | QMessageBox::No);
-
- if (reply == QMessageBox::Yes) {
- resetAspect(fimTemperature);
- resetAspect(fimMaxTokens);
- resetAspect(fimOllamaLivetime);
- resetAspect(fimUseTopP);
- resetAspect(fimTopP);
- resetAspect(fimUseTopK);
- resetAspect(fimTopK);
- resetAspect(fimUsePresencePenalty);
- resetAspect(fimPresencePenalty);
- resetAspect(fimUseFrequencyPenalty);
- resetAspect(fimFrequencyPenalty);
- resetAspect(chatTemperature);
- resetAspect(chatMaxTokens);
- resetAspect(chatUseTopP);
- resetAspect(chatTopP);
- resetAspect(chatUseTopK);
- resetAspect(chatTopK);
- resetAspect(chatUsePresencePenalty);
- resetAspect(chatPresencePenalty);
- resetAspect(chatUseFrequencyPenalty);
- resetAspect(chatFrequencyPenalty);
- resetAspect(chatOllamaLivetime);
- }
-}
-
-class PresetPromptsSettingsPage : public Core::IOptionsPage
-{
-public:
- PresetPromptsSettingsPage()
- {
- setId(Constants::QODE_ASSIST_PRESET_PROMPTS_SETTINGS_PAGE_ID);
- setDisplayName(Tr::tr("Preset Prompts Params"));
- setCategory(Constants::QODE_ASSIST_GENERAL_OPTIONS_CATEGORY);
- setSettingsProvider([] { return &presetPromptsSettings(); });
- }
-};
-
-const PresetPromptsSettingsPage presetPromptsSettingsPage;
-
-} // namespace QodeAssist::Settings
diff --git a/settings/PresetPromptsSettings.hpp b/settings/PresetPromptsSettings.hpp
deleted file mode 100644
index 9cae0f1..0000000
--- a/settings/PresetPromptsSettings.hpp
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (C) 2024 Petr Mironychev
- *
- * This file is part of QodeAssist.
- *
- * QodeAssist is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * QodeAssist is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with QodeAssist. If not, see .
- */
-
-#pragma once
-
-#include
-
-#include "ButtonAspect.hpp"
-
-namespace QodeAssist::Settings {
-
-class PresetPromptsSettings : public Utils::AspectContainer
-{
-public:
- struct PromptSettings
- {
- double temperature;
- int maxTokens;
- bool useTopP;
- double topP;
- bool useTopK;
- int topK;
- bool usePresencePenalty;
- double presencePenalty;
- bool useFrequencyPenalty;
- double frequencyPenalty;
- QString ollamaLivetime;
- QString apiKey;
- };
-
- PresetPromptsSettings();
-
- Utils::DoubleAspect fimTemperature{this};
- Utils::IntegerAspect fimMaxTokens{this};
-
- Utils::DoubleAspect chatTemperature{this};
- Utils::IntegerAspect chatMaxTokens{this};
-
- Utils::BoolAspect fimUseTopP{this};
- Utils::DoubleAspect fimTopP{this};
-
- Utils::BoolAspect chatUseTopP{this};
- Utils::DoubleAspect chatTopP{this};
-
- Utils::BoolAspect fimUseTopK{this};
- Utils::IntegerAspect fimTopK{this};
-
- Utils::BoolAspect chatUseTopK{this};
- Utils::IntegerAspect chatTopK{this};
-
- Utils::BoolAspect fimUsePresencePenalty{this};
- Utils::DoubleAspect fimPresencePenalty{this};
-
- Utils::BoolAspect chatUsePresencePenalty{this};
- Utils::DoubleAspect chatPresencePenalty{this};
-
- Utils::BoolAspect fimUseFrequencyPenalty{this};
- Utils::DoubleAspect fimFrequencyPenalty{this};
-
- Utils::BoolAspect chatUseFrequencyPenalty{this};
- Utils::DoubleAspect chatFrequencyPenalty{this};
-
- Utils::StringAspect fimOllamaLivetime{this};
- Utils::StringAspect chatOllamaLivetime{this};
- Utils::StringAspect fimApiKey{this};
- Utils::StringAspect chatApiKey{this};
-
- ButtonAspect resetToDefaults{this};
-
- PromptSettings getSettings(int type) const;
-
-private:
- void setupConnections();
- void resetSettingsToDefaults();
-};
-
-PresetPromptsSettings &presetPromptsSettings();
-
-} // namespace QodeAssist::Settings