summaryrefslogtreecommitdiff
path: root/src/ui
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrikboy@gmail.com>2025-09-27 14:23:56 +0200
committerAldrik Ramaekers <aldrikboy@gmail.com>2025-09-27 14:23:56 +0200
commitfa088bb60692ba02d30d39affa9a31d9e2b688e2 (patch)
treea2d51585c0f86407709b834bd7a82a5672d2c17b /src/ui
parentaa7b5ef6ab4f45d2e8e0caa7942db31fc60b3861 (diff)
ai service settings
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/imgui_extensions.cpp6
-rw-r--r--src/ui/ui_settings.cpp41
2 files changed, 44 insertions, 3 deletions
diff --git a/src/ui/imgui_extensions.cpp b/src/ui/imgui_extensions.cpp
index 483f5f6..4dc1fb9 100644
--- a/src/ui/imgui_extensions.cpp
+++ b/src/ui/imgui_extensions.cpp
@@ -49,12 +49,12 @@ namespace ImGui
float widthAvailable = ImGui::GetContentRegionAvail().x;
ImGui::SetNextItemWidth(widthAvailable*0.5f);
- if (ImGui::Button("Select file..."))
+ if (ImGui::Button("Select file...")) // @localize
{
// You can adjust filters, title, default path
const char *filterPatterns[] = { "*.png", "*.jpg", "*.pdf", "*" };
const char *file = tinyfd_openFileDialog(
- "Choose a file", // dialog title
+ "Choose a file", // dialog title // @localize
NULL, // default path
4, // number of filter patterns
filterPatterns, // filter patterns array
@@ -77,7 +77,7 @@ namespace ImGui
result = true;
}
ImGui::SameLine();
- ImGui::TextWrapped("Selected: %s", buffer);
+ ImGui::TextWrapped("Selected: %s", buffer); // @localize
}
diff --git a/src/ui/ui_settings.cpp b/src/ui/ui_settings.cpp
index 892e580..1f9fe5a 100644
--- a/src/ui/ui_settings.cpp
+++ b/src/ui/ui_settings.cpp
@@ -35,6 +35,7 @@ u32 cost_center_count;
cost_center* cost_centers = 0;
static int select_company_tab = 0;
+static ai_service new_service;
void ui_destroy_settings()
{
@@ -54,6 +55,8 @@ void ui_setup_settings()
cost_center_count = administration_cost_center_count();
cost_centers = (cost_center*)malloc(cost_center_count * sizeof(cost_center));
administration_cost_center_get_all(cost_centers);
+
+ new_service = administration_get_ai_service();
}
static void ui_draw_vat_rates()
@@ -330,6 +333,39 @@ static void ui_draw_cost_centers()
}
}
+static void ui_draw_services()
+{
+ // AI service
+ if (ImGui::CollapsingHeader(localize("settings.services.ai_service")))
+ {
+ char* services[1] = {
+ "OpenAI"
+ };
+
+ if (ImGui::BeginCombo(localize("settings.services.ai_service.provider"), services[new_service.provider]))
+ {
+ for (u32 n = 0; n < 1; n++)
+ {
+ bool is_selected = n == (uint32_t)new_service.provider;
+ if (ImGui::Selectable(services[n], is_selected)) {
+ new_service.provider = (ai_provider)n;
+ }
+ }
+ ImGui::EndCombo();
+ }
+
+ ImGui::InputTextWithHint(localize("settings.services.ai_service.pubkey"), localize("settings.services.ai_service.pubkey"),
+ new_service.api_key_public, sizeof(new_service.api_key_public));
+
+ ImGui::InputTextWithHint(localize("settings.services.ai_service.privkey"), localize("settings.services.ai_service.privkey"),
+ new_service.api_key_private, sizeof(new_service.api_key_private));
+
+ if (ImGui::Button(localize("form.save"))) {
+ administration_set_ai_service(new_service);
+ }
+ }
+}
+
void ui_draw_settings()
{
if (ImGui::BeginTabBar("SettingsTabBar"))
@@ -360,6 +396,11 @@ void ui_draw_settings()
ui_draw_cost_centers();
ImGui::EndTabItem();
}
+ if (ImGui::BeginTabItem(localize("settings.table.services")))
+ {
+ ui_draw_services();
+ ImGui::EndTabItem();
+ }
ImGui::EndTabBar();
}
} \ No newline at end of file