update integer complete
This commit is contained in:
parent
e5a10a5b47
commit
f82c6e67df
|
@ -93,12 +93,11 @@ SequenceRulesView::SequenceRulesView(QWidget* p /*= nullptr*/)
|
|||
connect(rule_delegate, &RuleSelectDelegate::dataChanged, this, &SequenceRulesView::peersRuleChanged);
|
||||
connect(int_delegate, &IntDelegate::valueChanged, this, &SequenceRulesView::currentRuleRefresh);
|
||||
|
||||
auto select_model = this->selectionModel();
|
||||
connect(select_model, &QItemSelectionModel::currentRowChanged, [=](const QModelIndex& curr) {
|
||||
connect(this, &QTableView::clicked, [=](const QModelIndex& curr) {
|
||||
if (!curr.isValid())
|
||||
return;
|
||||
|
||||
emit this->currentRuleChanged(_rule_sequence[curr.row()]);
|
||||
emit this->currentRuleChanged(_rule_sequence[curr.row()], curr);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -132,6 +131,7 @@ void SequenceRulesView::addTranslateUnit()
|
|||
auto bytes = QJsonDocument(obj).toJson(QJsonDocument::Compact);
|
||||
auto json_doc = QString::fromUtf8(bytes);
|
||||
new_row << new QStandardItem(json_doc);
|
||||
new_row.last()->setEditable(false);
|
||||
|
||||
this->_sequence_model->appendRow(new_row);
|
||||
this->resizeColumnsToContents();
|
||||
|
|
|
@ -77,7 +77,7 @@ private:
|
|||
QList<std::shared_ptr<ExtractUnit>> _rule_sequence;
|
||||
|
||||
signals:
|
||||
void currentRuleChanged(std::shared_ptr<ExtractUnit> u) const;
|
||||
void currentRuleChanged(std::shared_ptr<ExtractUnit> u, const QModelIndex &i) const;
|
||||
|
||||
public:
|
||||
void currentRuleRefresh(const QModelIndex &idx);
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
#include "StructView.h"
|
||||
#include <QGridLayout>
|
||||
#include <QLabel>
|
||||
#include <QComboBox>
|
||||
#include <QPushButton>
|
||||
#include <QSplitter>
|
||||
#include <QGroupBox>
|
||||
#include <QTabWidget>
|
||||
|
||||
StructuralRuleView::StructuralRuleView(QWidget* p /*= nullptr*/)
|
||||
:QWidget(p),
|
||||
_sequence_view(new SequenceRulesView(this)),
|
||||
_configs_stack(new QStackedWidget(this))
|
||||
{
|
||||
auto layout = new QVBoxLayout(this);
|
||||
auto split = new QSplitter(Qt::Horizontal, this);
|
||||
layout->addWidget(split);
|
||||
|
||||
split->addWidget(_sequence_view);
|
||||
split->addWidget(_configs_stack);
|
||||
|
||||
_configs_stack->addWidget(new EmptyConfiguration(this));
|
||||
}
|
||||
|
||||
EmptyConfiguration::EmptyConfiguration(QWidget* p/*=nullptr*/)
|
||||
{
|
||||
auto layout = new QVBoxLayout(this);
|
||||
auto label = new QLabel(u8"µ±Ç°¹æÔòÎÞÐèÅäÖÃ", this);
|
||||
label->setAlignment(Qt::AlignCenter);
|
||||
layout->addWidget(label);
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
#pragma once
|
||||
#include <QWidget>
|
||||
#include <QTableView>
|
||||
#include <QStandardItemModel>
|
||||
#include <QTreeView>
|
||||
#include <QLineEdit>
|
||||
#include <QStackedWidget>
|
||||
#include "SequenceView.h"
|
||||
|
||||
/// <summary>
|
||||
/// ¿Õ°×ÅäÖÃÃæ°å
|
||||
/// </summary>
|
||||
class EmptyConfiguration : public QWidget {
|
||||
public:
|
||||
EmptyConfiguration(QWidget *p=nullptr);
|
||||
};
|
||||
|
||||
class StructuralRuleView : public QWidget
|
||||
{
|
||||
private:
|
||||
SequenceRulesView *const _sequence_view;
|
||||
QStackedWidget *const _configs_stack;
|
||||
|
||||
public:
|
||||
StructuralRuleView(QWidget* p = nullptr);
|
||||
|
||||
};
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
#include "StructuralRuleView.h"
|
||||
#include <QGridLayout>
|
||||
#include <QLabel>
|
||||
#include <QComboBox>
|
||||
#include <QPushButton>
|
||||
#include <QSplitter>
|
||||
#include <QGroupBox>
|
||||
#include <QTabWidget>
|
||||
#include "TranslateBasic.h"
|
||||
|
||||
StructuralRuleView::StructuralRuleView(QWidget* p /*= nullptr*/)
|
||||
:QWidget(p),
|
||||
_sequence_view(new SequenceRulesView(this)),
|
||||
_configs_stack(new QStackedWidget(this))
|
||||
{
|
||||
auto layout = new QVBoxLayout(this);
|
||||
auto split = new QSplitter(Qt::Horizontal, this);
|
||||
layout->addWidget(split);
|
||||
|
||||
split->addWidget(_sequence_view);
|
||||
split->addWidget(_configs_stack);
|
||||
|
||||
_configs_stack->addWidget(new EmptyConfiguration(this));
|
||||
auto int_config = new IntegerConfiguration(this);
|
||||
_configs_stack->addWidget(int_config);
|
||||
|
||||
|
||||
connect(int_config, &IntegerConfiguration::ruleHasBeenChanged,
|
||||
_sequence_view, &SequenceRulesView::currentRuleRefresh);
|
||||
|
||||
connect(_sequence_view, &SequenceRulesView::currentRuleChanged,
|
||||
[=](std::shared_ptr<ExtractUnit> u, const QModelIndex& i) {
|
||||
if (u->name() == extract::BytesAsInteger().name()) {
|
||||
_configs_stack->setCurrentIndex(1);
|
||||
int_config->setCurrent(i, u);
|
||||
}
|
||||
else {
|
||||
_configs_stack->setCurrentIndex(0);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
EmptyConfiguration::EmptyConfiguration(QWidget* p/*=nullptr*/)
|
||||
{
|
||||
auto layout = new QVBoxLayout(this);
|
||||
auto label = new QLabel(u8"当前规则无需配置", this);
|
||||
label->setAlignment(Qt::AlignCenter);
|
||||
layout->addWidget(label);
|
||||
}
|
||||
|
||||
IntegerConfiguration::IntegerConfiguration(QWidget* p)
|
||||
:_unsigned_mark(new QCheckBox(this))
|
||||
{
|
||||
auto layout = new QGridLayout(this);
|
||||
layout->addWidget(new QLabel(u8"无符号?:"), 0, 0);
|
||||
layout->addWidget(_unsigned_mark, 0, 1, 1, 2);
|
||||
layout->setRowStretch(2, 1);
|
||||
|
||||
connect(_unsigned_mark, &QCheckBox::stateChanged, [=](){
|
||||
auto checkmark = _unsigned_mark->isChecked();
|
||||
_current_extractor->setUnsignedMark(checkmark);
|
||||
emit this->ruleHasBeenChanged(_target_modelindex);
|
||||
});
|
||||
}
|
||||
|
||||
void IntegerConfiguration::setCurrent(const QModelIndex& idx, std::shared_ptr<ExtractUnit> u)
|
||||
{
|
||||
this->_target_modelindex = idx;
|
||||
_current_extractor = std::dynamic_pointer_cast<extract::BytesAsInteger>(u);
|
||||
|
||||
this->_unsigned_mark->setChecked(_current_extractor->unsignedMark());
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
#pragma once
|
||||
#include <QWidget>
|
||||
#include <QTableView>
|
||||
#include <QStandardItemModel>
|
||||
#include <QTreeView>
|
||||
#include <QLineEdit>
|
||||
#include <QStackedWidget>
|
||||
#include <QSpinBox>
|
||||
#include <QCheckBox>
|
||||
#include "SequenceView.h"
|
||||
|
||||
/// <summary>
|
||||
/// ¿Õ°×ÅäÖÃÃæ°å
|
||||
/// </summary>
|
||||
class EmptyConfiguration : public QWidget {
|
||||
public:
|
||||
EmptyConfiguration(QWidget* p = nullptr);
|
||||
};
|
||||
|
||||
namespace extract { class BytesAsInteger; }
|
||||
class IntegerConfiguration : public QWidget {
|
||||
Q_OBJECT
|
||||
private:
|
||||
std::shared_ptr<extract::BytesAsInteger> _current_extractor = nullptr;
|
||||
QModelIndex _target_modelindex;
|
||||
QCheckBox* const _unsigned_mark;
|
||||
|
||||
signals:
|
||||
void ruleHasBeenChanged(const QModelIndex& idx);
|
||||
|
||||
public:
|
||||
IntegerConfiguration(QWidget* p = nullptr);
|
||||
|
||||
void setCurrent(const QModelIndex& idx, std::shared_ptr<ExtractUnit> u);
|
||||
};
|
||||
|
||||
|
||||
class StructuralRuleView : public QWidget
|
||||
{
|
||||
private:
|
||||
SequenceRulesView* const _sequence_view;
|
||||
QStackedWidget* const _configs_stack;
|
||||
|
||||
public:
|
||||
StructuralRuleView(QWidget* p = nullptr);
|
||||
|
||||
};
|
||||
|
|
@ -160,7 +160,6 @@ std::shared_ptr<Serializable> BytesAsInteger::newDefault() const
|
|||
|
||||
BytesAsInteger::BytesAsInteger()
|
||||
:AbstractExtractor(NAME(BytesAsInteger), DataType::Int64) {
|
||||
setCountWithinParse(8);
|
||||
}
|
||||
|
||||
void BytesAsInteger::setUnsignedMark(bool ste)
|
||||
|
@ -175,9 +174,8 @@ bool BytesAsInteger::unsignedMark() const
|
|||
|
||||
bool BytesAsInteger::setCountWithinParse(int bytes)
|
||||
{
|
||||
if (bytes >= 0 && bytes <= 8)
|
||||
bytes = std::min(8, std::max(bytes, 0));
|
||||
return AbstractExtractor::setCountWithinParse(bytes);
|
||||
return false;
|
||||
}
|
||||
|
||||
QVariant BytesAsInteger::parse(const QByteArray& bytes) const
|
||||
|
|
|
@ -98,14 +98,14 @@
|
|||
<QtUic Include="TranslateUI.ui" />
|
||||
<QtMoc Include="TranslateUI.h" />
|
||||
<ClCompile Include="ParseUntility.cpp" />
|
||||
<ClCompile Include="StructView.cpp" />
|
||||
<ClCompile Include="StructuralRuleView.cpp" />
|
||||
<ClCompile Include="TranslateUI.cpp" />
|
||||
<ClCompile Include="main.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="ParseUntility.h" />
|
||||
<QtMoc Include="SequenceView.h" />
|
||||
<ClInclude Include="StructView.h" />
|
||||
<QtMoc Include="StructuralRuleView.h" />
|
||||
<ClInclude Include="TranslateBasic.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#include "TranslateUI.h"
|
||||
#include <QtWidgets/QApplication>
|
||||
#include "StructView.h"
|
||||
#include "StructuralRuleView.h"
|
||||
#include <QDebug>
|
||||
#include "TranslateBasic.h"
|
||||
#include <cmath>
|
||||
|
|
Loading…
Reference in New Issue