配置JSON增加只读和只在设备操作属性

This commit is contained in:
gb 2023-02-28 10:51:35 +08:00
parent f46b7a5ebc
commit cbeaa1145e
5 changed files with 16 additions and 2 deletions

Binary file not shown.

View File

@ -5849,7 +5849,6 @@ struct
, {SANE_STD_OPT_NAME_FEED_STRENGTH_VALUE , OPTION_TITLE_JZSBL} , {SANE_STD_OPT_NAME_FEED_STRENGTH_VALUE , OPTION_TITLE_JZSBL}
, {SANE_STD_OPT_NAME_WAIT_TO_SCAN , OPTION_TITLE_DZSM} , {SANE_STD_OPT_NAME_WAIT_TO_SCAN , OPTION_TITLE_DZSM}
, {SANE_STD_OPT_NAME_FOLD_TYPE , OPTION_TITLE_DZMS} , {SANE_STD_OPT_NAME_FOLD_TYPE , OPTION_TITLE_DZMS}
, {SANE_STD_OPT_NAME_COLOR_CORRECTION , OPTION_TITLE_SPJZ}
}, },
g_discard[] = { {SANE_STD_OPT_NAME_REVERSE_01 , "\351\273\221\347\231\275\345\233\276\345\203\217\345\217\215\350\211\262\350\276\223\345\207\272\357\274\210\346\255\243\345\270\270\351\242\234\350\211\262\344\270\272\357\274\2320-\351\273\221\350\211\262\357\274\2331-\347\231\275\350\211\262\357\274\211"} // 黑白图像反色输出正常颜色为0-黑色1-白色) g_discard[] = { {SANE_STD_OPT_NAME_REVERSE_01 , "\351\273\221\347\231\275\345\233\276\345\203\217\345\217\215\350\211\262\350\276\223\345\207\272\357\274\210\346\255\243\345\270\270\351\242\234\350\211\262\344\270\272\357\274\2320-\351\273\221\350\211\262\357\274\2331-\347\231\275\350\211\262\357\274\211"} // 黑白图像反色输出正常颜色为0-黑色1-白色)
, {SANE_STD_OPT_NAME_FILTER , "\347\201\260\345\272\246\346\210\226\351\273\221\347\231\275\345\233\276\345\203\217 - \351\231\244\350\211\262"} // 灰度或黑白图像 - 除色 , {SANE_STD_OPT_NAME_FILTER , "\347\201\260\345\272\246\346\210\226\351\273\221\347\231\275\345\233\276\345\203\217 - \351\231\244\350\211\262"} // 灰度或黑白图像 - 除色
@ -6223,6 +6222,8 @@ void ChgjsonDlg::init_control_statu(void)
GetDlgItem(IDC_EDIT_DESC)->EnableWindow(valid); GetDlgItem(IDC_EDIT_DESC)->EnableWindow(valid);
GetDlgItem(IDC_CHECK_ADVANCED)->EnableWindow(valid); GetDlgItem(IDC_CHECK_ADVANCED)->EnableWindow(valid);
GetDlgItem(IDC_CHECK_READONLY)->EnableWindow(valid);
GetDlgItem(IDC_CHECK_DEVICEONLY)->EnableWindow(valid);
constraint_.EnableWindow(valid); constraint_.EnableWindow(valid);
depends_.EnableWindow(valid); depends_.EnableWindow(valid);
type_.EnableWindow(valid); type_.EnableWindow(valid);
@ -6316,6 +6317,8 @@ void ChgjsonDlg::set_control_status(const HGITEM& item)
type_.SetCurSel(4); type_.SetCurSel(4);
((CButton*)GetDlgItem(IDC_CHECK_ADVANCED))->SetCheck(item.advanced ? BST_CHECKED : BST_UNCHECKED); ((CButton*)GetDlgItem(IDC_CHECK_ADVANCED))->SetCheck(item.advanced ? BST_CHECKED : BST_UNCHECKED);
((CButton*)GetDlgItem(IDC_CHECK_READONLY))->SetCheck(item.readonly ? BST_CHECKED : BST_UNCHECKED);
((CButton*)GetDlgItem(IDC_CHECK_DEVICEONLY))->SetCheck(item.deviceonly ? BST_CHECKED : BST_UNCHECKED);
// value ... // value ...
GetDlgItem(IDC_STATIC_FROM)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC_FROM)->ShowWindow(SW_HIDE);
@ -6433,6 +6436,8 @@ void* ChgjsonDlg::create_json(int item, std::vector<DEFH>* def_h, std::wstring*
const char* opt_name = title_to_name(hg_items_[item].title); const char* opt_name = title_to_name(hg_items_[item].title);
jsn->set_value(L"category", hg_items_[item].advanced ? L"advanced" : L"base"); jsn->set_value(L"category", hg_items_[item].advanced ? L"advanced" : L"base");
jsn->set_value(L"readonly", hg_items_[item].readonly);
jsn->set_value(L"hwonly", hg_items_[item].deviceonly);
if (name) if (name)
{ {
if (opt_name) if (opt_name)
@ -6629,6 +6634,8 @@ std::string ChgjsonDlg::to_json_text(bool for_const, std::wstring* dev)
if (item) if (item)
{ {
item->set_value(L"category", hg_items_[ind].advanced ? L"advanced" : L"base"); item->set_value(L"category", hg_items_[ind].advanced ? L"advanced" : L"base");
item->set_value(L"readonly", hg_items_[ind].readonly);
item->set_value(L"hwonly", hg_items_[ind].deviceonly);
item->release(); item->release();
} }
std::wstring key(L""); std::wstring key(L"");
@ -6727,6 +6734,9 @@ void ChgjsonDlg::add_item(void* jsn_root, void* jsn_obj, HTREEITEM parent, bool
jsn->get_value(L"category", &val); jsn->get_value(L"category", &val);
if (val && wcscmp(val, L"advanced") == 0) if (val && wcscmp(val, L"advanced") == 0)
item.advanced = true; item.advanced = true;
jsn->get_value(L"readonly", item.readonly);
jsn->get_value(L"hwonly", item.deviceonly);
jsn->get_value(L"depend_and", &child); jsn->get_value(L"depend_and", &child);
if (child) if (child)
@ -7738,6 +7748,8 @@ void ChgjsonDlg::OnBnClickedButton4()
::GetWindowTextW(type_.m_hWnd, str, _countof(str) - 1); ::GetWindowTextW(type_.m_hWnd, str, _countof(str) - 1);
it->type = str; it->type = str;
it->advanced = ((CButton*)GetDlgItem(IDC_CHECK_ADVANCED))->GetCheck() == BST_CHECKED; it->advanced = ((CButton*)GetDlgItem(IDC_CHECK_ADVANCED))->GetCheck() == BST_CHECKED;
it->readonly = ((CButton*)GetDlgItem(IDC_CHECK_READONLY))->GetCheck() == BST_CHECKED;
it->deviceonly = ((CButton*)GetDlgItem(IDC_CHECK_DEVICEONLY))->GetCheck() == BST_CHECKED;
it->range.type = constraint_.GetCurSel(); it->range.type = constraint_.GetCurSel();
if (wcscmp(str, L"bool") == 0) if (wcscmp(str, L"bool") == 0)
it->bytes = sizeof(SANE_Bool); it->bytes = sizeof(SANE_Bool);

View File

@ -62,6 +62,8 @@ public:
int index; int index;
int bytes; int bytes;
bool advanced; bool advanced;
bool readonly;
bool deviceonly; // 只能在设备上操作的属性
bool depend_or; // or or and bool depend_or; // or or and
std::vector<DEPENDITEM> depend; std::vector<DEPENDITEM> depend;
RANGE range; RANGE range;
@ -77,7 +79,7 @@ public:
type = L"bool"; type = L"bool";
init_val = L"true"; init_val = L"true";
bytes = 4; bytes = 4;
advanced = false; advanced = readonly = deviceonly = false;
depend_or = true; depend_or = true;
range.type = RANGE_TYPE_NONE; range.type = RANGE_TYPE_NONE;
} }

Binary file not shown.

Binary file not shown.