GUI: data dialog: convert Line Feeds if escaping on input, escape on output

and set Escaped flag; fix tooltip that they're converted to spaces;
  sequence dialog: re-organize to put Create Sequence stuff only in groupbox
  and put Import -> From File and Clear at bottom, similar to data dialog;
  mainwindow: use new Escaped flag from data dialog and set checkbox and
  statusbar message accordingly
This commit is contained in:
gitlost 2021-11-25 20:24:02 +00:00
parent c0e1af9859
commit f943893d6d
11 changed files with 270 additions and 220 deletions

View File

@ -43,6 +43,7 @@ Changes
- CODE16K/CODE49: add min rows option - CODE16K/CODE49: add min rows option
- GUI: add CLI equivalent dialog (#163) - GUI: add CLI equivalent dialog (#163)
- Add ZBarcode_BarcodeName() - Add ZBarcode_BarcodeName()
- GUI: data dialog: convert Line Feeds if escaping on input, escape on output
Bugs Bugs
---- ----

View File

@ -556,6 +556,18 @@ private slots:
" --height=11.7 --heightperrow --noquietzones --rows=4 --separator=2 --small" " --height=11.7 --heightperrow --noquietzones --rows=4 --separator=2 --small"
<< "" << ""; << "" << "";
QTest::newRow("BARCODE_CODE49") << true << 0.0f << ""
<< BARCODE_CODE49 << UNICODE_MODE // symbology-inputMode
<< "12345678901234567890" << "" // text-primary
<< 30.0f << -1 << 0 << 0 << 1.0f << false << 0.8f // height-dotSize
<< 5.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
<< false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting
<< true << false << false << false << true << 0 // showText-rotateAngle
<< 0 << false << false << false << WARN_DEFAULT << false // eci-debug
<< "zint -b 24 --compliantheight -d '12345678901234567890'"
<< "zint.exe -b 24 --compliantheight -d \"12345678901234567890\""
<< "" << "";
QTest::newRow("BARCODE_CODABLOCKF") << true << 0.0f << "" QTest::newRow("BARCODE_CODABLOCKF") << true << 0.0f << ""
<< BARCODE_CODABLOCKF << (DATA_MODE | ESCAPE_MODE) // symbology-inputMode << BARCODE_CODABLOCKF << (DATA_MODE | ESCAPE_MODE) // symbology-inputMode
<< "T\\n\\xA0t\\\"" << "" // text-primary << "T\\n\\xA0t\\\"" << "" // text-primary
@ -682,6 +694,18 @@ private slots:
" --rows=10 --scale=10 --secure=3 --structapp=1,2" " --rows=10 --scale=10 --secure=3 --structapp=1,2"
<< "" << ""; << "" << "";
QTest::newRow("BARCODE_ITF14") << true << 0.0f << ""
<< BARCODE_ITF14 << UNICODE_MODE // symbology-inputMode
<< "9212320967145" << "" // text-primary
<< 30.0f << -1 << 0 << 0 << 1.0f << false << 0.8f // height-dotSize
<< 5.0f << 0 << 0 << "" << QColor(Qt::black) << QColor(Qt::white) // guardDescent-bgColor
<< false << 0 << 0 << 0 << 0 << 0 // cmyk-fontSetting
<< true << false << false << false << true << 0 // showText-rotateAngle
<< 0 << false << false << false << WARN_DEFAULT << false // eci-debug
<< "zint -b 89 --compliantheight -d '9212320967145'"
<< "zint.exe -b 89 --compliantheight -d \"9212320967145\""
<< "" << "";
QTest::newRow("BARCODE_MAXICODE") << true << 0.0f << "" QTest::newRow("BARCODE_MAXICODE") << true << 0.0f << ""
<< BARCODE_MAXICODE << (UNICODE_MODE | ESCAPE_MODE) // symbology-inputMode << BARCODE_MAXICODE << (UNICODE_MODE | ESCAPE_MODE) // symbology-inputMode
<< "152382802840001" << "152382802840001"

View File

@ -1707,7 +1707,7 @@ border width of 5. This behaviour can be overridden by using the --bind option
(or adding BARCODE_BIND to symbol->output_options). Similarly the border width (or adding BARCODE_BIND to symbol->output_options). Similarly the border width
can be overridden using --border= (or by setting symbol->border_width). If a can be overridden using --border= (or by setting symbol->border_width). If a
symbol with no border is required this can be achieved by explicitly setting symbol with no border is required this can be achieved by explicitly setting
the border type to bind (or box) and setting the border width to 0. the border type to box (or bind) and setting the border width to 0.
6.1.2.7 Deutsche Post Leitcode 6.1.2.7 Deutsche Post Leitcode
------------------------------ ------------------------------

View File

@ -25,7 +25,6 @@
#include "cliwindow.h" #include "cliwindow.h"
#include "barcodeitem.h" #include "barcodeitem.h"
#include "mainwindow.h"
// Shorthand // Shorthand
#define QSL QStringLiteral #define QSL QStringLiteral

View File

@ -24,13 +24,16 @@
#include <QStringList> #include <QStringList>
#include <QMessageBox> #include <QMessageBox>
#include <QSettings> #include <QSettings>
#include <QRegularExpression>
#include "datawindow.h" #include "datawindow.h"
// Shorthand // Shorthand
#define QSL QStringLiteral #define QSL QStringLiteral
DataWindow::DataWindow(const QString &input) : Valid(false) static const int tempMessageTimeout = 2000;
DataWindow::DataWindow(const QString &input, bool isEscaped) : Valid(false), Escaped(false)
{ {
setupUi(this); setupUi(this);
QSettings settings; QSettings settings;
@ -48,7 +51,26 @@ DataWindow::DataWindow(const QString &input) : Valid(false)
btnDataClear->setIcon(clearIcon); btnDataClear->setIcon(clearIcon);
btnOK->setIcon(okIcon); btnOK->setIcon(okIcon);
if (isEscaped && input.contains(QSL("\\n"))) {
// Substitute escaped Line Feeds with actual Line Feeds
QString out;
out.reserve(input.length());
int lastPosn = 0;
QRegularExpression escRE(QSL("\\\\(?:[0EabtnvfreGR\\\\]|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})"));
QRegularExpressionMatchIterator matchI = escRE.globalMatch(input);
while (matchI.hasNext()) {
QRegularExpressionMatch match = matchI.next();
if (match.captured(0) == QSL("\\n")) {
out += input.mid(lastPosn, match.capturedStart(0) - lastPosn) + '\n';
lastPosn = match.capturedEnd(0);
}
}
out += input.mid(lastPosn);
txtDataInput->setPlainText(out);
statusBarData->showMessage(tr("Converted LFs"), tempMessageTimeout);
} else {
txtDataInput->setPlainText(input); txtDataInput->setPlainText(input);
}
txtDataInput->moveCursor(QTextCursor::End, QTextCursor::MoveAnchor); txtDataInput->moveCursor(QTextCursor::End, QTextCursor::MoveAnchor);
connect(btnCancel, SIGNAL( clicked( bool )), SLOT(close())); connect(btnCancel, SIGNAL( clicked( bool )), SLOT(close()));
@ -75,6 +97,11 @@ void DataWindow::okay()
{ {
Valid = true; Valid = true;
DataOutput = txtDataInput->toPlainText(); DataOutput = txtDataInput->toPlainText();
if (DataOutput.contains('\n')) {
// Escape Line Feeds
DataOutput.replace('\n', QSL("\\n"));
Escaped = true;
}
close(); close();
} }
@ -88,9 +115,7 @@ void DataWindow::from_file()
QString filename; QString filename;
QFile file; QFile file;
QByteArray outstream; QByteArray outstream;
QString escape_string; open_dialog.setWindowTitle("Import File");
open_dialog.setWindowTitle("Open File");
open_dialog.setDirectory(settings.value("studio/default_dir", open_dialog.setDirectory(settings.value("studio/default_dir",
QDir::toNativeSeparators(QDir::homePath())).toString()); QDir::toNativeSeparators(QDir::homePath())).toString());
@ -110,22 +135,27 @@ void DataWindow::from_file()
/* Allow some non-printing (control) characters to be read from file /* Allow some non-printing (control) characters to be read from file
by converting them to escape sequences */ by converting them to escape sequences */
escape_string.clear(); QString escape_string(outstream); // Converts to UTF-8 (NOTE: QString can't handle embedded NULs)
escape_string.append(QString(outstream));
escape_string.replace((QChar)'\\', (QString)"\\\\", Qt::CaseInsensitive); QRegularExpression escRE(QSL("[\\x04\\x07\\x08\\x09\\x0B\\x0C\\x0D\\x1B\\x1D\\x1E\\x5C]"));
escape_string.replace((QChar)0x04, (QString)"\\E", Qt::CaseInsensitive); /* End of Transmission */ if (escape_string.contains(escRE)) {
escape_string.replace((QChar)'\a', (QString)"\\a", Qt::CaseInsensitive); /* Bell */ escape_string.replace((QChar)'\\', QSL("\\\\"));
escape_string.replace((QChar)'\b', (QString)"\\b", Qt::CaseInsensitive); /* Backspace */ escape_string.replace((QChar)0x04, QSL("\\E")); /* End of Transmission */
escape_string.replace((QChar)'\t', (QString)"\\t", Qt::CaseInsensitive); /* Horizontal tab */ escape_string.replace((QChar)'\a', QSL("\\a")); /* Bell (0x07) */
escape_string.replace((QChar)'\v', (QString)"\\v", Qt::CaseInsensitive); /* Vertical tab */ escape_string.replace((QChar)'\b', QSL("\\b")); /* Backspace (0x08) */
escape_string.replace((QChar)'\f', (QString)"\\f", Qt::CaseInsensitive); /* Form feed */ escape_string.replace((QChar)'\t', QSL("\\t")); /* Horizontal tab (0x09) */
escape_string.replace((QChar)'\r', (QString)"\\r", Qt::CaseInsensitive); /* Carriage return */ // Leaving Line Feed (0x0A)
escape_string.replace((QChar)0x1b, (QString)"\\e", Qt::CaseInsensitive); /* Escape */ escape_string.replace((QChar)'\v', QSL("\\v")); /* Vertical tab (0x0B) */
escape_string.replace((QChar)0x1d, (QString)"\\G", Qt::CaseInsensitive); /* Group Separator */ escape_string.replace((QChar)'\f', QSL("\\f")); /* Form feed (0x0C) */
escape_string.replace((QChar)0x1e, (QString)"\\R", Qt::CaseInsensitive); /* Record Separator */ escape_string.replace((QChar)'\r', QSL("\\r")); /* Carriage return (0x0D) */
escape_string.replace((QChar)0x1b, QSL("\\e")); /* Escape */
escape_string.replace((QChar)0x1d, QSL("\\G")); /* Group Separator */
escape_string.replace((QChar)0x1e, QSL("\\R")); /* Record Separator */
Escaped = true;
statusBarData->showMessage(tr("Escaped data"), tempMessageTimeout);
}
txtDataInput->setPlainText(QString(escape_string)); txtDataInput->setPlainText(escape_string);
file.close(); file.close();
settings.setValue("studio/default_dir", filename.mid(0, filename.lastIndexOf(QDir::separator()))); settings.setValue("studio/default_dir", filename.mid(0, filename.lastIndexOf(QDir::separator())));

View File

@ -28,10 +28,11 @@ class DataWindow : public QDialog, private Ui::DataDialog
Q_OBJECT Q_OBJECT
public: public:
DataWindow(const QString &input); DataWindow(const QString &input, bool isEscaped);
~DataWindow(); ~DataWindow();
bool Valid; bool Valid;
bool Escaped;
QString DataOutput; QString DataOutput;
private slots: private slots:

View File

@ -6,7 +6,7 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>429</width> <width>500</width>
<height>333</height> <height>333</height>
</rect> </rect>
</property> </property>
@ -27,8 +27,7 @@
<string>&amp;Data</string> <string>&amp;Data</string>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Input data. Line Feeds (0xA0) will <string>Input data</string>
be converted to spaces</string>
</property> </property>
<property name="buddy"> <property name="buddy">
<cstring>txtDataInput</cstring> <cstring>txtDataInput</cstring>
@ -56,7 +55,7 @@ be converted to spaces</string>
<string>&amp;From File...</string> <string>&amp;From File...</string>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Get input data from a file. Certain characters &lt;br/&gt;will be converted to escape sequences <string>Import input data from a file. Certain characters &lt;br/&gt;will be converted to escape sequences
&lt;table cellspacing=&quot;3&quot;&gt; &lt;table cellspacing=&quot;3&quot;&gt;
&lt;tr&gt;&lt;td&gt;End of Transmission (0x04)&lt;/td&gt;&lt;td&gt;&amp;nbsp;\E&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;End of Transmission (0x04)&lt;/td&gt;&lt;td&gt;&amp;nbsp;\E&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Bell (0x07)&lt;/td&gt;&lt;td&gt;&amp;nbsp;\a&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Bell (0x07)&lt;/td&gt;&lt;td&gt;&amp;nbsp;\a&lt;/td&gt;&lt;/tr&gt;
@ -70,7 +69,7 @@ be converted to spaces</string>
&lt;tr&gt;&lt;td&gt;Record Separator (0x1E)&lt;/td&gt;&lt;td&gt;&amp;nbsp;\R&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Record Separator (0x1E)&lt;/td&gt;&lt;td&gt;&amp;nbsp;\R&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Backslash (0x5C)&lt;/td&gt;&lt;td&gt;&amp;nbsp;\\&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Backslash (0x5C)&lt;/td&gt;&lt;td&gt;&amp;nbsp;\\&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt; &lt;/table&gt;
Note that Line Feed (0x0A) is not included</string> Note that Line Feeds (0x0A) are not included,&lt;br/&gt; but any present will be escaped on update</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -85,9 +84,9 @@ Note that Line Feed (0x0A) is not included</string>
</widget> </widget>
</item> </item>
<item> <item>
<spacer name="horizontalSpacer"> <widget class="QStatusBar" name="statusBarData">
<property name="orientation"> <property name="sizeGripEnabled">
<enum>Qt::Horizontal</enum> <bool>false</bool>
</property> </property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
@ -95,7 +94,7 @@ Note that Line Feed (0x0A) is not included</string>
<height>20</height> <height>20</height>
</size> </size>
</property> </property>
</spacer> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="btnOK"> <widget class="QPushButton" name="btnOK">
@ -103,7 +102,8 @@ Note that Line Feed (0x0A) is not included</string>
<string> &amp;OK</string> <string> &amp;OK</string>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Close window and update input data</string> <string>Close window and update input data
Line Feeds (0xA0) will be escaped as &quot;\n&quot;</string>
</property> </property>
</widget> </widget>
</item> </item>

View File

@ -23,6 +23,8 @@
<layout class="QVBoxLayout" name="vertLayoutSeq"> <layout class="QVBoxLayout" name="vertLayoutSeq">
<item> <item>
<layout class="QHBoxLayout" name="horzLayoutSeq"> <layout class="QHBoxLayout" name="horzLayoutSeq">
<item>
<layout class="QVBoxLayout" name="vertLayoutSeqCreate">
<item> <item>
<widget class="QGroupBox" name="groupBoxSeqCreate"> <widget class="QGroupBox" name="groupBoxSeqCreate">
<property name="sizePolicy"> <property name="sizePolicy">
@ -34,12 +36,11 @@
<property name="title"> <property name="title">
<string>Create Sequence</string> <string>Create Sequence</string>
</property> </property>
<layout class="QVBoxLayout" name="vertLayoutSeqCreate"> <property name="toolTip">
<item> <string>Generate a sequence</string>
<layout class="QHBoxLayout" name="horzLayoutSeqCreate"> </property>
<item> <layout class="QGridLayout" name="gridLayoutSeqCreate">
<layout class="QVBoxLayout" name="vertLayoutSeqCreateLbls"> <item row="0" column="0">
<item>
<widget class="QLabel" name="lblSeqStartVal"> <widget class="QLabel" name="lblSeqStartVal">
<property name="toolTip"> <property name="toolTip">
<string>Start sequence at this value</string> <string>Start sequence at this value</string>
@ -52,88 +53,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item> <item row="0" column="1">
<widget class="QLabel" name="lblSeqEndVal">
<property name="toolTip">
<string>End sequence at this value</string>
</property>
<property name="text">
<string>End &amp;Value:</string>
</property>
<property name="buddy">
<cstring>spnSeqEndVal</cstring>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblSeqIncVal">
<property name="toolTip">
<string>Go from start to end in steps of this amount</string>
</property>
<property name="text">
<string>Increment &amp;By:</string>
</property>
<property name="buddy">
<cstring>spnSeqIncVal</cstring>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblSeqFormat">
<property name="toolTip">
<string>Format sequence using special characters&lt;table cellspacing=&quot;3&quot;&gt;
&lt;tr&gt;&lt;td&gt;#&lt;/td&gt;&lt;td&gt;Number or space&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;$&lt;/td&gt;&lt;td&gt;Number or '0'&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;*&lt;/td&gt;&lt;td&gt;Number or '*'&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Other&lt;/td&gt;&lt;td&gt;Insert literally&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</string>
</property>
<property name="text">
<string>&amp;Format:</string>
</property>
<property name="buddy">
<cstring>linSeqFormat</cstring>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblSeqCreate">
<property name="toolTip">
<string>Create a data sequence</string>
</property>
<property name="text">
<string>Sequence:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblSeqImport">
<property name="toolTip">
<string>Get a data sequence from a file</string>
</property>
<property name="text">
<string>Sequence File:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblSeqExport">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>Save the symbols to files</string>
</property>
<property name="text">
<string>Generate Bar Codes:</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="vertLayoutSeqCreateVals">
<item>
<widget class="QSpinBox" name="spnSeqStartVal"> <widget class="QSpinBox" name="spnSeqStartVal">
<property name="toolTip"> <property name="toolTip">
<string>Start sequence at this value</string> <string>Start sequence at this value</string>
@ -146,7 +66,20 @@
</property> </property>
</widget> </widget>
</item> </item>
<item> <item row="1" column="0">
<widget class="QLabel" name="lblSeqEndVal">
<property name="toolTip">
<string>End sequence at this value</string>
</property>
<property name="text">
<string>End &amp;Value:</string>
</property>
<property name="buddy">
<cstring>spnSeqEndVal</cstring>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QSpinBox" name="spnSeqEndVal"> <widget class="QSpinBox" name="spnSeqEndVal">
<property name="toolTip"> <property name="toolTip">
<string>End sequence at this value</string> <string>End sequence at this value</string>
@ -156,7 +89,20 @@
</property> </property>
</widget> </widget>
</item> </item>
<item> <item row="2" column="0">
<widget class="QLabel" name="lblSeqIncVal">
<property name="toolTip">
<string>Go from start to end in steps of this amount</string>
</property>
<property name="text">
<string>Increment &amp;By:</string>
</property>
<property name="buddy">
<cstring>spnSeqIncVal</cstring>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="spnSeqIncVal"> <widget class="QSpinBox" name="spnSeqIncVal">
<property name="toolTip"> <property name="toolTip">
<string>Go from start to end in steps of this amount</string> <string>Go from start to end in steps of this amount</string>
@ -169,7 +115,25 @@
</property> </property>
</widget> </widget>
</item> </item>
<item> <item row="3" column="0">
<widget class="QLabel" name="lblSeqFormat">
<property name="toolTip">
<string>Format sequence using special characters&lt;table cellspacing=&quot;3&quot;&gt;
&lt;tr&gt;&lt;td&gt;#&lt;/td&gt;&lt;td&gt;Number or space&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;$&lt;/td&gt;&lt;td&gt;Number or '0'&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;*&lt;/td&gt;&lt;td&gt;Number or '*'&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Other&lt;/td&gt;&lt;td&gt;Insert literally&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</string>
</property>
<property name="text">
<string>F&amp;ormat:</string>
</property>
<property name="buddy">
<cstring>linSeqFormat</cstring>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="linSeqFormat"> <widget class="QLineEdit" name="linSeqFormat">
<property name="toolTip"> <property name="toolTip">
<string>Format sequence using special characters&lt;table cellspacing=&quot;3&quot;&gt; <string>Format sequence using special characters&lt;table cellspacing=&quot;3&quot;&gt;
@ -184,46 +148,51 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="0" colspan="2">
<layout class="QHBoxLayout" name="horzLayoutSeqCreateBtn">
<item>
<spacer name="horzSpacerSeqCreateBtn">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item> <item>
<widget class="QPushButton" name="btnSeqCreate"> <widget class="QPushButton" name="btnSeqCreate">
<property name="toolTip"> <property name="toolTip">
<string>Create a data sequence</string> <string>Generate a data sequence</string>
</property> </property>
<property name="text"> <property name="text">
<string>Crea&amp;te</string> <string>Crea&amp;te</string>
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QPushButton" name="btnSeqImport">
<property name="toolTip">
<string>Get a data sequence from a file</string>
</property>
<property name="text">
<string>&amp;Import...</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnSeqExport">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>Save the symbols to files</string>
</property>
<property name="text">
<string>&amp;Export...</string>
</property>
</widget>
</item>
</layout>
</item>
</layout> </layout>
</item> </item>
</layout> </layout>
</widget> </widget>
</item> </item>
<item>
<spacer name="vertSpacerCreate">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item> <item>
<widget class="QGroupBox" name="groupBoxSeqPreview"> <widget class="QGroupBox" name="groupBoxSeqPreview">
<property name="sizePolicy"> <property name="sizePolicy">
@ -256,6 +225,26 @@
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="horzLayoutSeqBtns"> <layout class="QHBoxLayout" name="horzLayoutSeqBtns">
<item>
<widget class="QPushButton" name="btnSeqFromFile">
<property name="toolTip">
<string>Import a data sequence from a file</string>
</property>
<property name="text">
<string>&amp;From File...</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnSeqClear">
<property name="toolTip">
<string>Clear the sequence data</string>
</property>
<property name="text">
<string> C&amp;lear</string>
</property>
</widget>
</item>
<item> <item>
<spacer name="horzSpacerSeqBtns"> <spacer name="horzSpacerSeqBtns">
<property name="orientation"> <property name="orientation">
@ -270,12 +259,15 @@
</spacer> </spacer>
</item> </item>
<item> <item>
<widget class="QPushButton" name="btnSeqClear"> <widget class="QPushButton" name="btnSeqExport">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip"> <property name="toolTip">
<string>Clear the sequence data</string> <string>Save the symbols to files</string>
</property> </property>
<property name="text"> <property name="text">
<string> C&amp;lear</string> <string>&amp;Export...</string>
</property> </property>
</widget> </widget>
</item> </item>

View File

@ -478,15 +478,20 @@ void MainWindow::help()
void MainWindow::open_data_dialog() void MainWindow::open_data_dialog()
{ {
DataWindow dlg(txtData->text()); DataWindow dlg(txtData->text(), chkEscape->isChecked());
(void) dlg.exec(); (void) dlg.exec();
if (dlg.Valid) { if (dlg.Valid) {
const bool updated = txtData->text() != dlg.DataOutput; const bool updated = txtData->text() != dlg.DataOutput;
txtData->setText(dlg.DataOutput); txtData->setText(dlg.DataOutput);
if (updated) { if (updated) {
if (dlg.Escaped && !chkEscape->isChecked()) {
chkEscape->setChecked(true);
statusBar->showMessage(tr("Set \"Parse Escapes\", updated data"), tempMessageTimeout);
} else {
statusBar->showMessage(tr("Updated data"), tempMessageTimeout); statusBar->showMessage(tr("Updated data"), tempMessageTimeout);
} }
} }
}
} }
void MainWindow::open_sequence_dialog() void MainWindow::open_sequence_dialog()

View File

@ -56,7 +56,7 @@ SequenceWindow::SequenceWindow(BarcodeItem *bc) : m_bc(bc)
connect(btnSeqClear, SIGNAL( clicked( bool )), SLOT(clear_preview())); connect(btnSeqClear, SIGNAL( clicked( bool )), SLOT(clear_preview()));
connect(btnSeqCreate, SIGNAL( clicked( bool )), SLOT(create_sequence())); connect(btnSeqCreate, SIGNAL( clicked( bool )), SLOT(create_sequence()));
connect(txtSeqPreview, SIGNAL( textChanged()), SLOT(check_generate())); connect(txtSeqPreview, SIGNAL( textChanged()), SLOT(check_generate()));
connect(btnSeqImport, SIGNAL( clicked( bool )), SLOT(import())); connect(btnSeqFromFile, SIGNAL( clicked( bool )), SLOT(from_file()));
connect(btnSeqExport, SIGNAL( clicked( bool )), SLOT(generate_sequence())); connect(btnSeqExport, SIGNAL( clicked( bool )), SLOT(generate_sequence()));
} }
@ -166,14 +166,12 @@ void SequenceWindow::check_generate()
preview_copy = txtSeqPreview->toPlainText(); preview_copy = txtSeqPreview->toPlainText();
if (preview_copy.isEmpty()) { if (preview_copy.isEmpty()) {
btnSeqExport->setEnabled(false); btnSeqExport->setEnabled(false);
lblSeqExport->setEnabled(false);
} else { } else {
btnSeqExport->setEnabled(true); btnSeqExport->setEnabled(true);
lblSeqExport->setEnabled(true);
} }
} }
void SequenceWindow::import() void SequenceWindow::from_file()
{ {
QSettings settings; QSettings settings;
#if QT_VERSION < 0x60000 #if QT_VERSION < 0x60000

View File

@ -39,7 +39,7 @@ private slots:
void clear_preview(); void clear_preview();
void create_sequence(); void create_sequence();
void check_generate(); void check_generate();
void import(); void from_file();
void generate_sequence(); void generate_sequence();
protected: protected: