1 #include <aros/oldprograms.h>
4 * Contains functions for displaying text, eg help, messages, errors
5 * and choices (returning 1 for Yes or 2 for No)
7 #include <intuition/intuition.h>
8 #include <exec/memory.h>
13 #define MINWINWIDTH 170
15 extern struct IntuitionBase
*IntuitionBase
;
17 static SHORT gbp_tl
[]=
18 { 0, 10, 0, 0, 70, 0 };
20 static SHORT gbp_br
[]=
21 { 70, 0, 70, 10, 0, 10, };
23 static struct Border gbu_tl
=
25 0, 0, 0, 0, JAM1
, 3, gbp_tl
, NULL
,
28 static struct Border gbu_br
=
30 0, 0, 0, 0, JAM1
, 3, gbp_br
, &gbu_tl
,
33 static struct Border gbs_tl
=
35 0, 0, 0, 0, JAM1
, 3, gbp_tl
, NULL
,
38 static struct Border gbs_br
=
40 0, 0, 0, 0, JAM1
, 3, gbp_br
, &gbs_tl
,
43 static struct IntuiText req_g_txt_2
=
48 4, 2, /* LeftEdge, TopEdge */
54 static struct IntuiText req_g_txt_1
=
59 4, 2, /* LeftEdge, TopEdge */
65 static struct Gadget req_g_2
=
67 NULL
, /* NextGadget */
72 GADGHIMAGE
, /* Flags */
73 GADGIMMEDIATE
| /* Activation */
76 BOOLGADGET
| /* GadgetType, */
78 (APTR
) &gbu_br
, /* GadgetRender */
79 (APTR
) &gbs_br
, /* SelectRender */
80 &req_g_txt_2
, /* GadgetText */
81 0L, /* MutualExclude */
82 NULL
, /* SpecialInfo */
87 static struct Gadget req_g_1
=
89 NULL
, /* NextGadget */
94 GADGHIMAGE
, /* Flags */
95 GADGIMMEDIATE
| /* Activation */
98 BOOLGADGET
| /* GadgetType, */
100 (APTR
) &gbu_br
, /* GadgetRender */
101 (APTR
) &gbs_br
, /* SelectRender */
102 &req_g_txt_1
, /* GadgetText */
103 0L, /* MutualExclude */
104 NULL
, /* SpecialInfo */
109 static struct Requester my_requester
=
111 NULL
, /* OlderRequester */
112 3, 11, /* LeftEdge, TopEdge */
113 0, 0, /* Width, Height */
114 0, 0, /* RelLeft, RelTop */
115 &req_g_1
, /* ReqGadget */
118 static struct NewWindow my_new_window
=
126 GADGETUP
, /* IDCMP */
127 SMART_REFRESH
| /* Flags */
131 NULL
, /* FirstGadget */
132 NULL
, /* CheckMark */
137 WBENCHSCREEN
/* Type */
141 int Display(char **txt
, int Mode
, int FColour
, int BColour
)
143 extern int Colour
[4];
144 BOOL close_me
,failed
;
145 struct IntuiMessage
*my_message
;
147 int linelen
,maxlen
,txtline
,choice
= 0;
148 struct Window
*my_window
=NULL
;
149 struct IntuiText
*IT1
,*IT2
;
150 struct Remember
*txt_RK
=NULL
;
159 while((*(txt
+txtline
)) && (!failed
) )
161 IT1
=(struct IntuiText
*)
162 AllocRemember(&txt_RK
,sizeof(struct IntuiText
),MEMF_PUBLIC
);
165 IT1
->FrontPen
=Colour
[FColour
];
169 IT1
->TopEdge
=4+10*txtline
;
171 IT1
->IText
=(UBYTE
*)*(txt
+txtline
);
175 my_requester
.ReqText
=IT1
;
183 linelen
=IntuiTextLength(IT1
);
184 if(linelen
>maxlen
)maxlen
=linelen
;
194 if(maxlen
<MINWINWIDTH
)maxlen
=MINWINWIDTH
;
195 my_requester
.Width
=maxlen
+20;
196 my_requester
.Height
=10*txtline
+20;
197 my_requester
.BackFill
=Colour
[BColour
];
198 req_g_txt_1
.FrontPen
= Colour
[FColour
];
199 req_g_txt_2
.FrontPen
= Colour
[FColour
];
200 my_new_window
.Width
=my_requester
.Width
;
201 my_new_window
.Height
=my_requester
.Height
+10;
202 my_new_window
.LeftEdge
=((640-my_requester
.Width
)/2)-1;
203 my_new_window
.TopEdge
=((200-my_requester
.Height
)/2)-1;
204 my_new_window
.Title
="Amigaholics!!";
205 if (Mode
== 0) /*Choice*/
207 req_g_1
.NextGadget
= &req_g_2
;
208 req_g_1
.TopEdge
= req_g_2
.TopEdge
= my_requester
.Height
- 15;
209 req_g_1
.LeftEdge
= 10;
210 req_g_2
.LeftEdge
= my_requester
.Width
- 80;
211 req_g_txt_1
.FrontPen
=Colour
[FColour
];
212 req_g_txt_2
.FrontPen
=Colour
[FColour
];
213 req_g_txt_1
.IText
= " YES ";
214 req_g_txt_2
.IText
= " NO ";
218 req_g_1
.NextGadget
= NULL
;
219 req_g_1
.TopEdge
= my_requester
.Height
- 15;
220 req_g_1
.LeftEdge
= (my_requester
.Width
- 70) / 2;
221 req_g_txt_1
.FrontPen
=Colour
[FColour
];
222 req_g_txt_1
.IText
= " OK ";
226 rb1
.FrontPen
=Colour
[FColour
];
231 rbp1
[0]=1; rbp1
[1]=1;
232 rbp1
[2]=1; rbp1
[3]=my_requester
.Height
-4;
233 rbp1
[4]=my_requester
.Width
-4; rbp1
[5]=my_requester
.Height
-4;
234 rbp1
[6]=my_requester
.Width
-4; rbp1
[7]=1;
235 rbp1
[8]=1; rbp1
[9]=1;
236 gbu_tl
.FrontPen
=Colour
[1];
237 gbu_br
.FrontPen
=Colour
[2];
238 gbs_tl
.FrontPen
=Colour
[2];
239 gbs_br
.FrontPen
=Colour
[1];
240 my_requester
.ReqBorder
=&rb1
;
242 my_window
= (struct Window
*) OpenWindow( &my_new_window
);
243 if(my_window
== NULL
)
245 if(txt_RK
)FreeRemember(&txt_RK
,TRUE
);
249 result
=Request( &my_requester
, my_window
);
252 printf("Could not activate the requester!\n");
253 if(my_window
)CloseWindow(my_window
);
254 if(txt_RK
)FreeRemember(&txt_RK
,TRUE
);
258 if (Mode
== 2) /*Error*/
260 DisplayBeep(my_window
->WScreen
);
265 Wait( 1 << my_window
->UserPort
->mp_SigBit
);
266 while((my_message
=(struct IntuiMessage
*) GetMsg(my_window
->UserPort
)))
268 gp
= (struct Gadget
*)my_message
->IAddress
;
269 ReplyMsg( (struct Message
*)my_message
);
270 choice
= gp
->GadgetID
;
275 if(txt_RK
)FreeRemember(&txt_RK
,TRUE
);
276 if(my_window
)CloseWindow( my_window
);
281 /*====================================================================*/
282 void DisplayE(char **txt
)
284 Display(txt
, 2, 0, 3);
286 /*====================================================================*/
287 void DisplayT(char **txt
)
289 Display(txt
, 1, 1, 0);
291 /*====================================================================*/
292 void DisplayH(char **txt
)
294 Display(txt
, 1, 2, 3);
296 /*====================================================================*/
297 int DisplayC(char **txt
)
299 return Display(txt
, 0, 2, 3);
301 /*====================================================================*/