Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / ipxe / src / include / ipxe / editbox.h
diff --git a/qemu/roms/ipxe/src/include/ipxe/editbox.h b/qemu/roms/ipxe/src/include/ipxe/editbox.h
new file mode 100644 (file)
index 0000000..9122dbb
--- /dev/null
@@ -0,0 +1,61 @@
+#ifndef _IPXE_EDITBOX_H
+#define _IPXE_EDITBOX_H
+
+/** @file
+ *
+ * Editable text box widget
+ *
+ */
+
+FILE_LICENCE ( GPL2_OR_LATER );
+
+#include <curses.h>
+#include <ipxe/editstring.h>
+
+/** An editable text box widget */
+struct edit_box {
+       /** Editable string */
+       struct edit_string string;
+       /** Containing window */
+       WINDOW *win;
+       /** Row */
+       unsigned int row;
+       /** Starting column */
+       unsigned int col;
+       /** Width */
+       unsigned int width;
+       /** First displayed character */
+       unsigned int first;
+       /** Flags */
+       unsigned int flags;
+};
+
+/** Editable text box widget flags */
+enum edit_box_flags {
+       /** Show stars instead of contents (for password widgets) */
+       EDITBOX_STARS = 0x0001,
+};
+
+extern void init_editbox ( struct edit_box *box, char *buf, size_t len,
+                          WINDOW *win, unsigned int row, unsigned int col,
+                          unsigned int width, unsigned int flags )
+                          __attribute__ (( nonnull (1, 2) ));
+extern void draw_editbox ( struct edit_box *box ) __nonnull;
+static inline int edit_editbox ( struct edit_box *box, int key ) __nonnull;
+
+/**
+ * Edit text box widget
+ *
+ * @v box              Editable text box widget
+ * @v key              Key pressed by user
+ * @ret key            Key returned to application, or zero
+ *
+ * You must call draw_editbox() to update the display after calling
+ * edit_editbox().
+ *
+ */
+static inline int edit_editbox ( struct edit_box *box, int key ) {
+       return edit_string ( &box->string, key );
+}
+
+#endif /* _IPXE_EDITBOX_H */