Release v0.6.61: configure languages per application
This commit is contained in:
1 parent
011664cc53
commit
5d96abb83e
15 files changed
+456
-51
No files matched your search
@@ -225,6 +225,7 @@ int main()
|
||||
ks::atomicWrite(std::filesystem::path(ks::executable()).parent_path() / L"chat-languages.png",
|
||||
ks::encodePng(ks::decodeImage(clip)));
|
||||
SendDlgItemMessageW(dialog, 711, LB_SETSEL, TRUE, -1);
|
||||
SendMessageW(dialog, WM_COMMAND, MAKEWPARAM(711, LBN_SELCHANGE), 0);
|
||||
SendMessageW(dialog, WM_COMMAND, IDCANCEL, 0);
|
||||
require(!IsWindow(dialog) && IsWindowEnabled(parent), "cancel closes dialog");
|
||||
require(!saveEnabled(),"cancelled chat edits do not enable Save");
|
||||
@@ -235,6 +236,7 @@ int main()
|
||||
SendMessageW(dialog, WM_COMMAND, MAKEWPARAM(710, LBN_SELCHANGE), 0);
|
||||
require(SendDlgItemMessageW(dialog, 711, LB_GETSELCOUNT, 0, 0) == 1, "cancel discards language edits");
|
||||
SendDlgItemMessageW(dialog, 711, LB_SETSEL, TRUE, -1);
|
||||
SendMessageW(dialog, WM_COMMAND, MAKEWPARAM(711, LBN_SELCHANGE), 0);
|
||||
SendMessageW(dialog, WM_COMMAND, IDOK, 0);
|
||||
require(!IsWindow(dialog) && IsWindowEnabled(parent), "profile applies to settings draft");
|
||||
require(saveEnabled() == (app.layouts.size()>1),"accepted chat edits refresh Save immediately");
|
||||
@@ -250,6 +252,8 @@ int main()
|
||||
SendDlgItemMessageW(dialog, 710, LB_SETCURSEL, index, 0);
|
||||
SendMessageW(dialog, WM_COMMAND, MAKEWPARAM(710, LBN_SELCHANGE), 0);
|
||||
SendMessageW(dialog, WM_COMMAND, 713, 0);
|
||||
require(IsWindow(dialog), "chat reset keeps dialog open");
|
||||
SendMessageW(dialog, WM_COMMAND, IDOK, 0);
|
||||
require(saveEnabled() && status().find(L"Unsaved changes")==0,"removing child profile immediately marks parent dirty");
|
||||
RedrawWindow(parent,nullptr,nullptr,RDW_INVALIDATE|RDW_UPDATENOW|RDW_ALLCHILDREN);
|
||||
GetClientRect(parent,&rect); dc=GetDC(parent);
|
||||
@@ -258,6 +262,68 @@ int main()
|
||||
ks::encodePng(ks::decodeImage(clip)));
|
||||
SendMessageW(parent, WM_COMMAND, IDOK, 0);
|
||||
require(!app.settings.chatCycles.contains(key), "remove profile restores default");
|
||||
// Existing shared sets become independent application drafts on edit.
|
||||
app.settings.appLanguageSets[L"Legacy shared"] = {{app.layouts[0].id}, {L"Codex.exe", L"notepad"}};
|
||||
ks::showSettings(app);
|
||||
parent = app.settingsWindow;
|
||||
SendMessageW(parent, WM_COMMAND, 263, 0);
|
||||
dialog = findTestWindow(L"KSwitcher.AppLanguages", nullptr);
|
||||
require(dialog && !IsWindowEnabled(parent), "application language editor opens");
|
||||
auto selectApp = [&](const wchar_t *name) {
|
||||
int index = (int)SendDlgItemMessageW(dialog, 720, LB_FINDSTRINGEXACT, -1, (LPARAM)name);
|
||||
require(index >= 0, "application listed");
|
||||
SendDlgItemMessageW(dialog, 720, LB_SETCURSEL, index, 0);
|
||||
SendMessageW(dialog, WM_COMMAND, MAKEWPARAM(720, LBN_SELCHANGE), 0);
|
||||
};
|
||||
selectApp(L"codex");
|
||||
require(SendDlgItemMessageW(dialog, 722, LB_GETSELCOUNT, 0, 0) == 1, "legacy languages displayed");
|
||||
SendDlgItemMessageW(dialog, 722, LB_SETSEL, TRUE, -1);
|
||||
SendMessageW(dialog, WM_COMMAND, MAKEWPARAM(722, LBN_SELCHANGE), 0);
|
||||
selectApp(L"notepad");
|
||||
require(SendDlgItemMessageW(dialog, 722, LB_GETSELCOUNT, 0, 0) == 1, "editing one app leaves formerly shared app unchanged");
|
||||
selectApp(L"codex");
|
||||
require(SendDlgItemMessageW(dialog, 722, LB_GETSELCOUNT, 0, 0) == (LRESULT)app.layouts.size(), "application navigation preserves drafts");
|
||||
RedrawWindow(dialog, nullptr, nullptr, RDW_INVALIDATE | RDW_UPDATENOW | RDW_ALLCHILDREN);
|
||||
GetClientRect(dialog, &rect);
|
||||
dc = GetDC(dialog);
|
||||
clip = ks::screenshotClip(dc, rect.right, rect.bottom, {});
|
||||
ReleaseDC(dialog, dc);
|
||||
ks::atomicWrite(std::filesystem::path(ks::executable()).parent_path() / L"application-languages.png",
|
||||
ks::encodePng(ks::decodeImage(clip)));
|
||||
SendMessageW(dialog, WM_COMMAND, IDCANCEL, 0);
|
||||
SendMessageW(parent, WM_COMMAND, IDOK, 0);
|
||||
require(app.settings.appLanguageSets.size() == 1 && app.settings.appLanguageSets.contains(L"Legacy shared"), "cancel preserves legacy settings unchanged");
|
||||
ks::showSettings(app);
|
||||
parent = app.settingsWindow;
|
||||
SendMessageW(parent, WM_COMMAND, 263, 0);
|
||||
dialog = findTestWindow(L"KSwitcher.AppLanguages", nullptr);
|
||||
selectApp(L"codex");
|
||||
SendDlgItemMessageW(dialog, 722, LB_SETSEL, TRUE, -1);
|
||||
SendMessageW(dialog, WM_COMMAND, MAKEWPARAM(722, LBN_SELCHANGE), 0);
|
||||
selectApp(L"notepad");
|
||||
SetDlgItemTextW(dialog, 726, L"Fixture-App.EXE");
|
||||
SendMessageW(dialog, WM_COMMAND, 727, 0);
|
||||
require(!IsWindowEnabled(GetDlgItem(dialog, 725)), "new application inherits defaults");
|
||||
selectApp(L"codex");
|
||||
SendMessageW(dialog, WM_COMMAND, IDOK, 0);
|
||||
SendMessageW(parent, WM_COMMAND, IDOK, 0);
|
||||
require(app.settings.appLanguageSets.size() == 2, "viewing an app does not create a profile");
|
||||
require(app.settings.appLanguageSets.at(L"codex").languages.size() == app.layouts.size(), "edited application languages saved");
|
||||
require(app.settings.appLanguageSets.at(L"notepad").languages == std::vector<std::wstring>{app.layouts[0].id}, "other application retains original languages");
|
||||
require(ks::loadSettings(root / L"settings.json", app.layouts).appLanguageSets == app.settings.appLanguageSets, "independent application profiles saved to disk");
|
||||
ks::showSettings(app);
|
||||
parent = app.settingsWindow;
|
||||
SendMessageW(parent, WM_COMMAND, 263, 0);
|
||||
dialog = findTestWindow(L"KSwitcher.AppLanguages", nullptr);
|
||||
selectApp(L"codex");
|
||||
SendMessageW(dialog, WM_COMMAND, 725, 0);
|
||||
selectApp(L"notepad");
|
||||
selectApp(L"codex");
|
||||
require(!IsWindowEnabled(GetDlgItem(dialog, 725)), "default reset survives navigation");
|
||||
SendMessageW(dialog, WM_COMMAND, IDOK, 0);
|
||||
SendMessageW(parent, WM_COMMAND, IDOK, 0);
|
||||
require(!ks::applicationLanguageSet(app.settings, L"codex"), "use defaults removes only selected application profile");
|
||||
require(ks::applicationLanguageSet(app.settings, L"notepad") != nullptr, "default reset leaves other application profile intact");
|
||||
app.settings.snippets = {{L";scope", L"Example", L"scope-fixture"}};
|
||||
ks::showSettings(app); parent=app.settingsWindow;
|
||||
require(!saveEnabled(),"Settings starts clean before separately saved snippet edit");
|
||||
|
||||
Reference in new issue
Block a user