当前配置更改,增加自动命名;fix BUG-363

This commit is contained in:
gb 2023-03-08 17:29:52 +08:00
parent 7a5262712b
commit 64465395c3
6 changed files with 14 additions and 11 deletions

View File

@ -1042,8 +1042,8 @@ void dlg_page::handle_command(WORD code, WORD id, HANDLE ctrl)
wchar_t cls[128] = { 0 };
GetClassNameW((HWND)ctrl, cls, _countof(cls) - 1);
if (IS_EDIT(cls) && code != EN_CHANGE ||
IS_COMBOX(cls) && code != CBN_SELCHANGE)
if ((IS_EDIT(cls) && code != EN_KILLFOCUS) || // for BUG-363
(IS_COMBOX(cls) && code != CBN_SELCHANGE))
{
return;
}

View File

@ -177,13 +177,13 @@ void dlg_save_scheme::check_radio(UINT id, bool check)
}
void dlg_save_scheme::set_info(const wchar_t* name, std::vector<std::wstring>& existing, int mask)
void dlg_save_scheme::set_info(const wchar_t* name, std::vector<std::wstring>& existing, int mask, const wchar_t* new_name)
{
bool set_method = false;
name_ = name;
existing_ = existing;
set_item_text(IDC_NAME, name);
set_item_text(IDC_NAME, new_name ? new_name : name);
{
std::wstring schem(local_trans::lang_trans_between_hz936(CONST_STRING_SAVE_OVERWRITE));

View File

@ -41,7 +41,7 @@ public:
~dlg_save_scheme();
public:
void set_info(const wchar_t* name, std::vector<std::wstring>& existing, int mask);
void set_info(const wchar_t* name, std::vector<std::wstring>& existing, int mask, const wchar_t* new_name = nullptr);
save_method get_dispose(void);
std::wstring get_name(void);
};

View File

@ -577,9 +577,11 @@ void dlg_setting::save_changes_to_cur_scheme(int reason)
else
{
dlg_save_scheme dlg(hwnd());
std::wstring name(local_trans::a2u(schm->get_scheme_name().c_str(), CP_UTF8));
std::wstring name(local_trans::a2u(schm->get_scheme_name().c_str(), CP_UTF8)),
suggest(local_trans::a2u(schm->auto_gen_scheme_name(local_trans::lang_trans_between_hz936, nullptr, false).c_str(), CP_UTF8));
dlg.set_info(name.c_str(), now, SAVE_METHOD_MASK(SAVE_DISCARD) | SAVE_METHOD_MASK(SAVE_OVERWRITE) | SAVE_METHOD_MASK(SAVE_NEW));
dlg.set_info(name.c_str(), now, SAVE_METHOD_MASK(SAVE_DISCARD) | SAVE_METHOD_MASK(SAVE_OVERWRITE) | SAVE_METHOD_MASK(SAVE_NEW)
, suggest.c_str());
dlg.do_modal(hwnd());
int dispose = dlg.get_dispose();

View File

@ -1645,9 +1645,9 @@ namespace gb
scheme_name_ = name ? name : "";
}
std::string sane_config_schm::auto_gen_scheme_name(const char* (__stdcall* lang_trans)(const char*, bool/*true - default language to cur language*/, void*), void* param)
std::string sane_config_schm::auto_gen_scheme_name(const char* (__stdcall* lang_trans)(const char*, bool/*true - default language to cur language*/, void*), void* param, bool replace_name)
{
std::string name(""), old(std::move(scheme_name_)), key(""), val(""), add("");
std::string name(""), key(""), val(""), add("");
int cnt = 0;
if (first_config(key, val))
@ -1681,6 +1681,7 @@ namespace gb
if (cnt)
name += "(" + std::to_string(++cnt) + ")";
}
if(replace_name)
scheme_name_ = name;
return std::move(name);

View File

@ -216,7 +216,7 @@ namespace gb
std::string get_scheme_name(void);
void set_scheme_name(const char* name);
std::string auto_gen_scheme_name(const char* (__stdcall* lang_trans)(const char*, bool/*true - default language to cur language*/, void*), void* param);
std::string auto_gen_scheme_name(const char* (__stdcall* lang_trans)(const char*, bool/*true - default language to cur language*/, void*), void* param, bool replace_name = true);
};
class scanner_cfg : public refer