#pragma once #include #include #include #include #include #include #include "TranslateBasic.h" /// /// 翻译规则编辑代理 /// class RuleSelectDelegate : public QStyledItemDelegate { Q_OBJECT private: std::shared_ptr _kernel; 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 WrapConfigs : public QDialog { private: std::shared_ptr _bind_base; QTableView *const _alias_view; QStandardItemModel *const _alias_model; QStackedWidget *const _configurations; public: WrapConfigs(std::shared_ptr _base, QWidget *p=nullptr); void aliasReload(); void aliasAppend(); void aliasRemove(); void dataChanged(QStandardItem *cell); }; #include #include namespace configurations { /// /// 空白配置面板 /// class EmptyConfiguration : public QWidget { public: EmptyConfiguration(QWidget* p = nullptr); }; /// /// 字段长度配置面板 /// class CountWithinConfiguration : public QWidget { Q_OBJECT private: std::shared_ptr _bind_u; QModelIndex _bind_index; QSpinBox* const _count_input; public: CountWithinConfiguration(QWidget* p = nullptr); void currentRuleAccept(std::shared_ptr u, const QModelIndex& i); signals: void currentRuleChanged(const QModelIndex& idx); }; /// /// 字符串文本编码配置面板 /// class EncodingConfiguration : public QWidget { Q_OBJECT private: std::shared_ptr _bind_u; QModelIndex _bind_index; QSpinBox* const _count_input; QComboBox* const _encoding_set; public: EncodingConfiguration(QWidget* p = nullptr); void currentRuleAccept(std::shared_ptr u, const QModelIndex& i); signals: void currentRuleChanged(const QModelIndex& idx); }; /// /// 位联合配置面板 /// class BitCombineConfiguration : public QWidget { Q_OBJECT private: std::shared_ptr _bind_u; QModelIndex _bind_index; QSpinBox* const _count_input; QTableView* const _bit_items; QStandardItemModel* const _bit_model; QSpinBox* const _index_appoint; QLineEdit* const _bit_means; public: BitCombineConfiguration(QWidget* p = nullptr); void currentRuleAccept(std::shared_ptr u, const QModelIndex& i); void reloadContent(std::shared_ptr u); signals: void currentRuleChanged(const QModelIndex& idx); }; }