Release v0.3.0: move settings into an on-demand single-instance configurator
This commit is contained in:
+26
-10
@@ -1,5 +1,6 @@
|
||||
#include "../resources/resource.h"
|
||||
#include "app.h"
|
||||
#include "configuration.h"
|
||||
#include "ocr.h"
|
||||
#include "richtext.h"
|
||||
#include "ui_geometry.h"
|
||||
@@ -185,13 +186,13 @@ LRESULT CALLBACK hotkeyProc(HWND w, UINT msg, WPARAM wp, LPARAM lp, UINT_PTR, DW
|
||||
auto *app = (App *)data;
|
||||
if (msg == WM_SETFOCUS)
|
||||
{
|
||||
app->hotkeyCapture = w;
|
||||
app->setHotkeyCapture(w);
|
||||
SendMessageW(w, EM_SETSEL, 0, -1);
|
||||
}
|
||||
if (msg == WM_KILLFOCUS || msg == WM_NCDESTROY)
|
||||
{
|
||||
if (app->hotkeyCapture == w)
|
||||
app->hotkeyCapture = nullptr;
|
||||
app->setHotkeyCapture(nullptr);
|
||||
}
|
||||
if (msg == CaptureHotkeyMessage)
|
||||
{
|
||||
@@ -218,13 +219,13 @@ LRESULT CALLBACK hotkeyProc(HWND w, UINT msg, WPARAM wp, LPARAM lp, UINT_PTR, DW
|
||||
return 0;
|
||||
return DefSubclassProc(w, msg, wp, lp);
|
||||
}
|
||||
void hotkeyEdit(App &app, HWND w, int id, int x, int y, int width)
|
||||
[[maybe_unused]] void hotkeyEdit(App &app, HWND w, int id, int x, int y, int width)
|
||||
{
|
||||
HWND field = edit(w, id, x, y, width, 25, ES_AUTOHSCROLL | ES_READONLY);
|
||||
SendMessageW(field, EM_SETCUEBANNER, FALSE, (LPARAM)L"Click, then press a shortcut");
|
||||
SetWindowSubclass(field, hotkeyProc, 1, (DWORD_PTR)&app);
|
||||
}
|
||||
void checkbox(HWND w, const wchar_t *text, int id, int x, int y, int width = 300)
|
||||
[[maybe_unused]] void checkbox(HWND w, const wchar_t *text, int id, int x, int y, int width = 300)
|
||||
{
|
||||
control(w, L"BUTTON", text, WS_TABSTOP | BS_AUTOCHECKBOX, id, x, y, width, 24);
|
||||
}
|
||||
@@ -241,11 +242,11 @@ void value(HWND w, int id, const std::wstring &text)
|
||||
{
|
||||
SetDlgItemTextW(w, id, text.c_str());
|
||||
}
|
||||
bool checked(HWND w, int id)
|
||||
[[maybe_unused]] bool checked(HWND w, int id)
|
||||
{
|
||||
return IsDlgButtonChecked(w, id) == BST_CHECKED;
|
||||
}
|
||||
void check(HWND w, int id, bool yes)
|
||||
[[maybe_unused]] void check(HWND w, int id, bool yes)
|
||||
{
|
||||
CheckDlgButton(w, id, yes ? BST_CHECKED : BST_UNCHECKED);
|
||||
}
|
||||
@@ -352,7 +353,7 @@ void resizeForDpi(HWND w, WPARAM wp, LPARAM lp)
|
||||
fitToMonitor(w, *(RECT *)lp);
|
||||
arrangeWindow(w);
|
||||
}
|
||||
std::filesystem::path pickFile(HWND owner, bool save)
|
||||
[[maybe_unused]] std::filesystem::path pickFile(HWND owner, bool save)
|
||||
{
|
||||
wchar_t path[32768]{};
|
||||
OPENFILENAMEW ofn{sizeof(ofn)};
|
||||
@@ -372,6 +373,7 @@ void disposeFont(HWND w)
|
||||
DeleteObject(h);
|
||||
}
|
||||
|
||||
#ifndef KS_CONFIG_APP
|
||||
struct SearchResult
|
||||
{
|
||||
uint64_t generation;
|
||||
@@ -755,6 +757,8 @@ LRESULT CALLBACK historyProc(HWND w, UINT msg, WPARAM wp, LPARAM lp)
|
||||
return DefWindowProcW(w, msg, wp, lp);
|
||||
}
|
||||
|
||||
#endif
|
||||
#ifndef KS_RESIDENT_APP
|
||||
struct SettingsView
|
||||
{
|
||||
App *app{};
|
||||
@@ -1146,11 +1150,11 @@ LRESULT CALLBACK settingsProc(HWND w, UINT msg, WPARAM wp, LPARAM lp)
|
||||
fillSettings(w, v);
|
||||
return 0;
|
||||
}
|
||||
if (id == 254 && v->app->history)
|
||||
if (id == 254)
|
||||
{
|
||||
if (MessageBoxW(w, L"Delete all clipboard history, including pinned items?", L"Clear history",
|
||||
MB_YESNO | MB_ICONWARNING) == IDYES)
|
||||
v->app->history->clear();
|
||||
v->app->clearHistory();
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
@@ -1294,6 +1298,8 @@ LRESULT CALLBACK snippetProc(HWND w, UINT msg, WPARAM wp, LPARAM lp)
|
||||
}
|
||||
return DefWindowProcW(w, msg, wp, lp);
|
||||
}
|
||||
#endif
|
||||
#ifndef KS_CONFIG_APP
|
||||
LRESULT CALLBACK entryProc(HWND w, UINT msg, WPARAM wp, LPARAM lp)
|
||||
{
|
||||
if (msg == WM_SIZE)
|
||||
@@ -1305,7 +1311,9 @@ LRESULT CALLBACK entryProc(HWND w, UINT msg, WPARAM wp, LPARAM lp)
|
||||
disposeFont(w);
|
||||
return DefWindowProcW(w, msg, wp, lp);
|
||||
}
|
||||
#endif
|
||||
} // namespace
|
||||
#ifndef KS_CONFIG_APP
|
||||
void refreshHistory(App &app)
|
||||
{
|
||||
if (app.historyWindow)
|
||||
@@ -1498,7 +1506,7 @@ void refreshLogView(HWND w, App &app)
|
||||
InvalidateRect(list, nullptr, TRUE);
|
||||
if (row)
|
||||
ListView_EnsureVisible(list, row - 1, FALSE);
|
||||
value(w, LogStatus, app.settings.writeLog ? L"Logging enabled: problems and suspicious repeats only."
|
||||
value(w, LogStatus, app.settings.writeLog ? L"Logging enabled: failed operations only."
|
||||
: L"Logging disabled. Showing previously saved entries.");
|
||||
}
|
||||
LRESULT CALLBACK logProc(HWND w, UINT msg, WPARAM wp, LPARAM lp)
|
||||
@@ -1609,6 +1617,8 @@ void showLogs(App &app)
|
||||
showRequestedWindow(w);
|
||||
activateWindow(w);
|
||||
}
|
||||
#endif
|
||||
#ifndef KS_RESIDENT_APP
|
||||
void showSettings(App &app, bool visible)
|
||||
{
|
||||
if (app.settingsWindow)
|
||||
@@ -1699,6 +1709,11 @@ void showSnippets(App &app)
|
||||
showRequestedWindow(w);
|
||||
SetForegroundWindow(w);
|
||||
}
|
||||
#else
|
||||
void showSettings(App &app, bool) { launchConfiguration(app); }
|
||||
void showSnippets(App &app) { launchConfiguration(app, true); }
|
||||
#endif
|
||||
#ifndef KS_CONFIG_APP
|
||||
void showShortcuts(App &app)
|
||||
{
|
||||
auto &s = app.settings;
|
||||
@@ -1736,4 +1751,5 @@ void showEntry(App &app, const std::wstring &id)
|
||||
error(app.historyWindow, e);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
} // namespace ks
|
||||
|
||||
Reference in New Issue
Block a user