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