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