2025-07-17 16:17:39 +00:00
|
|
|
|
#pragma once
|
|
|
|
|
#include <QWidget>
|
|
|
|
|
#include <QTableView>
|
|
|
|
|
#include <QStandardItemModel>
|
|
|
|
|
#include <QStyledItemDelegate>
|
|
|
|
|
#include <QItemDelegate>
|
2025-07-18 15:12:48 +00:00
|
|
|
|
#include <QHash>
|
|
|
|
|
#include <memory>
|
2025-08-01 23:06:42 +00:00
|
|
|
|
#include "TranslateBasic.h"
|
|
|
|
|
|
2025-07-18 15:12:48 +00:00
|
|
|
|
|
|
|
|
|
|
2025-07-17 16:17:39 +00:00
|
|
|
|
|
|
|
|
|
/// <summary>
|
2025-07-18 15:12:48 +00:00
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>Ĵ<DEB8><C4B4><EFBFBD>
|
2025-07-17 16:17:39 +00:00
|
|
|
|
/// </summary>
|
|
|
|
|
class IntDelegate : public QStyledItemDelegate {
|
2025-07-18 14:41:36 +00:00
|
|
|
|
Q_OBJECT
|
|
|
|
|
private:
|
|
|
|
|
int _min_value, _max_value;
|
|
|
|
|
|
|
|
|
|
signals:
|
2025-07-18 15:12:48 +00:00
|
|
|
|
void valueChanged(const QModelIndex& idx) const;
|
2025-07-18 14:41:36 +00:00
|
|
|
|
|
2025-07-17 16:17:39 +00:00
|
|
|
|
public:
|
|
|
|
|
IntDelegate(int min, int max);
|
|
|
|
|
|
|
|
|
|
virtual QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const override;
|
|
|
|
|
virtual void setEditorData(QWidget* editor, const QModelIndex& index) const override;
|
|
|
|
|
virtual void setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const override;
|
|
|
|
|
virtual void updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& index) const override;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2025-07-18 15:12:48 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>༭<EFBFBD><E0BCAD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
2025-07-17 16:17:39 +00:00
|
|
|
|
class RuleSelectDelegate : public QStyledItemDelegate {
|
2025-07-18 14:41:36 +00:00
|
|
|
|
Q_OBJECT
|
2025-07-17 16:17:39 +00:00
|
|
|
|
private:
|
|
|
|
|
std::shared_ptr<TranslateBasic> _kernel;
|
2025-07-18 14:41:36 +00:00
|
|
|
|
|
|
|
|
|
signals:
|
2025-08-03 09:26:53 +00:00
|
|
|
|
void dataChanged(const QModelIndex& idx) const;
|
2025-07-17 16:17:39 +00:00
|
|
|
|
|
|
|
|
|
public:
|
2025-07-18 14:41:36 +00:00
|
|
|
|
RuleSelectDelegate(std::shared_ptr<TranslateBasic> ins);
|
2025-07-17 16:17:39 +00:00
|
|
|
|
|
|
|
|
|
virtual QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const override;
|
|
|
|
|
virtual void setEditorData(QWidget* editor, const QModelIndex& index) const override;
|
|
|
|
|
virtual void setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const override;
|
|
|
|
|
virtual void updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& index) const override;
|
|
|
|
|
};
|
|
|
|
|
|
2025-07-18 15:12:48 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ
|
|
|
|
|
/// </summary>
|
2025-07-18 15:39:28 +00:00
|
|
|
|
class SequenceRulesView : public QTableView {
|
2025-07-18 14:58:49 +00:00
|
|
|
|
Q_OBJECT
|
2025-08-05 10:30:24 +00:00
|
|
|
|
private:
|
2025-08-03 09:26:53 +00:00
|
|
|
|
struct __Private {
|
2025-08-05 10:30:24 +00:00
|
|
|
|
QStandardItemModel* _seqs_model;
|
2025-08-03 09:26:53 +00:00
|
|
|
|
std::shared_ptr<TranslateBasic> base = nullptr;
|
2025-08-04 01:27:04 +00:00
|
|
|
|
std::shared_ptr<extract::BytesAsRuleSet> _ruleset = nullptr;
|
|
|
|
|
} _view;
|
2025-07-17 16:17:39 +00:00
|
|
|
|
|
2025-07-18 14:58:49 +00:00
|
|
|
|
signals:
|
2025-08-03 09:26:53 +00:00
|
|
|
|
void currentRuleChanged(std::shared_ptr<ExtractUnit> u, const QModelIndex& i) const;
|
2025-07-18 14:58:49 +00:00
|
|
|
|
|
2025-07-18 14:41:36 +00:00
|
|
|
|
public:
|
2025-08-03 09:26:53 +00:00
|
|
|
|
void currentRuleRefresh(const QModelIndex& idx);
|
|
|
|
|
void peersRuleChanged(const QModelIndex& idx_rule);
|
2025-07-18 14:41:36 +00:00
|
|
|
|
|
2025-08-05 10:30:24 +00:00
|
|
|
|
protected:
|
|
|
|
|
void showEvent(QShowEvent* e) override;
|
|
|
|
|
|
2025-07-17 16:17:39 +00:00
|
|
|
|
public:
|
2025-08-05 10:30:24 +00:00
|
|
|
|
SequenceRulesView(
|
|
|
|
|
std::shared_ptr<TranslateBasic> base,
|
|
|
|
|
std::shared_ptr<extract::BytesAsRuleSet> rule_set, QWidget* p = nullptr);
|
2025-07-17 16:17:39 +00:00
|
|
|
|
|
|
|
|
|
void customTranslateRuleEdit(const QPoint& pos);
|
|
|
|
|
void addTranslateUnit();
|
|
|
|
|
void removeTranslateUnit();
|
2025-08-05 10:30:24 +00:00
|
|
|
|
|
|
|
|
|
void membersPresent(std::shared_ptr<extract::BytesAsRuleSet> _bind, QStandardItemModel* model);
|
2025-07-17 16:17:39 +00:00
|
|
|
|
};
|
|
|
|
|
|