diff options
| author | Aldrik Ramaekers <aldrik@mailbox.org> | 2026-01-08 22:08:07 +0100 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrik@mailbox.org> | 2026-01-08 22:08:07 +0100 |
| commit | 6555d97f2eaf5b3829543624f6b0a3394715c71b (patch) | |
| tree | c0b2d6abd7e402b32ab2e42088db6da4337c0364 /src | |
| parent | 0d70098dd5b704f2953c63f0c827b46b11935b81 (diff) | |
setup window work
Diffstat (limited to 'src')
| -rw-r--r-- | src/main_linux.cpp | 24 | ||||
| -rw-r--r-- | src/ui/ui_main.cpp | 3 | ||||
| -rw-r--r-- | src/ui/ui_setup.cpp | 59 |
3 files changed, 80 insertions, 6 deletions
diff --git a/src/main_linux.cpp b/src/main_linux.cpp index e605659..a7619b0 100644 --- a/src/main_linux.cpp +++ b/src/main_linux.cpp @@ -26,6 +26,8 @@ #include "administration_writer.hpp" #include "administration_reader.hpp" +#include "IconFontCppHeaders/IconsFontAwesome5.h" + // [Win32] Our example includes a copy of glfw3.lib pre-compiled with VS2010 to maximize ease of testing and compatibility with old VS compilers. // To link with VS2010-era libraries, VS2015+ requires linking with legacy_stdio_definitions.lib, which we do using this pragma. // Your own project should not be affected, as you are likely to link with a newer binary of GLFW that is adequate for your version of Visual Studio. @@ -61,8 +63,8 @@ static void _create_window(bool is_setup_window) if (is_setup_window) { glfwWindowHint(GLFW_RESIZABLE, false); - windowWidth = (int)(800 * main_scale); - windowHeight = (int)(500 * main_scale); + windowWidth = (int)(500 * main_scale); + windowHeight = (int)(400 * main_scale); } else { glfwWindowHint(GLFW_RESIZABLE, true); @@ -93,10 +95,24 @@ static void _create_window(bool is_setup_window) ImGui_ImplGlfw_InitForOpenGL(window, true); ImGui_ImplOpenGL2_Init(); + io.Fonts->Clear(); style.FontSizeBase = 18.0f; - io.Fonts->AddFontFromFileTTF("/home/aldrik/Projects/open-books/build/Roboto-Regular.ttf"); - ui::fontBold = io.Fonts->AddFontFromFileTTF("/home/aldrik/Projects/open-books/build/Roboto-Bold.ttf"); + float iconFontSize = 10.0f; + + static ImWchar icon_range[] = { ICON_MIN_FA, ICON_MAX_FA, 0 }; + + ImFontConfig icons_config; + icons_config.GlyphMinAdvanceX = iconFontSize; + io.Fonts->AddFontFromFileTTF( "/home/aldrik/Projects/open-books/build/" FONT_ICON_FILE_NAME_FAS, iconFontSize, &icons_config, icon_range); + + ImFontConfig cfg1; + cfg1.MergeMode = true; + io.Fonts->AddFontFromFileTTF("/home/aldrik/Projects/open-books/build/Roboto-Regular.ttf", 0, &cfg1); + + ui::fontBold = io.Fonts->AddFontFromFileTTF("/home/aldrik/Projects/open-books/build/Roboto-Bold.ttf", 0); ui::fontBig = io.Fonts->AddFontFromFileTTF("/home/aldrik/Projects/open-books/build/Roboto-Bold.ttf", 30); + + io.Fonts->Build(); } // Main code diff --git a/src/ui/ui_main.cpp b/src/ui/ui_main.cpp index 0aad2ec..ed6fbec 100644 --- a/src/ui/ui_main.cpp +++ b/src/ui/ui_main.cpp @@ -75,7 +75,8 @@ void ui::draw_main() ImGui::SetNextWindowPos(ImVec2(0, 0)); ImGui::SetNextWindowSize(ImVec2(io.DisplaySize.x, io.DisplaySize.y)); - ImGui::Begin("AccountingMainWindow", nullptr, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse); + ImGui::Begin("AccountingMainWindow", nullptr, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoTitleBar | + ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollWithMouse | ImGuiWindowFlags_NoScrollbar); if (drawcalls[ui_state]) drawcalls[ui_state](); ImGui::End(); return; diff --git a/src/ui/ui_setup.cpp b/src/ui/ui_setup.cpp index 4f4a120..a386e72 100644 --- a/src/ui/ui_setup.cpp +++ b/src/ui/ui_setup.cpp @@ -20,14 +20,71 @@ #include "administration_writer.hpp" #include "administration_reader.hpp" +#include <GLFW/glfw3.h> + +#include "stb/stb_image.h" + +#include "IconFontCppHeaders/IconsFontAwesome5.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() { - if (ImGui::Button("Load administration")) { + static int img = load_image("/home/aldrik/Projects/open-books/build/splash.png"); + ImVec2 area = ImGui::GetContentRegionAvail(); + + ImGui::PushStyleVar(ImGuiStyleVar_ButtonTextAlign, ImVec2(0.0f, 0.5f)); + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(10.0f, 10.0f)); + + if (ImGui::Button(ICON_FA_FILE_IMPORT " Load administration", ImVec2(200, 0))) { // @locale if (administration_reader::open_existing(NULL)) { ui::set_state(ui::main_state::UI_SETTINGS); ui::recreate_window_for_main_views(); } } + + if (ImGui::Button(ICON_FA_FOLDER_PLUS " Create administration", ImVec2(200, 0))) { // @locale + if (administration_reader::open_existing(NULL)) { + ui::set_state(ui::main_state::UI_SETTINGS); + ui::recreate_window_for_main_views(); + } + } + ImGui::PopStyleVar(); + ImGui::PopStyleVar(); + + int imageW = 360; + int imageH = 360; + ImGui::SetCursorScreenPos(ImVec2(area.x - imageW + 20, area.y - imageH + 20)); + ImGui::Image(img, ImVec2(imageW, imageH)); } void ui::setup_setup() |
