修复引入语言包后依赖项处理BUG
This commit is contained in:
parent
397f919b1d
commit
bb2706781f
|
@ -171,7 +171,7 @@ namespace local_utility
|
|||
return str > bgn;
|
||||
}
|
||||
|
||||
// 暂不支持科学计数<EFBFBD>?1.2e+10
|
||||
// æš‚ä¸<EFBFBD>支æŒ<EFBFBD>科å¦è®¡æ•°æ³?1.2e+10
|
||||
bool get_number(const char*& str, double& val)
|
||||
{
|
||||
const char* bgn = str;
|
||||
|
@ -331,6 +331,29 @@ namespace local_utility
|
|||
cb_ui_parm_ = NULL;
|
||||
cb_auth_ = NULL;
|
||||
}
|
||||
|
||||
static void trans_language_if_was_word_id(std::string& val)
|
||||
{
|
||||
size_t pos = val.find(".");
|
||||
|
||||
if (pos != std::string::npos)
|
||||
{
|
||||
bool num = true;
|
||||
for (size_t i = pos + 1; i < val.length(); ++i)
|
||||
{
|
||||
if (val[i] != '0')
|
||||
{
|
||||
num = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (num && std::to_string(atoi(val.c_str())) == val.substr(0, pos))
|
||||
{
|
||||
val = lang_load_string(atoi(val.c_str()), nullptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -557,7 +580,7 @@ SANE_Option_Descriptor* hg_sane_middleware::string_option_to_SANE_descriptor(con
|
|||
sod->unit = SANE_UNIT_NONE;
|
||||
sod->size = values.size();
|
||||
sod->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT // 软件可设置选项
|
||||
| SANE_CAP_AUTOMATIC; // 硬件可设置默认<EFBFBD>?
|
||||
| SANE_CAP_AUTOMATIC; // 硬件å<EFBFBD>¯è®¾ç½®é»˜è®¤å€?
|
||||
if (values.size())
|
||||
{
|
||||
sod->constraint_type = SANE_CONSTRAINT_STRING_LIST;
|
||||
|
@ -678,7 +701,7 @@ SANE_Option_Descriptor* hg_sane_middleware::number_option_to_SANE_descriptor(con
|
|||
sod->unit = SANE_UNIT_NONE;
|
||||
sod->size = sizeof(SANE_Word);
|
||||
sod->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT // 软件可设置选项
|
||||
/*| SANE_CAP_AUTOMATIC*/; // 硬件可设置默认<EFBFBD>?
|
||||
/*| SANE_CAP_AUTOMATIC*/; // 硬件å<EFBFBD>¯è®¾ç½®é»˜è®¤å€?
|
||||
|
||||
if (values.size())
|
||||
{
|
||||
|
@ -728,7 +751,7 @@ SANE_Option_Descriptor* hg_sane_middleware::number_option_to_SANE_descriptor(con
|
|||
sod->unit = SANE_UNIT_NONE;
|
||||
sod->size = sizeof(SANE_Word);
|
||||
sod->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT // 软件可设置选项
|
||||
/*| SANE_CAP_AUTOMATIC*/; // 硬件可设置默认<EFBFBD>?
|
||||
/*| SANE_CAP_AUTOMATIC*/; // 硬件å<EFBFBD>¯è®¾ç½®é»˜è®¤å€?
|
||||
|
||||
if (values.size())
|
||||
{
|
||||
|
@ -861,22 +884,7 @@ SANE_Option_Descriptor* hg_sane_middleware::from_json(scanner_handle h, const st
|
|||
constraints.push_back(val);
|
||||
while (range->next_child(val))
|
||||
{
|
||||
pos = val.find(".");
|
||||
if (pos != std::string::npos)
|
||||
{
|
||||
for (size_t i = val.length() - 1; i > pos; --i)
|
||||
{
|
||||
if (val[i] != '0')
|
||||
{
|
||||
pos = i + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
val.erase(pos);
|
||||
}
|
||||
if (std::to_string(atoi(val.c_str())) == val)
|
||||
constraints.push_back(lang_load_string(atoi(val.c_str()), (int*)&lower));
|
||||
else
|
||||
local_utility::trans_language_if_was_word_id(val);
|
||||
constraints.push_back(val);
|
||||
}
|
||||
}
|
||||
|
@ -1004,7 +1012,7 @@ SANE_Option_Descriptor* hg_sane_middleware::from_json(scanner_handle h, const st
|
|||
//if (jsn->get_value("enable", enabled) && !enabled)
|
||||
// ret->cap |= SANE_CAP_INACTIVE;
|
||||
|
||||
// 关联<EFBFBD>?
|
||||
// å…³è<EFBFBD>”é¡?
|
||||
json* depend = NULL;
|
||||
SLAVEOP so;
|
||||
if (jsn->get_value("depend_or", depend))
|
||||
|
@ -1026,22 +1034,24 @@ SANE_Option_Descriptor* hg_sane_middleware::from_json(scanner_handle h, const st
|
|||
// initializing status ...
|
||||
if (so.master.size())
|
||||
{
|
||||
std::string master(get_option_json(h, (void *)so.master[0].name.c_str()));
|
||||
json* m = new json();
|
||||
if (m->attach_text(&master[0]))
|
||||
{
|
||||
bool integer = false;
|
||||
//std::string master(get_option_json(h, (void *)so.master[0].name.c_str()));
|
||||
//json* m = new json();
|
||||
//if (m->attach_text(&master[0]))
|
||||
//{
|
||||
// bool integer = false, str = false;
|
||||
|
||||
master = "";
|
||||
m->get_value("type", master);
|
||||
integer = master == "int";
|
||||
master = "";
|
||||
m->get_value_as_string("cur", master, integer);
|
||||
// master = "";
|
||||
// m->get_value("type", master);
|
||||
// integer = master == "int";
|
||||
// str = master == "string";
|
||||
// master = "";
|
||||
// m->get_value_as_string("cur", master, integer);
|
||||
// local_utility::trans_language_if_was_word_id(val);
|
||||
so.enable_now = so.is_enable(so.master, (*it)->cur_vals);
|
||||
if (!so.enable_now)
|
||||
ret->cap |= SANE_CAP_INACTIVE;
|
||||
}
|
||||
delete m;
|
||||
//}
|
||||
//delete m;
|
||||
}
|
||||
(*it)->slaves.push_back(so);
|
||||
}
|
||||
|
@ -1358,7 +1368,7 @@ SANE_Status hg_sane_middleware::get_devices(const SANE_Device*** device_list, SA
|
|||
|
||||
if (hgerr == SCANNER_ERR_INSUFFICIENT_MEMORY)
|
||||
{
|
||||
count += 4; // 为两次hg_scanner_enum间隙可能新增的设备预留空<EFBFBD>?
|
||||
count += 4; // 为两次hg_scanner_enumé—´éš™å<EFBFBD>¯èƒ½æ–°å¢žçš„设备预留空é—?
|
||||
dev = (ScannerInfo*)local_utility::acquire_memory(sizeof(ScannerInfo) * count, "hg_sane_middleware::get_devices");
|
||||
hgerr = hg_scanner_enum(dev, &count, local_only);
|
||||
if (hgerr != SCANNER_ERR_OK)
|
||||
|
@ -1736,7 +1746,7 @@ bool hg_sane_middleware::is_ready(void)
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// 关联项处<EFBFBD>?
|
||||
/// å…³è<EFBFBD>”项处ç<EFBFBD>?
|
||||
bool hg_sane_middleware::compare_val_equal(const char* cur_val, const char* limit_l, const char* limit_r)
|
||||
{
|
||||
return strcmp(cur_val, limit_l) == 0;
|
||||
|
@ -2032,6 +2042,8 @@ bool hg_sane_middleware::refresh_current_value(LPDEVINST dev, const char* name,
|
|||
jsn->get_value("type", cv.type);
|
||||
cv.name = name;
|
||||
jsn->get_value_as_string("cur", cv.val, cv.type == "int");
|
||||
if (cv.type == "string")
|
||||
local_utility::trans_language_if_was_word_id(cv.val);
|
||||
dev->cur_vals.push_back(cv);
|
||||
|
||||
return false;
|
||||
|
@ -2040,6 +2052,8 @@ bool hg_sane_middleware::refresh_current_value(LPDEVINST dev, const char* name,
|
|||
{
|
||||
std::string old(it->val);
|
||||
jsn->get_value_as_string("cur", it->val, it->type == "int");
|
||||
if (it->val == "string")
|
||||
local_utility::trans_language_if_was_word_id(it->val);
|
||||
|
||||
return old != it->val;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue