#include "twainui.h" #include "dialog_device_select.h" #include "dialog_progress_ui.h" #include "hg_settingdialog.h" #ifdef HG_CMP_MSC #include "qwinwidget.hpp" extern HINSTANCE g_hInst; extern bool g_ownApplication; #endif int choose_scanner(const std::vector &devs) { #ifdef HG_CMP_MSC if (!g_ownApplication) g_ownApplication = QMfcApp::pluginInstance(g_hInst); #endif QTranslator translator; int cp = lang_get_cur_code_page(); if (20127 == cp) translator.load(":translation/TwainUI_zh_EN.qm"); else translator.load(":translation/TwainUI_zh_CN.qm"); QCoreApplication::installTranslator(&translator); Dialog_device_select dlg(devs); if (dlg.exec()) { return dlg.getDevId(); QCoreApplication::removeTranslator(&translator); } else { return -1; QCoreApplication::removeTranslator(&translator); } } char *apply_current_config(const char *dev_name, SANE_Handle device, LPSANEAPI api) { return NULL; } void twain_ui_free(void *buf) { if (buf != nullptr) { delete buf; buf = nullptr; } } int show_setting_ui(SANE_Handle device, HWND parent, LPSANEAPI api, bool with_scan) { if (nullptr == api || nullptr == device) 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/TwainUI_zh_EN.qm"); else translator.load(":translation/TwainUI_zh_CN.qm"); QCoreApplication::installTranslator(&translator); hg_settingdialog dlg(device, api, with_scan, qParent); dlg.exec(); QCoreApplication::removeTranslator(&translator); int ret = dlg.getCloseButtonCliked(); if (ret == dlg.closeButtonScan) return UI_RESULT_START_SCAN; else if (ret == dlg.closeButtonCancel) return UI_RESULT_CLOSE_CANCEL; else return UI_RESULT_CLOSE_NORMAL; } int show_progress_ui(HWND parent, std::function callback, std::function *notify) { 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/TwainUI_zh_EN.qm"); else translator.load(":translation/TwainUI_zh_CN.qm"); QCoreApplication::installTranslator(&translator); Dialog_progress_ui dlg(callback, notify, qParent); dlg.show(); QCoreApplication::removeTranslator(&translator); return 0; }