diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/config.cpp | 61 | ||||
| -rw-r--r-- | src/config.h | 17 | ||||
| -rw-r--r-- | src/main.cpp | 22 | ||||
| -rw-r--r-- | src/main_windows.cpp | 2 | ||||
| -rw-r--r-- | src/search.cpp | 1 | ||||
| -rw-r--r-- | src/search.h | 5 |
6 files changed, 83 insertions, 25 deletions
diff --git a/src/config.cpp b/src/config.cpp new file mode 100644 index 0000000..4813c5c --- /dev/null +++ b/src/config.cpp @@ -0,0 +1,61 @@ +#include "config.h" +#include "../imgui/imgui_internal.h" +#include "search.h" + +#include <stdio.h> + +utf8_int8_t path_buffer[MAX_INPUT_LENGTH]; +utf8_int8_t filter_buffer[MAX_INPUT_LENGTH]; +utf8_int8_t query_buffer[MAX_INPUT_LENGTH]; +int ts_thread_count = 4; +int max_file_size = 100; // in MBs + +static void _ts_config_ReadLine(ImGuiContext*, ImGuiSettingsHandler*, void* entry, const char* line) +{ + ImGuiWindowSettings* settings = (ImGuiWindowSettings*)entry; + uint8_t path[MAX_INPUT_LENGTH]; + uint8_t filter[MAX_INPUT_LENGTH]; + uint8_t query[MAX_INPUT_LENGTH]; + + int threads, maxSize; + + if (sscanf(line, "Path=%s", &path) == 1) { strcpy_s(path_buffer, MAX_INPUT_LENGTH, (char*)path); } + else if (sscanf(line, "Filter=%s", &filter) == 1) { strcpy_s(filter_buffer, MAX_INPUT_LENGTH, (char*)filter); } + else if (sscanf(line, "Query=%s", &query) == 1) { strcpy_s(query_buffer, MAX_INPUT_LENGTH, (char*)query); } + else if (sscanf(line, "Threads=%d", &threads) == 1) { ts_thread_count = threads; } + else if (sscanf(line, "MaxSize=%d", &maxSize) == 1) { max_file_size = maxSize; } +} + +static void _ts_config_WriteAll(ImGuiContext* ctx, ImGuiSettingsHandler* handler, ImGuiTextBuffer* buf) +{ + // Write to text buffer + buf->reserve(MAX_INPUT_LENGTH*4); // ballpark reserve + buf->appendf("[%s][%s]\n", handler->TypeName, "Search"); + buf->appendf("Path=%s\n", path_buffer); + buf->appendf("Filter=%s\n", filter_buffer); + buf->appendf("Query=%s\n", query_buffer); + buf->appendf("Threads=%d\n", ts_thread_count); + buf->appendf("MaxSize=%d\n", max_file_size); + buf->append("\n"); +} + +static void* _ts_config_ReadOpen(ImGuiContext*, ImGuiSettingsHandler*, const char* name) { + return (void*)0xFFFFFF; +} + +static void _ts_config_ApplyAll(ImGuiContext* ctx, ImGuiSettingsHandler*) +{ + +} + +void ts_load_config() { + ImGuiSettingsHandler ini_handler; + ini_handler.TypeName = "Query"; + ini_handler.TypeHash = ImHashStr("Query"); + ini_handler.ClearAllFn = nullptr; + ini_handler.ReadOpenFn = _ts_config_ReadOpen; + ini_handler.ReadLineFn = _ts_config_ReadLine; + ini_handler.ApplyAllFn = _ts_config_ApplyAll; + ini_handler.WriteAllFn = _ts_config_WriteAll; + ImGui::AddSettingsHandler(&ini_handler); +}
\ No newline at end of file diff --git a/src/config.h b/src/config.h new file mode 100644 index 0000000..8e610f5 --- /dev/null +++ b/src/config.h @@ -0,0 +1,17 @@ +#pragma once + +#define MAX_INPUT_LENGTH 4096 +#define MAX_ERROR_MESSAGE_LENGTH (MAX_INPUT_LENGTH) +#define FILE_RESERVE_COUNT 1000 +#define ERROR_RESERVE_COUNT 100 + +#include "../imgui/imgui.h" +#include "../utf8.h" + +extern utf8_int8_t path_buffer[MAX_INPUT_LENGTH]; +extern utf8_int8_t filter_buffer[MAX_INPUT_LENGTH]; +extern utf8_int8_t query_buffer[MAX_INPUT_LENGTH]; +extern int ts_thread_count; +extern int max_file_size; // in MBs + +void ts_load_config();
\ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index eb9cee4..306564d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -7,28 +7,14 @@ #include "search.h" #include "platform.h" #include "image.h" +#include "config.h" #include <stdio.h> -// Search params. -utf8_int8_t path_buffer[MAX_INPUT_LENGTH]; -utf8_int8_t filter_buffer[MAX_INPUT_LENGTH]; -utf8_int8_t query_buffer[MAX_INPUT_LENGTH]; -int ts_thread_count = 4; -int max_file_size = 100; // in MBs - // Popups bool open_settings_window = false; bool open_about_window = false; -// Localization -int current_locale_index = 0; -int locales_count = 2; -char* locales[] = { - "English", - "Dutch" -}; - static void _ts_create_popups() { ImGuiIO& io = ImGui::GetIO(); if (open_settings_window) { @@ -45,8 +31,6 @@ static void _ts_create_popups() { ImGui::DragInt("File Size", &max_file_size, 50.0f, 1, 10000, "%dMB"); ImGui::SetItemTooltip("Files larger than this will not be searched"); - ImGui::Combo("Language", ¤t_locale_index, locales, locales_count); - ImGui::Dummy({0, 70}); ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0f); if (ImGui::Button("Close")) { @@ -128,9 +112,7 @@ static int _ts_create_menu() { } void ts_init() { - snprintf(path_buffer, MAX_INPUT_LENGTH, "%s", "C:\\Users\\aldri\\Desktop\\Vault\\Projects\\allegro5"); - snprintf(filter_buffer, MAX_INPUT_LENGTH, "%s", "*.c,.h,.cpp"); - snprintf(query_buffer, MAX_INPUT_LENGTH, "%s", "test"); + // idk } int _tb_query_input_cb(ImGuiInputTextCallbackData* data) { diff --git a/src/main_windows.cpp b/src/main_windows.cpp index 1f64642..c574b2f 100644 --- a/src/main_windows.cpp +++ b/src/main_windows.cpp @@ -10,6 +10,7 @@ #include "array.h" #include "memory_bucket.h" #include "image.h" +#include "config.h" #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif @@ -107,6 +108,7 @@ int main(int, char**) ts_init(); ts_load_images(); + ts_load_config(); ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f); bool done = false; diff --git a/src/search.cpp b/src/search.cpp index 93cb9e9..b48b04d 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -1,5 +1,6 @@ #include "search.h" #include "platform.h" +#include "config.h" #include <stdio.h> diff --git a/src/search.h b/src/search.h index 9b8863b..fa0f2e2 100644 --- a/src/search.h +++ b/src/search.h @@ -1,11 +1,6 @@ #ifndef INCLUDE_SEARCH #define INCLUDE_SEARCH -#define MAX_INPUT_LENGTH 4096 -#define MAX_ERROR_MESSAGE_LENGTH (MAX_INPUT_LENGTH) -#define FILE_RESERVE_COUNT 1000 -#define ERROR_RESERVE_COUNT 100 - #include "array.h" #include "memory_bucket.h" #include "../utf8.h" |
