This commit is contained in:
codeboss 2025-08-05 18:52:25 +08:00
parent 68b3b86fb9
commit 357ed5642b
4 changed files with 23 additions and 25 deletions

View File

@ -35,7 +35,7 @@ void IntDelegate::updateEditorGeometry(QWidget* editor, const QStyleOptionViewIt
editor->setGeometry(option.rect); editor->setGeometry(option.rect);
} }
void SequenceRulesView::currentRuleRefresh(const QModelIndex& idx) void RuleSetCustom::targetRuleRefresh(const QModelIndex& idx)
{ {
auto rule_insv = _view._ruleset->_bind[idx.row()]; auto rule_insv = _view._ruleset->_bind[idx.row()];
@ -56,7 +56,7 @@ void SequenceRulesView::currentRuleRefresh(const QModelIndex& idx)
this->resizeColumnsToContents(); this->resizeColumnsToContents();
} }
void SequenceRulesView::peersRuleChanged(const QModelIndex& idx) void RuleSetCustom::peersRuleChanged(const QModelIndex& idx)
{ {
auto field_idx = idx.sibling(idx.row(), 0); auto field_idx = idx.sibling(idx.row(), 0);
auto field_name = field_idx.data(Qt::DisplayRole).toString(); auto field_name = field_idx.data(Qt::DisplayRole).toString();
@ -80,10 +80,10 @@ void SequenceRulesView::peersRuleChanged(const QModelIndex& idx)
} }
} }
currentRuleRefresh(idx); targetRuleRefresh(idx);
} }
void SequenceRulesView::showEvent(QShowEvent* e) void RuleSetCustom::showEvent(QShowEvent* e)
{ {
QTableView::showEvent(e); QTableView::showEvent(e);
@ -91,8 +91,7 @@ void SequenceRulesView::showEvent(QShowEvent* e)
} }
#include <QItemSelectionModel> #include <QItemSelectionModel>
SequenceRulesView::SequenceRulesView( RuleSetCustom::RuleSetCustom(std::shared_ptr<TranslateBasic> base,
std::shared_ptr<TranslateBasic> base,
std::shared_ptr<extract::BytesAsRuleSet> rule_set, QWidget* p /*= nullptr*/) std::shared_ptr<extract::BytesAsRuleSet> rule_set, QWidget* p /*= nullptr*/)
:QTableView(p) :QTableView(p)
{ {
@ -111,9 +110,9 @@ SequenceRulesView::SequenceRulesView(
this->setItemDelegateForColumn(2, rule_delegate); this->setItemDelegateForColumn(2, rule_delegate);
this->setContextMenuPolicy(Qt::CustomContextMenu); this->setContextMenuPolicy(Qt::CustomContextMenu);
connect(this, &QTableView::customContextMenuRequested, this, &SequenceRulesView::customTranslateRuleEdit); connect(this, &QTableView::customContextMenuRequested, this, &RuleSetCustom::customTranslateRuleEdit);
connect(rule_delegate, &RuleSelectDelegate::dataChanged, this, &SequenceRulesView::peersRuleChanged); connect(rule_delegate, &RuleSelectDelegate::dataChanged, this, &RuleSetCustom::peersRuleChanged);
connect(int_delegate, &IntDelegate::valueChanged, this, &SequenceRulesView::currentRuleRefresh); connect(int_delegate, &IntDelegate::valueChanged, this, &RuleSetCustom::targetRuleRefresh);
connect(this, &QTableView::clicked, [=](const QModelIndex& curr) { connect(this, &QTableView::clicked, [=](const QModelIndex& curr) {
if (!curr.isValid()) if (!curr.isValid())
@ -124,15 +123,15 @@ SequenceRulesView::SequenceRulesView(
} }
#include <QMenu> #include <QMenu>
void SequenceRulesView::customTranslateRuleEdit(const QPoint& pos) void RuleSetCustom::customTranslateRuleEdit(const QPoint& pos)
{ {
QMenu immediate; QMenu immediate;
immediate.addAction(u8"Add Unit", this, &SequenceRulesView::addTranslateUnit); immediate.addAction(u8"Add Unit", this, &RuleSetCustom::addTranslateUnit);
immediate.addAction(u8"Remove Unit", this, &SequenceRulesView::removeTranslateUnit); immediate.addAction(u8"Remove Unit", this, &RuleSetCustom::removeTranslateUnit);
immediate.exec(this->mapToGlobal(pos)); immediate.exec(this->mapToGlobal(pos));
} }
void SequenceRulesView::addTranslateUnit() void RuleSetCustom::addTranslateUnit()
{ {
auto curr_rule = _view.base->defaultExtractUnit()->newDefault(); auto curr_rule = _view.base->defaultExtractUnit()->newDefault();
this->_view._ruleset->_bind.append( this->_view._ruleset->_bind.append(
@ -145,7 +144,7 @@ void SequenceRulesView::addTranslateUnit()
membersPresent(this->_view._ruleset, this->_view._seqs_model); membersPresent(this->_view._ruleset, this->_view._seqs_model);
} }
void SequenceRulesView::removeTranslateUnit() void RuleSetCustom::removeTranslateUnit()
{ {
auto idx_curr = this->currentIndex(); auto idx_curr = this->currentIndex();
if (!idx_curr.isValid()) if (!idx_curr.isValid())
@ -155,7 +154,7 @@ void SequenceRulesView::removeTranslateUnit()
_view._seqs_model->removeRow(idx_curr.row()); _view._seqs_model->removeRow(idx_curr.row());
} }
void SequenceRulesView::membersPresent(std::shared_ptr<extract::BytesAsRuleSet> ruleset, QStandardItemModel* model) void RuleSetCustom::membersPresent(std::shared_ptr<extract::BytesAsRuleSet> ruleset, QStandardItemModel* model)
{ {
model->removeRows(0, model->rowCount()); model->removeRows(0, model->rowCount());

View File

@ -55,7 +55,7 @@ public:
/// <summary> /// <summary>
/// ÐòÁл¯¹æÔòÊÓͼ /// ÐòÁл¯¹æÔòÊÓͼ
/// </summary> /// </summary>
class SequenceRulesView : public QTableView { class RuleSetCustom : public QTableView {
Q_OBJECT Q_OBJECT
private: private:
struct __Private { struct __Private {
@ -68,15 +68,14 @@ signals:
void currentRuleChanged(std::shared_ptr<ExtractUnit> u, const QModelIndex& i) const; void currentRuleChanged(std::shared_ptr<ExtractUnit> u, const QModelIndex& i) const;
public: public:
void currentRuleRefresh(const QModelIndex& idx); void targetRuleRefresh(const QModelIndex& idx);
void peersRuleChanged(const QModelIndex& idx_rule); void peersRuleChanged(const QModelIndex& idx_rule);
protected: protected:
void showEvent(QShowEvent* e) override; void showEvent(QShowEvent* e) override;
public: public:
SequenceRulesView( RuleSetCustom(std::shared_ptr<TranslateBasic> base,
std::shared_ptr<TranslateBasic> base,
std::shared_ptr<extract::BytesAsRuleSet> rule_set, QWidget* p = nullptr); std::shared_ptr<extract::BytesAsRuleSet> rule_set, QWidget* p = nullptr);
void customTranslateRuleEdit(const QPoint& pos); void customTranslateRuleEdit(const QPoint& pos);

View File

@ -12,7 +12,7 @@ StructuralRuleView::StructuralRuleView(
std::shared_ptr<TranslateBasic> base, std::shared_ptr<TranslateBasic> base,
std::shared_ptr<extract::BytesAsRuleSet> inst_r, QWidget* p /*= nullptr*/) std::shared_ptr<extract::BytesAsRuleSet> inst_r, QWidget* p /*= nullptr*/)
: QWidget(p), _rule_base(inst_r), : QWidget(p), _rule_base(inst_r),
_sequence_view(new SequenceRulesView(base, inst_r, this)), _sequence_view(new RuleSetCustom(base, inst_r, this)),
_configs_stack(new QStackedWidget(this)) _configs_stack(new QStackedWidget(this))
{ {
this->_current_fields_cache = std::make_shared<FieldManagerLayer>("", nullptr); this->_current_fields_cache = std::make_shared<FieldManagerLayer>("", nullptr);
@ -35,13 +35,13 @@ StructuralRuleView::StructuralRuleView(
_configs_stack->addWidget(list_config); _configs_stack->addWidget(list_config);
connect(count_span, &CountWithinConfiguration::currentRuleChanged, connect(count_span, &CountWithinConfiguration::currentRuleChanged,
_sequence_view, &SequenceRulesView::currentRuleRefresh); _sequence_view, &RuleSetCustom::targetRuleRefresh);
connect(encode_config, &EncodingConfiguration::currentRuleChanged, connect(encode_config, &EncodingConfiguration::currentRuleChanged,
_sequence_view, &SequenceRulesView::currentRuleRefresh); _sequence_view, &RuleSetCustom::targetRuleRefresh);
connect(combine_config, &BitCombineConfiguration::currentRuleChanged, connect(combine_config, &BitCombineConfiguration::currentRuleChanged,
_sequence_view, &SequenceRulesView::currentRuleRefresh); _sequence_view, &RuleSetCustom::targetRuleRefresh);
connect(_sequence_view, &SequenceRulesView::currentRuleChanged, connect(_sequence_view, &RuleSetCustom::currentRuleChanged,
[=](std::shared_ptr<ExtractUnit> u, const QModelIndex& i) { [=](std::shared_ptr<ExtractUnit> u, const QModelIndex& i) {
switch (u->outType()) { switch (u->outType()) {
case DataType::TextString: case DataType::TextString:

View File

@ -116,7 +116,7 @@ signals:
class StructuralRuleView : public QWidget class StructuralRuleView : public QWidget
{ {
private: private:
SequenceRulesView* const _sequence_view; RuleSetCustom* const _sequence_view;
QStackedWidget* const _configs_stack; QStackedWidget* const _configs_stack;
std::shared_ptr<extract::BytesAsRuleSet> _rule_base; std::shared_ptr<extract::BytesAsRuleSet> _rule_base;