QBinaryTranslate/TranslateUI/StructuralRuleView.h

136 lines
3.2 KiB
C
Raw Normal View History

2025-07-19 02:58:46 +00:00
#pragma once
#include <QWidget>
#include <QTableView>
#include <QStandardItemModel>
#include <QTreeView>
#include <QLineEdit>
#include <QStackedWidget>
#include <QSpinBox>
#include <QCheckBox>
#include "SequenceView.h"
2025-08-05 11:26:19 +00:00
namespace configuration_panel {
/// <summary>
/// <20>հ<EFBFBD><D5B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
class EmptyConfiguration : public QWidget {
public:
EmptyConfiguration(QWidget* p = nullptr);
};
/// <summary>
/// <20>ֶγ<D6B6><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
class CountWithinConfiguration : public QWidget {
Q_OBJECT
private:
std::shared_ptr<ExtractUnit> _bind_u;
QModelIndex _bind_index;
QSpinBox* const _count_input;
public:
CountWithinConfiguration(QWidget* p = nullptr);
void currentRuleAccept(std::shared_ptr<ExtractUnit> u, const QModelIndex& i);
signals:
void currentRuleChanged(const QModelIndex& idx);
};
/// <summary>
/// <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
class EncodingConfiguration : public QWidget {
Q_OBJECT
private:
std::shared_ptr<ExtractUnit> _bind_u;
QModelIndex _bind_index;
QSpinBox* const _count_input;
QComboBox* const _encoding_set;
public:
EncodingConfiguration(QWidget* p = nullptr);
void currentRuleAccept(std::shared_ptr<ExtractUnit> u, const QModelIndex& i);
signals:
void currentRuleChanged(const QModelIndex& idx);
};
2025-07-19 02:58:46 +00:00
2025-08-01 10:55:53 +00:00
#include "extract_basic.h"
2025-08-05 11:26:19 +00:00
/// <summary>
/// λ<><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
class BitCombineConfiguration : public QWidget {
Q_OBJECT
private:
2025-08-05 14:00:41 +00:00
std::shared_ptr<extract::AsBitCombine> _bind_u;
2025-08-05 11:26:19 +00:00
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<ExtractUnit> u, const QModelIndex& i);
2025-08-05 14:00:41 +00:00
void reloadContent(std::shared_ptr<extract::AsBitCombine> u);
2025-08-05 11:26:19 +00:00
signals:
void currentRuleChanged(const QModelIndex& idx);
};
/// <summary>
/// <20>б<EFBFBD><D0B1>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
class ListUnitConfiguration : public QWidget {
Q_OBJECT
private:
std::shared_ptr<TranslateBasic> _bind_core;
2025-08-05 14:00:41 +00:00
std::shared_ptr<extract::AsList> _bind_u;
2025-08-05 11:26:19 +00:00
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;
2025-08-05 14:00:41 +00:00
void elmRuleSet(const QString &name);
2025-08-05 11:26:19 +00:00
public:
ListUnitConfiguration(std::shared_ptr<TranslateBasic> core, QWidget* p = nullptr);
void currentRuleAccept(
std::shared_ptr<ExtractUnit> u,
const QModelIndex& i,
std::shared_ptr<ScopeFieldsGetter> getter);
2025-08-05 14:00:41 +00:00
void reloadContent(std::shared_ptr<extract::AsList> u,
2025-08-05 11:26:19 +00:00
std::shared_ptr<ScopeFieldsGetter> getter);
signals:
void currentRuleChanged(const QModelIndex& idx);
};
}
2025-08-03 01:59:00 +00:00
2025-08-05 13:03:12 +00:00
class ExtractRuleView : public QWidget
2025-07-19 02:58:46 +00:00
{
private:
2025-08-05 10:52:25 +00:00
RuleSetCustom* const _sequence_view;
2025-07-19 02:58:46 +00:00
QStackedWidget* const _configs_stack;
2025-08-05 14:00:41 +00:00
std::shared_ptr<extract::AsRuleSet> _rule_base;
2025-08-04 01:27:04 +00:00
std::shared_ptr<FieldManagerLayer> _current_fields_cache = nullptr;
2025-07-19 02:58:46 +00:00
public:
2025-08-05 13:03:12 +00:00
ExtractRuleView(std::shared_ptr<TranslateBasic> base,
2025-08-05 14:00:41 +00:00
std::shared_ptr<extract::AsRuleSet> inst_r, QWidget* p = nullptr);
2025-07-19 02:58:46 +00:00
2025-08-05 11:26:19 +00:00
void cacheRefresh(const QModelIndex& curr, configuration_panel::ListUnitConfiguration* t);
2025-07-19 02:58:46 +00:00
};