This commit is contained in:
luoliangyi 2023-05-12 15:14:26 +08:00
commit 9eeab118a6
14 changed files with 83 additions and 80 deletions

View File

@ -7,5 +7,4 @@ show_devlist_ui
show_setting_ui
show_scan_ui
show_msgbox_info
show_msgbox_warning
show_twain_srclist_ui
show_msgbox_warning

View File

@ -34,14 +34,11 @@ win32 {
SOURCES += ../../../modules/saneui/qmfcapp.cpp
SOURCES += ../../../modules/saneui/qwinhost.cpp
SOURCES += ../../../modules/saneui/qwinwidget.cpp
SOURCES += ../../../modules/saneui/dialog_twain_source_select.cpp
HEADERS += ../../../modules/saneui/qmfcapp.hpp
HEADERS += ../../../modules/saneui/qwinhost.hpp
HEADERS += ../../../modules/saneui/qwinwidget.hpp
HEADERS += ../../../modules/saneui/dialog_twain_source_select.h
FORMS += ../../../modules/saneui/dialog_twain_source_select.ui
MY_OS = windows
TARGET = $${OEM_PREFIX}SaneUI

View File

@ -7,5 +7,5 @@ apply_current_config
twain_ui_free
show_setting_ui
show_progress_ui
show_messagebox_ui
show_messagebox_ui
show_twain_srclist_ui

View File

@ -152,21 +152,6 @@ win32 {
}
}
unix {
CONFIG(release, debug|release) {
DESTDLL_PATH = $$PWD/../../../../release/$${MY_OS}/$${MY_ARCH2}/
message(DESTDLL_PATH: $$DESTDLL_PATH)
SRCDLL_FILE = $${DESTDIR}/lib$${TARGET}.so
message(SRCDLL_FILE: $$SRCDLL_FILE)
SRCHEADER_FILE = $${PWD}/../../../modules/twainui/*.h
message(SRCHEADER_FILE: $$SRCHEADER_FILE)
QMAKE_POST_LINK += cp $$SRCDLL_FILE $$DESTDLL_PATH
}
}
SOURCES += \
../../../modules/twainui/Manager.cpp \
../../../modules/twainui/cfg/cJSON.c \
@ -181,7 +166,8 @@ SOURCES += \
../../../utility/HGString.cpp \
../../../modules/twainui/widget.cpp \
../../../modules/twainui/dialog_progress_ui.cpp \
../../../modules/twainui/dialog_device_select.cpp
../../../modules/twainui/dialog_device_select.cpp \
../../../modules/twainui/dialog_twain_source_select.cpp
HEADERS += \
../../../modules/twainui/Manager.h \
../../../modules/twainui/cfg/cJSON.h \
@ -195,7 +181,8 @@ HEADERS += \
../../../utility/HGString.h \
../../../modules/twainui/widget.h \
../../../modules/twainui/dialog_progress_ui.h \
../../../modules/twainui/dialog_device_select.h
../../../modules/twainui/dialog_device_select.h \
../../../modules/twainui/dialog_twain_source_select.h
FORMS += \
../../../modules/twainui/cutdialog.ui \
@ -204,7 +191,8 @@ FORMS += \
../../../modules/twainui/setpicclrtool.ui \
../../../modules/twainui/widget.ui \
../../../modules/twainui/dialog_progress_ui.ui \
../../../modules/twainui/dialog_device_select.ui
../../../modules/twainui/dialog_device_select.ui \
../../../modules/twainui/dialog_twain_source_select.ui
RESOURCES += \
../../../modules/twainui/TwainUI_resource.qrc

View File

@ -62,7 +62,7 @@ win32 {
DEF_FILE = HGTwainUser.def
LIBS += -lgdi32 -lgdiplus -ldbghelp -luser32
LIBS += -L$$PWD/../../build/$${MY_OS}/$${OEM_NAME}/$${MY_ARCH}/$${MY_CONFIGURE} -l$${OEM_PREFIX}Base -l$${OEM_PREFIX}SaneUI
LIBS += -L$$PWD/../../build/$${MY_OS}/$${OEM_NAME}/$${MY_ARCH}/$${MY_CONFIGURE} -l$${OEM_PREFIX}Base -l$${OEM_PREFIX}TwainUI
}
unix {
@ -99,7 +99,7 @@ unix {
QMAKE_LFLAGS += -z defs -B direct
LIBS += -lpthread -ldl
LIBS += -L$$PWD/../../build/$${MY_OS}/$${OEM_NAME}/$${MY_ARCH}/$${MY_CONFIGURE} -l$${OEM_PREFIX2}Base -l$${OEM_PREFIX2}SaneUI
LIBS += -L$$PWD/../../build/$${MY_OS}/$${OEM_NAME}/$${MY_ARCH}/$${MY_CONFIGURE} -l$${OEM_PREFIX2}Base -l$${OEM_PREFIX2}TwainUI
}
INCLUDEPATH += $$PWD/../../../modules

View File

@ -2,9 +2,6 @@
#include "dialog_source_select.h"
#include "dialog_device_select.h"
#include "dialog_device_scan.h"
#ifdef HG_CMP_MSC
#include "dialog_twain_source_select.h"
#endif
#include "hg_settingdialog.h"
#include "lang/app_language.h"
#include <QMessageBox>
@ -236,43 +233,3 @@ int show_msgbox_warning(const char *title, const char *text, HGWindow parent)
QMessageBox::warning(qParent, QString::fromUtf8(title), QString::fromUtf8(text));
return 0;
}
#if defined(HG_CMP_MSC)
int show_twain_srclist_ui(DSMENTRYPROC dsmProc, const TW_IDENTITY *appId, HGWindow parent, TW_IDENTITY *ds)
{
if (nullptr == dsmProc || nullptr == appId || nullptr == ds)
return -1;
QWidget *qParent = nullptr;
#ifdef HG_CMP_MSC
if (!g_ownApplication)
g_ownApplication = QMfcApp::pluginInstance(g_hInst);
QWinWidget win(parent);
if (nullptr != parent)
{
win.showCentered();
qParent = &win;
}
#else
qParent = parent;
#endif
QTranslator translator;
int cp = lang_get_cur_code_page();
if (20127 == cp)
translator.load(":translation/SaneUI_zh_EN.qm");
else
translator.load(":translation/SaneUI_zh_CN.qm");
QCoreApplication::installTranslator(&translator);
memset(ds, 0, sizeof(TW_IDENTITY));
Dialog_Twain_Source_Select dlg(dsmProc, appId, qParent);
if (dlg.exec())
{
dlg.GetIdentify(ds);
}
QCoreApplication::removeTranslator(&translator);
return 0;
}
#endif

View File

@ -4,9 +4,6 @@
#include "../base/HGDef.h"
#include "../base/HGDll.h"
#include "sane/sane_ex.h"
#if defined(HG_CMP_MSC)
#include "twain/twain.h"
#endif
typedef void (*show_scan_ui_image_callback)(const SANE_Parameters *imageFormat, const SANE_Byte *imageData, void * callbackParam);
@ -22,8 +19,4 @@ HGEXPORT int show_scan_ui(const SANEAPI* saneApi, SANE_Handle handle, const char
HGEXPORT int show_msgbox_info(const char *title, const char *text, HGWindow parent);
HGEXPORT int show_msgbox_warning(const char *title, const char *text, HGWindow parent);
#if defined(HG_CMP_MSC)
HGEXPORT int show_twain_srclist_ui(DSMENTRYPROC dsmProc, const TW_IDENTITY *appId, HGWindow parent, TW_IDENTITY *ds);
#endif
#endif

View File

@ -6,6 +6,7 @@
#include "../base/HGEvent.h"
#include "../base/HGThread.h"
#include "twain/twain.h"
#include "twain_user/twainui.h"
#include "saneui/HGSaneUI.h"
#include <vector>
#include <map>

View File

@ -45,7 +45,7 @@ int Manager::showDeviceSelect(const std::vector<DEVQUEUI>& devs)
int Manager::showSettingUi(SANE_Handle device, HWND parent, LPSANEAPI api, const char *devName, bool with_scan, std::function<void (ui_result)> callback)
{
m_device = device;
m_settingUiParent = nullptr;
m_settingUiParent = parent;
memcpy(&m_api, api, sizeof(m_api));
m_devName = devName;
m_with_scan = with_scan;
@ -72,7 +72,7 @@ int Manager::showProgressUi(HWND parent, std::function<void (ui_result)> callbac
int Manager::showMessageBoxUi(HWND parent, int event, void *msg, int flag)
{
m_messageBoxUiParent = nullptr;
m_messageBoxUiParent = parent;
m_notifyEvent = event;
m_message = (char*)msg;
m_flag = flag;
@ -84,6 +84,23 @@ int Manager::showMessageBoxUi(HWND parent, int event, void *msg, int flag)
return 0;
}
int Manager::showTwainSrcUi(DSMENTRYPROC dsmProc, const TW_IDENTITY *appId, HGWindow parent, TW_IDENTITY *ds)
{
m_TwainSrcUiparent = parent;
m_dsmProc = dsmProc;
memcpy(&m_appId, appId, sizeof(TW_IDENTITY));
memset(&ds, 0, sizeof(TW_IDENTITY));
memset(&m_ds, 0, sizeof(TW_IDENTITY));
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
void Manager::on_init()
{
m_langCode = lang_get_cur_code_page();
@ -166,3 +183,25 @@ void Manager::on_createMessageBoxUi()
msg->setModal(true);
msg->show();
}
void Manager::on_createTwainSrcUi()
{
QWidget *qParent = nullptr;
#ifdef HG_CMP_MSC
if (nullptr != m_TwainSrcUiparent)
{
QWinWidget *win = new QWinWidget(m_TwainSrcUiparent);
win->showCentered();
qParent = win;
}
#else
qParent = m_TwainSrcUiparent;
#endif
Dialog_Twain_Source_Select dlg(m_dsmProc, &m_appId, qParent);
if (dlg.exec())
{
dlg.GetIdentify(&m_ds);
}
::PostThreadMessage(m_DeviceSelectThreadId, WM_QUIT, 0, 0);
}

View File

@ -5,6 +5,7 @@
#include "dialog_device_select.h"
#include "hg_settingdialog.h"
#include "dialog_progress_ui.h"
#include "dialog_twain_source_select.h"
class Manager : public QObject
{
@ -18,6 +19,7 @@ public:
int showSettingUi(SANE_Handle device, HWND settingUiParent, LPSANEAPI api, const char *devName, bool with_scan, std::function<void(ui_result)> callback);
int showProgressUi(HWND parent, std::function<void (ui_result)> callback, std::function<void (int, void *, int)> *notify);
int showMessageBoxUi(HWND parent, int event, void *msg, int flag);
int showTwainSrcUi(DSMENTRYPROC dsmProc, const TW_IDENTITY *appId, HGWindow parent, TW_IDENTITY *ds);
signals:
void init();
@ -25,6 +27,7 @@ signals:
void createSettingUi();
void createProgressUi();
void createMessageBoxUi();
void createTwainSrcUi();
private slots:
void on_init();
@ -32,6 +35,7 @@ private slots:
void on_createSettingUi();
void on_createProgressUi();
void on_createMessageBoxUi();
void on_createTwainSrcUi();
private:
QTranslator m_translator;
@ -62,4 +66,9 @@ private:
int m_notifyEvent;
std::string m_message;
int m_flag;
DSMENTRYPROC m_dsmProc;
TW_IDENTITY m_appId;
HGWindow m_TwainSrcUiparent;
TW_IDENTITY m_ds;
};

View File

@ -1,7 +1,9 @@
#ifndef DIALOG_TWAIN_SOURCE_SELECT_H
#define DIALOG_TWAIN_SOURCE_SELECT_H
#include "HGSaneUI.h"
#include "base/HGDef.h"
#include "base/HGInc.h"
#include "twain/twain.h"
#include <QDialog>
namespace Ui {

View File

@ -3,6 +3,7 @@
#include "dialog_device_select.h"
#include "dialog_progress_ui.h"
#include "hg_settingdialog.h"
#include "dialog_twain_source_select.h"
#include "device_menu.h"
#include "base/HGBase.h"
#include "Manager.h"
@ -143,3 +144,20 @@ int show_messagebox_ui(HWND parent, int event, void *msg, int flag)
return g_manager->showMessageBoxUi(parent, event, msg, flag);
}
int show_twain_srclist_ui(DSMENTRYPROC dsmProc, const TW_IDENTITY *appId, HGWindow parent, TW_IDENTITY *ds)
{
if (!qApp)
{
HGBase_CreateEvent(HGTRUE, HGFALSE, &g_event);
HGBase_OpenThread(ThreadFunc, NULL, &g_hThread);
HGBase_WaitEvent(g_event);
}
if (NULL == g_manager)
{
g_manager = new Manager;
}
return g_manager->showTwainSrcUi(dsmProc, appId, parent, ds);
}