1 #pragma once
2 
3 #include "gui/objects/Palette.h"
4 #include "objects/containers/UnorderedMap.h"
5 #include "objects/wrappers/Function.h"
6 #include <wx/frame.h>
7 #include <wx/panel.h>
8 
9 NAMESPACE_SPH_BEGIN
10 
11 class ComboBox;
12 class FloatTextCtrl;
13 class PaletteCanvas;
14 
15 class PalettePanel : public wxPanel {
16 private:
17     ComboBox* paletteBox;
18 
19     PaletteCanvas* canvas;
20     FloatTextCtrl* lowerCtrl;
21     FloatTextCtrl* upperCtrl;
22 
23     UnorderedMap<String, Palette> paletteMap;
24 
25     Palette initial;
26     Palette selected;
27 
28 public:
29     PalettePanel(wxWindow* parent, wxSize size, const Palette palette);
30 
31     void setPalette(const Palette& palette);
32 
33     Function<void(Palette)> onPaletteChanged;
34 
35 private:
36     void setDefaultPaletteList();
37 
38     void loadPalettes(const Path& path);
39 
40     void update();
41 };
42 
43 NAMESPACE_SPH_END
44