#pragma once #include #include #include #include #include #include #include class ExtractUnit; /// /// 翻译程序核心 /// class TranslateBasic { private: QHash> _extractor_types; std::shared_ptr _default_translate_rule; public: TranslateBasic(); std::shared_ptr defaultRule() const; QHash> extactors() 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 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; 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(); };