QBinaryTranslate/TranslateUI/SequenceView.h

81 lines
2.4 KiB
C
Raw Normal View History

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-08-05 11:26:19 +00:00
namespace unit_func {
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD>޸Ĵ<DEB8><C4B4><EFBFBD>
/// </summary>
class IntDelegate : public QStyledItemDelegate {
Q_OBJECT
private:
int _min_value, _max_value;
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;
};
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0BCAD><EFBFBD><EFBFBD>
/// </summary>
class RuleSelectDelegate : public QStyledItemDelegate {
Q_OBJECT
private:
std::shared_ptr<TranslateBasic> _kernel;
public:
RuleSelectDelegate(std::shared_ptr<TranslateBasic> ins);
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-17 16:17:39 +00:00
2025-07-18 15:12:48 +00:00
/// <summary>
/// <20><><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ
/// </summary>
2025-08-05 10:52:25 +00:00
class RuleSetCustom : 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-05 14:00:41 +00:00
std::shared_ptr<extract::AsRuleSet> _ruleset = nullptr;
2025-08-04 01:27:04 +00:00
} _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-05 10:52:25 +00:00
void targetRuleRefresh(const QModelIndex& idx);
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:52:25 +00:00
RuleSetCustom(std::shared_ptr<TranslateBasic> base,
2025-08-05 14:00:41 +00:00
std::shared_ptr<extract::AsRuleSet> 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
2025-08-05 14:00:41 +00:00
void membersPresent(std::shared_ptr<extract::AsRuleSet> _bind, QStandardItemModel* model);
2025-07-17 16:17:39 +00:00
};