#ifndef PALETTEEDITOR_H #define PALETTEEDITOR_H #include #include #include #include #include #include "project.h" #include "history.h" namespace Ui { class PaletteEditor; } class PaletteHistoryItem { public: QList colors; PaletteHistoryItem(QList colors) { this->colors = colors; } }; class PaletteEditor : public QMainWindow { Q_OBJECT public: explicit PaletteEditor(Project*, Tileset*, Tileset*, int paletteId, QWidget *parent = nullptr); ~PaletteEditor(); void setPaletteId(int); void setTilesets(Tileset*, Tileset*); private: Ui::PaletteEditor *ui; Project *project = nullptr; QList> sliders; QList> spinners; QList frames; QList pickButtons; QList hexEdits; Tileset *primaryTileset; Tileset *secondaryTileset; QList> palettesHistory; void refreshColorUis(); void updateColorUi(int index, QRgb color); void commitEditHistory(int paletteid); void restoreWindowState(); void setSignalsEnabled(bool enabled); void setColorsFromHistory(PaletteHistoryItem*, int); void closeEvent(QCloseEvent*); void pickColor(int i); void setRgb(int index, QRgb rgb); void setRgbFromSliders(int colorIndex); void setRgbFromHexEdit(int colorIndex); void setRgbFromSpinners(int colorIndex); void setBitDepth(int bits); int bitDepth = 24; class HexCodeValidator : public QValidator { virtual QValidator::State validate(QString &input, int &) const override { input = input.toUpper(); return QValidator::Acceptable; } }; HexCodeValidator *hexValidator = nullptr; signals: void closed(); void changedPaletteColor(); void changedPalette(int); private slots: void on_spinBox_PaletteId_valueChanged(int arg1); void on_actionUndo_triggered(); void on_actionRedo_triggered(); void on_actionImport_Palette_triggered(); }; #endif // PALETTEEDITOR_H