1 /* 2 * label_field.h 3 * DIN Is Noise is copyright (c) 2006-2021 Jagannathan Sampath 4 * DIN Is Noise is released under GNU Public License 2.0 5 * For more information, please visit https://dinisnoise.org/ 6 */ 7 8 9 #ifndef __label_field 10 #define __label_field 11 12 #include "label.h" 13 #include "field.h" 14 #include <string> 15 16 struct label_field : widget { 17 18 label lbl; 19 field fld; 20 21 label_field (int x = 0, int y = 0) { 22 lbl.add_child (this); 23 lbl.add_child (&fld); 24 } 25 updatelabel_field26 void update () { 27 set_pos (posx, posy); 28 lbl.update (); 29 fld.update (); 30 } 31 set_poslabel_field32 void set_pos (int x, int y) { 33 widget::set_pos (x, y); 34 lbl.set_pos (x, y); 35 advance_right (x, lbl); 36 fld.set_pos (x, y); 37 set_extents (lbl.extents.left, lbl.extents.bottom, fld.extents.right, fld.extents.top); 38 } 39 handle_inputlabel_field40 int handle_input () { 41 int t = lbl.handle_input (); 42 t |= fld.handle_input (); 43 return t; 44 } 45 drawlabel_field46 void draw () { 47 lbl.draw (); 48 fld.draw (); 49 } 50 set_colorlabel_field51 void set_color (float r, float g, float b) { 52 lbl.set_color (r, g, b); 53 fld.set_color (r, g, b); 54 } 55 set_colorlabel_field56 void set_color (unsigned char r, unsigned char g, unsigned char b) { 57 lbl.set_color (r, g, b); 58 fld.set_color (r, g, b); 59 } 60 get_colorlabel_field61 const color& get_color () const {return lbl.clr;} 62 set_labellabel_field63 void set_label (const std::string& l) { 64 lbl.set_text (l); 65 set_pos (posx, posy); 66 set_name (l); 67 } 68 set_textlabel_field69 void set_text (const std::string& f) { 70 fld.set_text (f); 71 set_extents (lbl.extents.left, lbl.extents.bottom, fld.extents.right, fld.extents.top); 72 } 73 set_listenerlabel_field74 void set_listener (change_listener<field>* l) { 75 fld.change_lsnr = l; 76 } 77 78 void set_moveable (int m, int mc = 0, int* pmb = &lmb) { 79 lbl.set_moveable (m, mc, pmb); 80 } 81 82 }; 83 84 #endif 85