QBinaryTranslate/TranslateUI/StructView.cpp

79 lines
3.7 KiB
C++
Raw Normal View History

2025-07-13 18:33:40 +00:00
#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"));
_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"));
_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"));
_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"));
}