#pragma once #include #include #include #include #include /// /// /// class IntDelegate : public QStyledItemDelegate { 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; }; #include #include class ExtractUnit; class TranslateBasic { private: QHash> _extractor_types; std::shared_ptr _default_translate_rule; public: TranslateBasic(); std::shared_ptr defaultRule() const; QHash> extractorMap() const; }; class RuleSelectDelegate : public QStyledItemDelegate { private: std::shared_ptr _kernel; QList> &rule_list; public: RuleSelectDelegate(std::shared_ptr ins, QList> &rule); 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 SequenceView : public QTableView { private: QStandardItemModel* const _seqs_model; std::shared_ptr base = nullptr; QList> _rule_list; public: SequenceView(QWidget* p = nullptr); void customTranslateRuleEdit(const QPoint& pos); void addTranslateUnit(); void removeTranslateUnit(); };