#include "HGSaneUI.h" #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 #include #include #ifdef HG_CMP_MSC #include "qwinwidget.hpp" extern HINSTANCE g_hInst; extern bool g_ownApplication; #endif int show_srclist_ui(const char **manuNames, const char **sanePaths, HGWindow parent, HGDll *dll, SANEAPI* saneApi, char *manuName, unsigned int maxLen) { 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); return 0; } int show_devlist_ui(const SANEAPI* saneApi, const char **devNames, HGWindow parent, SANE_Handle *handle, char *devName, unsigned int maxLen) { if (nullptr == saneApi || nullptr == handle) 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); *handle = nullptr; Dialog_Device_Select dlg(saneApi, devNames, qParent); if (dlg.exec()) { if (nullptr != devName) { std::string strDevName = dlg.GetDevName(); if (maxLen >= strDevName.size() + 1) strcpy(devName, strDevName.c_str()); } *handle = dlg.GetDevHandle(); } QCoreApplication::removeTranslator(&translator); return 0; } int show_setting_ui(const SANEAPI* saneApi, SANE_Handle handle, const char *devName, HGWindow parent, show_scan_ui_image_callback callback, void *callbackParam) { if (nullptr == saneApi || nullptr == handle) 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); hg_settingdialog dlg(saneApi, handle, devName, callback, callbackParam, qParent); dlg.exec(); QCoreApplication::removeTranslator(&translator); return 0; } int show_scan_ui(const SANEAPI* saneApi, SANE_Handle handle, const char *devName, HGWindow parent, show_scan_ui_image_callback callback, void *callbackParam) { if (nullptr == saneApi || nullptr == handle) 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); Dialog_Device_Scan dlg(saneApi, handle, devName, callback, callbackParam, qParent); dlg.exec(); QCoreApplication::removeTranslator(&translator); return 0; } 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; } #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