diff options
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/ui_main.cpp | 3 | ||||
| -rw-r--r-- | src/ui/ui_setup.cpp | 59 |
2 files changed, 60 insertions, 2 deletions
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() |
