186d7f5d3SJohn Marino /* 286d7f5d3SJohn Marino * Copyright (c)2004 Cat's Eye Technologies. All rights reserved. 386d7f5d3SJohn Marino * 486d7f5d3SJohn Marino * Redistribution and use in source and binary forms, with or without 586d7f5d3SJohn Marino * modification, are permitted provided that the following conditions 686d7f5d3SJohn Marino * are met: 786d7f5d3SJohn Marino * 886d7f5d3SJohn Marino * Redistributions of source code must retain the above copyright 986d7f5d3SJohn Marino * notice, this list of conditions and the following disclaimer. 1086d7f5d3SJohn Marino * 1186d7f5d3SJohn Marino * Redistributions in binary form must reproduce the above copyright 1286d7f5d3SJohn Marino * notice, this list of conditions and the following disclaimer in 1386d7f5d3SJohn Marino * the documentation and/or other materials provided with the 1486d7f5d3SJohn Marino * distribution. 1586d7f5d3SJohn Marino * 1686d7f5d3SJohn Marino * Neither the name of Cat's Eye Technologies nor the names of its 1786d7f5d3SJohn Marino * contributors may be used to endorse or promote products derived 1886d7f5d3SJohn Marino * from this software without specific prior written permission. 1986d7f5d3SJohn Marino * 2086d7f5d3SJohn Marino * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 2186d7f5d3SJohn Marino * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2286d7f5d3SJohn Marino * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 2386d7f5d3SJohn Marino * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 2486d7f5d3SJohn Marino * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 2586d7f5d3SJohn Marino * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 2686d7f5d3SJohn Marino * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 2786d7f5d3SJohn Marino * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2886d7f5d3SJohn Marino * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 2986d7f5d3SJohn Marino * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 3086d7f5d3SJohn Marino * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 3186d7f5d3SJohn Marino * OF THE POSSIBILITY OF SUCH DAMAGE. 3286d7f5d3SJohn Marino */ 3386d7f5d3SJohn Marino 3486d7f5d3SJohn Marino /* 3586d7f5d3SJohn Marino * curses_widget.h 3686d7f5d3SJohn Marino * $Id: curses_widget.h,v 1.5 2005/02/08 07:49:03 cpressey Exp $ 3786d7f5d3SJohn Marino */ 3886d7f5d3SJohn Marino 3986d7f5d3SJohn Marino #include "curses_form.h" 4086d7f5d3SJohn Marino 4186d7f5d3SJohn Marino #ifndef __CURSES_WIDGET_H 4286d7f5d3SJohn Marino #define __CURSES_WIDGET_H 4386d7f5d3SJohn Marino 4486d7f5d3SJohn Marino typedef enum { 4586d7f5d3SJohn Marino CURSES_LABEL, 4686d7f5d3SJohn Marino CURSES_TEXTBOX, 4786d7f5d3SJohn Marino CURSES_BUTTON, 4886d7f5d3SJohn Marino CURSES_PROGRESS, 4986d7f5d3SJohn Marino CURSES_CHECKBOX, 5086d7f5d3SJohn Marino CURSES_LISTBOX 5186d7f5d3SJohn Marino } widget_t; 5286d7f5d3SJohn Marino 5386d7f5d3SJohn Marino struct curses_widget { 5486d7f5d3SJohn Marino struct curses_widget *next; /* chain of widgets in form */ 5586d7f5d3SJohn Marino struct curses_widget *prev; 5686d7f5d3SJohn Marino 5786d7f5d3SJohn Marino struct curses_form *form; /* form in which widget lives */ 5886d7f5d3SJohn Marino 5986d7f5d3SJohn Marino unsigned int x; /* x pos of widget in form, 0 = left edge */ 6086d7f5d3SJohn Marino unsigned int y; /* y pos of widget in form, 0 = top edge */ 6186d7f5d3SJohn Marino unsigned int width; /* width of widget */ 6286d7f5d3SJohn Marino unsigned int type; /* CURSES_* type of widget */ 6386d7f5d3SJohn Marino char *text; /* for labels, textboxes, buttons */ 6486d7f5d3SJohn Marino unsigned int size; /* for textboxes, allocated size of text */ 6586d7f5d3SJohn Marino unsigned int curpos; /* for textboxes, cursor position */ 6686d7f5d3SJohn Marino unsigned int offset; /* for textboxes, first displayed char */ 6786d7f5d3SJohn Marino int editable; /* for textboxes, text is editable */ 6886d7f5d3SJohn Marino int obscured; /* for textboxes, text is ****'ed out */ 6986d7f5d3SJohn Marino int amount; /* for progress bars, sliders, checkboxes */ 7086d7f5d3SJohn Marino int spin; /* for progress bars */ 7186d7f5d3SJohn Marino char *tooltip; /* short help text displayed on statusbar */ 7286d7f5d3SJohn Marino char accel; /* 'accelerator' - shortcut key */ 7386d7f5d3SJohn Marino int flags; /* flags */ 7486d7f5d3SJohn Marino 7586d7f5d3SJohn Marino int user_id; /* misc integer */ 7686d7f5d3SJohn Marino void *userdata; /* misc pointer */ 7786d7f5d3SJohn Marino 7886d7f5d3SJohn Marino /* callback for when widget is clicked */ 7986d7f5d3SJohn Marino /* for buttons */ 8086d7f5d3SJohn Marino int (*click_cb)(struct curses_widget *); 8186d7f5d3SJohn Marino }; 8286d7f5d3SJohn Marino 8386d7f5d3SJohn Marino #define CURSES_WIDGET_CENTER 1 /* auto center this widget? */ 8486d7f5d3SJohn Marino #define CURSES_WIDGET_WIDEN 2 /* auto widen this widget? */ 8586d7f5d3SJohn Marino 8686d7f5d3SJohn Marino struct curses_widget *curses_widget_new(unsigned int, unsigned int, 8786d7f5d3SJohn Marino unsigned int, widget_t, 8886d7f5d3SJohn Marino const char *, 8986d7f5d3SJohn Marino unsigned int, unsigned int); 9086d7f5d3SJohn Marino void curses_widget_free(struct curses_widget *); 9186d7f5d3SJohn Marino void curses_widget_draw(struct curses_widget *); 9286d7f5d3SJohn Marino void curses_widget_draw_tooltip(struct curses_widget *); 9386d7f5d3SJohn Marino int curses_widget_can_take_focus(struct curses_widget *); 9486d7f5d3SJohn Marino void curses_widget_tooltip_set(struct curses_widget *, const char *); 9586d7f5d3SJohn Marino int curses_widget_set_click_cb(struct curses_widget *, 9686d7f5d3SJohn Marino int (*)(struct curses_widget *)); 9786d7f5d3SJohn Marino int curses_widget_click(struct curses_widget *); 9886d7f5d3SJohn Marino 9986d7f5d3SJohn Marino int curses_textbox_advance_char(struct curses_widget *); 10086d7f5d3SJohn Marino int curses_textbox_retreat_char(struct curses_widget *); 10186d7f5d3SJohn Marino int curses_textbox_home(struct curses_widget *); 10286d7f5d3SJohn Marino int curses_textbox_end(struct curses_widget *); 10386d7f5d3SJohn Marino int curses_textbox_insert_char(struct curses_widget *, char); 10486d7f5d3SJohn Marino int curses_textbox_backspace_char(struct curses_widget *); 10586d7f5d3SJohn Marino int curses_textbox_delete_char(struct curses_widget *); 10686d7f5d3SJohn Marino int curses_textbox_set_text(struct curses_widget *, const char *); 10786d7f5d3SJohn Marino 10886d7f5d3SJohn Marino int curses_checkbox_toggle(struct curses_widget *); 10986d7f5d3SJohn Marino 11086d7f5d3SJohn Marino int curses_progress_spin(struct curses_widget *); 11186d7f5d3SJohn Marino 11286d7f5d3SJohn Marino #endif /* !__CURSES_WIDGET_H */ 113