#pragma once #include #include #include #include #include #include #include #include "TranslateBasic.h" /// /// 翻译程序核心 /// class TranslateBasic { private: QHash> _extractor_types; std::shared_ptr _default_translate_rule = nullptr; QHash> _size_provider_types; std::shared_ptr _default_size_provider = nullptr; public: TranslateBasic(); std::shared_ptr defaultRule() const; std::shared_ptr defaultSizeProvider() const; QHash> extactors() const; QHash> sizeProviders() const; }; /// /// 整形修改代理 /// class IntDelegate : public QStyledItemDelegate { Q_OBJECT private: int _min_value, _max_value; signals: void valueChanged(const QModelIndex& idx) const; 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; }; /// /// 翻译规则编辑代理 /// class RuleSelectDelegate : public QStyledItemDelegate { Q_OBJECT private: std::shared_ptr _kernel; signals: void dataChanged(const QModelIndex &idx) const; public: RuleSelectDelegate(std::shared_ptr 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; }; class ConstNumberProvider : public extract::SizeProvider { private: QString _number_value; public: QString name() const override; int32_t value(const QString& expr) const override; void setExpression(const QString &expr) override; QString expression() const override; }; /// /// 序列化规则视图 /// class SequenceRulesView : public QTableView { Q_OBJECT private: QStandardItemModel* const _sequence_model; std::shared_ptr base = nullptr; QList> _rule_sequence; signals: void currentRuleChanged(std::shared_ptr u, const QModelIndex &i) const; public: void currentRuleRefresh(const QModelIndex &idx); void peersRuleChanged(const QModelIndex &idx_rule); public: SequenceRulesView(QWidget* p = nullptr); void customTranslateRuleEdit(const QPoint& pos); void addTranslateUnit(); void removeTranslateUnit(); };