summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/config.cpp61
-rw-r--r--src/config.h17
-rw-r--r--src/main.cpp22
-rw-r--r--src/main_windows.cpp2
-rw-r--r--src/search.cpp1
-rw-r--r--src/search.h5
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", &current_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"