code_app/modules/saneui/HGSaneUI.cpp

235 lines
6.0 KiB
C++
Raw Normal View History

#include "HGSaneUI.h"
#include "dialog_source_select.h"
#include "dialog_device_select.h"
#include "dialog_device_scan.h"
#include "hg_settingdialog.h"
2023-03-31 06:19:54 +00:00
#include "lang/app_language.h"
#include <QMessageBox>
2023-03-31 06:19:54 +00:00
#include <QTranslator>
2023-03-31 06:49:54 +00:00
#include <QCoreApplication>
#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);
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);
*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);
if (nullptr != parent)
{
win.showCentered();
qParent = &win;
}
#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);
*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();
}
2023-03-31 09:47:59 +00:00
QCoreApplication::removeTranslator(&translator);
return 0;
}
int show_setting_ui(const SANEAPI* saneApi, SANE_Handle handle, const char *devName, HGWindow parent)
{
if (nullptr == saneApi || nullptr == handle)
return -1;
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);
if (nullptr != parent)
{
win.showCentered();
qParent = &win;
}
2023-03-31 06:19:54 +00:00
#else
qParent = parent;
#endif
QTranslator translator;
QTranslator translator2;
2023-03-31 06:19:54 +00:00
int cp = lang_get_cur_code_page();
if (20127 == cp)
{
2023-03-31 06:19:54 +00:00
translator.load(":translation/SaneUI_zh_EN.qm");
}
2023-03-31 06:19:54 +00:00
else
{
2023-03-31 06:19:54 +00:00
translator.load(":translation/SaneUI_zh_CN.qm");
translator2.load(":translation/qt_zh_CN.qm");
}
2023-03-31 06:19:54 +00:00
QCoreApplication::installTranslator(&translator);
if (20127 != cp)
QCoreApplication::installTranslator(&translator2);
2023-03-31 06:19:54 +00:00
hg_settingdialog dlg(saneApi, handle, devName, qParent);
dlg.exec();
2023-03-31 09:47:59 +00:00
QCoreApplication::removeTranslator(&translator);
if (20127 != cp)
QCoreApplication::removeTranslator(&translator2);
return 0;
}
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)
{
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);
if (nullptr != parent)
{
win.showCentered();
qParent = &win;
}
#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);
dlg.exec();
2023-03-31 09:47:59 +00:00
QCoreApplication::removeTranslator(&translator);
return 0;
}
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);
if (nullptr != parent)
{
win.showCentered();
qParent = &win;
}
2023-04-04 08:36:19 +00:00
#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);
if (nullptr != parent)
{
win.showCentered();
qParent = &win;
}
2023-04-04 08:36:19 +00:00
#else
qParent = parent;
#endif
QMessageBox::warning(qParent, QString::fromUtf8(title), QString::fromUtf8(text));
return 0;
}