属性name字段定义

This commit is contained in:
gb 2022-08-16 10:45:16 +08:00
parent 35db45de27
commit 2a264eb309
9 changed files with 128 additions and 28 deletions

View File

@ -628,7 +628,6 @@
"cur": false,
"default": false,
"size": 4,
"depend_and": ["26!=单面", "26!=对折", "53!=
\方向识别°"]
"depend_and": ["26!=单面", "26!=对折"]
}
}

Binary file not shown.

Binary file not shown.

View File

@ -61,6 +61,7 @@
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@ -86,6 +87,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@ -108,6 +110,7 @@
<Text Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\..\code_device\hgdriver\hgdev\scanner_setting.h" />
<ClInclude Include="DlgInput.h" />
<ClInclude Include="hgjson.h" />
<ClInclude Include="hgjsonDlg.h" />
@ -116,6 +119,10 @@
<ClInclude Include="targetver.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\..\code_device\hgdriver\hgdev\scanner_setting.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>
</ClCompile>
<ClCompile Include="DlgInput.cpp" />
<ClCompile Include="hgjson.cpp" />
<ClCompile Include="hgjsonDlg.cpp" />

View File

@ -36,6 +36,9 @@
<ClInclude Include="DlgInput.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\code_device\hgdriver\hgdev\scanner_setting.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="hgjson.cpp">
@ -50,6 +53,9 @@
<ClCompile Include="DlgInput.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\code_device\hgdriver\hgdev\scanner_setting.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="hgjson.rc">

View File

@ -18,6 +18,8 @@
#include <coding/coding.h>
#include <file/file_util.h>
#include <sane/sane_ex.h>
#include <sane/sane_option_definitions.h>
#include "../../../../code_device/hgdriver/hgdev/scanner_setting.h"
#define TREE_ITEM_PRODUCT MAKELONG(MAKEWORD('P', 'R'), MAKEWORD('D', 'T'))
#define TREE_ITEM_GROUP MAKELONG(MAKEWORD('G', 'R'), MAKEWORD('U', 'P'))
@ -5743,11 +5745,95 @@ namespace hz_2_py
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
// name & title map ...
struct
{
const char* name;
const char* title;
}g_opts[] = { {SANE_STD_OPT_NAME_RESTORE , OPTION_TITLE_HFMRSZ}
, {SANE_STD_OPT_NAME_HELP , OPTION_TITLE_BZ}
, {SANE_STD_OPT_NAME_IS_MULTI_OUT , OPTION_TITLE_DLSC}
, {SANE_STD_OPT_NAME_MULTI_OUT_TYPE , OPTION_TITLE_DLSCLX}
, {SANE_STD_OPT_NAME_COLOR_MODE , OPTION_TITLE_YSMS}
, {SANE_STD_OPT_NAME_BINARY_THRESHOLD , OPTION_TITLE_HBTXYZ}
, {SANE_STD_OPT_NAME_FILTER , OPTION_TITLE_HDHHBTX_CS}
, {SANE_STD_OPT_NAME_RID_MULTIOUT_RED , OPTION_TITLE_24WCSTX_DLSCCH}
, {SANE_STD_OPT_NAME_RID_ANSWER_SHEET_RED , OPTION_TITLE_24WCSTX_DTKCH}
, {SANE_STD_OPT_NAME_ERASE_BACKGROUND , OPTION_TITLE_BJYC}
, {SANE_STD_OPT_NAME_BKG_COLOR_RANGE , OPTION_TITLE_BJSCFDFW}
, {SANE_STD_OPT_NAME_SHARPEN , OPTION_TITLE_RHYMH}
, {SANE_STD_OPT_NAME_RID_MORR , OPTION_TITLE_QCMW}
, {SANE_STD_OPT_NAME_RID_GRID , OPTION_TITLE_CWW}
, {SANE_STD_OPT_NAME_ERROR_EXTENSION , OPTION_TITLE_CWKS}
, {SANE_STD_OPT_NAME_NOISE_OPTIMIZE , OPTION_TITLE_HBTXZDYH}
, {SANE_STD_OPT_NAME_NOISE_SIZE , OPTION_TITLE_ZDYHCC}
, {SANE_STD_OPT_NAME_PAPER , OPTION_TITLE_ZZCC}
, {SANE_STD_OPT_NAME_CUSTOM_AREA , OPTION_TITLE_ZDYSMQY}
, {SANE_STD_OPT_NAME_CUSTOM_AREA_LEFT , OPTION_TITLE_SMQYZCmm}
, {SANE_STD_OPT_NAME_CUSTOM_AREA_RIGHT , OPTION_TITLE_SMQYYCmm}
, {SANE_STD_OPT_NAME_CUSTOM_AREA_TOP , OPTION_TITLE_SMQYSCmm}
, {SANE_STD_OPT_NAME_CUSTOM_AREA_BOTTOM , OPTION_TITLE_SMQYXCmm}
, {SANE_STD_OPT_NAME_SIZE_CHECK , OPTION_TITLE_CCJC}
, {SANE_STD_OPT_NAME_PAGE , OPTION_TITLE_SMYM}
, {SANE_STD_OPT_NAME_DISCARD_BLANK_SENS , OPTION_TITLE_TGKBYLMD}
, {SANE_STD_OPT_NAME_RESOLUTION , OPTION_TITLE_FBL}
, {SANE_STD_OPT_NAME_TIME_TO_SLEEP , OPTION_TITLE_XMSJ}
, {SANE_STD_OPT_NAME_IMAGE_QUALITY , OPTION_TITLE_HZ}
, {SANE_STD_OPT_NAME_EXCHANGE ,OPTION_TITLE_JHZFM}
, {SANE_STD_OPT_NAME_SPLIT ,OPTION_TITLE_TXCF }
, {SANE_STD_OPT_NAME_ANTI_SKEW , OPTION_TITLE_ZDJP}
, {SANE_STD_OPT_NAME_IS_CUSTOM_GAMMA , OPTION_TITLE_QYSDQX}
, {SANE_STD_OPT_NAME_GAMMA , OPTION_TITLE_JMZ}
, {SANE_STD_OPT_NAME_BRIGHTNESS , OPTION_TITLE_LDZ}
, {SANE_STD_OPT_NAME_CONTRAST , OPTION_TITLE_DBD}
, {SANE_STD_OPT_NAME_IS_PHOTO_MODE , OPTION_TITLE_ZPMS}
, {SANE_STD_OPT_NAME_ERASE_BLACK_FRAME , OPTION_TITLE_XCHK}
, {SANE_STD_OPT_NAME_DARK_SAMPLE , OPTION_TITLE_SSYZ}
, {SANE_STD_OPT_NAME_THRESHOLD , OPTION_TITLE_YZ}
, {SANE_STD_OPT_NAME_ANTI_NOISE_LEVEL , OPTION_TITLE_BJKZDJ}
, {SANE_STD_OPT_NAME_MARGIN , OPTION_TITLE_BYSJ}
, {SANE_STD_OPT_NAME_FILL_BKG_MODE , OPTION_TITLE_BJTCFS}
, {SANE_STD_OPT_NAME_IS_ANTI_PERMEATE , OPTION_TITLE_FZST}
, {SANE_STD_OPT_NAME_ANTI_PERMEATE_LEVEL , OPTION_TITLE_FZSTDJ}
, {SANE_STD_OPT_NAME_RID_HOLE , OPTION_TITLE_CKYC}
, {SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE , OPTION_TITLE_CKSSFWZFMBL}
, {SANE_STD_OPT_NAME_IS_FILL_COLOR , OPTION_TITLE_SCTC}
, {SANE_STD_OPT_NAME_IS_ULTROSONIC_CHECK , OPTION_TITLE_CSBJC}
, {SANE_STD_OPT_NAME_DOUBLE_FEED_HANDLE , OPTION_TITLE_SZTPCL}
, {SANE_STD_OPT_NAME_IS_CHECK_STAPLE , OPTION_TITLE_ZDJC}
, {SANE_STD_OPT_NAME_SCAN_MODE , OPTION_TITLE_SMZS}
, {SANE_STD_OPT_NAME_SCAN_COUNT , OPTION_TITLE_SMSL}
, {SANE_STD_OPT_NAME_TEXT_DIRECTION , OPTION_TITLE_WGFX}
, {SANE_STD_OPT_NAME_IS_ROTATE_BKG_180 , OPTION_TITLE_BMXZ180}
, {SANE_STD_OPT_NAME_IS_CHECK_DOG_EAR , OPTION_TITLE_ZJJC}
, {SANE_STD_OPT_NAME_DOG_EAR_SIZE , OPTION_TITLE_ZJDX}
, {SANE_STD_OPT_NAME_IS_CHECK_ASKEW , OPTION_TITLE_WXJC}
, {SANE_STD_OPT_NAME_ASKEW_RANGE , OPTION_TITLE_WXRRD}
, {SANE_STD_OPT_NAME_FEED_STRENGTH , OPTION_TITLE_FZQD}
, {SANE_STD_OPT_NAME_IS_AUTO_FEED_STRENGTH , OPTION_TITLE_ZDCZQD}
, {SANE_STD_OPT_NAME_FEED_STRENGTH_VALUE , OPTION_TITLE_CZYZ}
, {SANE_STD_OPT_NAME_WAIT_TO_SCAN , OPTION_TITLE_DZSM}
};
static IMPLEMENT_OPTION_STRING_COMPARE(compare_title);
static const char* title_to_name(const char* title)
{
for (size_t i = 0; i < _countof(g_opts); ++i)
{
if (compare_title(g_opts[i].title, title))
return g_opts[i].name;
}
return NULL;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ChgjsonDlg dialog
ChgjsonDlg::ChgjsonDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(ChgjsonDlg::IDD, pParent)
, show_tree_tooltips_(true)
@ -5803,6 +5889,7 @@ BEGIN_MESSAGE_MAP(ChgjsonDlg, CDialogEx)
ON_COMMAND(ID_TREE_TOOLTIPS, &ChgjsonDlg::OnTreeTooltips)
ON_COMMAND(ID_LISTMENU_TOOLTIPS, &ChgjsonDlg::OnListmenuTooltips)
ON_COMMAND(ID_TREE_EXPORTCHAR, &ChgjsonDlg::OnTreeExportCharConstants)
ON_BN_CLICKED(IDC_TO_FILE, &ChgjsonDlg::OnBnClickedToFile)
END_MESSAGE_MAP()
@ -6251,30 +6338,11 @@ void* ChgjsonDlg::create_json(int item, std::vector<DEFH>* def_h)
known_file_util::IJsonW* jsn = known_file_util::create_jsonW();
wchar_t buf[128] = { 0 };
int prefer_size = 0;
const char* opt_name = title_to_name(coding::u2utf8(hg_items_[item].title.c_str()).c_str());
jsn->set_value(L"category", hg_items_[item].advanced ? L"advanced" : L"base");
if (hg_items_[item].title == L"\u5206\u8FA8\u7387")
jsn->set_value(L"name", coding::a2u(SANE_STD_OPT_NAME_RESOLUTION).c_str());
else if (hg_items_[item].title == L"\u4EAE\u5EA6\u503C")
jsn->set_value(L"name", coding::a2u(SANE_STD_OPT_NAME_BRIGHTNESS).c_str());
else if (hg_items_[item].title == L"\u5BF9\u6BD4\u5EA6")
jsn->set_value(L"name", coding::a2u(SANE_STD_OPT_NAME_CONTRAST).c_str());
else if (hg_items_[item].title == L"\u626B\u63CF\u533A\u57DF\u5DE6\u4FA7\uFF08mm\uFF09")
jsn->set_value(L"name", coding::a2u(SANE_STD_OPT_NAME_CUSTOM_AREA_LEFT).c_str());
else if (hg_items_[item].title == L"\u626B\u63CF\u533A\u57DF\u4E0A\u4FA7\uFF08mm\uFF09")
jsn->set_value(L"name", coding::a2u(SANE_STD_OPT_NAME_CUSTOM_AREA_TOP).c_str());
else if (hg_items_[item].title == L"\u626B\u63CF\u533A\u57DF\u53F3\u4FA7\uFF08mm\uFF09")
jsn->set_value(L"name", coding::a2u(SANE_STD_OPT_NAME_CUSTOM_AREA_RIGHT).c_str());
else if (hg_items_[item].title == L"\u626B\u63CF\u533A\u57DF\u4E0B\u4FA7\uFF08mm\uFF09")
jsn->set_value(L"name", coding::a2u(SANE_STD_OPT_NAME_CUSTOM_AREA_BOTTOM).c_str());
else if (hg_items_[item].title == L"ÑÕɫģʽ")
jsn->set_value(L"name", coding::a2u(SANE_STD_OPT_NAME_COLOR_MODE).c_str());
else if (hg_items_[item].title == L"Ö½Õųߴç")
jsn->set_value(L"name", coding::a2u(SANE_STD_OPT_NAME_PAPER).c_str());
else if (hg_items_[item].title == L"ɨÃèÒ³Ãæ")
jsn->set_value(L"name", coding::a2u(SANE_STD_OPT_NAME_PAGE_TYPE).c_str());
else if (hg_items_[item].title == L"³¬Éù²¨¼ì²â")
jsn->set_value(L"name", coding::a2u(SANE_STD_OPT_NAME_ULTRASONIC_CHECK).c_str());
if (opt_name)
jsn->set_value(L"name", coding::utf82u(opt_name).c_str());
else
{
swprintf_s(buf, _countof(buf) - 1, L"cfg-%d", hg_items_[item].index);
@ -6386,7 +6454,7 @@ void* ChgjsonDlg::create_json(int item, std::vector<DEFH>* def_h)
return jsn;
}
std::string ChgjsonDlg::to_json_text(bool for_const)
std::string ChgjsonDlg::to_json_text(bool for_const, std::wstring* dev)
{
known_file_util::IJsonW* jsn = known_file_util::create_jsonW(), * item = NULL;
HTREEITEM root = tree_.GetRootItem(), child = NULL;
@ -6406,6 +6474,8 @@ std::string ChgjsonDlg::to_json_text(bool for_const)
file = path;
}
if (dev)
*dev = val;
jsn->set_value(L"device_type", val.c_str());
jsn->set_value(L"option_count", (int)hg_items_.size()); // occupy position
root = tree_.GetChildItem(root);
@ -7720,3 +7790,20 @@ void ChgjsonDlg::OnTreeExportCharConstants()
else
MessageBox(TEXT("const string has set to clipboard already"));
}
void ChgjsonDlg::OnBnClickedToFile()
{
// TODO: 在此添加控件通知处理程序代码
std::wstring name(L"");
std::string txt(to_json_text(false, &name)), ansi("");
wchar_t path[MAX_PATH] = { 0 };
GetModuleFileNameW(NULL, path, _countof(path) - 1);
wcsrchr(path, L'\\')[1] = 0;
name.insert(0, path);
name += L".hsc";
ansi = coding::u2a(name.c_str());
if (save_scanner_setting(ansi.c_str(), txt) == 0)
file_util::display_file_in_explorer(name.c_str());
}

View File

@ -114,7 +114,7 @@ protected:
void set_control_status(const HGITEM& item);
void* create_json(int item, std::vector<DEFH> *def_h = NULL);
std::string to_json_text(bool for_const = false);
std::string to_json_text(bool for_const = false, std::wstring *dev = NULL);
void add_item(void* jsn_root, void* jsn_obj, HTREEITEM parent);
bool load_from_json_text(const wchar_t* txt);
bool load_from_file(const wchar_t* path_file);
@ -161,6 +161,7 @@ public:
afx_msg void OnTreeTooltips();
afx_msg void OnListmenuTooltips();
afx_msg void OnTreeExportCharConstants();
afx_msg void OnBnClickedToFile();
};

Binary file not shown.

Binary file not shown.