replace lang_load_string by from_default_language

This commit is contained in:
gb 2023-11-10 16:45:27 +08:00
parent b26e658613
commit 525dfeebac
9 changed files with 134 additions and 169 deletions

View File

@ -2,10 +2,9 @@
#include "sane/sane_option_definitions.h"
#include <lang/app_language.h>
#define MAKE_ID_AND_STR(id) id, lang_load_string(id, nullptr)
#define MAKE_ID_AND_STR(l936) l936
static struct _fixed_option
{
int str_id;
std::string str;
int enum_val;
}
@ -13,130 +12,130 @@ static struct _fixed_option
g_color_mode[] =
{
{MAKE_ID_AND_STR(ID_OPTION_VALUE_YSMS_HB), COLOR_MODE_BLACK_WHITE },
{MAKE_ID_AND_STR(ID_OPTION_VALUE_YSMS_256JHD), COLOR_MODE_256_GRAY},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_YSMS_24WCS), COLOR_MODE_24_BITS},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_YSMS_YSZDSB), COLOR_MODE_AUTO_MATCH}
{MAKE_ID_AND_STR(OPTION_VALUE_YSMS_HB), COLOR_MODE_BLACK_WHITE },
{MAKE_ID_AND_STR(OPTION_VALUE_YSMS_256JHD), COLOR_MODE_256_GRAY},
{MAKE_ID_AND_STR(OPTION_VALUE_YSMS_24WCS), COLOR_MODE_24_BITS},
{MAKE_ID_AND_STR(OPTION_VALUE_YSMS_YSZDSB), COLOR_MODE_AUTO_MATCH}
},
g_multi_out[] =
{
{MAKE_ID_AND_STR(ID_OPTION_VALUE_DLSCLX_CS_HD_HB), MULTI_OUT_ALL},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_DLSCLX_CS_HD), MULTI_COLOR_AND_GRAY},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_DLSCLX_CS_HB), MULTI_COLOR_AND_BW},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_DLSCLX_HD_HB), MULTI_GRAY_AND_BW}
{MAKE_ID_AND_STR(OPTION_VALUE_DLSCLX_CS_HD_HB), MULTI_OUT_ALL},
{MAKE_ID_AND_STR(OPTION_VALUE_DLSCLX_CS_HD), MULTI_COLOR_AND_GRAY},
{MAKE_ID_AND_STR(OPTION_VALUE_DLSCLX_CS_HB), MULTI_COLOR_AND_BW},
{MAKE_ID_AND_STR(OPTION_VALUE_DLSCLX_HD_HB), MULTI_GRAY_AND_BW}
},
g_rid_color[] =
{
{MAKE_ID_AND_STR(ID_OPTION_VALUE_HDHHBTX_CSYZQ_BCS), RID_COLOR_NONE},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_HDHHBTX_CSYZQ_CHS), RID_COLOR_RID_RED},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_HDHHBTX_CSYZQ_CLS), RID_COLOR_RID_GREEN},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_HDHHBTX_CSYZQ_CHULANSE), RID_COLOR_RID_BLUE},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_HDHHBTX_CSYZQ_HSZQ), RID_COLOR_ENHANCE_RED},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_HDHHBTX_CSYZQ_LSZQ), RID_COLOR_ENHANCE_GREEN},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_HDHHBTX_CSYZQ_LANSEZENGQIANG), RID_COLOR_ENHANCE_BLUE}
{MAKE_ID_AND_STR(OPTION_VALUE_HDHHBTX_CSYZQ_BCS), RID_COLOR_NONE},
{MAKE_ID_AND_STR(OPTION_VALUE_HDHHBTX_CSYZQ_CHS), RID_COLOR_RID_RED},
{MAKE_ID_AND_STR(OPTION_VALUE_HDHHBTX_CSYZQ_CLS), RID_COLOR_RID_GREEN},
{MAKE_ID_AND_STR(OPTION_VALUE_HDHHBTX_CSYZQ_CHULANSE), RID_COLOR_RID_BLUE},
{MAKE_ID_AND_STR(OPTION_VALUE_HDHHBTX_CSYZQ_HSZQ), RID_COLOR_ENHANCE_RED},
{MAKE_ID_AND_STR(OPTION_VALUE_HDHHBTX_CSYZQ_LSZQ), RID_COLOR_ENHANCE_GREEN},
{MAKE_ID_AND_STR(OPTION_VALUE_HDHHBTX_CSYZQ_LANSEZENGQIANG), RID_COLOR_ENHANCE_BLUE}
},
g_paper[] =
{
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_A3), PAPER_A3},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_A4), PAPER_A4},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_A5), PAPER_A5},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_A6), PAPER_A6},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_B4), PAPER_B4},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_B5), PAPER_B5},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_B6), PAPER_B6},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_8K), PAPER_8K},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_16K), PAPER_16K},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_Letter), PAPER_LETTER},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_A4HX), PAPER_A4_LATERAL},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_A5HX), PAPER_A5_LATERAL},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_A6HX), PAPER_A6_LATERAL},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_B5HX), PAPER_B5_LATERAL},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_B6HX), PAPER_B6_LATERAL},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_16KHX), PAPER_16K_LATERAL},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_LetterHX), PAPER_LETTER_LATERAL},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_DoubleLetter), PAPER_DOUBLE_LETTER},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_LEGAL), PAPER_LEGAL},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_PPYSCC), PAPER_AUTO_MATCH},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_ZDSMCC), PAPER_MAX_SIZE},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_ZDSMCCZDCQ), PAPER_MAX_SIZE_CLIP},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZZCC_SLSJ), PAPER_TRIGEMINY}
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_A3), PAPER_A3},
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_A4), PAPER_A4},
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_A5), PAPER_A5},
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_A6), PAPER_A6},
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_B4), PAPER_B4},
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_B5), PAPER_B5},
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_B6), PAPER_B6},
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_8K), PAPER_8K},
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_16K), PAPER_16K},
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_Letter), PAPER_LETTER},
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_A4HX), PAPER_A4_LATERAL},
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_A5HX), PAPER_A5_LATERAL},
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_A6HX), PAPER_A6_LATERAL},
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_B5HX), PAPER_B5_LATERAL},
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_B6HX), PAPER_B6_LATERAL},
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_16KHX), PAPER_16K_LATERAL},
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_LetterHX), PAPER_LETTER_LATERAL},
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_DoubleLetter), PAPER_DOUBLE_LETTER},
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_LEGAL), PAPER_LEGAL},
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_PPYSCC), PAPER_AUTO_MATCH},
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_ZDSMCC), PAPER_MAX_SIZE},
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_ZDSMCCZDCQ), PAPER_MAX_SIZE_CLIP},
{MAKE_ID_AND_STR(OPTION_VALUE_ZZCC_SLSJ), PAPER_TRIGEMINY}
},
g_page[] =
{
{MAKE_ID_AND_STR(ID_OPTION_VALUE_SMYM_DM), PAGE_SINGLE},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_SMYM_SM), PAGE_DOUBLE},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_SMYM_TGKBYTY), PAGE_OMIT_EMPTY},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_SMYM_TGKBYFPZ), PAGE_OMIT_EMPTY_RECEIPT},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_SMYM_DZ), PAGE_FOLIO}
{MAKE_ID_AND_STR(OPTION_VALUE_SMYM_DM), PAGE_SINGLE},
{MAKE_ID_AND_STR(OPTION_VALUE_SMYM_SM), PAGE_DOUBLE},
{MAKE_ID_AND_STR(OPTION_VALUE_SMYM_TGKBYTY), PAGE_OMIT_EMPTY},
{MAKE_ID_AND_STR(OPTION_VALUE_SMYM_TGKBYFPZ), PAGE_OMIT_EMPTY_RECEIPT},
{MAKE_ID_AND_STR(OPTION_VALUE_SMYM_DZ), PAGE_FOLIO}
},
g_sharpen[] =
{
{MAKE_ID_AND_STR(ID_OPTION_VALUE_RHYMH_W), SHARPEN_NONE},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_RHYMH_RH), SHARPEN_SHARPEN},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_RHYMH_JYBRH), SHARPEN_SHARPEN_MORE},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_RHYMH_MH), SHARPEN_HAZY},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_RHYMH_JYBMH), SHARPEN_HAZY_MORE}
{MAKE_ID_AND_STR(OPTION_VALUE_RHYMH_W), SHARPEN_NONE},
{MAKE_ID_AND_STR(OPTION_VALUE_RHYMH_RH), SHARPEN_SHARPEN},
{MAKE_ID_AND_STR(OPTION_VALUE_RHYMH_JYBRH), SHARPEN_SHARPEN_MORE},
{MAKE_ID_AND_STR(OPTION_VALUE_RHYMH_MH), SHARPEN_HAZY},
{MAKE_ID_AND_STR(OPTION_VALUE_RHYMH_JYBMH), SHARPEN_HAZY_MORE}
},
g_fill_bkg[] =
{
{MAKE_ID_AND_STR(ID_OPTION_VALUE_BJTCFS_TDBX), FILL_BKG_CONVEX_POLYGON},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_BJTCFS_ADBX), FILL_BKG_CONCAVE_POLYGON}
{MAKE_ID_AND_STR(OPTION_VALUE_BJTCFS_TDBX), FILL_BKG_CONVEX_POLYGON},
{MAKE_ID_AND_STR(OPTION_VALUE_BJTCFS_ADBX), FILL_BKG_CONCAVE_POLYGON}
},
g_scan_mode[] =
{
{MAKE_ID_AND_STR(ID_OPTION_VALUE_SMZS_LXSM), SCAN_MODE_CONTINUOUS},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_SMZS_SMZDZS), SCAN_MODE_GIVEN_COUNT}
{MAKE_ID_AND_STR(OPTION_VALUE_SMZS_LXSM), SCAN_MODE_CONTINUOUS},
{MAKE_ID_AND_STR(OPTION_VALUE_SMZS_SMZDZS), SCAN_MODE_GIVEN_COUNT}
},
g_text_direction[] =
{
{MAKE_ID_AND_STR(ID_OPTION_VALUE_WGFX_0), TEXT_DIRECTION_0},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_WGFX_90), TEXT_DIRECTION_90},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_WGFX_180), TEXT_DIRECTION_180},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_WGFX__90), TEXT_DIRECTION_270},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_WGFX_ZDWBFXSB), TEXT_DIRECTION_AUTO}
{MAKE_ID_AND_STR(OPTION_VALUE_WGFX_0), TEXT_DIRECTION_0},
{MAKE_ID_AND_STR(OPTION_VALUE_WGFX_90), TEXT_DIRECTION_90},
{MAKE_ID_AND_STR(OPTION_VALUE_WGFX_180), TEXT_DIRECTION_180},
{MAKE_ID_AND_STR(OPTION_VALUE_WGFX__90), TEXT_DIRECTION_270},
{MAKE_ID_AND_STR(OPTION_VALUE_WGFX_ZDWBFXSB), TEXT_DIRECTION_AUTO}
},
g_permeate_lv[] =
{
{MAKE_ID_AND_STR(ID_OPTION_VALUE_FZSTDJ_JR), PERMAEATE_WEAKER},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_FZSTDJ_R), PERMAEATE_WEAK},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_FZSTDJ_YB), PERMAEATE_ORDINARY},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_FZSTDJ_Q), PERMAEATE_STRONG},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_FZSTDJ_JQ), PERMAEATE_STRONGER}
{MAKE_ID_AND_STR(OPTION_VALUE_FZSTDJ_JR), PERMAEATE_WEAKER},
{MAKE_ID_AND_STR(OPTION_VALUE_FZSTDJ_R), PERMAEATE_WEAK},
{MAKE_ID_AND_STR(OPTION_VALUE_FZSTDJ_YB), PERMAEATE_ORDINARY},
{MAKE_ID_AND_STR(OPTION_VALUE_FZSTDJ_Q), PERMAEATE_STRONG},
{MAKE_ID_AND_STR(OPTION_VALUE_FZSTDJ_JQ), PERMAEATE_STRONGER}
},
g_img_quality[] =
{
{MAKE_ID_AND_STR(ID_OPTION_VALUE_HZ_W), IMG_NONE},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_HZ_SDYX), IMG_SPEED},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_HZ_HZYX), IMG_QUALITY}
{MAKE_ID_AND_STR(OPTION_VALUE_HZ_W), IMG_NONE},
{MAKE_ID_AND_STR(OPTION_VALUE_HZ_SDYX), IMG_SPEED},
{MAKE_ID_AND_STR(OPTION_VALUE_HZ_HZYX), IMG_QUALITY}
},
g_paper_strenght[]=
{
{MAKE_ID_AND_STR(ID_OPTION_VALUE_FZQD_R),PAPER_WEAK},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_FZQD_YB),PAPER_AVERAGE},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_FZQD_Q),PAPER_STRONG}
{MAKE_ID_AND_STR(OPTION_VALUE_FZQD_R),PAPER_WEAK},
{MAKE_ID_AND_STR(OPTION_VALUE_FZQD_YB),PAPER_AVERAGE},
{MAKE_ID_AND_STR(OPTION_VALUE_FZQD_Q),PAPER_STRONG}
},
g_sleep_time[]=
{
{MAKE_ID_AND_STR(ID_OPTION_VALUE_XMSJ_BXM),SLEEP_TIME_0MIN},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_XMSJ_WFZ),SLEEP_TIME_5MIN},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_XMSJ_SFZ),SLEEP_TIME_10MIN},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_XMSJ_BXS),SLEEP_TIME_30MIN},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_XMSJ_YXS),SLEEP_TIME_60MIN},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_XMSJ_LXS),SLEEP_TIME_120MIN},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_XMSJ_SXS),SLEEP_TIME_240MIN},
{MAKE_ID_AND_STR(OPTION_VALUE_XMSJ_BXM),SLEEP_TIME_0MIN},
{MAKE_ID_AND_STR(OPTION_VALUE_XMSJ_WFZ),SLEEP_TIME_5MIN},
{MAKE_ID_AND_STR(OPTION_VALUE_XMSJ_SFZ),SLEEP_TIME_10MIN},
{MAKE_ID_AND_STR(OPTION_VALUE_XMSJ_BXS),SLEEP_TIME_30MIN},
{MAKE_ID_AND_STR(OPTION_VALUE_XMSJ_YXS),SLEEP_TIME_60MIN},
{MAKE_ID_AND_STR(OPTION_VALUE_XMSJ_LXS),SLEEP_TIME_120MIN},
{MAKE_ID_AND_STR(OPTION_VALUE_XMSJ_SXS),SLEEP_TIME_240MIN},
},
g_fold_type[] =
{
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZYDZ),FOLD_TYPE_LEFT_RIGHT},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_SXDZ),FOLD_TYPE_UP_DOWN},
{MAKE_ID_AND_STR(ID_OPTION_VALUE_ZDDZ),FOLD_TYPE_AUTO}
{MAKE_ID_AND_STR(OPTION_VALUE_ZYDZ),FOLD_TYPE_LEFT_RIGHT},
{MAKE_ID_AND_STR(OPTION_VALUE_SXDZ),FOLD_TYPE_UP_DOWN},
{MAKE_ID_AND_STR(OPTION_VALUE_ZDDZ),FOLD_TYPE_AUTO}
};
int g_paper_hx[] = { PAPER_A4, PAPER_A4_LATERAL
@ -242,7 +241,7 @@ static int match_best(struct _fixed_option* arr, size_t num, std::string& val, b
exact = true;
for (size_t i = 0; i < num; ++i)
{
if (arr[i].str == val)
if (val == from_default_language(arr[i].str.c_str()))
return arr[i].enum_val;
}
@ -253,17 +252,12 @@ static int match_best(struct _fixed_option* arr, size_t num, std::string& val, b
static std::string get_str(struct _fixed_option* arr, int num, int enm, int default_v = 0)
{
if (enm >= 0 && enm < num)
return arr[enm].str;
return from_default_language(arr[enm].str.c_str());
else
return arr[default_v].str;
}
static void reload_string(struct _fixed_option* arr, int num)
{
for (int i = 0; i < num; ++i)
arr[i].str = lang_load_string(arr[i].str_id, nullptr);
return from_default_language(arr[default_v].str.c_str());
}
#define RELOAD_STRING(arr) reload_string(arr, ARRAY_SIZE(arr))
#define INVOKE_MATCH(arr, val, yes) match_best(arr, ARRAY_SIZE(arr), val, yes)
#define INVOKE_STR(arr, val, def) get_str(arr, ARRAY_SIZE(arr), val, def)
#define SET_DEFAULT_ON_FAIL(map_array, ind, val, def) \
@ -527,16 +521,16 @@ int double_paper_flag_from_option_value(std::string& opt_val, bool* exact)
if (exact)
*exact = true;
if (opt_val == lang_load_string(ID_OPTION_VALUE_SZTPCL_SCTXBJXSM, nullptr))
if (opt_val == from_default_language(OPTION_VALUE_SZTPCL_SCTXBJXSM, nullptr))
return DOUBLE_PAPER_CONTINUE | DOUBLE_PAPER_SAVE_IMG;
else if (opt_val == lang_load_string(ID_OPTION_VALUE_SZTPCL_SCTXBTZSM, nullptr))
else if (opt_val == from_default_language(OPTION_VALUE_SZTPCL_SCTXBTZSM, nullptr))
return DOUBLE_PAPER_SAVE_IMG;
else if (opt_val == lang_load_string(ID_OPTION_VALUE_SZTPCL_DQTXBJXSM, nullptr))
else if (opt_val == from_default_language(OPTION_VALUE_SZTPCL_DQTXBJXSM, nullptr))
return DOUBLE_PAPER_CONTINUE;
else
{
if (exact)
*exact = opt_val == lang_load_string(ID_OPTION_VALUE_SZTPCL_DQTXBTZSM, nullptr);
*exact = opt_val == from_default_language(OPTION_VALUE_SZTPCL_DQTXBTZSM, nullptr);
}
return 0;
}
@ -546,14 +540,14 @@ std::string double_paper_flag_to_option_value(int flag)
if (is_continue_when_double_paper(flag))
{
if (is_save_img_when_double_paper(flag))
return lang_load_string(ID_OPTION_VALUE_SZTPCL_SCTXBJXSM, nullptr);
return from_default_language(OPTION_VALUE_SZTPCL_SCTXBJXSM, nullptr);
else
return lang_load_string(ID_OPTION_VALUE_SZTPCL_DQTXBJXSM, nullptr);
return from_default_language(OPTION_VALUE_SZTPCL_DQTXBJXSM, nullptr);
}
else if (is_save_img_when_double_paper(flag))
return lang_load_string(ID_OPTION_VALUE_SZTPCL_SCTXBTZSM, nullptr);
return from_default_language(OPTION_VALUE_SZTPCL_SCTXBTZSM, nullptr);
else
return lang_load_string(ID_OPTION_VALUE_SZTPCL_DQTXBTZSM, nullptr);
return from_default_language(OPTION_VALUE_SZTPCL_DQTXBTZSM, nullptr);
}
bool is_continue_when_double_paper(int flag)
{
@ -565,20 +559,3 @@ bool is_save_img_when_double_paper(int flag)
}
void reload_setting_string_from_pak(int cp, void* param)
{
RELOAD_STRING(g_color_mode);
RELOAD_STRING(g_multi_out);
RELOAD_STRING(g_rid_color);
RELOAD_STRING(g_paper);
RELOAD_STRING(g_page);
RELOAD_STRING(g_sharpen);
RELOAD_STRING(g_fill_bkg);
RELOAD_STRING(g_scan_mode);
RELOAD_STRING(g_text_direction);
RELOAD_STRING(g_permeate_lv);
RELOAD_STRING(g_img_quality);
RELOAD_STRING(g_paper_strenght);
RELOAD_STRING(g_sleep_time);
RELOAD_STRING(g_fold_type);
}

View File

@ -311,9 +311,6 @@ enum
int match_best_fold_type(std::string& val, bool* exact);
std::string is_fold_type(int fold_type);
// call me when language changed in multi-language - added on 2023-01-19
void reload_setting_string_from_pak(int cp, void* param);
typedef union _img_proc_fixed_param
{
unsigned long long value;

View File

@ -153,7 +153,7 @@ hg_scanner::hg_scanner(ScannerSerial serial, const char* dev_name, const char* m
, bright_(128), contrast_(4), gamma_(1.0f), threshold_(40), anti_noise_(8), margin_(5)
, fractate_level_(50), ui_ev_cb_(ui_default_callback), scan_life_(NULL)
, notify_setting_result_(false), user_cancel_(false), cb_mem_(true), test_1_paper_(false)
, img_type_(""), online_(false), is_quality_(-1), is_color_fill(false), is_multiout(false), save_multiout(lang_load_string(ID_OPTION_VALUE_DLSCLX_CS_HD_HB, nullptr))
, img_type_(""), online_(false), is_quality_(-1), is_color_fill(false), is_multiout(false), save_multiout(from_default_language(OPTION_VALUE_DLSCLX_CS_HD_HB, nullptr))
, final_img_index_(0), custom_area_(false), save_sizecheck(false), bw_threshold_(128), custom_gamma_(false)
, double_paper_handle_(0), keep_watermark_(false), save_feedmode_type_(false), feedmode_(1), sleeptime_(-1), split3399_(0)
, async_io_(false), is_white_0_(true), isremove_left_hole(false), isremove_right_hole(false), isremove_top_hole(false), isremove_low_hole(false)
@ -279,8 +279,8 @@ hg_scanner::~hg_scanner()
if(ImagePrc_pHandle_)
hg_imgproc::release(ImagePrc_pHandle_);
name_.insert(0, lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_DEVS, nullptr));
name_ += lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_IS_CLOSE, nullptr);
name_.insert(0, from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_DEVS, nullptr));
name_ += from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_IS_CLOSE, nullptr);
notify_ui_working_status(name_.c_str(), SANE_EVENT_SCANNER_CLOSED);
utils::to_log(LOG_LEVEL_DEBUG, "%s(%p) destroyed.\n", name_.c_str(), this);
}
@ -790,7 +790,7 @@ void hg_scanner::working_begin(void*)
stop_fatal_ = SCANNER_ERR_OK;
final_img_index_ = 0;
status_ = SCANNER_ERR_OK;
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCAN_WORKING, nullptr), SANE_EVENT_WORKING, SCANNER_ERR_OK);
notify_ui_working_status(from_default_language(STATU_DESC_SCAN_WORKING, nullptr), SANE_EVENT_WORKING, SCANNER_ERR_OK);
utils::log_info("scanning ...\n", LOG_LEVEL_DEBUG);
}
void hg_scanner::working_done(void*)
@ -805,73 +805,73 @@ void hg_scanner::working_done(void*)
switch (status_)
{
case SCANNER_ERR_OK:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCAN_STOPPED, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCAN_STOPPED, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_DEVICE_BUSY:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_PC_BUSY, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_PC_BUSY, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_DEVICE_STOPPED:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCAN_STOPPED, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCAN_STOPPED, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_DEVICE_COVER_OPENNED:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_COVER_OPENNED, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_COVER_OPENNED, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_DEVICE_NO_PAPER:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_NO_PAPER, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_NO_PAPER, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_DEVICE_FEEDING_PAPER:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_FEEDING_PAPER, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_FEEDING_PAPER, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_DEVICE_NOT_FOUND:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_NOT_FOUND, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_NOT_FOUND, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_DEVICE_SLEEPING:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_SLEEPING, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_SLEEPING, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_DEVICE_COUNT_MODE:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_COUNT_MODE, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_COUNT_MODE, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_DEVICE_DOUBLE_FEEDING:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_DOUBLE_FEEDING, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_DOUBLE_FEEDING, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_DEVICE_PAPER_JAMMED:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_PAPER_JAMMED, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_PAPER_JAMMED, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_DEVICE_STAPLE_ON:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_STAPLE_ON, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_STAPLE_ON, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_DEVICE_PAPER_SKEW:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_PAPER_SKEW, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_PAPER_SKEW, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_DEVICE_SIZE_CHECK:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_SIZE_CHECK, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_SIZE_CHECK, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_DEVICE_DOGEAR:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_DOGEAR, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_DOGEAR, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_DEVICE_NO_IMAGE:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_NO_IMAGE, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_NO_IMAGE, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_DEVICE_SCANN_ERROR:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_SCANN_ERROR, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_SCANN_ERROR, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_DEVICE_PC_BUSY:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_PC_BUSY, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_PC_BUSY, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_INSUFFICIENT_MEMORY:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_INSUFFICIENT_MEMORY, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_INSUFFICIENT_MEMORY, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_TIMEOUT:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_TIMEOUT, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_TIMEOUT, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_DEVICE_ISLOCK:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_ISLOCK, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_ISLOCK, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_DEVICE_AUTO_FAIL_OVER:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_AUTO_FAIL_OVER, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_AUTO_FAIL_OVER, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_DEVICE_DISTORTION:
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_DISTORTION, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_DISTORTION, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
case SCANNER_ERR_DEVICE_MAYBE_IS_HOLE:
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_MAYBE_IS_HOLE, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
@ -880,7 +880,7 @@ void hg_scanner::working_done(void*)
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_DEVS_BOOTING, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
default:
notify_ui_working_status(user_cancel_ ? lang_load_string(ID_STATU_DESC_SCAN_CANCELED, nullptr) : lang_load_string(ID_STATU_DESC_SCAN_STOPPED, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
notify_ui_working_status(user_cancel_ ? from_default_language(STATU_DESC_SCAN_CANCELED, nullptr) : from_default_language(STATU_DESC_SCAN_STOPPED, nullptr), SANE_EVENT_SCAN_FINISHED, status_);
break;
}
@ -1451,9 +1451,9 @@ int hg_scanner::setting_go_on_when_double_checked(void* data, long* len)
bool ok = true;
std::string val((char*)data);
if (!firmware_sup_double_img && val.compare(lang_load_string(ID_OPTION_VALUE_SZTPCL_DQTXBTZSM, nullptr)))
if (!firmware_sup_double_img && val.compare(from_default_language(OPTION_VALUE_SZTPCL_DQTXBTZSM, nullptr)))
{
::strcpy((char*)data, lang_load_string(ID_OPTION_VALUE_SZTPCL_SCTXBTZSM, nullptr));
::strcpy((char*)data, from_default_language(OPTION_VALUE_SZTPCL_SCTXBTZSM, nullptr));
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
}
@ -1529,7 +1529,7 @@ int hg_scanner::setting_scan_count(void* data, long* len)
int ret = SCANNER_ERR_OK;
//std::string val(get_setting_item_string(SANE_STD_OPT_NAME_SCAN_MODE, "cur"));
//if (val == lang_load_string(ID_OPTION_VALUE_SMZS_LXSM, nullptr))
//if (val == from_default_language(OPTION_VALUE_SMZS_LXSM, nullptr))
//{
// scan_count_ = -1;
//}
@ -2017,7 +2017,6 @@ int hg_scanner::setting_set_language(void* data, long* len)
err = SCANNER_ERR_CONFIGURATION_CHANGED;
lang_set_code_page(id);
on_language_changed();
}
}
@ -2394,7 +2393,7 @@ std::shared_ptr<tiny_buffer> hg_scanner::aquire_memory(int size, bool from_usb)
{
mem.reset();
utils::log_info("Can't aquire enough memory, working must be stopped!\n", LOG_LEVEL_FATAL);
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_INSUFFICIENT_MEMORY, nullptr), SANE_EVENT_ERROR, SCANNER_ERR_INSUFFICIENT_MEMORY);
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_INSUFFICIENT_MEMORY, nullptr), SANE_EVENT_ERROR, SCANNER_ERR_INSUFFICIENT_MEMORY);
stop();
}
@ -2436,7 +2435,7 @@ bool hg_scanner::waiting_for_memory_enough(unsigned need_bytes)
if (first)
{
utils::to_log(LOG_LEVEL_DEBUG, "Memory is too small for aquiring image(%u bytes), wait for ENOUGH ...\n", need_bytes);
notify_ui_working_status(lang_load_string(ID_STATU_DESC_WAIT_FOR_MEM, nullptr));
notify_ui_working_status(from_default_language(STATU_DESC_WAIT_FOR_MEM, nullptr));
first = false;
}
std::this_thread::sleep_for(std::chrono::milliseconds(30));
@ -2789,11 +2788,6 @@ bool hg_scanner::is_online(void)
{
return online_;
}
void hg_scanner::on_language_changed(void)
{
// change the 'size' member of string settings ...
//setting_jsn_->update_data(nullptr, nullptr);
}
int hg_scanner::wait_one_image_from_start(bool& handled)
{
int ret = SCANNER_ERR_OK;

View File

@ -450,7 +450,6 @@ public:
std::string name(void);
int status(void);
bool is_online(void);
void on_language_changed(void);
enum thread_running
{

View File

@ -298,7 +298,7 @@ int hg_scanner_200::do_start(void)
{
status_ = ret = SCANNER_ERR_DEVICE_NO_PAPER;
//notify_ui_working_status(STATU_DESC_SCANNER_ERR_DEVICE_NO_PAPER, SANE_EVENT_ERROR, status_);
utils::to_log(LOG_LEVEL_WARNING, "device start status is(%s)\n", lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_NO_PAPER, nullptr));
utils::to_log(LOG_LEVEL_WARNING, "device start status is(%s)\n", from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_NO_PAPER, nullptr));
return ret;
}

View File

@ -1132,7 +1132,7 @@ void hg_scanner_239::thread_correction(void)
{
is_auto_falt = false;
status_ = SCANNER_ERR_DEVICE_AUTO_FAIL_OVER;
//notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_FAIL_OUTTIME), SANE_EVENT_ERROR, ret); // 通信超时
//notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_FAIL_OUTTIME), SANE_EVENT_ERROR, ret); // 通信超时
utils::to_log(LOG_LEVEL_DEBUG, "设备校正超时 '%s'\n", hg_scanner_err_name(status_, errbuf));
break;
}
@ -1440,7 +1440,7 @@ void hg_scanner_239::thread_get_dves_image(void)
else
status_ = ret = SCANNER_ERR_USER_CANCELED;
utils::to_log(LOG_LEVEL_DEBUG, "%s\n", lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_GET_USER_CANCEL_SCAN, nullptr));
utils::to_log(LOG_LEVEL_DEBUG, "%s\n", from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_GET_USER_CANCEL_SCAN, nullptr));
auoto_paper_indx = 0;
break;
}
@ -1463,7 +1463,7 @@ void hg_scanner_239::thread_get_dves_image(void)
{
utils::log_info("Really stopped ^_^\n", LOG_LEVEL_DEBUG);
string str = lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_ROUND_SACN_OVER, nullptr);
string str = from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_ROUND_SACN_OVER, nullptr);
str += ":" + to_string(++auoto_paper_indx);
if (!user_cancel_ && is_auto_paper_scan && svdevs_err_.empty())
@ -1537,7 +1537,7 @@ int hg_scanner_239::do_start(void)
if (!val && ret == SCANNER_ERR_OK)
{
status_ = SCANNER_ERR_DEVICE_SLEEPING;
utils::to_log(LOG_LEVEL_WARNING, "device start status is(%s)\n", lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_SLEEPING, nullptr));
utils::to_log(LOG_LEVEL_WARNING, "device start status is(%s)\n", from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_SLEEPING, nullptr));
set_notify_sleep();

View File

@ -224,7 +224,7 @@ void hg_scanner_300::thread_handle_usb_read(void)
}
savestatus_.clear();
utils::log_info("Get Status TimeOut,get image out 30S\n", LOG_LEVEL_WARNING);
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_GET_IMAGE_OUTTIME, nullptr), SANE_EVENT_ERROR, status_); // 取图通信超时
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_GET_IMAGE_OUTTIME, nullptr), SANE_EVENT_ERROR, status_); // 取图通信超时
break;
}
}
@ -236,7 +236,7 @@ void hg_scanner_300::thread_handle_usb_read(void)
}
savestatus_.clear();
utils::log_info("MaxSize TimeOut,Get Image 130s\n", LOG_LEVEL_WARNING);
notify_ui_working_status(lang_load_string(ID_STATU_DESC_SCANNER_ERR_DEVICE_GET_IMAGE_OUTTIME, nullptr), SANE_EVENT_ERROR, status_); // 取图通信超时
notify_ui_working_status(from_default_language(STATU_DESC_SCANNER_ERR_DEVICE_GET_IMAGE_OUTTIME, nullptr), SANE_EVENT_ERROR, status_); // 取图通信超时
break;
}
if (ret == SCANNER_ERR_OK && usb.u32_Count > 0)

View File

@ -34,7 +34,7 @@ static struct
uint16_t vid; // vendor ID
uint16_t pid; // product ID
std::string name; // product name - type
std::string family; // product model - family
std::string family; // product model - family. In the TWAIN protocol, grouping is based on this value
std::string rsc; // USB resource, version-addr. e.g. "USB2.0-1"
hg_scanner* (* create_scanner)(const char*/*name*/, const char*/*model*/, usb_io*, scanner_handle*);
}
@ -831,7 +831,6 @@ scanner_err hg_scanner_mgr::hg_scanner_enum(ScannerInfo* scanner_list, long* cou
std::string g_vendor(from_default_language(COMPANY_NAME, nullptr));
get_online_devices(devusbuf);
*count = devusbuf.size();
utils::to_log(LOG_LEVEL_ALL, "current language(%d) of '%s' is '%s'\n", lang_get_cur_code_page(), COMPANY_NAME, g_vendor.c_str());
if (*count > size)
{
ret = SCANNER_ERR_INSUFFICIENT_MEMORY;
@ -1192,8 +1191,8 @@ void hg_scanner_mgr::on_language_changed(void)
std::lock_guard<std::mutex> lock(mutex_dev_);
for (auto& v: online_devices_)
{
if (v.scanner)
v.scanner->on_language_changed();
if (v.dev_opts)
v.dev_opts->update_data(nullptr, nullptr, false);
}
}
const char* hg_scanner_mgr::last_open_message(void)

View File

@ -73,7 +73,6 @@ extern "C"
{
static void language_changed(int cp, void* param)
{
reload_setting_string_from_pak(cp, nullptr);
hg_scanner_mgr::instance()->on_language_changed();
}