QBinaryTranslate/TranslateUI/StructView.cpp

81 lines
4.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "StructView.h"
#include <QGridLayout>
#include <QLabel>
#include <QComboBox>
#include <QPushButton>
#include <QSplitter>
#include <QGroupBox>
#include <QTabWidget>
BinaryStructView::BinaryStructView(QWidget* p /*= nullptr*/)
:QWidget(p),
_name_enter(new QLineEdit(this)),
_base_type(new QComboBox(this)),
_ends_set(new QComboBox(this)),
_bin_layout(new QTableView(this)),
_bin_model(new QStandardItemModel(this)),
_struct_layout(new QTreeView(this)),
_struct_model(new QStandardItemModel(this)),
_translate_layout(new QTreeView(this)),
_translate_model(new QStandardItemModel(this))
{
auto layout = new QGridLayout(this);
//layout->setSpacing(10);
layout->addWidget(new QLabel(tr("Unit Name:"), this));
layout->addWidget(_name_enter, 0, 1);
layout->addWidget(new QLabel(tr("Base On:"), this), 0, 2);
layout->addWidget(_base_type, 0, 3);
layout->addWidget(new QLabel(tr("Basedata Endian Appoint:"), this), 0, 4);
layout->addWidget(_ends_set, 0, 5);
auto btn = new QPushButton(tr("Save"), this);
layout->addWidget(btn, 0, 6);
auto h_splitter = new QSplitter(Qt::Horizontal, this);
layout->addWidget(h_splitter, 1, 0, 3, 7);
auto splitter = new QSplitter(Qt::Vertical, this);
h_splitter->addWidget(splitter);
auto translation_panel = new QGroupBox(tr("Translation Detail"), this);
auto translation_layout = new QGridLayout(translation_panel);
translation_layout->addWidget(this->_translate_layout);
h_splitter->addWidget(translation_panel);
auto bin_panel = new QGroupBox(tr("Sequence Define"));
auto bin_layout = new QGridLayout(bin_panel);
bin_layout->addWidget(_bin_layout);
splitter->addWidget(bin_panel);
auto struct_panel = new QGroupBox(tr("Structual Preview"), this);
auto struct_layout = new QGridLayout(struct_panel);
struct_layout->addWidget(_struct_layout);
splitter->addWidget(struct_panel);
// =======================
_base_type->addItems(QStringList()<<tr("Struct Based")<<tr("Union Based"));
_ends_set->addItems(QStringList() << tr("little-endian") << tr("big-endian"));
_bin_layout->setModel(_bin_model);
_struct_layout->setModel(_struct_model);
_translate_layout->setModel(this->_translate_model);
_bin_model->setHorizontalHeaderLabels(QStringList() << tr("Member Name") << tr("Logical Type") << tr("Base Type")
<< tr("Bytes Offset") << tr("Bytes Count") << tr("Translate Type") << tr("Rule Custom") << tr("Result With"));
_bin_model->appendRow(QList<QStandardItem*>() << new QStandardItem(u8"<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>־")<< new QStandardItem(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
<< new QStandardItem(u8"UINT8") << new QStandardItem("0") << new QStandardItem("1*1")
<< new QStandardItem(u8"ֱ<EFBFBD><EFBFBD>") << new QStandardItem(u8"<EFBFBD>ı<EFBFBD>ת<EFBFBD><EFBFBD>") << new QStandardItem(u8"To=16<31><36><EFBFBD><EFBFBD>"));
_bin_model->appendRow(QList<QStandardItem*>() << new QStandardItem(u8"<EFBFBD><EFBFBD><EFBFBD>ϳߴ<EFBFBD>") << new QStandardItem(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
<< new QStandardItem(u8"UINT16") << new QStandardItem("0") << new QStandardItem(u8"2*1")
<< new QStandardItem(u8"ֱ<EFBFBD><EFBFBD>") << new QStandardItem(u8"<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ȡ") << new QStandardItem(u8"To=int,LSB=10"));
_bin_model->appendRow(QList<QStandardItem*>() << new QStandardItem(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") << new QStandardItem(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
<< new QStandardItem(u8"UINT8") << new QStandardItem("0") << new QStandardItem(u8"1*<2A><><EFBFBD>ϳߴ<CFB3>"));
_bin_model->appendRow(QList<QStandardItem*>() << new QStandardItem(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") << new QStandardItem(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
<< new QStandardItem(u8"X<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") << new QStandardItem("0") << new QStandardItem(u8"8*1"));
_struct_model->setHorizontalHeaderLabels(QStringList() << tr("Fields") << tr("Comment"));
_translate_model->setHorizontalHeaderLabels(QStringList() << tr("Apply Condition") << tr("Translate Type") << tr("RuleBase") << tr("Result With"));
_translate_model->appendRow(QList< QStandardItem*>() << new QStandardItem(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") << new QStandardItem(u8"ֱ<EFBFBD><EFBFBD>") << new QStandardItem(u8"<EFBFBD><EFBFBD>ֵת<EFBFBD><EFBFBD>") << new QStandardItem(u8"To=16<31><36><EFBFBD><EFBFBD>"));
_translate_model->appendRow(QList< QStandardItem*>() << new QStandardItem(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") << new QStandardItem(u8"ֱ<EFBFBD><EFBFBD>") << new QStandardItem(u8"<EFBFBD><EFBFBD>ֵת<EFBFBD><EFBFBD>") << new QStandardItem(u8"To=float,LSB=0.1"));
}