diff options
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/imgui_extensions.cpp | 2 | ||||
| -rw-r--r-- | src/ui/ui_invoices.cpp | 4 | ||||
| -rw-r--r-- | src/ui/ui_settings.cpp | 60 | ||||
| -rw-r--r-- | src/ui/ui_setup.cpp | 37 |
4 files changed, 55 insertions, 48 deletions
diff --git a/src/ui/imgui_extensions.cpp b/src/ui/imgui_extensions.cpp index 4112568..e3e917c 100644 --- a/src/ui/imgui_extensions.cpp +++ b/src/ui/imgui_extensions.cpp @@ -881,7 +881,7 @@ namespace ImGui //style->WindowMinSize = ImVec2( 160, 20 ); style->FramePadding = ImVec2( 10, 5 ); - style->ItemSpacing = ImVec2( 6, 2 ); + style->ItemSpacing = ImVec2( 6, 5 ); style->ItemInnerSpacing = ImVec2( 6, 4 ); style->Alpha = 1.0f; style->DisabledAlpha = 0.45f; diff --git a/src/ui/ui_invoices.cpp b/src/ui/ui_invoices.cpp index c222050..e6ee7d3 100644 --- a/src/ui/ui_invoices.cpp +++ b/src/ui/ui_invoices.cpp @@ -75,10 +75,10 @@ void draw_invoice_items_form(invoice* invoice, bool outgoing, bool viewing_only if (ImGui::BeginTable("TableBillingItems", 9, ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg)) { ImGui::TableSetupColumn("##actions", ImGuiTableColumnFlags_WidthFixed, 30); - ImGui::TableSetupColumn(locale::get("invoice.table.amount"), ImGuiTableColumnFlags_WidthFixed, 110); + ImGui::TableSetupColumn(locale::get("invoice.table.amount"), ImGuiTableColumnFlags_WidthFixed, 90); ImGui::TableSetupColumn(locale::get("invoice.table.description")); ImGui::TableSetupColumn(locale::get("invoice.table.price"), ImGuiTableColumnFlags_WidthFixed, 100); - ImGui::TableSetupColumn(locale::get("invoice.table.discount"), ImGuiTableColumnFlags_WidthFixed, 130); + ImGui::TableSetupColumn(locale::get("invoice.table.discount"), ImGuiTableColumnFlags_WidthFixed, 110); ImGui::TableSetupColumn(locale::get("invoice.table.net"), ImGuiTableColumnFlags_WidthFixed, 100); ImGui::TableSetupColumn(locale::get("invoice.table.tax%"), ImGuiTableColumnFlags_WidthFixed, 120); ImGui::TableSetupColumn(locale::get("invoice.table.tax"), ImGuiTableColumnFlags_WidthFixed, 100); diff --git a/src/ui/ui_settings.cpp b/src/ui/ui_settings.cpp index f0a0a53..95f24e3 100644 --- a/src/ui/ui_settings.cpp +++ b/src/ui/ui_settings.cpp @@ -16,6 +16,7 @@ #include "ui.hpp" +#include "assets.hpp" #include "strops.hpp" #include "memops.hpp" #include "locales.hpp" @@ -264,18 +265,20 @@ static void draw_ai_service_ui() if (ImGui::CollapsingHeader(locale::get("settings.services.ai_service"))) { + const char* ai_service_icons[AI_PROVIDER_END]; const char* ai_service_names[AI_PROVIDER_END]; for (u32 i = 0; i < AI_PROVIDER_END; i++) { - ai_service_names[i] = importer::get_ai_provider_implementation((ai_provider)i).provider_name; + importer::ai_provider_impl impl = importer::get_ai_provider_implementation((ai_provider)i); + ai_service_names[i] = impl.provider_name; + ai_service_icons[i] = impl.icon_name; } - if (ImGui::BeginCombo(locale::get("settings.services.ai_service.provider"), ai_service_names[new_ai_service.provider])) - { + if (ImGui::BeginCombo(locale::get("settings.services.ai_service.provider"), NULL, 1 << 20)) { for (u32 n = 0; n < AI_PROVIDER_END; n++) { + ImGui::PushID(n); bool is_selected = n == (uint32_t)new_ai_service.provider; - if (ImGui::Selectable(ai_service_names[n], is_selected)) { - + if (ImGui::Selectable("##emailProviderOption", is_selected)) { ai_service service = administration::get_ai_service((ai_provider)n); new_ai_service.provider = (ai_provider)n; strops::copy(new_ai_service.model_name, service.model_name, MAX_LEN_SHORT_DESC); @@ -284,9 +287,25 @@ static void draw_ai_service_ui() model_request = 0; set_model_on_load = strops::length(new_ai_service.model_name) == 0; } + + ImGui::SameLine(); + ImGui::Image(assets::load_image(ai_service_icons[n]), ImVec2(16, 16)); + + ImGui::SameLine(); + ImGui::Text(ai_service_names[n]); + + ImGui::PopID(); } ImGui::EndCombo(); } + + ImGui::BeginComboPreview(); + { + ImGui::Image(assets::load_image(ai_service_icons[new_ai_service.provider]), ImVec2(16, 16)); + ImGui::Text(ai_service_names[new_ai_service.provider]); + + ImGui::EndComboPreview(); + } ImGui::InputTextWithHint(locale::get("settings.services.ai_service.pubkey"), locale::get("settings.services.ai_service.pubkey"), new_ai_service.api_key_public, sizeof(new_ai_service.api_key_public)); @@ -348,6 +367,7 @@ static void draw_ai_service_ui() administration_writer::set_write_completed_event_callback(0); administration::set_active_ai_service(new_ai_service); } + ImGui::Spacing(); } } @@ -356,21 +376,40 @@ static void draw_email_service_ui() if (ImGui::CollapsingHeader(locale::get("settings.services.email_service"))) { const char* email_service_names[EMAIL_PROVIDER_END]; + const char* email_service_images[EMAIL_PROVIDER_END]; for (u32 i = 0; i < EMAIL_PROVIDER_END; i++) { - email_service_names[i] = exporter::get_email_provider_implementation((email_provider)i).provider_name; + exporter::email_provider_impl impl = exporter::get_email_provider_implementation((email_provider)i); + email_service_names[i] = impl.provider_name; + email_service_images[i] = impl.icon_name; } - - if (ImGui::BeginCombo(locale::get("settings.services.email_service.provider"), email_service_names[new_ai_service.provider])) - { + + if (ImGui::BeginCombo("##emailProviderDropdown", NULL, 1 << 20)) { for (u32 n = 0; n < EMAIL_PROVIDER_END; n++) { + ImGui::PushID(n); bool is_selected = n == (uint32_t)new_email_service.provider; - if (ImGui::Selectable(email_service_names[n], is_selected)) { + if (ImGui::Selectable("##emailProviderOption", is_selected)) { new_email_service.provider = (email_provider)n; } + + ImGui::SameLine(); + ImGui::Image(assets::load_image(email_service_images[n]), ImVec2(16, 16)); + + ImGui::SameLine(); + ImGui::Text(email_service_names[n]); + + ImGui::PopID(); } ImGui::EndCombo(); } + + ImGui::BeginComboPreview(); + { + ImGui::Image(assets::load_image(email_service_images[new_email_service.provider]), ImVec2(16, 16)); + ImGui::Text(email_service_names[new_email_service.provider]); + + ImGui::EndComboPreview(); + } ImGui::InputTextWithHint(locale::get("settings.services.email_service.pubkey"), locale::get("settings.services.email_service.pubkey"), new_email_service.api_key, sizeof(new_email_service.api_key)); @@ -381,6 +420,7 @@ static void draw_email_service_ui() administration_writer::set_write_completed_event_callback(0); administration::set_email_service(new_email_service); } + ImGui::Spacing(); } } diff --git a/src/ui/ui_setup.cpp b/src/ui/ui_setup.cpp index 6140d5a..99d6d9f 100644 --- a/src/ui/ui_setup.cpp +++ b/src/ui/ui_setup.cpp @@ -14,53 +14,20 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#include <GLFW/glfw3.h> #include <imgui/imgui.h> #include <IconFontCppHeaders/IconsFontAwesome5.h> #include "ui.hpp" +#include "assets.hpp" #include "strops.hpp" #include "config.hpp" #include "locales.hpp" #include "administration_writer.hpp" #include "administration_reader.hpp" -#include <stb/stb_image.h> - -int ui::load_image(const char* filename) -{ - int width, height, channels; - unsigned char* data = stbi_load(filename, &width, &height, &channels, 0); - - if (!data) - { - return 0; - } - - GLuint textureID; - glGenTextures(1, &textureID); - glBindTexture(GL_TEXTURE_2D, textureID); - - // Set texture parameters - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - - // Upload texture data - GLenum format = (channels == 4) ? GL_RGBA : GL_RGB; - glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, format, GL_UNSIGNED_BYTE, data); - //glGenerateMipmap(GL_TEXTURE_2D); - - // Free image memory - stbi_image_free(data); - - return textureID; -} - void ui::draw_setup() { - static int img = load_image("/home/aldrik/Projects/open-books/build/splash.png"); + static int img = assets::load_image("img/splash"); ImVec2 area = ImGui::GetContentRegionAvail(); ImGui::PushStyleVar(ImGuiStyleVar_ButtonTextAlign, ImVec2(0.0f, 0.5f)); |
