2023-03-28 10:38:35 +00:00
|
|
|
|
#include "HGSaneUI.h"
|
2023-04-04 03:17:09 +00:00
|
|
|
|
#include "dialog_source_select.h"
|
|
|
|
|
#include "dialog_device_select.h"
|
|
|
|
|
#include "dialog_device_scan.h"
|
2023-04-04 05:20:45 +00:00
|
|
|
|
#ifdef HG_CMP_MSC
|
2023-04-04 05:18:13 +00:00
|
|
|
|
#include "dialog_twain_source_select.h"
|
2023-04-04 05:20:45 +00:00
|
|
|
|
#endif
|
2023-03-31 08:39:02 +00:00
|
|
|
|
#include "hg_settingdialog.h"
|
2023-03-31 06:19:54 +00:00
|
|
|
|
#include "lang/app_language.h"
|
2023-03-29 14:46:41 +00:00
|
|
|
|
#include <QMessageBox>
|
2023-03-31 06:19:54 +00:00
|
|
|
|
#include <QTranslator>
|
2023-03-31 06:49:54 +00:00
|
|
|
|
#include <QCoreApplication>
|
2023-03-29 14:46:41 +00:00
|
|
|
|
|
|
|
|
|
#ifdef HG_CMP_MSC
|
2023-03-30 10:20:26 +00:00
|
|
|
|
#include "qwinwidget.hpp"
|
2023-03-29 14:46:41 +00:00
|
|
|
|
extern HINSTANCE g_hInst;
|
|
|
|
|
extern bool g_ownApplication;
|
|
|
|
|
#endif
|
2023-03-28 10:38:35 +00:00
|
|
|
|
|
2023-04-04 03:17:09 +00:00
|
|
|
|
int show_srclist_ui(const char **manuNames, const char **sanePaths, HGWindow parent, HGDll *dll,
|
2023-04-03 09:38:29 +00:00
|
|
|
|
SANEAPI* saneApi, char *manuName, unsigned int maxLen)
|
2023-04-03 09:13:53 +00:00
|
|
|
|
{
|
2023-04-04 03:17:09 +00:00
|
|
|
|
if (nullptr == manuNames || nullptr == sanePaths || nullptr == dll || nullptr == saneApi)
|
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
|
|
QWidget *qParent = nullptr;
|
|
|
|
|
#ifdef HG_CMP_MSC
|
|
|
|
|
if (!g_ownApplication)
|
|
|
|
|
g_ownApplication = QMfcApp::pluginInstance(g_hInst);
|
|
|
|
|
QWinWidget win(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);
|
|
|
|
|
|
|
|
|
|
*dll = nullptr;
|
|
|
|
|
memset(saneApi, 0, sizeof(SANEAPI));
|
|
|
|
|
Dialog_Source_Select dlg(manuNames, sanePaths, qParent);
|
|
|
|
|
if (dlg.exec())
|
|
|
|
|
{
|
|
|
|
|
if (nullptr != manuName)
|
|
|
|
|
{
|
|
|
|
|
std::string strManuName = dlg.GetManuName();
|
|
|
|
|
if (maxLen >= strManuName.size() + 1)
|
|
|
|
|
strcpy(manuName, strManuName.c_str());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
*dll = dlg.GetDll();
|
|
|
|
|
dlg.GetSaneAPI(saneApi);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QCoreApplication::removeTranslator(&translator);
|
2023-04-03 09:13:53 +00:00
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int show_devlist_ui(const SANEAPI* saneApi, HGWindow parent, SANE_Handle *handle, char *devName, unsigned int maxLen)
|
2023-03-28 10:38:35 +00:00
|
|
|
|
{
|
2023-03-29 08:16:19 +00:00
|
|
|
|
if (nullptr == saneApi || nullptr == handle)
|
|
|
|
|
return -1;
|
2023-03-29 10:04:59 +00:00
|
|
|
|
|
2023-03-29 08:16:19 +00:00
|
|
|
|
QWidget *qParent = nullptr;
|
|
|
|
|
#ifdef HG_CMP_MSC
|
2023-03-29 14:46:41 +00:00
|
|
|
|
if (!g_ownApplication)
|
|
|
|
|
g_ownApplication = QMfcApp::pluginInstance(g_hInst);
|
|
|
|
|
QWinWidget win(parent);
|
|
|
|
|
win.showCentered();
|
|
|
|
|
qParent = &win;
|
2023-03-29 08:16:19 +00:00
|
|
|
|
#else
|
|
|
|
|
qParent = parent;
|
|
|
|
|
#endif
|
|
|
|
|
|
2023-03-31 06:19:54 +00:00
|
|
|
|
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);
|
|
|
|
|
|
2023-03-29 08:16:19 +00:00
|
|
|
|
*handle = nullptr;
|
|
|
|
|
Dialog_Device_Select dlg(saneApi, qParent);
|
|
|
|
|
if (dlg.exec())
|
|
|
|
|
{
|
|
|
|
|
if (nullptr != devName)
|
|
|
|
|
{
|
|
|
|
|
std::string strDevName = dlg.GetDevName();
|
|
|
|
|
if (maxLen >= strDevName.size() + 1)
|
|
|
|
|
strcpy(devName, strDevName.c_str());
|
|
|
|
|
}
|
2023-03-28 10:38:35 +00:00
|
|
|
|
|
2023-03-29 08:16:19 +00:00
|
|
|
|
*handle = dlg.GetDevHandle();
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-31 09:47:59 +00:00
|
|
|
|
QCoreApplication::removeTranslator(&translator);
|
2023-03-29 08:16:19 +00:00
|
|
|
|
return 0;
|
2023-03-28 10:38:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
2023-04-03 09:13:53 +00:00
|
|
|
|
int show_setting_ui(const SANEAPI* saneApi, SANE_Handle handle, const char *devName, HGWindow parent)
|
2023-03-28 10:38:35 +00:00
|
|
|
|
{
|
2023-03-29 08:16:19 +00:00
|
|
|
|
if (nullptr == saneApi || nullptr == handle)
|
|
|
|
|
return -1;
|
2023-03-29 10:04:59 +00:00
|
|
|
|
|
2023-03-31 06:19:54 +00:00
|
|
|
|
QWidget *qParent = nullptr;
|
|
|
|
|
#ifdef HG_CMP_MSC
|
|
|
|
|
if (!g_ownApplication)
|
|
|
|
|
g_ownApplication = QMfcApp::pluginInstance(g_hInst);
|
|
|
|
|
QWinWidget win(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);
|
|
|
|
|
|
2023-04-03 03:06:14 +00:00
|
|
|
|
hg_settingdialog dlg(saneApi, handle, devName, qParent);
|
2023-03-31 08:39:02 +00:00
|
|
|
|
dlg.exec();
|
2023-03-31 09:47:59 +00:00
|
|
|
|
QCoreApplication::removeTranslator(&translator);
|
2023-03-29 08:16:19 +00:00
|
|
|
|
return 0;
|
|
|
|
|
}
|
2023-03-28 10:38:35 +00:00
|
|
|
|
|
2023-04-03 09:13:53 +00:00
|
|
|
|
int show_scan_ui(const SANEAPI* saneApi, SANE_Handle handle, const char *devName, HGWindow parent,
|
2023-04-03 03:06:14 +00:00
|
|
|
|
show_scan_ui_image_callback callback, void *callbackParam)
|
2023-03-29 08:16:19 +00:00
|
|
|
|
{
|
|
|
|
|
if (nullptr == saneApi || nullptr == handle)
|
|
|
|
|
return -1;
|
2023-03-29 10:04:59 +00:00
|
|
|
|
|
|
|
|
|
QWidget *qParent = nullptr;
|
|
|
|
|
#ifdef HG_CMP_MSC
|
2023-03-29 14:46:41 +00:00
|
|
|
|
if (!g_ownApplication)
|
|
|
|
|
g_ownApplication = QMfcApp::pluginInstance(g_hInst);
|
|
|
|
|
QWinWidget win(parent);
|
|
|
|
|
win.showCentered();
|
|
|
|
|
qParent = &win;
|
2023-03-29 10:04:59 +00:00
|
|
|
|
#else
|
|
|
|
|
qParent = parent;
|
|
|
|
|
#endif
|
|
|
|
|
|
2023-03-31 06:19:54 +00:00
|
|
|
|
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);
|
|
|
|
|
|
2023-04-03 03:06:14 +00:00
|
|
|
|
Dialog_Device_Scan dlg(saneApi, handle, devName, callback, callbackParam, qParent);
|
2023-03-29 10:04:59 +00:00
|
|
|
|
dlg.exec();
|
2023-03-31 09:47:59 +00:00
|
|
|
|
QCoreApplication::removeTranslator(&translator);
|
2023-03-29 08:16:19 +00:00
|
|
|
|
return 0;
|
2023-03-28 10:38:35 +00:00
|
|
|
|
}
|
2023-04-04 05:18:13 +00:00
|
|
|
|
|
2023-04-04 08:36:19 +00:00
|
|
|
|
int show_msgbox_info(const char *title, const char *text, HGWindow parent)
|
|
|
|
|
{
|
|
|
|
|
if (nullptr == title || nullptr == text)
|
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
|
|
QWidget *qParent = nullptr;
|
|
|
|
|
#ifdef HG_CMP_MSC
|
|
|
|
|
if (!g_ownApplication)
|
|
|
|
|
g_ownApplication = QMfcApp::pluginInstance(g_hInst);
|
|
|
|
|
QWinWidget win(parent);
|
|
|
|
|
win.showCentered();
|
|
|
|
|
qParent = &win;
|
|
|
|
|
#else
|
|
|
|
|
qParent = parent;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
QMessageBox::information(qParent, QString::fromUtf8(title), QString::fromUtf8(text));
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int show_msgbox_warning(const char *title, const char *text, HGWindow parent)
|
|
|
|
|
{
|
|
|
|
|
if (nullptr == title || nullptr == text)
|
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
|
|
QWidget *qParent = nullptr;
|
|
|
|
|
#ifdef HG_CMP_MSC
|
|
|
|
|
if (!g_ownApplication)
|
|
|
|
|
g_ownApplication = QMfcApp::pluginInstance(g_hInst);
|
|
|
|
|
QWinWidget win(parent);
|
|
|
|
|
win.showCentered();
|
|
|
|
|
qParent = &win;
|
|
|
|
|
#else
|
|
|
|
|
qParent = parent;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
QMessageBox::warning(qParent, QString::fromUtf8(title), QString::fromUtf8(text));
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2023-04-04 05:18:13 +00:00
|
|
|
|
#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);
|
|
|
|
|
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
|