#pragma once #include #include #include #include #include #include #include #include #include "SequenceView.h" /// /// 空白配置面板 /// 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); }; #include "extract_basic.h" /// /// 位联合配置面板 /// 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); }; class ListUnitConfiguration : public QWidget { Q_OBJECT private: std::shared_ptr _bind_core; std::shared_ptr _bind_u; QModelIndex _bind_index; QComboBox* const _rule_select; QComboBox* const _size_layout_select; QStackedWidget* const _configs_stack; QSpinBox* const _const_number_input; QComboBox* const _prev_field_refer; public: ListUnitConfiguration(std::shared_ptr core, QWidget* p = nullptr); void currentRuleAccept( std::shared_ptr u, const QModelIndex& i, std::shared_ptr getter); void reloadContent(std::shared_ptr u, std::shared_ptr getter); signals: void currentRuleChanged(const QModelIndex& idx); }; class StructuralRuleView : public QWidget { private: SequenceRulesView* const _sequence_view; QStackedWidget* const _configs_stack; public: StructuralRuleView(QWidget* p = nullptr); };