diff options
| author | Aldrik Ramaekers <aldrik@mailbox.org> | 2026-01-08 17:40:15 +0100 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrik@mailbox.org> | 2026-01-08 17:40:15 +0100 |
| commit | 0d70098dd5b704f2953c63f0c827b46b11935b81 (patch) | |
| tree | 05efcc8cfac52672b147c2a32a66f87a05f881e7 /src/main_linux.cpp | |
| parent | 9b87e0d3123bbc533c2e4d452b16fe82de0e5cd4 (diff) | |
setup window
Diffstat (limited to 'src/main_linux.cpp')
| -rw-r--r-- | src/main_linux.cpp | 69 |
1 files changed, 55 insertions, 14 deletions
diff --git a/src/main_linux.cpp b/src/main_linux.cpp index 1d05aff..e605659 100644 --- a/src/main_linux.cpp +++ b/src/main_linux.cpp @@ -33,27 +33,47 @@ #pragma comment(lib, "legacy_stdio_definitions") #endif +static GLFWwindow* window = 0; +static bool redo_window = 0; + +void ui::recreate_window_for_main_views() +{ + redo_window = 1; +} + static void glfw_error_callback(int error, const char* description) { fprintf(stderr, "GLFW Error %d: %s\n", error, description); } -// Main code -int main(int argc, char** argv) +static void _create_window(bool is_setup_window) { - glfwSetErrorCallback(glfw_error_callback); - if (!glfwInit()) - return 1; + if (window) { + ImGui_ImplOpenGL2_Shutdown(); + ImGui_ImplGlfw_Shutdown(); + ImGui::DestroyContext(); + glfwDestroyWindow(window); + } - // Create window with graphics context float main_scale = ImGui_ImplGlfw_GetContentScaleForMonitor(glfwGetPrimaryMonitor()); // Valid on GLFW 3.3+ only - GLFWwindow* window = glfwCreateWindow((int)(1280 * main_scale), (int)(800 * main_scale), "OpenBooks", nullptr, nullptr); + int windowWidth = (int)(1280 * main_scale); + int windowHeight = (int)(800 * main_scale); + + if (is_setup_window) { + glfwWindowHint(GLFW_RESIZABLE, false); + windowWidth = (int)(800 * main_scale); + windowHeight = (int)(500 * main_scale); + } + else { + glfwWindowHint(GLFW_RESIZABLE, true); + } + + window = glfwCreateWindow(windowWidth, windowHeight, "OpenBooks", nullptr, nullptr); if (window == nullptr) - return 1; + return; glfwMakeContextCurrent(window); glfwSwapInterval(1); // Enable vsync - // Setup Dear ImGui context IMGUI_CHECKVERSION(); ImGui::CreateContext(); ImGuiIO& io = ImGui::GetIO(); (void)io; @@ -77,19 +97,35 @@ int main(int argc, char** argv) 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"); ui::fontBig = io.Fonts->AddFontFromFileTTF("/home/aldrik/Projects/open-books/build/Roboto-Bold.ttf", 30); - - ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f); +} - timer_lib_initialize(); - administration_writer::create(); +// Main code +int main(int argc, char** argv) +{ + glfwSetErrorCallback(glfw_error_callback); + if (!glfwInit()) + return 1; if (argc < 2) { administration::create_default(""); + _create_window(true); } else { - administration_reader::open_existing(argv[1]); + if (administration_reader::open_existing(argv[1])) { + _create_window(false); + ui::set_state(ui::main_state::UI_INVOICES); + } + else { + _create_window(true); + } } + + ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f); + + timer_lib_initialize(); + administration_writer::create(); + while (!glfwWindowShouldClose(window)) { glfwPollEvents(); @@ -118,6 +154,11 @@ int main(int argc, char** argv) glfwMakeContextCurrent(window); glfwSwapBuffers(window); + + if (redo_window) { + _create_window(false); + redo_window = 0; + } } administration_writer::save_activities_blocking(); |
