New UI
This commit is contained in:
parent
36a6956c79
commit
7f1526d313
@ -20,3 +20,5 @@ HEADERS += qbrainfuck.h \
|
|||||||
decoderthread.h
|
decoderthread.h
|
||||||
|
|
||||||
FORMS += qbrainfuck.ui
|
FORMS += qbrainfuck.ui
|
||||||
|
|
||||||
|
LIBS += -lqrencode
|
||||||
|
337
qbrainfuck.cpp
337
qbrainfuck.cpp
@ -17,6 +17,8 @@ QBrainfuck::~QBrainfuck()
|
|||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/********** Text part **********/
|
||||||
|
|
||||||
void QBrainfuck::on_encodeButton_clicked()
|
void QBrainfuck::on_encodeButton_clicked()
|
||||||
{
|
{
|
||||||
QByteArray text = ui->textTextEdit->document()->toPlainText().toLatin1();
|
QByteArray text = ui->textTextEdit->document()->toPlainText().toLatin1();
|
||||||
@ -111,8 +113,58 @@ void QBrainfuck::on_encodeButton_clicked()
|
|||||||
}
|
}
|
||||||
|
|
||||||
ui->programTextEdit->setPlainText(program);
|
ui->programTextEdit->setPlainText(program);
|
||||||
|
|
||||||
|
ui->tabWidget->setCurrentIndex(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QBrainfuck::on_textLoadButton_clicked()
|
||||||
|
{
|
||||||
|
QFileDialog dialog(this);
|
||||||
|
dialog.setFileMode(QFileDialog::AnyFile);
|
||||||
|
dialog.setNameFilter("Txt Files (*.txt)");
|
||||||
|
dialog.setDefaultSuffix("txt");
|
||||||
|
dialog.setAcceptMode(QFileDialog::AcceptOpen);
|
||||||
|
|
||||||
|
if (dialog.exec()) {
|
||||||
|
QFile loadFile(dialog.selectedFiles().first());
|
||||||
|
|
||||||
|
if (!loadFile.open(QIODevice::ReadOnly)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ui->textTextEdit->document()->setPlainText(loadFile.readAll());
|
||||||
|
|
||||||
|
loadFile.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void QBrainfuck::on_textSaveButton_clicked()
|
||||||
|
{
|
||||||
|
QFileDialog dialog(this);
|
||||||
|
dialog.setFileMode(QFileDialog::AnyFile);
|
||||||
|
dialog.setNameFilter("Txt Files (*.txt)");
|
||||||
|
dialog.setDefaultSuffix("txt");
|
||||||
|
dialog.setAcceptMode(QFileDialog::AcceptSave);
|
||||||
|
|
||||||
|
if (dialog.exec()) {
|
||||||
|
QFile saveFile(dialog.selectedFiles().first());
|
||||||
|
|
||||||
|
if (!saveFile.open(QIODevice::WriteOnly)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
saveFile.write(ui->textTextEdit->document()->toPlainText().toUtf8());
|
||||||
|
saveFile.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void QBrainfuck::on_textTextEdit_textChanged()
|
||||||
|
{
|
||||||
|
ui->textLabel->setText("Text length: " + QString().setNum(ui->textTextEdit->document()->toPlainText().length()));
|
||||||
|
}
|
||||||
|
|
||||||
|
/********** Program part **********/
|
||||||
|
|
||||||
void QBrainfuck::on_decodeButton_clicked()
|
void QBrainfuck::on_decodeButton_clicked()
|
||||||
{
|
{
|
||||||
ui->textTextEdit->setPlainText("");
|
ui->textTextEdit->setPlainText("");
|
||||||
@ -121,8 +173,58 @@ void QBrainfuck::on_decodeButton_clicked()
|
|||||||
QByteArray input = ui->inputLineEdit->text().toLatin1();
|
QByteArray input = ui->inputLineEdit->text().toLatin1();
|
||||||
|
|
||||||
decoder->decode(program, input);
|
decoder->decode(program, input);
|
||||||
|
|
||||||
|
ui->tabWidget->setCurrentIndex(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QBrainfuck::on_programLoadButton_clicked()
|
||||||
|
{
|
||||||
|
QFileDialog dialog(this);
|
||||||
|
dialog.setFileMode(QFileDialog::AnyFile);
|
||||||
|
dialog.setNameFilter("Bf Files (*.bf)");
|
||||||
|
dialog.setDefaultSuffix("bf");
|
||||||
|
dialog.setAcceptMode(QFileDialog::AcceptOpen);
|
||||||
|
|
||||||
|
if (dialog.exec()) {
|
||||||
|
QFile loadFile(dialog.selectedFiles().first());
|
||||||
|
|
||||||
|
if (!loadFile.open(QIODevice::ReadOnly)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ui->programTextEdit->document()->setPlainText(loadFile.readAll());
|
||||||
|
|
||||||
|
loadFile.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void QBrainfuck::on_programSaveButton_clicked()
|
||||||
|
{
|
||||||
|
QFileDialog dialog(this);
|
||||||
|
dialog.setFileMode(QFileDialog::AnyFile);
|
||||||
|
dialog.setNameFilter("Bf Files (*.bf)");
|
||||||
|
dialog.setDefaultSuffix("bf");
|
||||||
|
dialog.setAcceptMode(QFileDialog::AcceptSave);
|
||||||
|
|
||||||
|
if (dialog.exec()) {
|
||||||
|
QFile saveFile(dialog.selectedFiles().first());
|
||||||
|
|
||||||
|
if (!saveFile.open(QIODevice::WriteOnly)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
saveFile.write(ui->programTextEdit->document()->toPlainText().toUtf8());
|
||||||
|
saveFile.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void QBrainfuck::on_programTextEdit_textChanged()
|
||||||
|
{
|
||||||
|
ui->programLabel->setText("Program length: " + QString().setNum(ui->programTextEdit->document()->toPlainText().count(QRegExp(">|<|\\+|-|\\.|,|\\[|\\]"))));
|
||||||
|
}
|
||||||
|
|
||||||
|
/********** Motif part **********/
|
||||||
|
|
||||||
void QBrainfuck::on_motifButton_clicked()
|
void QBrainfuck::on_motifButton_clicked()
|
||||||
{
|
{
|
||||||
QString motif = ui->motifTextEdit->document()->toPlainText();
|
QString motif = ui->motifTextEdit->document()->toPlainText();
|
||||||
@ -155,16 +257,48 @@ void QBrainfuck::on_motifButton_clicked()
|
|||||||
}
|
}
|
||||||
|
|
||||||
ui->resultTextEdit->setPlainText(motif);
|
ui->resultTextEdit->setPlainText(motif);
|
||||||
|
ui->tabWidget->setCurrentIndex(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QBrainfuck::on_textTextEdit_textChanged()
|
void QBrainfuck::on_motifLoadButton_clicked()
|
||||||
{
|
{
|
||||||
ui->textLabel->setText("Text length: " + QString().setNum(ui->textTextEdit->document()->toPlainText().length()));
|
QFileDialog dialog(this);
|
||||||
|
dialog.setFileMode(QFileDialog::AnyFile);
|
||||||
|
dialog.setNameFilter("Txt Files (*.txt)");
|
||||||
|
dialog.setDefaultSuffix("txt");
|
||||||
|
dialog.setAcceptMode(QFileDialog::AcceptOpen);
|
||||||
|
|
||||||
|
if (dialog.exec()) {
|
||||||
|
QFile loadFile(dialog.selectedFiles().first());
|
||||||
|
|
||||||
|
if (!loadFile.open(QIODevice::ReadOnly)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ui->motifTextEdit->document()->setPlainText(loadFile.readAll());
|
||||||
|
|
||||||
|
loadFile.close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QBrainfuck::on_programTextEdit_textChanged()
|
void QBrainfuck::on_motifSaveButton_clicked()
|
||||||
{
|
{
|
||||||
ui->programLabel->setText("Program length: " + QString().setNum(ui->programTextEdit->document()->toPlainText().count(QRegExp(">|<|\\+|-|\\.|,|\\[|\\]"))));
|
QFileDialog dialog(this);
|
||||||
|
dialog.setFileMode(QFileDialog::AnyFile);
|
||||||
|
dialog.setNameFilter("Txt Files (*.txt)");
|
||||||
|
dialog.setDefaultSuffix("txt");
|
||||||
|
dialog.setAcceptMode(QFileDialog::AcceptSave);
|
||||||
|
|
||||||
|
if (dialog.exec()) {
|
||||||
|
QFile saveFile(dialog.selectedFiles().first());
|
||||||
|
|
||||||
|
if (!saveFile.open(QIODevice::WriteOnly)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
saveFile.write(ui->motifTextEdit->document()->toPlainText().toUtf8());
|
||||||
|
saveFile.close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QBrainfuck::on_motifTextEdit_textChanged()
|
void QBrainfuck::on_motifTextEdit_textChanged()
|
||||||
@ -177,47 +311,48 @@ void QBrainfuck::on_regexLineEdit_textChanged(const QString &arg1)
|
|||||||
on_motifTextEdit_textChanged();
|
on_motifTextEdit_textChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QBrainfuck::on_saveButton_clicked()
|
/********** Result part **********/
|
||||||
|
|
||||||
|
void QBrainfuck::on_qrcodeButton_clicked()
|
||||||
{
|
{
|
||||||
QFileDialog dialog(this);
|
char* text = new char[ui->resultTextEdit->document()->toPlainText().toLatin1().size() + 1];
|
||||||
dialog.setFileMode(QFileDialog::AnyFile);
|
strcpy(text, ui->resultTextEdit->document()->toPlainText().toLatin1().data());
|
||||||
dialog.setNameFilter("Json Files (*.json);;Txt Files (*.txt)");
|
|
||||||
dialog.setDefaultSuffix("json");
|
|
||||||
dialog.setAcceptMode(QFileDialog::AcceptSave);
|
|
||||||
|
|
||||||
if (dialog.exec()) {
|
QRcode *qrCode=QRcode_encodeString(text, 0, QR_ECLEVEL_L, QR_MODE_8, 1);
|
||||||
QFile saveFile(dialog.selectedFiles().first());
|
if(qrCode) {
|
||||||
|
int width = qrCode->width;
|
||||||
|
|
||||||
if (!saveFile.open(QIODevice::WriteOnly)) {
|
QImage image((width + 4)*8, (width + 4)*8, QImage::Format_RGB32);;
|
||||||
return;
|
QPainter painter(&image);
|
||||||
|
|
||||||
|
QLinearGradient linearGrad(QPointF(2*8, 2*8), QPointF((width + 2)*8, (width + 2)*8));
|
||||||
|
linearGrad.setColorAt(0, Qt::black);
|
||||||
|
linearGrad.setColorAt(1, Qt::black);
|
||||||
|
|
||||||
|
painter.fillRect(0, 0, (width + 4)*8, (width + 4)*8, Qt::white);
|
||||||
|
painter.fillRect(2*8, 2*8, width*8, width*8, linearGrad);
|
||||||
|
|
||||||
|
for (int i = 0; i < width*width; ++i) {
|
||||||
|
if (!(qrCode->data[i] &0x01)) {
|
||||||
|
int col = i % width;
|
||||||
|
int row = (i - col) / width;
|
||||||
|
|
||||||
|
painter.fillRect((col + 2)*8, (row + 2)*8, 8, 8, Qt::white);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dialog.selectedNameFilter() == "Json Files (*.json)") {
|
ui->qrcodeLabel->setPixmap(QPixmap::fromImage(image));
|
||||||
QJsonObject jsonObject;
|
|
||||||
|
|
||||||
jsonObject["text"] = ui->textTextEdit->document()->toPlainText();
|
|
||||||
jsonObject["program"] = ui->programTextEdit->document()->toPlainText();
|
|
||||||
jsonObject["motif"] = ui->motifTextEdit->document()->toPlainText();
|
|
||||||
jsonObject["result"] = ui->resultTextEdit->document()->toPlainText();
|
|
||||||
|
|
||||||
QJsonDocument jsonDoc(jsonObject);
|
|
||||||
saveFile.write(jsonDoc.toJson());
|
|
||||||
} else {
|
|
||||||
saveFile.write(ui->textTextEdit->document()->toPlainText().toUtf8() + "\n\n");
|
|
||||||
saveFile.write(ui->programTextEdit->document()->toPlainText().toUtf8() + "\n\n");
|
|
||||||
saveFile.write(ui->motifTextEdit->document()->toPlainText().toUtf8() + "\n\n");
|
|
||||||
saveFile.write(ui->resultTextEdit->document()->toPlainText().toUtf8() + "\n\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
ui->tabWidget->setCurrentIndex(4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QBrainfuck::on_loadButton_clicked()
|
void QBrainfuck::on_resultLoadButton_clicked()
|
||||||
{
|
{
|
||||||
QFileDialog dialog(this);
|
QFileDialog dialog(this);
|
||||||
dialog.setFileMode(QFileDialog::AnyFile);
|
dialog.setFileMode(QFileDialog::AnyFile);
|
||||||
dialog.setNameFilter("Json Files (*.json)");
|
dialog.setNameFilter("Txt Files (*.txt)");
|
||||||
dialog.setDefaultSuffix("json");
|
dialog.setDefaultSuffix("txt");
|
||||||
dialog.setAcceptMode(QFileDialog::AcceptOpen);
|
dialog.setAcceptMode(QFileDialog::AcceptOpen);
|
||||||
|
|
||||||
if (dialog.exec()) {
|
if (dialog.exec()) {
|
||||||
@ -227,18 +362,54 @@ void QBrainfuck::on_loadButton_clicked()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray saveData = loadFile.readAll();
|
ui->resultTextEdit->document()->setPlainText(loadFile.readAll());
|
||||||
|
|
||||||
QJsonDocument jsonDoc(QJsonDocument::fromJson(saveData));
|
loadFile.close();
|
||||||
QJsonObject jsonObject = jsonDoc.object();
|
|
||||||
|
|
||||||
ui->textTextEdit->setPlainText(jsonObject["text"].toString());
|
|
||||||
ui->programTextEdit->setPlainText(jsonObject["program"].toString());
|
|
||||||
ui->motifTextEdit->setPlainText(jsonObject["motif"].toString());
|
|
||||||
ui->resultTextEdit->setPlainText(jsonObject["result"].toString());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QBrainfuck::on_resultSaveButton_clicked()
|
||||||
|
{
|
||||||
|
QFileDialog dialog(this);
|
||||||
|
dialog.setFileMode(QFileDialog::AnyFile);
|
||||||
|
dialog.setNameFilter("Txt Files (*.txt)");
|
||||||
|
dialog.setDefaultSuffix("txt");
|
||||||
|
dialog.setAcceptMode(QFileDialog::AcceptSave);
|
||||||
|
|
||||||
|
if (dialog.exec()) {
|
||||||
|
QFile saveFile(dialog.selectedFiles().first());
|
||||||
|
|
||||||
|
if (!saveFile.open(QIODevice::WriteOnly)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
saveFile.write(ui->resultTextEdit->document()->toPlainText().toUtf8());
|
||||||
|
saveFile.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void QBrainfuck::on_resultTextEdit_textChanged()
|
||||||
|
{
|
||||||
|
ui->resultLabel->setText("Result length: " + QString().setNum(ui->resultTextEdit->document()->toPlainText().length()));
|
||||||
|
}
|
||||||
|
|
||||||
|
/********** QRCode part **********/
|
||||||
|
|
||||||
|
void QBrainfuck::on_qrcodeSaveButton_clicked()
|
||||||
|
{
|
||||||
|
QFileDialog dialog(this);
|
||||||
|
dialog.setFileMode(QFileDialog::AnyFile);
|
||||||
|
dialog.setNameFilter("PNG Files (*.png)");
|
||||||
|
dialog.setDefaultSuffix("png");
|
||||||
|
dialog.setAcceptMode(QFileDialog::AcceptSave);
|
||||||
|
|
||||||
|
if (dialog.exec()) {
|
||||||
|
ui->qrcodeLabel->pixmap()->toImage().save(dialog.selectedFiles().first(), "PNG");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************/
|
||||||
|
|
||||||
void QBrainfuck::setText(QString text) {
|
void QBrainfuck::setText(QString text) {
|
||||||
ui->textTextEdit->setPlainText(text);
|
ui->textTextEdit->setPlainText(text);
|
||||||
}
|
}
|
||||||
@ -246,3 +417,87 @@ void QBrainfuck::setText(QString text) {
|
|||||||
void QBrainfuck::errorMessage(QString message) {
|
void QBrainfuck::errorMessage(QString message) {
|
||||||
QMessageBox::critical(this, "QBrainfuck error", "Error: " + message);
|
QMessageBox::critical(this, "QBrainfuck error", "Error: " + message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QBrainfuck::on_saveAllButton_clicked()
|
||||||
|
{
|
||||||
|
QFileDialog dialog(this);
|
||||||
|
dialog.setFileMode(QFileDialog::Directory);
|
||||||
|
dialog.setAcceptMode(QFileDialog::AcceptSave);
|
||||||
|
|
||||||
|
if (dialog.exec()) {
|
||||||
|
QString saveDir(dialog.selectedFiles().first());
|
||||||
|
|
||||||
|
QFile textFile(saveDir + "/text.txt");
|
||||||
|
if (!textFile.open(QIODevice::WriteOnly)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
textFile.write(ui->textTextEdit->document()->toPlainText().toUtf8());
|
||||||
|
textFile.close();
|
||||||
|
|
||||||
|
QFile programFile(saveDir + "/program.bf");
|
||||||
|
if (!programFile.open(QIODevice::WriteOnly)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
programFile.write(ui->programTextEdit->document()->toPlainText().toUtf8());
|
||||||
|
programFile.close();
|
||||||
|
|
||||||
|
QFile motifFile(saveDir + "/motif.txt");
|
||||||
|
if (!motifFile.open(QIODevice::WriteOnly)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
motifFile.write(ui->motifTextEdit->document()->toPlainText().toUtf8());
|
||||||
|
motifFile.close();
|
||||||
|
|
||||||
|
QFile resultFile(saveDir + "/result.txt");
|
||||||
|
if (!resultFile.open(QIODevice::WriteOnly)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
resultFile.write(ui->resultTextEdit->document()->toPlainText().toUtf8());
|
||||||
|
resultFile.close();
|
||||||
|
|
||||||
|
ui->qrcodeLabel->pixmap()->toImage().save(saveDir + "/qrcode.png", "PNG");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void QBrainfuck::on_loadAllButton_clicked()
|
||||||
|
{
|
||||||
|
QFileDialog dialog(this);
|
||||||
|
dialog.setFileMode(QFileDialog::Directory);
|
||||||
|
dialog.setAcceptMode(QFileDialog::AcceptOpen);
|
||||||
|
|
||||||
|
if (dialog.exec()) {
|
||||||
|
QString saveDir(dialog.selectedFiles().first());
|
||||||
|
|
||||||
|
QFile textFile(saveDir + "/text.txt");
|
||||||
|
if (!textFile.open(QIODevice::ReadOnly)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ui->textTextEdit->document()->setPlainText(textFile.readAll());
|
||||||
|
textFile.close();
|
||||||
|
|
||||||
|
QFile programFile(saveDir + "/program.bf");
|
||||||
|
if (!programFile.open(QIODevice::ReadOnly)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ui->programTextEdit->document()->setPlainText(programFile.readAll());
|
||||||
|
programFile.close();
|
||||||
|
|
||||||
|
QFile motifFile(saveDir + "/motif.txt");
|
||||||
|
if (!motifFile.open(QIODevice::ReadOnly)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ui->motifTextEdit->document()->setPlainText(motifFile.readAll());
|
||||||
|
motifFile.close();
|
||||||
|
|
||||||
|
QFile resultFile(saveDir + "/result.txt");
|
||||||
|
if (!resultFile.open(QIODevice::ReadOnly)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ui->resultTextEdit->document()->setPlainText(resultFile.readAll());
|
||||||
|
resultFile.close();
|
||||||
|
|
||||||
|
QImage image;
|
||||||
|
image.load(saveDir + "/qrcode.png", "PNG");
|
||||||
|
ui->qrcodeLabel->setPixmap(QPixmap::fromImage(image));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
35
qbrainfuck.h
35
qbrainfuck.h
@ -4,9 +4,8 @@
|
|||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QJsonObject>
|
#include <QPainter>
|
||||||
#include <QJsonDocument>
|
#include <qrencode.h>
|
||||||
#include <QStack>
|
|
||||||
#include "decoderthread.h"
|
#include "decoderthread.h"
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
@ -36,14 +35,36 @@ private slots:
|
|||||||
|
|
||||||
void on_regexLineEdit_textChanged(const QString &arg1);
|
void on_regexLineEdit_textChanged(const QString &arg1);
|
||||||
|
|
||||||
void on_saveButton_clicked();
|
|
||||||
|
|
||||||
void on_loadButton_clicked();
|
|
||||||
|
|
||||||
void setText(QString text);
|
void setText(QString text);
|
||||||
|
|
||||||
void errorMessage(QString message);
|
void errorMessage(QString message);
|
||||||
|
|
||||||
|
void on_textLoadButton_clicked();
|
||||||
|
|
||||||
|
void on_textSaveButton_clicked();
|
||||||
|
|
||||||
|
void on_programLoadButton_clicked();
|
||||||
|
|
||||||
|
void on_programSaveButton_clicked();
|
||||||
|
|
||||||
|
void on_motifLoadButton_clicked();
|
||||||
|
|
||||||
|
void on_motifSaveButton_clicked();
|
||||||
|
|
||||||
|
void on_resultSaveButton_clicked();
|
||||||
|
|
||||||
|
void on_resultLoadButton_clicked();
|
||||||
|
|
||||||
|
void on_qrcodeButton_clicked();
|
||||||
|
|
||||||
|
void on_resultTextEdit_textChanged();
|
||||||
|
|
||||||
|
void on_qrcodeSaveButton_clicked();
|
||||||
|
|
||||||
|
void on_saveAllButton_clicked();
|
||||||
|
|
||||||
|
void on_loadAllButton_clicked();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::QBrainfuck *ui;
|
Ui::QBrainfuck *ui;
|
||||||
DecoderThread *decoder;
|
DecoderThread *decoder;
|
||||||
|
576
qbrainfuck.ui
576
qbrainfuck.ui
@ -6,7 +6,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>1194</width>
|
<width>1189</width>
|
||||||
<height>634</height>
|
<height>634</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@ -14,270 +14,364 @@
|
|||||||
<string>QBrainfuck</string>
|
<string>QBrainfuck</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="centralWidget">
|
<widget class="QWidget" name="centralWidget">
|
||||||
<layout class="QGridLayout" name="gridLayout_3">
|
<layout class="QGridLayout" name="gridLayout_2">
|
||||||
<item row="0" column="0">
|
<item row="0" column="0" colspan="6">
|
||||||
<widget class="QTabWidget" name="tabWidget">
|
<widget class="QTabWidget" name="tabWidget">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="tab">
|
<widget class="QWidget" name="textTab">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
<string>Main</string>
|
<string>Plain Text</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
<layout class="QGridLayout" name="gridLayout_4">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="6" column="1" colspan="2">
|
||||||
|
<widget class="QPushButton" name="textSaveButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Save to file ...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1" colspan="2">
|
||||||
|
<spacer name="textVerticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="2">
|
||||||
|
<widget class="QSpinBox" name="decadesSpinBox">
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>255</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>10</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QLabel" name="maxSignsLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Max signs (+/-)</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLabel" name="decadesLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Decades size</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="0" column="2">
|
<item row="0" column="2">
|
||||||
<widget class="QGroupBox" name="programGroupBox">
|
<widget class="QSpinBox" name="maxSignsSpinBox">
|
||||||
<property name="title">
|
<property name="minimum">
|
||||||
<string>Brainfuck program</string>
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>255</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>10</number>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
|
||||||
<item>
|
|
||||||
<widget class="QPlainTextEdit" name="programTextEdit">
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<family>Monospace</family>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="lineWrapMode">
|
|
||||||
<enum>QPlainTextEdit::NoWrap</enum>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="programLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Program length: 0</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="decodeButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>Decode</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0">
|
<item row="5" column="1" colspan="2">
|
||||||
<widget class="QGroupBox" name="motifGoupBox">
|
<widget class="QPushButton" name="textLoadButton">
|
||||||
<property name="title">
|
<property name="text">
|
||||||
<string>Motif</string>
|
<string>Load from file ...</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
|
||||||
<item>
|
|
||||||
<widget class="QPlainTextEdit" name="motifTextEdit">
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<family>Monospace</family>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="lineWrapMode">
|
|
||||||
<enum>QPlainTextEdit::NoWrap</enum>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="motifLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Motif length: 0</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="motifButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>Motif</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="2">
|
<item row="0" column="0" rowspan="8">
|
||||||
<widget class="QGroupBox" name="resultGroupBox">
|
<widget class="QPlainTextEdit" name="textTextEdit">
|
||||||
<property name="title">
|
|
||||||
<string>Result</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
|
||||||
<item>
|
|
||||||
<widget class="QPlainTextEdit" name="resultTextEdit">
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<family>Monospace</family>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="lineWrapMode">
|
|
||||||
<enum>QPlainTextEdit::NoWrap</enum>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="saveButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>Save</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="loadButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>Load</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0" rowspan="3" colspan="2">
|
|
||||||
<widget class="QGroupBox" name="textGroupBox">
|
|
||||||
<property name="title">
|
|
||||||
<string>Plain text</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
|
||||||
<item>
|
|
||||||
<widget class="QPlainTextEdit" name="textTextEdit">
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<family>Monospace</family>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="lineWrapMode">
|
|
||||||
<enum>QPlainTextEdit::NoWrap</enum>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="textLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Text length: 0</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="encodeButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>Encode</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="4" column="0" colspan="3">
|
|
||||||
<widget class="QGroupBox" name="optionsGroupBox">
|
|
||||||
<property name="title">
|
|
||||||
<string>Options</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" name="gridLayout_2">
|
|
||||||
<item row="0" column="2">
|
|
||||||
<layout class="QFormLayout" name="formLayout_3">
|
|
||||||
<property name="fieldGrowthPolicy">
|
|
||||||
<enum>QFormLayout::ExpandingFieldsGrow</enum>
|
|
||||||
</property>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QLabel" name="inputLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Input</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QLineEdit" name="inputLineEdit"/>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QLineEdit" name="regexLineEdit">
|
|
||||||
<property name="text">
|
|
||||||
<string>#</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLabel" name="regexLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Motif regex</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<layout class="QFormLayout" name="formLayout_2">
|
|
||||||
<property name="fieldGrowthPolicy">
|
|
||||||
<enum>QFormLayout::ExpandingFieldsGrow</enum>
|
|
||||||
</property>
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLabel" name="maxSignsLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Max signs (+/-)</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QSpinBox" name="maxSignsSpinBox">
|
|
||||||
<property name="minimum">
|
|
||||||
<number>1</number>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<number>255</number>
|
|
||||||
</property>
|
|
||||||
<property name="value">
|
|
||||||
<number>10</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QLabel" name="decadesLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Decades size</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QSpinBox" name="decadesSpinBox">
|
|
||||||
<property name="minimum">
|
|
||||||
<number>1</number>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<number>255</number>
|
|
||||||
</property>
|
|
||||||
<property name="value">
|
|
||||||
<number>10</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
<zorder>textGroupBox</zorder>
|
|
||||||
<zorder>programGroupBox</zorder>
|
|
||||||
<zorder>motifGoupBox</zorder>
|
|
||||||
<zorder>resultGroupBox</zorder>
|
|
||||||
<zorder>optionsGroupBox</zorder>
|
|
||||||
</widget>
|
|
||||||
<widget class="QWidget" name="tab_2">
|
|
||||||
<attribute name="title">
|
|
||||||
<string>Debug</string>
|
|
||||||
</attribute>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_6">
|
|
||||||
<item>
|
|
||||||
<widget class="QTextEdit" name="debugTextEdit">
|
|
||||||
<property name="font">
|
<property name="font">
|
||||||
<font>
|
<font>
|
||||||
<family>Monospace</family>
|
<family>Monospace</family>
|
||||||
</font>
|
</font>
|
||||||
</property>
|
</property>
|
||||||
<property name="lineWrapMode">
|
<property name="lineWrapMode">
|
||||||
<enum>QTextEdit::NoWrap</enum>
|
<enum>QPlainTextEdit::NoWrap</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="1" colspan="2">
|
||||||
|
<widget class="QPushButton" name="encodeButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Encode</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QWidget" name="programTab">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Brainfuck program</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_5">
|
||||||
|
<item row="4" column="1">
|
||||||
|
<widget class="QLineEdit" name="inputLineEdit"/>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="3">
|
||||||
|
<widget class="QPushButton" name="programLoadButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Load from file ...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0">
|
||||||
|
<widget class="QLabel" name="inputLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Input</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="3">
|
||||||
|
<widget class="QPushButton" name="decodeButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Decode</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="3">
|
||||||
|
<spacer name="programVerticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="3">
|
||||||
|
<widget class="QPushButton" name="programSaveButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Save to file ...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0" rowspan="4" colspan="2">
|
||||||
|
<widget class="QPlainTextEdit" name="programTextEdit">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<family>Monospace</family>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="lineWrapMode">
|
||||||
|
<enum>QPlainTextEdit::NoWrap</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="motifTab">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Motif</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_6">
|
||||||
|
<item row="5" column="1">
|
||||||
|
<widget class="QLineEdit" name="regexLineEdit">
|
||||||
|
<property name="text">
|
||||||
|
<string>#</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="2">
|
||||||
|
<widget class="QPushButton" name="motifButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Motif</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="0">
|
||||||
|
<widget class="QLabel" name="regexLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Motif regex</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="2">
|
||||||
|
<widget class="QPushButton" name="motifLoadButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Load from file...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="2">
|
||||||
|
<spacer name="motifVerticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="2">
|
||||||
|
<widget class="QPushButton" name="motifSaveButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Save to file ...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0" rowspan="5" colspan="2">
|
||||||
|
<widget class="QPlainTextEdit" name="motifTextEdit">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<family>Monospace</family>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="lineWrapMode">
|
||||||
|
<enum>QPlainTextEdit::NoWrap</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="resultTab">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Result</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_7">
|
||||||
|
<item row="3" column="2">
|
||||||
|
<widget class="QPushButton" name="resultSaveButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Save to file ...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="2">
|
||||||
|
<widget class="QPushButton" name="resultLoadButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Load from file ...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="2">
|
||||||
|
<spacer name="resultVerticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0" rowspan="5">
|
||||||
|
<widget class="QPlainTextEdit" name="resultTextEdit">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<family>Monospace</family>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="lineWrapMode">
|
||||||
|
<enum>QPlainTextEdit::NoWrap</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="2">
|
||||||
|
<widget class="QPushButton" name="qrcodeButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>QRCode</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="qrcodeTab">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>QRCode</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_3">
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QPushButton" name="qrcodeSaveButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Save to file ...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<spacer name="qrcodeVerticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0" rowspan="2">
|
||||||
|
<widget class="QLabel" name="qrcodeLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>QRCode</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="textLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Text length: 0</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="2">
|
||||||
|
<widget class="QLabel" name="motifLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Motif length: 0</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLabel" name="programLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Program length: 0</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="3">
|
||||||
|
<widget class="QLabel" name="resultLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Result length: 0</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="5">
|
||||||
|
<widget class="QPushButton" name="saveAllButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Save All</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="4">
|
||||||
|
<widget class="QPushButton" name="loadAllButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Load All</string>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
Loading…
Reference in New Issue
Block a user