1 // Graphics User Interface
3 #pragma library("gui.lib")
10 enum{C_CANCEL=-1,C_NONE=0,C_OK,C_YES,C_NO,C_SLIDE,C_SCROLL,C_USER};
23 int left,top,width,height;
24 gui_obj *next,*prev,*child,*owner;
26 gui_obj(int x,int y,int w,int h);
27 virtual void draw(void);
28 virtual void redraw(void);
29 virtual void update(void);
30 virtual int chkmouse(int x,int y,int b);
31 virtual int mouse(int x,int y,int b);
32 virtual int key(int k);
33 virtual void command(int,long);
34 virtual gui_obj& operator +=(gui_obj&);
35 virtual gui_obj& operator <<=(gui_obj&);
36 virtual void remove(void);
45 struct base_button:gui_obj{
50 base_button(int x,int y,int w,int h,int c,long p,int k);
51 virtual void draw(void);
52 virtual int mouse(int x,int y,int b);
53 virtual int key(int k);
57 struct button:base_button{
60 button(int x,int y,int w,int h,char *s,int c,long p,int k);
61 virtual void draw(void);
65 struct sprbutton:base_button{
68 sprbutton(int x,int y,int w,int h,vgaimg *s,int c,long p,int k);
69 virtual void draw(void);
70 virtual void redraw(void);
76 frame(int x,int y,int w,int h);
77 virtual void draw(void);
82 mdialog(int x,int y,int w,int h);
83 virtual int chkmouse(int x,int y,int b);
87 struct msgbox:mdialog{
89 msgbox(int minw,int minh,char *,int x=160,int y=100);
90 virtual void draw(void);
91 virtual void command(int,long);
95 struct vcontbox:frame{
98 vcontbox(int x,int y,int w,int h,int cw,cont_t *,int cur,int cmd);
99 virtual void draw(void);
100 virtual int mouse(int x,int y,int b);
104 struct menubox:frame{
107 menubox(int x,int y,menu_t *);
108 virtual void draw(void);
109 virtual int mouse(int x,int y,int b);
110 virtual int chkmouse(int x,int y,int b);
114 struct base_slider:gui_obj{
117 base_slider(long t,long c,int cmd);
118 virtual void adjust(void);
122 struct hslider:base_slider{
123 hslider(int x,int y,int w,int h,long t,long c,int cmd);
124 virtual void draw(void);
125 virtual int mouse(int x,int y,int b);
128 // horizontal scroll bar
129 struct hscroll:gui_obj{
132 hscroll(int x,int y,int w,int h,long t,long c,int cmd,long step);
133 virtual ~hscroll(void);
134 virtual void command(int,long);
138 struct vslider:base_slider{
139 vslider(int x,int y,int w,int h,long t,long c,int cmd);
140 virtual void draw(void);
141 virtual int mouse(int x,int y,int b);
144 // vertical scroll bar
145 struct vscroll:gui_obj{
148 vscroll(int x,int y,int w,int h,long t,long c,int cmd,long step);
149 virtual ~vscroll(void);
150 virtual void command(int,long);
154 struct strlist:frame{
155 int com,lines,tline,cline;
157 strlist(int x,int y,int w,int h,char **,int cmd);
158 virtual void newlist(char **);
159 virtual void draw(void);
160 virtual int mouse(int x,int y,int b);
163 // string list with scroll bar
164 struct strlist2:gui_obj{
167 strlist2(int x,int y,int w,int h,char **,int cmd,long step);
168 virtual ~strlist2(void);
169 virtual void newlist(char **);
170 virtual void command(int,long);
174 struct chkbox:gui_obj{
177 chkbox(int x,int y,int w,int h,int c,int s);
178 virtual void draw(void);
179 virtual int mouse(int x,int y,int b);
183 struct textstr:gui_obj{
186 textstr(int x,int y,int cntr,int h,char *t,void *f,char c);
187 virtual void newtext(int x,int y,int cntr,int h,char *,void *,char c);
188 virtual void draw(void);
192 struct inputbox:gui_obj{
195 inputbox(int x,int y,int w,int h,char *buf,int sz);
196 virtual void draw(void);
197 virtual int key(int);
208 int I_mget(int *x,int *y);
212 void GUI_start(void); // init GUI
213 void GUI(void); // run GUI
214 void GUI_wait(void); // poll mouse, keys, but don't do anything
215 void GUI_close(void); // close GUI
216 void GUI_update(void); // update screen
218 enum{MB_OK,MB_C,MB_OKC,MB_YN,MB_YNC};
220 int message(int type,char *format,...);
226 void def_command(int,long);
228 void send_command(gui_obj *,int,long);
234 extern vgaimg stdarrow; // cursor image
235 extern int smallfont; // font
236 extern vgapal mainpal; // GUI palette
239 extern unsigned char gray[256];
240 extern vgaimg *mouseshape;
244 extern gui_obj& desktop;