1 #ifndef _GPXE_EDITBOX_H 2 #define _GPXE_EDITBOX_H 3 4 /** @file 5 * 6 * Editable text box widget 7 * 8 */ 9 10 FILE_LICENCE ( GPL2_OR_LATER ); 11 12 #include <curses.h> 13 #include <gpxe/editstring.h> 14 15 /** An editable text box widget */ 16 struct edit_box { 17 /** Editable string */ 18 struct edit_string string; 19 /** Containing window */ 20 WINDOW *win; 21 /** Row */ 22 unsigned int row; 23 /** Starting column */ 24 unsigned int col; 25 /** Width */ 26 unsigned int width; 27 /** First displayed character */ 28 unsigned int first; 29 /** Flags */ 30 unsigned int flags; 31 }; 32 33 /** Editable text box widget flags */ 34 enum edit_box_flags { 35 /** Show stars instead of contents (for password widgets) */ 36 EDITBOX_STARS = 0x0001, 37 }; 38 39 extern void init_editbox ( struct edit_box *box, char *buf, size_t len, 40 WINDOW *win, unsigned int row, unsigned int col, 41 unsigned int width, unsigned int flags ) 42 __attribute__ (( nonnull (1, 2) )); 43 extern void draw_editbox ( struct edit_box *box ) __nonnull; 44 static inline int edit_editbox ( struct edit_box *box, int key ) __nonnull; 45 46 /** 47 * Edit text box widget 48 * 49 * @v box Editable text box widget 50 * @v key Key pressed by user 51 * @ret key Key returned to application, or zero 52 * 53 * You must call draw_editbox() to update the display after calling 54 * edit_editbox(). 55 * 56 */ 57 static inline int edit_editbox ( struct edit_box *box, int key ) { 58 return edit_string ( &box->string, key ); 59 } 60 61 #endif /* _GPXE_EDITBOX_H */ 62