settings and bugfixes

This commit is contained in:
leca 2025-03-23 20:55:34 +03:00
parent e58d6068e0
commit d17695a7fa
14 changed files with 487 additions and 395 deletions

View File

@ -82,6 +82,7 @@ set(TRANSLATION_SOURCES
main.cpp
mainwindow.cpp mainwindow.h scenes/mainwindow.ui
outputdialog.h outputdialog.cpp scenes/outputdialog.ui
settingsdialog.h settingsdialog.cpp scenes/settingsdialog.ui
)
if (BUILD_EMAIL_TO_TEXT_MODE)

View File

@ -1,4 +1,4 @@
from checks_parser_base_ubuntu
FROM checks_parser_base_ubuntu
#for envsubst
RUN DEBIAN_FRONTEND=noninteractive apt install -y gettext

View File

@ -3,7 +3,7 @@ services:
image: checks_parser_base_ubuntu:latest
build:
context: .
dockerfile: deploy/base-docker/ubuntu.Dockerfile
dockerfile: deploy/base-docker/ubuntu/Dockerfile
appimage:
image: checks_parser_appimage:latest
build:

View File

@ -20,6 +20,7 @@
#include <QStackedLayout>
#include <QTextStream>
#include <QTranslator>
#include <settingsdialog.h>
#ifdef BUILD_EMAIL_TO_TEXT_MODE
# include <emailtextscene.h>
#endif
@ -69,8 +70,6 @@ int main(int argc, char *argv[]) {
translator.load(":/translation/" + lang + ".qm");
app.installTranslator(&translator);
QUiLoader loader;
#endif
QWidget *window = new QWidget();
@ -81,7 +80,16 @@ int main(int argc, char *argv[]) {
sceneLayout->addWidget(mainwindowscene);
for (auto btn : ((MainWindow *)mainwindowscene)->findChildren<QPushButton *>()) {
//Settings button setup
QPushButton *settingsButton = ((MainWindow *)mainwindowscene)->findChild<QPushButton *>("settings_button");
QObject::connect(settingsButton, &QPushButton::clicked, [&]() {
SettingsDialog d;
d.show();
d.exec();
});
for (auto &btn : ((MainWindow *)mainwindowscene)->findChildren<QPushButton *>()) {
if (btn->objectName() == "settings_button") continue;
btn->hide();
}

View File

@ -5,6 +5,7 @@
<file>scenes/ocrscene.ui</file>
<file>scenes/mainwindow.ui</file>
<file>scenes/ofdscene.ui</file>
<file>scenes/settingsdialog.ui</file>
<file>scenes/solvecaptchadialog.ui</file>
</qresource>
</RCC>

View File

@ -31,32 +31,6 @@
<property name="verticalSpacing">
<number>6</number>
</property>
<item row="0" column="1">
<widget class="QPushButton" name="ocr_button">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Optical Character Recognition</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../build/Desktop-Debug/media.qrc">
<normaloff>:/icons/assets/icons/OCR.svg</normaloff>:/icons/assets/icons/OCR.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>128</width>
<height>128</height>
</size>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QPushButton" name="text_from_email_button">
<property name="sizePolicy">
@ -101,7 +75,33 @@
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<item row="0" column="1">
<widget class="QPushButton" name="ocr_button">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Optical Character Recognition</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../build/Desktop-Debug/media.qrc">
<normaloff>:/icons/assets/icons/OCR.svg</normaloff>:/icons/assets/icons/OCR.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>128</width>
<height>128</height>
</size>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="ofd_button">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
@ -124,6 +124,19 @@
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="settings_button">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Settings</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>

290
scenes/settingsdialog.ui Normal file
View File

@ -0,0 +1,290 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>settingsdialog</class>
<widget class="QDialog" name="settingsdialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>693</width>
<height>786</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QScrollArea" name="scrollArea">
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>673</width>
<height>724</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout">
<item row="15" column="1">
<widget class="QCheckBox" name="printTotalCheckBox">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="label_15">
<property name="text">
<string>Goods net weight position</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QSpinBox" name="goodsNamePositionSpin"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>Stores modules url</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_13">
<property name="text">
<string>Goods quantity position</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="OFDModulesDirEdit"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>OFD modules url</string>
</property>
</widget>
</item>
<item row="14" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Print header</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QSpinBox" name="goodsPricePerUnitPositionSpin"/>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="storesModulesURLEdit"/>
</item>
<item row="9" column="0">
<widget class="QLabel" name="label_14">
<property name="text">
<string>Goods quantity alias</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>OFD modules directory</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLineEdit" name="goodsNameAliasEdit"/>
</item>
<item row="15" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Print total</string>
</property>
</widget>
</item>
<item row="13" column="1">
<widget class="QLineEdit" name="goodsTotalAliasEdit"/>
</item>
<item row="8" column="1">
<widget class="QSpinBox" name="goodsQuantityPositionSpin"/>
</item>
<item row="11" column="0">
<widget class="QLabel" name="label_16">
<property name="text">
<string>Goods net weight alias</string>
</property>
</widget>
</item>
<item row="10" column="1">
<widget class="QSpinBox" name="goodsNetWeightPositionSpin"/>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="OFDModulesURLEdit"/>
</item>
<item row="13" column="0">
<widget class="QLabel" name="label_18">
<property name="text">
<string>Goods total alias</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="storesModulesDirEdit"/>
</item>
<item row="7" column="1">
<widget class="QLineEdit" name="goodsPricePerUnitAliasEdit"/>
</item>
<item row="9" column="1">
<widget class="QLineEdit" name="goodsQuantityAliasEdit"/>
</item>
<item row="11" column="1">
<widget class="QLineEdit" name="goodsNetWeightAliasEdit"/>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>Goods name position</string>
</property>
</widget>
</item>
<item row="14" column="1">
<widget class="QCheckBox" name="printHeaderCheckBox">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Goods name alias</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>Goods price per unit position</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Stores modules directory</string>
</property>
</widget>
</item>
<item row="12" column="0">
<widget class="QLabel" name="label_17">
<property name="text">
<string>Goods total position</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="OFDModulesDirChooseButton">
<property name="text">
<string>Choose</string>
</property>
</widget>
</item>
<item row="12" column="1">
<widget class="QSpinBox" name="goodsTotalPositionSpin"/>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_12">
<property name="text">
<string>Goods price per unit alias</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="storedModulesDirChooseButton">
<property name="text">
<string>Choose</string>
</property>
</widget>
</item>
<item row="16" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Language</string>
</property>
</widget>
</item>
<item row="16" column="1">
<widget class="QComboBox" name="languageComboBox">
<item>
<property name="text">
<string>en_US</string>
</property>
</item>
<item>
<property name="text">
<string>ru_RU</string>
</property>
</item>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
</item>
<item row="1" column="0">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Save</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>settingsdialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>settingsdialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -1,7 +1,10 @@
#include "settingsdialog.h"
#include "settings/settings.h"
#include "ui_settingsdialog.h"
#include "utils/utils.h"
#include <settings/settings.h>
#include <utils/utils.h>
#include <iostream>
#include <QMessageBox>
@ -34,10 +37,14 @@ SettingsDialog::SettingsDialog(QWidget *parent)
ui->printHeaderCheckBox->setChecked(this->settings.get_all_settings()["print_header"]);
ui->printTotalCheckBox->setChecked(this->settings.get_all_settings()["print_total"]);
std::cout << settings.get_all_settings() << std::endl;
int currentLanguageIndex = 0;
if (!this->settings.get_all_settings().contains("language")) {
bool languageSettingPresent = false;
//TODO: check that "language" exists before getting its value
languageSettingPresent = settings.get_all_settings().find("language") != settings.get_all_settings().end();
if (languageSettingPresent) {
currentLanguageIndex = ui->languageComboBox->findText(QLocale::system().name());
if (currentLanguageIndex < 0) {
currentLanguageIndex = ui->languageComboBox->findText("en_US");
@ -137,7 +144,11 @@ void SettingsDialog::on_buttonBox_accepted() { this->settings.flush(); }
void SettingsDialog::on_buttonBox_rejected() { this->close(); }
void SettingsDialog::on_languageComboBox_currentTextChanged(const QString &changed) {
if (this->settings.get_all_settings().contains("language")) {
bool languageSettingPresent = false;
languageSettingPresent = settings.get_all_settings().find("language") != settings.get_all_settings().end();
if (languageSettingPresent) {
if (changed == QString::fromStdString(this->settings.get_all_settings()["language"])) return;
} else {
if (changed == QLocale::system().name()) return;
@ -151,4 +162,3 @@ void SettingsDialog::on_languageComboBox_currentTextChanged(const QString &chang
infoDialog.setWindowTitle(tr("Restart required"));
infoDialog.exec();
}

View File

@ -56,6 +56,8 @@ private slots:
private:
Ui::settingsdialog *ui;
public:
bool settingsExist();
};
#endif // SETTINGSDIALOG_H

View File

@ -1,306 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>settingsdialog</class>
<widget class="QDialog" name="settingsdialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>599</width>
<height>799</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>310</x>
<y>740</y>
<width>251</width>
<height>32</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Save</set>
</property>
</widget>
<widget class="QScrollArea" name="scrollArea">
<property name="geometry">
<rect>
<x>10</x>
<y>0</y>
<width>541</width>
<height>741</height>
</rect>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>539</width>
<height>739</height>
</rect>
</property>
<widget class="QWidget" name="gridLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>531</width>
<height>731</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="15" column="1">
<widget class="QCheckBox" name="printTotalCheckBox">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="label_15">
<property name="text">
<string>Goods net weight position</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QSpinBox" name="goodsNamePositionSpin"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>Stores modules url</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_13">
<property name="text">
<string>Goods quantity position</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="OFDModulesDirEdit"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>OFD modules url</string>
</property>
</widget>
</item>
<item row="14" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Print header</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QSpinBox" name="goodsPricePerUnitPositionSpin"/>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="storesModulesURLEdit"/>
</item>
<item row="9" column="0">
<widget class="QLabel" name="label_14">
<property name="text">
<string>Goods quantity alias</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>OFD modules directory</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLineEdit" name="goodsNameAliasEdit"/>
</item>
<item row="15" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Print total</string>
</property>
</widget>
</item>
<item row="13" column="1">
<widget class="QLineEdit" name="goodsTotalAliasEdit"/>
</item>
<item row="8" column="1">
<widget class="QSpinBox" name="goodsQuantityPositionSpin"/>
</item>
<item row="11" column="0">
<widget class="QLabel" name="label_16">
<property name="text">
<string>Goods net weight alias</string>
</property>
</widget>
</item>
<item row="10" column="1">
<widget class="QSpinBox" name="goodsNetWeightPositionSpin"/>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="OFDModulesURLEdit"/>
</item>
<item row="13" column="0">
<widget class="QLabel" name="label_18">
<property name="text">
<string>Goods total alias</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="storesModulesDirEdit"/>
</item>
<item row="7" column="1">
<widget class="QLineEdit" name="goodsPricePerUnitAliasEdit"/>
</item>
<item row="9" column="1">
<widget class="QLineEdit" name="goodsQuantityAliasEdit"/>
</item>
<item row="11" column="1">
<widget class="QLineEdit" name="goodsNetWeightAliasEdit"/>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>Goods name position</string>
</property>
</widget>
</item>
<item row="14" column="1">
<widget class="QCheckBox" name="printHeaderCheckBox">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Goods name alias</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>Goods price per unit position</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Stores modules directory</string>
</property>
</widget>
</item>
<item row="12" column="0">
<widget class="QLabel" name="label_17">
<property name="text">
<string>Goods total position</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="OFDModulesDirChooseButton">
<property name="text">
<string>Choose</string>
</property>
</widget>
</item>
<item row="12" column="1">
<widget class="QSpinBox" name="goodsTotalPositionSpin"/>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_12">
<property name="text">
<string>Goods price per unit alias</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="storedModulesDirChooseButton">
<property name="text">
<string>Choose</string>
</property>
</widget>
</item>
<item row="16" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item row="16" column="1">
<widget class="QComboBox" name="languageComboBox">
<item>
<property name="text">
<string>en_US</string>
</property>
</item>
<item>
<property name="text">
<string>ru_RU</string>
</property>
</item>
</widget>
</item>
</layout>
</widget>
</widget>
</widget>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>settingsdialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>settingsdialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -211,12 +211,17 @@
<translation>Form</translation>
</message>
<message>
<location filename="../scenes/mainwindow.ui" line="43"/>
<location filename="../scenes/mainwindow.ui" line="87"/>
<source>Optical Character Recognition</source>
<translation>Optical Character Recognition</translation>
</message>
<message>
<location filename="../scenes/mainwindow.ui" line="69"/>
<location filename="../scenes/mainwindow.ui" line="136"/>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../scenes/mainwindow.ui" line="43"/>
<source>Text from E-Mail</source>
<translation>Text from E-Mail</translation>
</message>
@ -557,12 +562,14 @@
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settingsdialog.cpp" line="160"/>
<source>You need to restart program to apply language changes</source>
<translation type="vanished">You need to restart program to apply language changes</translation>
<translation>You need to restart program to apply language changes</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="162"/>
<source>Restart required</source>
<translation type="vanished">Restart required</translation>
<translation>Restart required</translation>
</message>
</context>
<context>
@ -586,88 +593,114 @@
<context>
<name>settingsdialog</name>
<message>
<location filename="../scenes/settingsdialog.ui" line="14"/>
<source>Dialog</source>
<translation type="vanished">Dialog</translation>
<translation>Dialog</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="153"/>
<source>Goods name position</source>
<translation type="vanished">Goods name position</translation>
<translation>Goods name position</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="205"/>
<source>Goods price per unit alias</source>
<translation type="vanished">Goods price per unit alias</translation>
<translation>Goods price per unit alias</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="219"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>TextLabel</source>
<translation type="vanished">Language</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="227"/>
<source>en_US</source>
<translation type="vanished">en_US</translation>
<translation>en_US</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="232"/>
<source>ru_RU</source>
<translation type="vanished">ru_RU</translation>
<translation>ru_RU</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="195"/>
<location filename="../scenes/settingsdialog.ui" line="212"/>
<source>Choose</source>
<translation type="vanished">Choose</translation>
<translation>Choose</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="78"/>
<source>Print header</source>
<translation type="vanished">Print header</translation>
<translation>Print header</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="121"/>
<source>Goods net weight alias</source>
<translation type="vanished">Goods net weight alias</translation>
<translation>Goods net weight alias</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="54"/>
<source>Stores modules url</source>
<translation type="vanished">Stores modules url</translation>
<translation>Stores modules url</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="134"/>
<source>Goods total alias</source>
<translation type="vanished">Goods total alias</translation>
<translation>Goods total alias</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="167"/>
<source>Goods name alias</source>
<translation type="vanished">Goods name alias</translation>
<translation>Goods name alias</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="91"/>
<source>Goods quantity alias</source>
<translation type="vanished">Goods quantity alias</translation>
<translation>Goods quantity alias</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="181"/>
<source>Stores modules directory</source>
<translation type="vanished">Stores modules directory</translation>
<translation>Stores modules directory</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="98"/>
<source>OFD modules directory</source>
<translation type="vanished">OFD modules directory</translation>
<translation>OFD modules directory</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="174"/>
<source>Goods price per unit position</source>
<translation type="vanished">Goods price per unit position</translation>
<translation>Goods price per unit position</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="44"/>
<source>Goods net weight position</source>
<translation type="vanished">Goods net weight position</translation>
<translation>Goods net weight position</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="71"/>
<source>OFD modules url</source>
<translation type="vanished">OFD modules url</translation>
<translation>OFD modules url</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="188"/>
<source>Goods total position</source>
<translation type="vanished">Goods total position</translation>
<translation>Goods total position</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="61"/>
<source>Goods quantity position</source>
<translation type="vanished">Goods quantity position</translation>
<translation>Goods quantity position</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="108"/>
<source>Print total</source>
<translation type="vanished">Print total</translation>
<translation>Print total</translation>
</message>
</context>
</TS>

View File

@ -211,12 +211,17 @@
<translation>Форма</translation>
</message>
<message>
<location filename="../scenes/mainwindow.ui" line="43"/>
<location filename="../scenes/mainwindow.ui" line="87"/>
<source>Optical Character Recognition</source>
<translation>Оптическое распознавание символов</translation>
</message>
<message>
<location filename="../scenes/mainwindow.ui" line="69"/>
<location filename="../scenes/mainwindow.ui" line="136"/>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../scenes/mainwindow.ui" line="43"/>
<source>Text from E-Mail</source>
<translation>Текст из электронного письма</translation>
</message>
@ -557,12 +562,14 @@
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settingsdialog.cpp" line="160"/>
<source>You need to restart program to apply language changes</source>
<translation type="vanished">Требуется перезагрузить программу, чтобы применить изменения языка</translation>
<translation>Требуется перезагрузить программу, чтобы применить изменения языка</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="162"/>
<source>Restart required</source>
<translation type="vanished">Требуется перезагрузка</translation>
<translation>Требуется перезагрузка</translation>
</message>
</context>
<context>
@ -586,88 +593,114 @@
<context>
<name>settingsdialog</name>
<message>
<location filename="../scenes/settingsdialog.ui" line="14"/>
<source>Dialog</source>
<translation type="vanished">Диалог</translation>
<translation>Диалог</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="153"/>
<source>Goods name position</source>
<translation type="vanished">Позиция имени товара</translation>
<translation>Позиция имени товара</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="205"/>
<source>Goods price per unit alias</source>
<translation type="vanished">Алиас цены товара</translation>
<translation>Алиас цены товара</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="219"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>TextLabel</source>
<translation type="vanished">Язык</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="227"/>
<source>en_US</source>
<translation type="vanished">en_US</translation>
<translation>en_US</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="232"/>
<source>ru_RU</source>
<translation type="vanished">ru_RU</translation>
<translation>ru_RU</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="195"/>
<location filename="../scenes/settingsdialog.ui" line="212"/>
<source>Choose</source>
<translation type="vanished">Выбрать</translation>
<translation>Выбрать</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="78"/>
<source>Print header</source>
<translation type="vanished">Печатать заголовок</translation>
<translation>Печатать заголовок</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="121"/>
<source>Goods net weight alias</source>
<translation type="vanished">Алиас массы нетто товара</translation>
<translation>Алиас массы нетто товара</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="54"/>
<source>Stores modules url</source>
<translation type="vanished">URL модулей магазина</translation>
<translation>URL модулей магазина</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="134"/>
<source>Goods total alias</source>
<translation type="vanished">Алиас всего за продукт</translation>
<translation>Алиас всего за продукт</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="167"/>
<source>Goods name alias</source>
<translation type="vanished">Алиас имени товара</translation>
<translation>Алиас имени товара</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="91"/>
<source>Goods quantity alias</source>
<translation type="vanished">Алиас количества товара</translation>
<translation>Алиас количества товара</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="181"/>
<source>Stores modules directory</source>
<translation type="vanished">Директория модулей магазина</translation>
<translation>Директория модулей магазина</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="98"/>
<source>OFD modules directory</source>
<translation type="vanished">Директория модулей ОФД</translation>
<translation>Директория модулей ОФД</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="174"/>
<source>Goods price per unit position</source>
<translation type="vanished">Позиция центы товара</translation>
<translation>Позиция центы товара</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="44"/>
<source>Goods net weight position</source>
<translation type="vanished">Позиция массы нетто товара</translation>
<translation>Позиция массы нетто товара</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="71"/>
<source>OFD modules url</source>
<translation type="vanished">URL модулей ОФД</translation>
<translation>URL модулей ОФД</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="188"/>
<source>Goods total position</source>
<translation type="vanished">Позиция всего за товар</translation>
<translation>Позиция всего за товар</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="61"/>
<source>Goods quantity position</source>
<translation type="vanished">Позиция количества товара</translation>
<translation>Позиция количества товара</translation>
</message>
<message>
<location filename="../scenes/settingsdialog.ui" line="108"/>
<source>Print total</source>
<translation type="vanished">Печатать Итого</translation>
<translation>Печатать Итого</translation>
</message>
</context>
</TS>

View File

@ -145,16 +145,16 @@ std::vector<std::wstring> find_in_html(std::string& html, std::string regex, std
it != end; it++) {
std::wstring found_entry = from_utf8(it->str());
std::wcout << "Found: " << found_entry << std::endl;
std::cout << "Found: " << to_utf8(found_entry) << std::endl;
std::wstring extracted = substring_from_to(found_entry, from_utf8(html_start), from_utf8(html_end));
std::wcout << "Extracted: " << extracted << std::endl;
std::cout << "Extracted: " << to_utf8(extracted) << std::endl;
parsed.push_back(extracted);
}
return parsed;
}
std::vector<std::wstring> find_products_in_html(std::string html) {
return find_in_html(html, "<div class=\"ifw-col ifw-col-1 text-left\"><b>.{10,100}<\\/b><\\/div>", "<div class=\"ifw-col ifw-col-1 text-left\"><b>", "<\\/b><\\/div>");
return find_in_html(html, "<div class=\"ifw-col ifw-col-1 text-left\"><b>.{2,100}<\\/b><\\/div>", "<div class=\"ifw-col ifw-col-1 text-left\"><b>", "<\\/b><\\/div>");
}
std::vector<std::wstring> find_amounts_in_html(std::string html) {
@ -170,11 +170,16 @@ std::vector<std::wstring> find_net_weights_in_names(std::vector<std::wstring> &n
std::vector<std::wstring> result;
for (std::wstring &name : names ) {
boost::wregex regexp(from_utf8("((\\d+(.|,)?\\d?((м|)л|(к|м|)г|т|ц|шт|(pc|)s|(m|k|)g|(m|)l|t)).?)+"), boost::regex_constants::collate);
bool found = false;
for (boost::wsregex_iterator it{name.begin(), name.end(), regexp}, end{}; it != end;
it++) {
result.push_back(it->str());
found = true;
break;
}
if (!found) {
result.push_back(from_utf8("?"));
}
}
return result;
}
@ -247,6 +252,8 @@ Check parseOfdRuAnswer(std::string html) {
Check c;
for (int i = 0; i < products.size(); i ++) {
std::cout << "Adding to check: ";
std::cout << to_utf8(products[i]) << " " << to_utf8(prices[i]) << " " << to_utf8(net_weights[i]) << " " << to_utf8(amounts[i]) << std::endl;
Goods goods(to_utf8(products[i]), std::stod(prices[i]), to_utf8(net_weights[i]), std::stod(amounts[i]));
c.add_goods(goods);
}