]> git.sur5r.net Git - cc65/blob - libsrc/geos-common/dlgbox/messagebox.c
Merge remote-tracking branch 'upstream/master'
[cc65] / libsrc / geos-common / dlgbox / messagebox.c
1
2 /*
3  * char MessageBox (char mode, const char *format, ...)
4  *
5  * Maciej 'YTM/Elysium' Witkowiak, 17.08.2003
6  *
7  */
8
9 #include <geos.h>
10 #include <stdio.h>
11
12 void _mbprintout(void);
13
14 static dlgBoxStr _mbdlg_EMPTY = {
15         DB_DEFPOS(1),
16         DB_OPVEC(&RstrFrmDialogue),
17         DB_USRROUT(&_mbprintout),
18         DB_END,
19 };
20
21 static dlgBoxStr _mbdlg_OK = {
22         DB_DEFPOS(1),
23         DB_USRROUT(&_mbprintout),
24         DB_ICON(OK, DBI_X_1, DBI_Y_2),
25         DB_END,
26 };
27
28 static dlgBoxStr _mbdlg_OKCANCEL = {
29         DB_DEFPOS(1),
30         DB_USRROUT(&_mbprintout),
31         DB_ICON(OK, DBI_X_0, DBI_Y_2),
32         DB_ICON(CANCEL, DBI_X_2, DBI_Y_2),
33         DB_END,
34 };
35
36 static dlgBoxStr _mbdlg_YESNO = {
37         DB_DEFPOS(1),
38         DB_USRROUT(&_mbprintout),
39         DB_ICON(YES, DBI_X_0, DBI_Y_2),
40         DB_ICON(NO, DBI_X_2, DBI_Y_2),
41         DB_END,
42 };
43
44 static dlgBoxStr *_mbboxes[] = {
45         &_mbdlg_EMPTY,
46         &_mbdlg_OK,
47         &_mbdlg_OKCANCEL,
48         &_mbdlg_YESNO
49 };
50
51 static char _mbbuffer[256];
52
53 char MessageBox(char mode, const char *format, ...)
54 {
55     register char *buf;
56     va_list ap;
57
58     /* first format out things */
59     va_start(ap, format);
60     vsprintf(_mbbuffer, format, ap);
61     va_end(ap);
62
63     /* replace LFs by CRs */
64     buf = &_mbbuffer[0];
65     while (*buf) {
66         if (*buf==LF) *buf=CR;
67         ++buf;
68     }
69
70     /* validate mode */
71     if (mode>=MB_LAST)
72         mode = MB_EMPTY;
73
74     return DoDlgBox(_mbboxes[mode]);
75 }
76
77 void _mbprintout(void)
78 {
79     UseSystemFont();
80     curWindow.top = DEF_DB_TOP;
81     curWindow.left = DEF_DB_LEFT+10;
82     curWindow.right = DEF_DB_RIGHT-10;
83     curWindow.bot = DEF_DB_BOT;
84     PutString(_mbbuffer, DEF_DB_TOP+10+curFontDesc.height, DEF_DB_LEFT+10 );
85 }