60 lines
1.2 KiB
C++
60 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include <vector>
|
|
|
|
#include <QDialog>
|
|
|
|
#include "runeaspekt.h"
|
|
#include "runepage.h"
|
|
#include "runestyle.h"
|
|
|
|
namespace Ui {
|
|
class RuneEditor;
|
|
}
|
|
|
|
class ClientAPI;
|
|
class RuneAspektButton;
|
|
class QGridLayout;
|
|
|
|
class RuneEditor : public QDialog {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit RuneEditor(QWidget* parent = nullptr);
|
|
~RuneEditor();
|
|
|
|
void setClient(ClientAPI& client);
|
|
void setRunepage(const ::RunePage& rp);
|
|
|
|
void selectStyle(uint32_t id);
|
|
void selectSubStyle(uint32_t id);
|
|
|
|
void clearLayout(QLayout* layout);
|
|
|
|
void setName(QString text);
|
|
QString getName() const;
|
|
|
|
constexpr const RunePage& getRunepage() const { return runepage; }
|
|
|
|
signals:
|
|
void selectionChanged();
|
|
|
|
private slots:
|
|
void aspectCliecked();
|
|
|
|
private:
|
|
const RuneStyle* getRuneStyle(uint32_t id) const;
|
|
RuneAspektButton* createStyleButton(const RuneStyle& rs, bool selected);
|
|
RuneAspektButton* createAspektButton(const RuneAspekt& ra);
|
|
RuneAspektButton* createButtonFromResource(QString resource);
|
|
void fillRuneStyle(QGridLayout* target, const RuneStyle& rs, bool subRunes = false);
|
|
QString fixString(QString text);
|
|
|
|
Ui::RuneEditor* ui;
|
|
|
|
ClientAPI* client = nullptr;
|
|
::RunePage runepage;
|
|
std::vector<RuneAspekt> aspekts;
|
|
std::vector<RuneStyle> styles;
|
|
};
|