mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-12-23 14:21:57 +00:00
[client] egl: implement preset loading/saving logic
This commit is contained in:
parent
b7b93f624c
commit
311f7241c6
1 changed files with 61 additions and 3 deletions
|
@ -31,6 +31,7 @@
|
||||||
|
|
||||||
#include "common/debug.h"
|
#include "common/debug.h"
|
||||||
#include "common/array.h"
|
#include "common/array.h"
|
||||||
|
#include "common/option.h"
|
||||||
#include "common/paths.h"
|
#include "common/paths.h"
|
||||||
#include "common/stringlist.h"
|
#include "common/stringlist.h"
|
||||||
#include "common/stringutils.h"
|
#include "common/stringutils.h"
|
||||||
|
@ -124,10 +125,64 @@ fail:
|
||||||
stringlist_free(&this->presets);
|
stringlist_free(&this->presets);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void savePreset(struct EGL_PostProcess * this, const char * name)
|
||||||
|
{
|
||||||
|
EGL_Filter * filter;
|
||||||
|
vector_forEach(filter, &this->filters)
|
||||||
|
egl_filterSaveState(filter);
|
||||||
|
|
||||||
|
char * path;
|
||||||
|
alloc_sprintf(&path, "%s/%s", this->presetDir, name);
|
||||||
|
if (!path)
|
||||||
|
{
|
||||||
|
DEBUG_ERROR("Failed to allocate memory");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
FILE * file = fopen(path, "w");
|
||||||
|
if (!file)
|
||||||
|
{
|
||||||
|
DEBUG_ERROR("Failed to open preset \"%s\" for writing: %s", name, strerror(errno));
|
||||||
|
free(path);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
free(path);
|
||||||
|
|
||||||
|
DEBUG_INFO("Saving preset: %s", name);
|
||||||
|
option_dump(file, "eglFilter");
|
||||||
|
fclose(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void loadPreset(struct EGL_PostProcess * this, const char * name)
|
||||||
|
{
|
||||||
|
char * path;
|
||||||
|
alloc_sprintf(&path, "%s/%s", this->presetDir, name);
|
||||||
|
if (!path)
|
||||||
|
{
|
||||||
|
DEBUG_ERROR("Failed to allocate memory");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!option_load(path))
|
||||||
|
{
|
||||||
|
DEBUG_ERROR("Failed to load preset: %s", name);
|
||||||
|
free(path);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
free(path);
|
||||||
|
|
||||||
|
DEBUG_INFO("Loading preset: %s", name);
|
||||||
|
EGL_Filter * filter;
|
||||||
|
vector_forEach(filter, &this->filters)
|
||||||
|
egl_filterLoadState(filter);
|
||||||
|
}
|
||||||
|
|
||||||
static void createPreset(struct EGL_PostProcess * this)
|
static void createPreset(struct EGL_PostProcess * this)
|
||||||
{
|
{
|
||||||
DEBUG_INFO("Create preset: %s", this->presetEdit);
|
DEBUG_INFO("Create preset: %s", this->presetEdit);
|
||||||
this->activePreset = stringlist_push(this->presets, strdup(this->presetEdit));
|
char * name = strdup(this->presetEdit);
|
||||||
|
this->activePreset = stringlist_push(this->presets, name);
|
||||||
|
savePreset(this, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool presetsUI(struct EGL_PostProcess * this)
|
static bool presetsUI(struct EGL_PostProcess * this)
|
||||||
|
@ -155,12 +210,15 @@ static bool presetsUI(struct EGL_PostProcess * this)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (igButton("Load preset", (ImVec2) { 0.0f, 0.0f }) && this->activePreset >= 0)
|
if (igButton("Load preset", (ImVec2) { 0.0f, 0.0f }) && this->activePreset >= 0)
|
||||||
DEBUG_INFO("Loading preset: %s", stringlist_at(this->presets, this->activePreset));
|
{
|
||||||
|
redraw = true;
|
||||||
|
loadPreset(this, stringlist_at(this->presets, this->activePreset));
|
||||||
|
}
|
||||||
|
|
||||||
igSameLine(0.0f, -1.0f);
|
igSameLine(0.0f, -1.0f);
|
||||||
|
|
||||||
if (igButton("Save preset", (ImVec2) { 0.0f, 0.0f }) && this->activePreset >= 0)
|
if (igButton("Save preset", (ImVec2) { 0.0f, 0.0f }) && this->activePreset >= 0)
|
||||||
DEBUG_INFO("Saving preset: %s", stringlist_at(this->presets, this->activePreset));
|
savePreset(this, stringlist_at(this->presets, this->activePreset));
|
||||||
|
|
||||||
if (igIsItemHovered(ImGuiHoveredFlags_None) && this->activePreset >= 0)
|
if (igIsItemHovered(ImGuiHoveredFlags_None) && this->activePreset >= 0)
|
||||||
igSetTooltip("This will overwrite the preset named: %s",
|
igSetTooltip("This will overwrite the preset named: %s",
|
||||||
|
|
Loading…
Reference in a new issue