From 9e95ba0fa320af0bc9b06859da24e5bb00664ebb Mon Sep 17 00:00:00 2001 From: luoliangyi <87842688@qq.com> Date: Sat, 12 Aug 2023 09:57:04 +0800 Subject: [PATCH] =?UTF-8?q?twainui=E7=9B=AE=E5=BD=95=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build2/qt/HGTwainUI/HGTwainUI.pro | 190 ++++++++++--------------- modules/twainui/dialog_device_select.h | 2 +- modules/twainui/dialog_progress_ui.h | 2 +- modules/twainui/hg_settingdialog.h | 2 +- modules/twainui/twainui.cpp | 2 +- modules/twainui/twainui.h | 124 ++++++++++++++++ 6 files changed, 200 insertions(+), 122 deletions(-) create mode 100644 modules/twainui/twainui.h diff --git a/build2/qt/HGTwainUI/HGTwainUI.pro b/build2/qt/HGTwainUI/HGTwainUI.pro index 30f67a26..c9b74309 100644 --- a/build2/qt/HGTwainUI/HGTwainUI.pro +++ b/build2/qt/HGTwainUI/HGTwainUI.pro @@ -34,67 +34,9 @@ win32 { SOURCES += ../../../modules/twainui/qmfcapp.cpp SOURCES += ../../../modules/twainui/qwinhost.cpp SOURCES += ../../../modules/twainui/qwinwidget.cpp - SOURCES += ../../../modules/twainui/twainui.cpp - SOURCES += ../../../modules/twainui/hg_settingdialog.cpp - HEADERS += ../../../modules/twainui/qmfcapp.hpp HEADERS += ../../../modules/twainui/qwinhost.hpp HEADERS += ../../../modules/twainui/qwinwidget.hpp - HEADERS += ../../../modules/twainui/hg_settingdialog.h - - SOURCES += \ - ../../../modules/twainui/app_cfg.cpp \ - ../../../modules/twainui/HGUIGlobal.cpp \ - ../../../modules/twainui/Manager.cpp \ - ../../../modules/twainui/cfg/cJSON.c \ - ../../../modules/twainui/cfg/gb_json.cpp \ - ../../../modules/twainui/cutdialog.cpp \ - ../../../modules/twainui/cutpapertool.cpp \ - ../../../modules/twainui/device_menu.cpp \ - ../../../modules/twainui/dialog_input.cpp \ - ../../../modules/twainui/dllmain.cpp \ - ../../../modules/twainui/gaosixy.cpp \ - ../../../modules/twainui/setpicclrtool.cpp \ - ../../../utility/HGString.cpp \ - ../../../modules/twainui/widget.cpp \ - ../../../modules/twainui/dialog_progress_ui.cpp \ - ../../../modules/twainui/dialog_device_select.cpp \ - ../../../modules/twainui/dialog_twain_source_select.cpp - HEADERS += \ - ../../../modules/twainui/app_cfg.h \ - ../../../modules/twainui/HGUIGlobal.h \ - ../../../modules/twainui/Manager.h \ - ../../../modules/twainui/cfg/cJSON.h \ - ../../../modules/twainui/cfg/gb_json.h \ - ../../../modules/twainui/cutdialog.h \ - ../../../modules/twainui/cutpapertool.h \ - ../../../modules/twainui/device_menu.h \ - ../../../modules/twainui/dialog_input.h \ - ../../../modules/twainui/gaosixy.h \ - ../../../modules/twainui/setpicclrtool.h \ - ../../../utility/HGString.h \ - ../../../modules/twainui/widget.h \ - ../../../modules/twainui/dialog_progress_ui.h \ - ../../../modules/twainui/dialog_device_select.h \ - ../../../modules/twainui/dialog_twain_source_select.h - - FORMS += \ - ../../../modules/twainui/cutdialog.ui \ - ../../../modules/twainui/cutpapertool.ui \ - ../../../modules/twainui/dialog_input.ui \ - ../../../modules/twainui/setpicclrtool.ui \ - ../../../modules/twainui/widget.ui \ - ../../../modules/twainui/dialog_progress_ui.ui \ - ../../../modules/twainui/dialog_device_select.ui \ - ../../../modules/twainui/dialog_twain_source_select.ui - - RESOURCES += \ - ../../../modules/twainui/TwainUI_resource.qrc - - TRANSLATIONS += \ - ../../../modules/twainui/TwainUI_zh_CN.ts \ - ../../../modules/twainui/TwainUI_zh_EN.ts \ - ../../../modules/twainui/qt_zh_CN.ts MY_OS = windows TARGET = $${OEM_PREFIX}TwainUI @@ -120,64 +62,6 @@ win32 { unix { - SOURCES += ../../../modules/twainui/twainui.cpp - SOURCES += ../../../modules/twainui/hg_settingdialog.cpp - HEADERS += ../../../modules/twainui/hg_settingdialog.h - - SOURCES += \ - ../../../modules/twainui/app_cfg.cpp \ - ../../../modules/twainui/HGUIGlobal.cpp \ - ../../../modules/twainui/Manager.cpp \ - ../../../modules/twainui/cfg/cJSON.c \ - ../../../modules/twainui/cfg/gb_json.cpp \ - ../../../modules/twainui/cutdialog.cpp \ - ../../../modules/twainui/cutpapertool.cpp \ - ../../../modules/twainui/device_menu.cpp \ - ../../../modules/twainui/dialog_input.cpp \ - ../../../modules/twainui/dllmain.cpp \ - ../../../modules/twainui/gaosixy.cpp \ - ../../../modules/twainui/setpicclrtool.cpp \ - ../../../utility/HGString.cpp \ - ../../../modules/twainui/widget.cpp \ - ../../../modules/twainui/dialog_progress_ui.cpp \ - ../../../modules/twainui/dialog_device_select.cpp \ - ../../../modules/twainui/dialog_twain_source_select.cpp - HEADERS += \ - ../../../modules/twainui/app_cfg.h \ - ../../../modules/twainui/HGUIGlobal.h \ - ../../../modules/twainui/Manager.h \ - ../../../modules/twainui/cfg/cJSON.h \ - ../../../modules/twainui/cfg/gb_json.h \ - ../../../modules/twainui/cutdialog.h \ - ../../../modules/twainui/cutpapertool.h \ - ../../../modules/twainui/device_menu.h \ - ../../../modules/twainui/dialog_input.h \ - ../../../modules/twainui/gaosixy.h \ - ../../../modules/twainui/setpicclrtool.h \ - ../../../utility/HGString.h \ - ../../../modules/twainui/widget.h \ - ../../../modules/twainui/dialog_progress_ui.h \ - ../../../modules/twainui/dialog_device_select.h \ - ../../../modules/twainui/dialog_twain_source_select.h - - FORMS += \ - ../../../modules/twainui/cutdialog.ui \ - ../../../modules/twainui/cutpapertool.ui \ - ../../../modules/twainui/dialog_input.ui \ - ../../../modules/twainui/setpicclrtool.ui \ - ../../../modules/twainui/widget.ui \ - ../../../modules/twainui/dialog_progress_ui.ui \ - ../../../modules/twainui/dialog_device_select.ui \ - ../../../modules/twainui/dialog_twain_source_select.ui - - RESOURCES += \ - ../../../modules/twainui/TwainUI_resource.qrc - - TRANSLATIONS += \ - ../../../modules/twainui/TwainUI_zh_CN.ts \ - ../../../modules/twainui/TwainUI_zh_EN.ts \ - ../../../modules/twainui/qt_zh_CN.ts - DISTRIBUTION = $$system(cat /etc/issue | cut -d\' \' -f1) contains(DISTRIBUTION, UnionTech) { MY_OS = uos @@ -247,6 +131,9 @@ win32 { DESTDLL_PATH = $${PWD}/../../../../release/win/$${MY_ARCH}/$${MY_CONFIGURE}/ DESTDLL_PATH = $$replace(DESTDLL_PATH, /, \\) message(DESTDLL_PATH: $$DESTDLL_PATH) + DESTHEADER_PATH = $${PWD}/../../../../sdk/include/twainui/ + DESTHEADER_PATH = $$replace(DESTHEADER_PATH, /, \\) + message(DESTHEADER_PATH: $$DESTHEADER_PATH) SRCLIB_FILE = $${DESTDIR}/$${TARGET}.lib SRCLIB_FILE = $$replace(SRCLIB_FILE, /, \\) @@ -254,12 +141,15 @@ win32 { SRCDLL_FILE = $${DESTDIR}/$${TARGET}.dll SRCDLL_FILE = $$replace(SRCDLL_FILE, /, \\) message(SRCDLL_FILE: $$SRCDLL_FILE) + SRCHEADER_FILE = $${PWD}/../../../modules/twainui/twainui.h + SRCHEADER_FILE = $$replace(SRCHEADER_FILE, /, \\) + message(SRCHEADER_FILE: $$SRCHEADER_FILE) SRCPDB_FILE = $${DESTDIR}/$${TARGET}.pdb SRCPDB_FILE = $$replace(SRCPDB_FILE, /, \\) message(SRCPDB_FILE: $$SRCPDB_FILE) QMAKE_POST_LINK += xcopy /y $$SRCLIB_FILE $$DESTLIB_PATH && xcopy /y $$SRCDLL_FILE $$DESTDLL_PATH \ - && xcopy /y $$SRCPDB_FILE $$DESTDLL_PATH + && xcopy /y $$SRCHEADER_FILE $$DESTHEADER_PATH && xcopy /y $$SRCPDB_FILE $$DESTDLL_PATH } } @@ -268,10 +158,74 @@ unix { CONFIG(release, debug|release) { DESTDLL_PATH = $$PWD/../../../../release/$${MY_OS}/$${MY_ARCH2}/ message(DESTDLL_PATH: $$DESTDLL_PATH) + DESTHEADER_PATH = $${PWD}/../../../../sdk/include/twainui/ + message(DESTHEADER_PATH: $$DESTHEADER_PATH) SRCDLL_FILE = $${DESTDIR}/lib$${TARGET}.so message(SRCDLL_FILE: $$SRCDLL_FILE) + SRCHEADER_FILE = $${PWD}/../../../modules/twainui/twainui.h + message(SRCHEADER_FILE: $$SRCHEADER_FILE) - QMAKE_POST_LINK += cp $$SRCDLL_FILE $$DESTDLL_PATH + QMAKE_POST_LINK += cp $$SRCDLL_FILE $$DESTDLL_PATH && cp $$SRCHEADER_FILE $$DESTHEADER_PATH } } + +SOURCES += ../../../modules/twainui/twainui.cpp +HEADERS += ../../../modules/twainui/twainui.h +SOURCES += ../../../modules/twainui/hg_settingdialog.cpp +HEADERS += ../../../modules/twainui/hg_settingdialog.h + +SOURCES += \ + ../../../modules/twainui/app_cfg.cpp \ + ../../../modules/twainui/HGUIGlobal.cpp \ + ../../../modules/twainui/Manager.cpp \ + ../../../modules/twainui/cfg/cJSON.c \ + ../../../modules/twainui/cfg/gb_json.cpp \ + ../../../modules/twainui/cutdialog.cpp \ + ../../../modules/twainui/cutpapertool.cpp \ + ../../../modules/twainui/device_menu.cpp \ + ../../../modules/twainui/dialog_input.cpp \ + ../../../modules/twainui/dllmain.cpp \ + ../../../modules/twainui/gaosixy.cpp \ + ../../../modules/twainui/setpicclrtool.cpp \ + ../../../utility/HGString.cpp \ + ../../../modules/twainui/widget.cpp \ + ../../../modules/twainui/dialog_progress_ui.cpp \ + ../../../modules/twainui/dialog_device_select.cpp \ + ../../../modules/twainui/dialog_twain_source_select.cpp + +HEADERS += \ + ../../../modules/twainui/app_cfg.h \ + ../../../modules/twainui/HGUIGlobal.h \ + ../../../modules/twainui/Manager.h \ + ../../../modules/twainui/cfg/cJSON.h \ + ../../../modules/twainui/cfg/gb_json.h \ + ../../../modules/twainui/cutdialog.h \ + ../../../modules/twainui/cutpapertool.h \ + ../../../modules/twainui/device_menu.h \ + ../../../modules/twainui/dialog_input.h \ + ../../../modules/twainui/gaosixy.h \ + ../../../modules/twainui/setpicclrtool.h \ + ../../../utility/HGString.h \ + ../../../modules/twainui/widget.h \ + ../../../modules/twainui/dialog_progress_ui.h \ + ../../../modules/twainui/dialog_device_select.h \ + ../../../modules/twainui/dialog_twain_source_select.h + +FORMS += \ + ../../../modules/twainui/cutdialog.ui \ + ../../../modules/twainui/cutpapertool.ui \ + ../../../modules/twainui/dialog_input.ui \ + ../../../modules/twainui/setpicclrtool.ui \ + ../../../modules/twainui/widget.ui \ + ../../../modules/twainui/dialog_progress_ui.ui \ + ../../../modules/twainui/dialog_device_select.ui \ + ../../../modules/twainui/dialog_twain_source_select.ui + +RESOURCES += \ + ../../../modules/twainui/TwainUI_resource.qrc + +TRANSLATIONS += \ + ../../../modules/twainui/TwainUI_zh_CN.ts \ + ../../../modules/twainui/TwainUI_zh_EN.ts \ + ../../../modules/twainui/qt_zh_CN.ts diff --git a/modules/twainui/dialog_device_select.h b/modules/twainui/dialog_device_select.h index b0b19981..5be7ea7b 100644 --- a/modules/twainui/dialog_device_select.h +++ b/modules/twainui/dialog_device_select.h @@ -2,7 +2,7 @@ #define DIALOG_DEVICE_SELECT_H #include -#include "twain_user/twainui.h" +#include "twainui.h" namespace Ui { class Dialog_device_select; diff --git a/modules/twainui/dialog_progress_ui.h b/modules/twainui/dialog_progress_ui.h index af34edb7..a5886495 100644 --- a/modules/twainui/dialog_progress_ui.h +++ b/modules/twainui/dialog_progress_ui.h @@ -3,7 +3,7 @@ #include #include -#include "twain_user/twainui.h" +#include "twainui.h" namespace Ui { class Dialog_progress_ui; diff --git a/modules/twainui/hg_settingdialog.h b/modules/twainui/hg_settingdialog.h index 718bafe8..8032b654 100644 --- a/modules/twainui/hg_settingdialog.h +++ b/modules/twainui/hg_settingdialog.h @@ -6,7 +6,7 @@ #include #include "cfg/gb_json.h" #include "device_menu.h" -#include "twain_user/twainui.h" +#include "twainui.h" class hg_settingdialog : public QDialog { diff --git a/modules/twainui/twainui.cpp b/modules/twainui/twainui.cpp index e2d002fa..37f5c821 100644 --- a/modules/twainui/twainui.cpp +++ b/modules/twainui/twainui.cpp @@ -1,4 +1,4 @@ -#include "twain_user/twainui.h" +#include "twainui.h" #include #include #include "dialog_device_select.h" diff --git a/modules/twainui/twainui.h b/modules/twainui/twainui.h new file mode 100644 index 00000000..fcef89f5 --- /dev/null +++ b/modules/twainui/twainui.h @@ -0,0 +1,124 @@ +#pragma once + + +#include +#include +#include +#include "sane/sane_ex.h" +#include "base/HGDef.h" +#include "twain/twain.h" + +typedef struct _dev_que_ui +{ + int id; // ID,用户选中后返回该值 + std::string name; // 设备名称 + std::string sn; // 设备序列号 +}DEVQUEUI; + +// 功能: 选择多个同型设备中的一个,模态 +// +// 参数: devs - 设备队列列表 +// +// 返回: 用户选择的设备所对应的,DEVQUE::id;或者-1代表用户放弃选择设备 +HGEXPORT int choose_scanner(const std::vector& devs); // blocked. return selected DEVQUE::id or -1 if user cancelled + + +// 功能: 应用当前设备对应的用户配置,同步 +// +// 参数: dev_name - 设备名称 +// +// device - 设备打开的句柄 +// +// api - sane_xxx API函数指针 +// +// 返回: 当前设备配置方案的名称。返回指针通过调用函数twain_ui_free来释放 +HGEXPORT char* apply_current_config(const char* dev_name, SANE_Handle device, LPSANEAPI api); +HGEXPORT int apply_given_config(const char* content, SANE_Handle device, LPSANEAPI api); // 应用指定的配置,content为配置数据流,返回0表示成功 + +// 功能: 获取配置文件内容 +// +// 参数: dev_name - 设备名称 +// +// name - 指定的文件内容,NULL表示获取默认方案的配置文件内容 +// +// 返回: 配置文件内容内存,调用twain_ui_free释放 +HGEXPORT char* get_config_content(const char* dev_name, const char* name = NULL); + +// 功能: 释放由界面模块返回的动态分配的内存,同步 +// +// 参数: buf - 内存地址 +// +// 返回: 无 +HGEXPORT void twain_ui_free(void* buf); + +enum ui_result +{ + UI_RESULT_FAILED = -1, // 一般用于界面初始化失败 + UI_RESULT_OK, // 界面正常显示 + UI_RESULT_CLOSE_NORMAL, // 界面正常关闭 + UI_RESULT_CLOSE_CANCEL, // 用户取消操作,如取消扫描…… + UI_RESULT_START_SCAN, // 用户点击了开始扫描 + UI_RESULT_CLOSE_SETTING, +}; +// 功能: 释放由界面模块返回的动态分配的内存,非模态 +// +// 参数: device - 当前打开的设备句柄 +// +// parent - 父窗口句柄 +// +// api - sane_xxx API函数指针 +// +// devName - 设备名称 +// +// with_scan - 是否显示“扫描”按钮 +// +// callback - 用户界面操作事件回调(主要为取消,扫描事件) +// +// 返回: ui_result 类型, UI_RESULT_FAILED or UI_RESULT_OK +//int show_setting_ui(SANE_Handle device, HWND parent, LPSANEAPI api, const char *devName, bool with_scan/*是否显示“扫描”按钮*/); +HGEXPORT int show_setting_ui(SANE_Handle device,HWND parent, LPSANEAPI api, const char *devName, bool with_scan/*是否显示“扫描”按钮*/,std::function callback); + +// 功能: 显示扫描进度界面,非模态 +// +// 参数: parent - 父窗口句柄 +// +// callback - 用户界面操作事件回调(主要为取消扫描事件) +// +// notify - ui接收进度通知函数,外部通过该返回的函数来通知当前扫描进度或事件 +// notify events: SANE_EVENT_WORKING - void*: unused, be NULL, flag - unused, be 0 +// SANE_EVENT_SCAN_FINISHED - void*: (utf8*)message, flag - error code (0 is success) +// SANE_EVENT_USB_DATA_RECEIVED- void* unused, be NULL, flag - unused, be 0 +// SANE_EVENT_IMAGE_OK - void* unused, be NULL, flag - unused, be 0 +// +// 返回: ui_result 类型, UI_RESULT_FAILED or UI_RESULT_OK +HGEXPORT int show_progress_ui(HWND parent, std::function callback, std::function* notify); +// 功能: 不显示扫描进度界面,设备返回错误信息指示框,非模态 +// +// 参数: parent - 父窗口句柄 +// +// events - SANE_EVENT_SCAN_FINISHED +// +// void* - (utf8*)message, +// +// flag - error code (0 is success) +// +// 返回: ui_result 类型, UI_RESULT_FAILED or UI_RESULT_OK +HGEXPORT int show_messagebox_ui(HWND parent,int event, void* msg, int flag); + +HGEXPORT int show_twain_srclist_ui(const TW_IDENTITY *vds, HGUInt count, const char* defDsName, HGWindow parent, TW_IDENTITY *ds); + +// 功能: 关闭界面 +// +// 参数: which - bit mask, 界面类型 +// +// 返回: 暂时未用,返回0即可。 +enum which_ui +{ + UI_NONE = 0, + UI_INDICATOR = 1 << 0, + UI_SETTING = 1 << 1, + UI_MSG_BOX = 1 << 2, + + UI_UNLOAD_MODULE = -1, // this command is used to notify the module will be unloaded +}; +HGEXPORT int close_ui(int which);