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