mirror of
https://github.com/cc65/cc65.git
synced 2025-01-12 02:30:44 +00:00
new MessageBox function
git-svn-id: svn://svn.cc65.org/cc65/trunk@2347 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
1746592598
commit
1390fe6edd
@ -1,9 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
GEOS dialog box functions
|
GEOS dialog box functions
|
||||||
|
|
||||||
ported to small C on 26.12.1999
|
by Maciej 'YTM/Elysium' Witkowiak
|
||||||
by Maciej 'YTM/Alliance' Witkowiak
|
26.12.1999, 10.03.2000, 17.8.2003
|
||||||
10.03.2000 - update
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _GDLGBOX_H
|
#ifndef _GDLGBOX_H
|
||||||
@ -23,6 +22,17 @@ char __fastcall__ DlgBoxGetString(char *myString, char strLength,
|
|||||||
char __fastcall__ DlgBoxFileSelect(const char *classtxt, char ftype,
|
char __fastcall__ DlgBoxFileSelect(const char *classtxt, char ftype,
|
||||||
char *fname);
|
char *fname);
|
||||||
|
|
||||||
|
/* This is a more general dialog box, works like printf in a window */
|
||||||
|
char MessageBox(char mode, const char *format, ...);
|
||||||
|
|
||||||
|
/* mode argument for MessageBox() */
|
||||||
|
enum {
|
||||||
|
MB_EMPTY=0,
|
||||||
|
MB_OK,
|
||||||
|
MB_OKCANCEL,
|
||||||
|
MB_YESNO,
|
||||||
|
MB_LAST };
|
||||||
|
|
||||||
/* Now the command string type */
|
/* Now the command string type */
|
||||||
|
|
||||||
typedef void dlgBoxStr;
|
typedef void dlgBoxStr;
|
||||||
|
@ -4,15 +4,21 @@
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
|
||||||
|
%.o: %.c
|
||||||
|
@$(CC) $(CFLAGS) $<
|
||||||
|
@$(AS) -g -o $@ $(AFLAGS) $(*).s
|
||||||
|
|
||||||
%.o: %.s
|
%.o: %.s
|
||||||
@$(AS) -o $@ $(AFLAGS) $<
|
@$(AS) -o $@ $(AFLAGS) $<
|
||||||
|
|
||||||
|
C_OBJS = messagebox.o
|
||||||
S_OBJS = dodlgbox.o rstrfrmdialogue.o\
|
S_OBJS = dodlgbox.o rstrfrmdialogue.o\
|
||||||
dbget2lines.o dlgboxyesno.o dlgboxokcancel.o dlgboxok.o dlgboxgetstring.o\
|
dbget2lines.o dlgboxyesno.o dlgboxokcancel.o dlgboxok.o dlgboxgetstring.o\
|
||||||
dlgboxfileselect.o
|
dlgboxfileselect.o
|
||||||
|
|
||||||
all: $(S_OBJS)
|
all: $(C_OBJS) $(S_OBJS)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@rm -f *.~ $(S_OBJS) core
|
@rm -f *.~ $(S_OBJS) core
|
||||||
|
@rm -f $(C_OBJS:.o=.s)
|
||||||
|
@rm -f $(C_OBJS)
|
||||||
|
88
libsrc/geos/dlgbox/messagebox.c
Normal file
88
libsrc/geos/dlgbox/messagebox.c
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
|
||||||
|
/*
|
||||||
|
* char MessageBox (char mode, const char *format, ...)
|
||||||
|
*
|
||||||
|
* Maciej 'YTM/Elysium' Witkowiak, 17.08.2003
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <geos.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
void _mbprintout(void);
|
||||||
|
|
||||||
|
static dlgBoxStr _mbdlg_EMPTY = {
|
||||||
|
DB_DEFPOS(1),
|
||||||
|
DB_OPVEC(&RstrFrmDialogue),
|
||||||
|
DB_USRROUT(&_mbprintout),
|
||||||
|
DB_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static dlgBoxStr _mbdlg_OK = {
|
||||||
|
DB_DEFPOS(1),
|
||||||
|
DB_OPVEC(&RstrFrmDialogue),
|
||||||
|
DB_USRROUT(&_mbprintout),
|
||||||
|
DB_ICON(OK, DBI_X_1, DBI_Y_2),
|
||||||
|
DB_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static dlgBoxStr _mbdlg_OKCANCEL = {
|
||||||
|
DB_DEFPOS(1),
|
||||||
|
DB_OPVEC(&RstrFrmDialogue),
|
||||||
|
DB_USRROUT(&_mbprintout),
|
||||||
|
DB_ICON(OK, DBI_X_0, DBI_Y_2),
|
||||||
|
DB_ICON(CANCEL, DBI_X_2, DBI_Y_2),
|
||||||
|
DB_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static dlgBoxStr _mbdlg_YESNO = {
|
||||||
|
DB_DEFPOS(1),
|
||||||
|
DB_OPVEC(&RstrFrmDialogue),
|
||||||
|
DB_USRROUT(&_mbprintout),
|
||||||
|
DB_ICON(YES, DBI_X_0, DBI_Y_2),
|
||||||
|
DB_ICON(NO, DBI_X_2, DBI_Y_2),
|
||||||
|
DB_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static dlgBoxStr *_mbboxes[] = {
|
||||||
|
&_mbdlg_EMPTY,
|
||||||
|
&_mbdlg_OK,
|
||||||
|
&_mbdlg_OKCANCEL,
|
||||||
|
&_mbdlg_YESNO
|
||||||
|
};
|
||||||
|
|
||||||
|
static char _mbbuffer[256];
|
||||||
|
|
||||||
|
char MessageBox(char mode, const char *format, ...)
|
||||||
|
{
|
||||||
|
register char *buf;
|
||||||
|
va_list ap;
|
||||||
|
|
||||||
|
/* first format out things */
|
||||||
|
va_start(ap, format);
|
||||||
|
vsprintf(_mbbuffer, format, ap);
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
/* replace LFs by CRs */
|
||||||
|
buf = &_mbbuffer[0];
|
||||||
|
while (*buf) {
|
||||||
|
if (*buf==LF) *buf=CR;
|
||||||
|
++buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* validate mode */
|
||||||
|
if (mode>=MB_LAST)
|
||||||
|
mode = MB_EMPTY;
|
||||||
|
|
||||||
|
return DoDlgBox(_mbboxes[mode]);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _mbprintout(void)
|
||||||
|
{
|
||||||
|
UseSystemFont();
|
||||||
|
curWindow.top = DEF_DB_TOP;
|
||||||
|
curWindow.left = DEF_DB_LEFT+10;
|
||||||
|
curWindow.right = DEF_DB_RIGHT-10;
|
||||||
|
curWindow.bot = DEF_DB_BOT;
|
||||||
|
PutString(_mbbuffer, DEF_DB_TOP+10+curFontDesc.height, DEF_DB_LEFT+10 );
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user