summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main_linux.cpp24
-rw-r--r--src/ui/ui_main.cpp3
-rw-r--r--src/ui/ui_setup.cpp59
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()