#pragma once #include #include #include #include #include /// /// /// 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; }; #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 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 SequenceView : public QTableView { Q_OBJECT private: QStandardItemModel* const _seqs_model; std::shared_ptr base = nullptr; QList> _rule_list; signals: void currentRuleChanged(std::shared_ptr u) const; public: void tidyRuleAt(const QModelIndex& idx_rule); public: SequenceView(QWidget* p = nullptr); void customTranslateRuleEdit(const QPoint& pos); void addTranslateUnit(); void removeTranslateUnit(); };