1 /*
2     Copyright © 2020, Inochi2D Project
3     Distributed under the 2-Clause BSD License, see LICENSE file.
4     
5     Authors: Luna Nielsen
6 */
7 module creator.panels.parameters;
8 import creator.panels;
9 import creator.widgets;
10 import creator;
11 import std.string;
12 import inochi2d;
13 import i18n;
14 
15 /**
16     Generates a parameter view
17 */
18 void incParameterView(Parameter param) {
19 
20     igPushID(param.uuid);
21     incInputText("", param.name);
22     igPopID();
23     igNewLine();
24     incController("Test", param, ImVec2(0, 128));
25     param.isVec2 = true;
26     igText("%.2f %.2f", param.handle.x, param.handle.y);
27     igSeparator();
28     
29     // Each param vec mode needs to be rendered individually
30     final switch(param.isVec2) {
31         case true:
32         case false:
33             break;
34     }
35 }
36 
37 /**
38     The logger frame
39 */
40 class ParametersPanel : Panel {
41 private:
42 
43 protected:
44     override
45     void onUpdate() {
46         auto parameters = incActivePuppet().parameters;
47 
48         igBeginChild("ParametersList", ImVec2(0, -32));
49             foreach(param; parameters) {
50                 incParameterView(param);
51             }
52         igEndChild();
53         if (igButton("+", ImVec2(32, 32))) {
54             incActivePuppet().parameters ~= new Parameter(
55                 "New Parameter %d\0".format(parameters.length)
56             );
57         }
58 
59     }
60 
61 public:
62     this() {
63         super("Parameters", _("Parameters"), false);
64     }
65 }
66 
67 /**
68     Generate logger frame
69 */
70 mixin incPanel!ParametersPanel;
71 
72