QBinaryTranslate/TranslateUI/TranslateUI.h

68 lines
1.5 KiB
C++

#pragma once
#include <QtWidgets/QMainWindow>
#include <QStandardItemModel>
#include "TranslateBasic.h"
enum class ViewType {
/// <summary>
/// ÌáÈ¡ÅäÖÃ
/// </summary>
ExtractConfiguration,
/// <summary>
/// УÑéÅäÖÃ
/// </summary>
ValidateConfiguration,
};
class ViewManager : public QObject {
Q_OBJECT
private:
std::shared_ptr<TranslateBasic> _translate_core = nullptr;
QList<std::tuple<std::shared_ptr<extract::AsRuleSet>, QWidget*, ViewType>> content_pages;
public:
ViewManager(std::shared_ptr<TranslateBasic> base, QObject* p = nullptr);
public slots:
void open(const QString& rule_name, ViewType v_type, QWidget* p = nullptr);
void closeAt(int index);
void active(const QString& rule_name, ViewType v_type);
void purge(const QString& rule_name);
signals:
void appendRequest(QWidget* view, const QString& title);
void removeRequest(int index);
void activeRequest(int index, const QString& new_title);
};
#include <QTreeView>
class TranslateUI : public QMainWindow
{
Q_OBJECT
private:
QTabWidget *const _tab_widget;
QTreeView* const _ruleset_navi;
QStandardItemModel* _solution_model = nullptr;
public:
struct __Private {
std::shared_ptr<TranslateBasic> _translate_core = nullptr;
ViewManager* _view_mgr = nullptr;
} _core;
public:
TranslateUI(QWidget* parent = nullptr);
~TranslateUI();
void addCustomRule();
void openExtractView();
void removeCustomRule(const QString &typeAlias);
void present_solution_customs(std::shared_ptr<TranslateBasic> ins, QStandardItemModel* model) const;
};