Changes to make bright and normal colors is display menus.

This commit is contained in:
Michiel Broek 2001-09-27 20:35:25 +00:00
parent 3f5a2c6977
commit 1215de5b4f
15 changed files with 212 additions and 160 deletions

View File

@ -3,7 +3,7 @@
All following people have contributed to the MBSE BBS project. I'm sure that
people are missing from this list. The list is not in any special order.
Michiel Broek mbse@users.sourceforge.net 2:280/2802
Michiel Broek mbroek@users.sourceforge.net 2:280/2802
Joaquim Homrighausen joho@abs.lu
Andrew Milner andrew@fido.lu
Mats Wallin mw@fido.lu

View File

@ -4126,6 +4126,9 @@ v0.33.18 27-Jul-2001
Shows the OS name in the info screen.
Creates default tty records with tty names for the right
OS (I hope).
Fixed a bug in the menu editor, deleted menus were not really
deleted.
Added setup items for the menu Display colors.
mbcico:
Renamed sendfile function in zmsend.c to sendzfile to prevent a
@ -4136,6 +4139,8 @@ v0.33.18 27-Jul-2001
mbsebbs:
Removed some compiler warnings on some systems.
Added menu Display lines.
Added menu item 21, display text only.
mbuseradd:
Ported to work on FreeBSD.

3
TODO
View File

@ -12,6 +12,9 @@
L = Cosmetic or nice to have.
SETUP.sh:
N: Better way to grep for excisting usernames and groupnames.
mbsebbs:
L: Reading of function keys over modem lines, or worse PPP connections,
must be fixed. Timing problems together with modem buffering?

View File

@ -11,7 +11,7 @@
</HEAD>
<BODY>
<BLOCKQUOTE>
<h5>Last update 02-Feb-2001</h5>
<h5>Last update 26-Sep-2001</h5>
<P>&nbsp;<P>
<H1>MBSE BBS Menu System</H1>
@ -37,7 +37,7 @@ according to criteria such as security levels.
<H3>ANSI Screens.</H3>
<P>
For the menus to work properly you must also draw ANSI screens, this
For the menus to work properly you can draw ANSI screens, this
is what the users will see. For Linux there is "Duh DRAW" written by Ben
Fowler, see sunsite.unc.edu /pub/Lunux/docs.
If you can't find it or have no internet access, you can also use
@ -48,6 +48,18 @@ menu, the include screen may for example show the keys that you have available
in every menu. See the list of <A HREF="control.html">control codes</A>.
<P>&nbsp;<P>
<H3>Display lines.</H3>
<P>
It is also possible to display menu lines with the buildin display option.
The used colors are selectable, a normal color and a bright color.
The normal color is the default, you can toggle bright on and of using
the ^ in the display line. If you end a menu display line with a ; then
no newline is send after that line. If you want to output teh ^ or ; characters
you need to escape them with a backslash like this: \; or \^. The order of menu
entries is important. Also note that the display line does nothing in
autoexec menus.
<P>&nbsp;<P>
<H3>Automatic commands.</H3>
<P>
A menu function is usually executed when a user presses the hot-key
@ -75,7 +87,7 @@ For each language you can define a set of menus. Only for the default
language all menus must exist. It makes sense to make the filenames of
your menus for each language the same and not to translate them. If a menu
is missing for a non default language, the menu from the default language
path is used.
path is used instead.
<P>&nbsp;<P>
<H3>Editing a menu.</H3>
@ -97,8 +109,8 @@ of all available types see below. </LI>
<LI><B>Optional data.</B> Some menus need optional data, for example the
function goto another menu needs the name of that menu file here. </LI>
<LI><B>Display.</B> What is to be displayed to the user. This field has
no meaning yet. What you want to diplay must be done with ANSI screens.
<LI><B>Display.</B> What is to be displayed to the user. You can use this instead
of ANSI screens.
</LI>
<LI><B>Security.</B> This is the minimum security level to execute this
@ -120,13 +132,13 @@ If this field is empty, no password check is done. </LI>
<LI><B>Credit.</B> How much credit a user must have to execute this menu
selection. This field is not in use yet. </LI>
<LI><B>Colors.</B> The display color for the display line, not in use yet.
<LI><B>Lo-colors.</B> The normal display color for the display line.
</LI>
<LI><B>Hi-colors.</B> The bright display color for the display line.</LI>
<LI><B>AutoExec.</B> If this is an automatic executed selection. </LI>
<LI><B>Menu open.</B> Will be implemented later, you will be able to set
opening hours for this menu selection. </LI>
<LI><B>No door.sys</B> Suppress writing of a door.sys file in the users
home directory. This item is only visible with menu type 7.</LI>
<LI><B>Y2K style</B> Writes the dates in the door.sys file in the new style,

View File

@ -11,7 +11,7 @@
</HEAD>
<BODY>
<BLOCKQUOTE>
<h5>Last update 02-Feb-2001</h5>
<h5>Last update 26-Sep-2001</h5>
<P>&nbsp;<P>
<h1>MBSE BBS Global Menus</h1>
@ -145,10 +145,9 @@
file to display.<br>
<P>
<LI value="21"><strong>Expert mode .a??</strong> Not of any use anymore.
This one will be removed.<br>
<strong>Optional data:</strong> The name of the file without extension
to display.<br>
<LI value="21"><strong>Display line<strong> This entry does nothing except
that it displays the text on the display line.<br>
<strong>Optional data:</strong> None.<br>
<P>
<LI value="22"><strong>Nextuser door:</strong> This runs the message to next

View File

@ -2,7 +2,7 @@
*
* File ..................: structs.h
* Purpose ...............: MBSE BBS Global structure
* Last modification date : 06-Jul-2001
* Last modification date : 26-Sep-2001
*
*****************************************************************************
* Copyright (C) 1997-2001
@ -903,10 +903,10 @@ struct menufile {
unsigned Y2Kdoorsys : 1; /* Write Y2K style door.sys */
unsigned Comport : 1; /* Vmodem compart mode */
long Credit; /* Credit needed */
int OpenFrom; /* Open From */
int OpenTo; /* Open To */
int ForeGnd; /* ForeGround color */
int BackGnd; /* BackGround color */
int HiForeGnd; /* High ForeGround color */
int HiBackGnd; /* High ForeGround color */
int ForeGnd; /* Normal ForeGround color */
int BackGnd; /* Normal BackGround color */
};

View File

@ -2,7 +2,7 @@
*
* File ..................: bbs/menu.c
* Purpose ...............: Display and handle the menus.
* Last modification date : 10-Jul-2001
* Last modification date : 27-Sep-2001
*
*****************************************************************************
* Copyright (C) 1997-2001
@ -83,7 +83,7 @@ void InitMenu()
void menu()
{
FILE *pMenuFile;
int iFoundKey = FALSE, Key;
int iFoundKey = FALSE, Key, IsANSI;
char *Input, *Semfile;
char *sMenuPathFileName;
@ -133,15 +133,26 @@ void menu()
strcpy(Menus[0], CFG.default_menu);
} else {
/*
* Display Menu Text Fields and Perform all autoexec menus in order of menu file
* Display Menu Text Fields and Perform all autoexec menus in order of menu file.
* First check if there are any ANSI menus, if not, send a clearscreen first.
*/
IsANSI = FALSE;
while (fread(&menus, sizeof(menus), 1, pMenuFile) == 1) {
if ( Access(exitinfo.Security, menus.MenuSecurity) && (UserAge >= menus.Age)){
if ((menus.MenuType == 5) || (menus.MenuType == 19) || (menus.MenuType == 20))
IsANSI = TRUE;
}
}
fseek(pMenuFile, 0, SEEK_SET);
if (! IsANSI)
clear();
while (fread(&menus, sizeof(menus), 1, pMenuFile) == 1) {
if ( Access(exitinfo.Security, menus.MenuSecurity) && (UserAge >= menus.Age)){
if ( menus.AutoExec ) {
DoMenu( menus.MenuType );
} else {
DisplayMenu( );
}
DisplayMenu( );
}
}
@ -390,6 +401,10 @@ void DoMenu(int Type)
DisplayFileEnter(menus.OptionalData);
break;
case 21:
/* display menuline only */
break;
case 22:
/* nextuser door */
nextuser();
@ -693,7 +708,7 @@ void DisplayMenu ( void ) {
int highlight ;
/* Anything to process, if not; save CPU time, return */
if ( strlen( menus.Display ) == 0 ) {
if (( strlen( menus.Display ) == 0 ) && (menus.MenuType != 21)) {
return;
}
@ -731,7 +746,7 @@ void DisplayMenu ( void ) {
if ( !escaped ) {
if ( highlight == 0 ) {
highlight = 1;
colour( CFG.HiliteF, CFG.HiliteB );
colour( menus.HiForeGnd, menus.HiBackGnd);
} else {
highlight = 0 ;
colour( menus.ForeGnd, menus.BackGnd );

View File

@ -2,7 +2,7 @@
*
* File ..................: bbs/pop3.c
* Purpose ...............: POP3 client
* Last modification date : 13-May-2001
* Last modification date : 26-Sep-2001
*
*****************************************************************************
* Copyright (C) 1997-2001
@ -51,7 +51,7 @@ void error_popmail(char *umsg)
pop3_send((char *)"QUIT\r\n");
p = pop3_receive();
pop3_close();
colour(12, 0);
colour(LIGHTRED, BLACK);
printf("%s\r\n", umsg);
fflush(stdout);
}
@ -131,7 +131,7 @@ void retr_msg(int msgnum)
void check_popmail(char *user, char *pass)
{
char *p, *q, temp[128];
int tmsgs = 0, size, msgnum, color = 9;
int tmsgs = 0, size, msgnum, color = LIGHTBLUE;
FILE *tp;
/*
@ -183,13 +183,13 @@ void check_popmail(char *user, char *pass)
/*
* Show progress
*/
colour(color, 0);
colour(color, BLACK);
printf("\rFetching message %02d/%02d, total %d bytes", msgnum, tmsgs, size);
fflush(stdout);
if (color < 15)
if (color < WHITE)
color++;
else
color = 9;
color = LIGHTBLUE;
retr_msg(msgnum);
}
fclose(tp);
@ -202,7 +202,7 @@ void check_popmail(char *user, char *pass)
pop3_close();
if (tmsgs) {
colour(13, 0);
colour(LIGHTMAGENTA, BLACK);
printf("\r \r");
fflush(stdout);
}

View File

@ -2,7 +2,7 @@
*
* File ..................: bbs/safe.c
* Purpose ...............: Safe Door
* Last modification date : 28-Jun-2001
* Last modification date : 26-Sep-2001
*
*****************************************************************************
* Copyright (C) 1997-2001
@ -70,7 +70,7 @@ void Safe(void)
Enter(1);
/* Safe Cracker Door */
pout(15, 0, (char *) Language(86));
pout(WHITE, BLACK, (char *) Language(86));
Enter(1);
clear();
@ -81,7 +81,7 @@ void Safe(void)
return;
/* In the safe lies */
pout(15, 0, (char *) Language(87));
pout(WHITE, BLACK, (char *) Language(87));
fflush(stdout);
alarm_on();
@ -90,15 +90,15 @@ void Safe(void)
clear();
Enter(2);
pout(10, 0, (char *) Language(88));
pout(LIGHTGREEN, BLACK, (char *) Language(88));
Enter(2);
colour(13, 0);
colour(LIGHTMAGENTA, BLACK);
printf("%s", CFG.sSafePrize);
Enter(2);
/* Do you want to open the safe ? [Y/n]: */
pout(15, 0, (char *) Language(102));
pout(WHITE, BLACK, (char *) Language(102));
fflush(stdout);
alarm_on();
@ -120,7 +120,7 @@ void Safe(void)
Enter(1);
/* Do you want to try again ? [Y/n]: */
pout(12, 0, (char *) Language(101));
pout(LIGHTRED, BLACK, (char *) Language(101));
fflush(stdout);
alarm_on();
@ -145,7 +145,7 @@ int getdigits(void)
int i;
char temp[81];
colour(15, 0);
colour(WHITE, BLACK);
/* Please enter three numbers consisting from 1 to */
printf("\n\n%s%d\n", (char *) Language(89), CFG.iSafeMaxNumber);
/* Please enter three combinations. */
@ -154,8 +154,8 @@ int getdigits(void)
while (TRUE) {
Enter(2);
/* 1st Digit */
pout(12, 0, (char *) Language(91));
colour(9, 0);
pout(LIGHTRED, BLACK, (char *) Language(91));
colour(LIGHTBLUE, BLACK);
fflush(stdout);
Getnum(sFirst, 2);
sprintf(temp, "1st: %s", sFirst);
@ -165,7 +165,7 @@ int getdigits(void)
}
if((iFirst > CFG.iSafeMaxNumber) || (iFirst <= 0) || (strcmp(sFirst, "") == 0)) {
colour(15,1);
colour(WHITE, BLUE);
/* Please try again! You must input a number greater than Zero and less than */
printf("\n%s%d.", (char *) Language(92), CFG.iSafeMaxNumber);
Syslog('-', "Value out of range!");
@ -176,8 +176,8 @@ int getdigits(void)
while (TRUE) {
Enter(1);
/* 2nd digit: */
pout(12, 0, (char *) Language(93));
colour(9, 0);
pout(LIGHTRED, BLACK, (char *) Language(93));
colour(LIGHTBLUE, BLACK);
fflush(stdout);
Getnum(sSecond, 2);
sprintf(temp, "2nd: %s", sSecond);
@ -187,7 +187,7 @@ int getdigits(void)
}
if((iSecond > CFG.iSafeMaxNumber) || (iSecond <= 0) || (strcmp(sSecond, "") == 0)) {
colour(15,1);
colour(WHITE, BLUE);
/* Please try again! You must input a number greater than Zero and less than */
printf("\n%s%d.\n", (char *) Language(92), CFG.iSafeMaxNumber);
Syslog('-', "Value out of range!");
@ -197,8 +197,8 @@ int getdigits(void)
while (TRUE) {
Enter(1);
pout(12, 0, (char *) Language(94));
colour(9, 0);
pout(LIGHTRED, BLACK, (char *) Language(94));
colour(LIGHTBLUE, BLACK);
fflush(stdout);
Getnum(sThird, 2);
if((strcmp(sThird, "")) != 0) {
@ -216,7 +216,7 @@ int getdigits(void)
break;
if((iThird > CFG.iSafeMaxNumber) || (iThird <= 0)) {
colour(15,1);
colour(WHITE, BLUE);
/* Please try again! You must input a number greater than Zero and less than */
printf("\n%s%d.\n", (char *) Language(92), CFG.iSafeMaxNumber);
Syslog('-', "Value out of range!");
@ -226,20 +226,20 @@ int getdigits(void)
/* Left: */
Enter(1);
pout(12, 0, (char *) Language(95));
poutCR(9, 0, sFirst);
pout(LIGHTRED, BLACK, (char *) Language(95));
poutCR(LIGHTBLUE, BLACK, sFirst);
/* Right: */
pout(12, 0, (char *) Language(96));
poutCR(9, 0, sSecond);
pout(LIGHTRED, BLACK, (char *) Language(96));
poutCR(LIGHTBLUE, BLACK, sSecond);
/* Left: */
pout(12, 0, (char *) Language(95));
poutCR(9, 0, sThird);
pout(LIGHTRED, BLACK, (char *) Language(95));
poutCR(LIGHTBLUE, BLACK, sThird);
Enter(1);
/* Attempt to open safe with this combination [Y/n]: */
pout(12, 0, (char *) Language(97));
pout(LIGHTRED, BLACK, (char *) Language(97));
fflush(stdout);
alarm_on();
i = toupper(Getone());
@ -249,22 +249,22 @@ int getdigits(void)
printf("\n\n");
/* Left: */
pout(12, 0, (char *) Language(95));
pout(LIGHTRED, BLACK, (char *) Language(95));
for (iLoop = 0; iLoop < iFirst; iLoop++)
pout(14, 0, (char *)".");
poutCR(9, 0, sFirst);
pout(YELLOW, BLACK, (char *)".");
poutCR(LIGHTBLUE, BLACK, sFirst);
/* Right: */
pout(12, 0, (char *) Language(96));
pout(LIGHTRED, BLACK, (char *) Language(96));
for (iLoop = 0; iLoop < iSecond; iLoop++)
pout(14, 0, (char *)".");
poutCR(9, 0, sSecond);
pout(YELLOW, BLACK, (char *)".");
poutCR(LIGHTBLUE, BLACK, sSecond);
/* Left: */
pout(12, 0, (char *) Language(95));
pout(LIGHTRED, BLACK, (char *) Language(95));
for (iLoop = 0; iLoop < iThird; iLoop++)
pout(14, 0, (char *)".");
poutCR(9, 0, sThird);
pout(YELLOW, BLACK, (char *)".");
poutCR(LIGHTBLUE, BLACK, sThird);
if(CFG.iSafeNumGen) {
CFG.iSafeFirstDigit = (rand() % CFG.iSafeMaxNumber) + 1;
@ -280,9 +280,9 @@ int getdigits(void)
Enter(1);
/* You have won the following... */
pout(12, 0, (char *) Language(98));
pout(LIGHTRED, BLACK, (char *) Language(98));
Enter(2);
poutCR(13, 0, CFG.sSafePrize);
poutCR(LIGHTMAGENTA, BLACK, CFG.sSafePrize);
Enter(1);
sprintf(temp, "%s/etc/safe.data", getenv("MBSE_ROOT"));
@ -311,15 +311,15 @@ int getdigits(void)
}
Enter(1);
pout(10, 0, (char *) Language(99));
pout(LIGHTGREEN, BLACK, (char *) Language(99));
Enter(1);
if(CFG.iSafeNumGen) {
Enter(1);
/* The safe code was: */
pout(12, 0, (char *) Language(100));
pout(LIGHTRED, BLACK, (char *) Language(100));
Enter(2);
colour(12, 0);
colour(LIGHTRED, BLACK);
/* Left: */
printf("%s%d\n", (char *) Language(95), CFG.iSafeFirstDigit);
@ -335,13 +335,13 @@ int getdigits(void)
CFG.iSafeNumGen = FALSE;
if(iThird == 747) {
colour(9, 0);
colour(LIGHTBLUE, BLACK);
printf("Code: %d %d %d\n", CFG.iSafeFirstDigit, CFG.iSafeSecondDigit, CFG.iSafeThirdDigit);
}
Enter(1);
/* Please press key to continue */
pout(10, 0, (char *) Language(87));
pout(LIGHTGREEN, BLACK, (char *) Language(87));
alarm_on();
getchar();
}
@ -382,15 +382,15 @@ int SafeCheckUser(void)
Syslog('+', "Safe is currently LOCKED - exiting door.");
/* THE SAFE IS CURRENTLY LOCKED */
poutCR(15, 4, (char *) Language(103));
poutCR(WHITE, RED, (char *) Language(103));
Enter(1);
colour(12, 0);
colour(LIGHTRED, BLACK);
/* has cracked the safe. */
printf("%s, %s\n", safe.Name, (char *) Language(104));
/* The safe will remain locked until the sysop rewards the user. */
pout(10, 0, (char *) Language(105));
pout(LIGHTGREEN, BLACK, (char *) Language(105));
Enter(2);
Pause();
fclose(pSafe);
@ -424,7 +424,7 @@ int SafeCheckUser(void)
if(Counter >= CFG.iSafeMaxTrys - 1) {
Enter(2);
/* Maximum trys per day exceeded */
pout(15, 0, (char *) Language(106));
pout(WHITE, BLACK, (char *) Language(106));
Enter(1);
sleep(3);
fclose(pSafe);

View File

@ -2,10 +2,10 @@
*
* File ..................: bbs/timeout.c
* Purpose ...............: Inactivity timeout functions
* Last modification date : 24-Dec-2000
* Last modification date : 26-Sep-2001
*
*****************************************************************************
* Copyright (C) 1997-2000
* Copyright (C) 1997-2001
*
* Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10
@ -105,7 +105,7 @@ void die(int onsig)
void alarm_sig()
{
colour(12, 0);
colour(LIGHTRED, BLACK);
/* Autologout: idletime reached.*/
printf("\r\n%s\r\n", (char *) Language(410));

View File

@ -1,4 +1,4 @@
# Makefile.in generated automatically by automake 1.4 from Makefile.am
# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
@ -109,7 +109,7 @@ DIST_COMMON = Makefile.am Makefile.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = gtar
TAR = tar
GZIP_ENV = --best
DEP_FILES = .deps/grlist.P .deps/ledit.P .deps/m_archive.P \
.deps/m_bbs.P .deps/m_domain.P .deps/m_farea.P .deps/m_fdb.P \

View File

@ -2,7 +2,7 @@
*
* File ..................: ledit.c
* Purpose ...............: Line Editor
* Last modification date : 27-May-2001
* Last modification date : 27-Sep-2001
*
*****************************************************************************
* Copyright (C) 1997-2001
@ -1449,9 +1449,8 @@ void edit_color(int *fg, int *bg, char *help)
clr_index();
set_color(WHITE, BLACK);
mvprintw(5, 6, "1.7 EDIT COLORS");
sprintf(temp, "Change ^%s^ color with arrow keys, press <Enter> whene done", help);
showhelp(help);
sprintf(temp, "Change the ^%s^ color with arrow keys, press <Enter> whene done", help);
showhelp(temp);
for (f = 0; f < 16; f++)
for (b = 0; b < 8; b++) {
@ -1466,7 +1465,7 @@ void edit_color(int *fg, int *bg, char *help)
mvprintw(7, 6, "This is an example...");
fflush(stdout);
mvprintw(b + 9, f + 33, "*");
ch = readkey(10,10,f,b);
ch = readkey(7,28,f,b);
mvprintw(b + 9, f + 33, ".");
switch(ch) {
case KEY_LINEFEED:
@ -1491,6 +1490,30 @@ void edit_color(int *fg, int *bg, char *help)
char *get_color(int c)
{
switch (c) {
case BLACK: return (char *)"black";
case BLUE: return (char *)"blue";
case GREEN: return (char *)"green";
case CYAN: return (char *)"cyan";
case RED: return (char *)"red";
case MAGENTA: return (char *)"magenta";
case BROWN: return (char *)"brown";
case LIGHTGRAY: return (char *)"lightgray";
case DARKGRAY: return (char *)"darkgray";
case LIGHTBLUE: return (char *)"lightblue";
case LIGHTGREEN: return (char *)"lightgreen";
case LIGHTCYAN: return (char *)"lightcyan";
case LIGHTRED: return (char *)"lightred";
case LIGHTMAGENTA: return (char *)"lightmagenta";
case YELLOW: return (char *)"yellow";
case WHITE: return (char *)"white";
}
}
char *getmenutype(int val)
{
switch (val) {
@ -1514,7 +1537,7 @@ char *getmenutype(int val)
case 18: return (char *)"Send an on-line message";
case 19: return (char *)"Display textfile with more";
case 20: return (char *)"Display .A?? file with Enter";
case 21: return (char *)"Display Text Only";
case 22: return (char *)"Message to nextuser door";
case 23: return (char *)"Time banking system";
@ -1590,8 +1613,6 @@ char *getmenutype(int val)
case 505: return (char *)"Print a BBS";
case 506: return (char *)"Search for a BBS";
case 999: return (char *)"Display Text Only";
default: return (char *)"Unknown menu";
}
}

View File

@ -59,6 +59,7 @@ void show_magictype(int, int, int);
int edit_magictype(int, int, int);
void show_aka(int, int, fidoaddr);
void edit_color(int *, int *, char *);
char *get_color(int);
char *getmenutype(int);

View File

@ -2,7 +2,7 @@
*
* File ..................: m_global.c
* Purpose ...............: Global Setup Program
* Last modification date : 11-Aug-2001
* Last modification date : 27-Sep-2001
*
*****************************************************************************
* Copyright (C) 1997-2001
@ -1633,12 +1633,6 @@ int PickAka(char *msg, int openit)
}
char Co[16][16] = {
"Black", "Blue", "Green", "Cyan",
"Red", "Magenta", "Brown", "Lightgray",
"Darkgary", "Lightblue", "Lightgreen", "Lightcyan",
"Lightred", "Lightmagenta", "Yellow", "White" };
int global_doc(FILE *fp, FILE *toc, int page)
{
@ -1758,17 +1752,17 @@ int global_doc(FILE *fp, FILE *toc, int page)
addtoc(fp, toc, 1, 7, page, (char *)"Text colors");
fprintf(fp, " Normal text %s on %s\n", Co[CFG.TextColourF], Co[CFG.TextColourB]);
fprintf(fp, " Underline text %s on %s\n", Co[CFG.UnderlineColourF], Co[CFG.UnderlineColourB]);
fprintf(fp, " Input text %s on %s\n", Co[CFG.InputColourF], Co[CFG.InputColourB]);
fprintf(fp, " CR text %s on %s\n", Co[CFG.CRColourF], Co[CFG.CRColourB]);
fprintf(fp, " More prompt %s on %s\n", Co[CFG.MoreF], Co[CFG.MoreB]);
fprintf(fp, " Hilite text %s on %s\n", Co[CFG.HiliteF], Co[CFG.HiliteB]);
fprintf(fp, " File name %s on %s\n", Co[CFG.FilenameF], Co[CFG.FilenameB]);
fprintf(fp, " File size %s on %s\n", Co[CFG.FilesizeF], Co[CFG.FilesizeB]);
fprintf(fp, " File date %s on %s\n", Co[CFG.FiledateF], Co[CFG.FiledateB]);
fprintf(fp, " File description %s on %s\n", Co[CFG.FiledescF], Co[CFG.FiledescB]);
fprintf(fp, " Message input %s on %s\n", Co[CFG.MsgInputColourF], Co[CFG.MsgInputColourB]);
fprintf(fp, " Normal text %s on %s\n", get_color(CFG.TextColourF), get_color(CFG.TextColourB));
fprintf(fp, " Underline text %s on %s\n", get_color(CFG.UnderlineColourF), get_color(CFG.UnderlineColourB));
fprintf(fp, " Input text %s on %s\n", get_color(CFG.InputColourF), get_color(CFG.InputColourB));
fprintf(fp, " CR text %s on %s\n", get_color(CFG.CRColourF), get_color(CFG.CRColourB));
fprintf(fp, " More prompt %s on %s\n", get_color(CFG.MoreF), get_color(CFG.MoreB));
fprintf(fp, " Hilite text %s on %s\n", get_color(CFG.HiliteF), get_color(CFG.HiliteB));
fprintf(fp, " File name %s on %s\n", get_color(CFG.FilenameF), get_color(CFG.FilenameB));
fprintf(fp, " File size %s on %s\n", get_color(CFG.FilesizeF), get_color(CFG.FilesizeB));
fprintf(fp, " File date %s on %s\n", get_color(CFG.FiledateF), get_color(CFG.FiledateB));
fprintf(fp, " File description %s on %s\n", get_color(CFG.FiledescF), get_color(CFG.FiledescB));
fprintf(fp, " Message input %s on %s\n", get_color(CFG.MsgInputColourF), get_color(CFG.MsgInputColourB));
page = newpage(fp, page);
addtoc(fp, toc, 1, 8, page, (char *)"Next user door");

View File

@ -2,7 +2,7 @@
*
* File ..................: mbsetup/m_menu.c
* Purpose ...............: Edit BBS menus
* Last modification date : 27-May-2001
* Last modification date : 26-Sep-2001
*
*****************************************************************************
* Copyright (C) 1997-2001
@ -96,8 +96,6 @@ char *select_menurec(int max)
void Show_A_Menu(void);
void Show_A_Menu(void)
{
char *p;
clr_index();
set_color(WHITE, BLACK);
mvprintw( 5, 2, "8.3. EDIT MENU ITEM");
@ -105,50 +103,44 @@ void Show_A_Menu(void)
mvprintw( 7, 2, "1. Sel. key");
mvprintw( 8, 2, "2. Type nr.");
mvprintw( 9, 2, "3. Opt. data");
mvprintw(10, 2, "4. Display");
mvprintw(11, 2, "5. Security");
mvprintw(12, 2, "6. Min. age");
mvprintw(13, 2, "7. Max. lvl");
mvprintw(14, 2, "8. Password");
mvprintw(15, 2, "9. Credit");
mvprintw(16, 2, "10. Colors");
mvprintw(12,42, "11. Autoexec");
mvprintw(13,42, "12. Menu open");
mvprintw(11, 2, "4. Display");
mvprintw(12, 2, "5. Security");
mvprintw(13, 2, "6. Min. age");
mvprintw(14, 2, "7. Max. lvl");
mvprintw(15, 2, "8. Password");
mvprintw(16, 2, "9. Credit");
mvprintw(17, 2, "10. Lo-colors");
mvprintw(18, 2, "11. Hi-colors");
mvprintw(15,42, "12. Autoexec");
if (menus.MenuType == 7) {
mvprintw(14,42, "13. No door.sys");
mvprintw(15,42, "14. Y2K style");
mvprintw(16,42, "15. Use Comport");
mvprintw(16,42, "13. No door.sys");
mvprintw(17,42, "14. Y2K style");
mvprintw(18,42, "15. Use Comport");
}
set_color(WHITE, BLACK);
show_str( 7,16, 1, menus.MenuKey);
show_int( 8,16, menus.MenuType); show_str( 8, 26,29, menus.TypeDesc);
show_str( 9,16,64, menus.OptionalData);
show_str(10,16,64, menus.Display);
show_sec(11,16, menus.MenuSecurity);
show_int(12,16, menus.Age);
show_int(13,16, menus.MaxSecurity);
show_str(10,16,64,(char *)"1234567890123456789012345678901234567890123456789012345678901234");
show_str(11,16,64, menus.Display);
show_sec(12,16, menus.MenuSecurity);
show_int(13,16, menus.Age);
show_int(14,16, menus.MaxSecurity);
if (strlen(menus.Password))
show_str(14,16,14, (char *)"**************");
show_str(15,16,14, (char *)"**************");
else
show_str(14,16,14, (char *)"<null>");
show_int(15,16, menus.Credit);
S_COL(16,16, "Display color", menus.ForeGnd, menus.BackGnd)
show_str(15,16,14, (char *)"<null>");
show_int(16,16, menus.Credit);
S_COL(17,16, "Normal display color", menus.ForeGnd, menus.BackGnd)
S_COL(18,16, "Bright display color", menus.HiForeGnd, menus.HiBackGnd)
set_color(WHITE, BLACK);
show_bool(12,58, menus.AutoExec);
if ((menus.OpenFrom == 0) && (menus.OpenTo == 0))
show_str(13,58, 6, (char *)"Always");
else {
p = calloc(40, sizeof(char));
sprintf(p, "%02d:%02d - %02d:%02d", menus.OpenFrom / 60, menus.OpenFrom % 60,
menus.OpenTo / 60, menus.OpenTo % 60);
show_str(13, 58, 13, p);
free(p);
}
show_bool(15,58, menus.AutoExec);
if (menus.MenuType == 7) {
show_bool(14,58, menus.NoDoorsys);
show_bool(15,58, menus.Y2Kdoorsys);
show_bool(16,58, menus.Comport);
show_bool(16,58, menus.NoDoorsys);
show_bool(17,58, menus.Y2Kdoorsys);
show_bool(18,58, menus.Comport);
}
}
@ -222,38 +214,41 @@ void Edit_A_Menu(void)
for (;;) {
switch(select_menu(15)) {
case 0:
return;
case 0: return;
break;
case 1: E_UPS( 7,16, 1, menus.MenuKey, "The ^key^ to select this menu item")
case 2: menus.MenuType = GetMenuType();
memset(&menus.TypeDesc, 0, sizeof(menus.TypeDesc));
if (menus.MenuType)
strcpy(menus.TypeDesc, getmenutype(menus.MenuType));
if (menus.MenuType == 21)
menus.AutoExec = TRUE;
Show_A_Menu();
break;
case 3: E_STR( 9,16,64, menus.OptionalData, "The ^optional data^ for this menu item")
case 4: E_STR(10,16,64, menus.Display, "The text to ^display^ for this menu")
case 5: E_SEC(11,16, menus.MenuSecurity, "7.3.5 MENU ACCESS SECURITY", Show_A_Menu)
case 6: E_INT(12,16, menus.Age, "The minimum ^Age^ to select this menu, 0 is don't care")
case 7: E_INT(13,16, menus.MaxSecurity, "The maximum ^Security level^ to access this menu")
case 8: E_STR(14,16,14, menus.Password, "The ^password^ to access this menu item")
case 9: E_INT(15,16, menus.Credit, "The ^credit cost^ for this menu item")
case 10:edit_color(&menus.ForeGnd, &menus.BackGnd, (char *)"Display color");
case 4: E_STR(11,16,64, menus.Display, "The text to ^display^ for this menu")
case 5: E_SEC(12,16, menus.MenuSecurity, "7.3.5 MENU ACCESS SECURITY", Show_A_Menu)
case 6: E_INT(13,16, menus.Age, "The minimum ^Age^ to select this menu, 0 is don't care")
case 7: E_INT(14,16, menus.MaxSecurity, "The maximum ^Security level^ to access this menu")
case 8: E_STR(15,16,14, menus.Password, "The ^password^ to access this menu item")
case 9: E_INT(16,16, menus.Credit, "The ^credit cost^ for this menu item")
case 10:edit_color(&menus.ForeGnd, &menus.BackGnd, (char *)"normal");
Show_A_Menu();
break;
case 11:E_BOOL(12,58, menus.AutoExec, "Is this an ^Autoexecute^ menu item")
case 11:edit_color(&menus.HiForeGnd, &menus.HiBackGnd, (char *)"bright");
Show_A_Menu();
break;
case 12:E_BOOL(15,58, menus.AutoExec, "Is this an ^Autoexecute^ menu item")
case 13:if (menus.MenuType == 7) {
E_BOOL(14,58, menus.NoDoorsys, "Suppress writing ^door.sys^ dropfile")
E_BOOL(16,58, menus.NoDoorsys, "Suppress writing ^door.sys^ dropfile")
} else
break;
case 14:if (menus.MenuType == 7) {
E_BOOL(15,58, menus.Y2Kdoorsys, "Create ^door.sys^ with 4 digit yearnumbers")
E_BOOL(17,58, menus.Y2Kdoorsys, "Create ^door.sys^ with 4 digit yearnumbers")
} else
break;
case 15:if (menus.MenuType == 7) {
E_BOOL(16,58, menus.Comport, "Write real ^COM port^ in door.sys for Vmodem patch")
E_BOOL(18,58, menus.Comport, "Write real ^COM port^ in door.sys for Vmodem patch")
} else
break;
}
@ -306,7 +301,7 @@ void EditMenu(char *Name)
offset = ((o + i) - 1) * sizeof(menus);
fseek(tmp, offset, SEEK_SET);
fread(&menus, sizeof(menus), 1, tmp);
if (menus.MenuType || menus.AutoExec) {
if (menus.MenuKey[0] || menus.AutoExec) {
set_color(CYAN, BLACK);
mvprintw(y, 5, "%3d. ", o + i);
if (menus.AutoExec) {
@ -341,9 +336,10 @@ void EditMenu(char *Name)
if ((fil = fopen(temp, "w+")) == NULL) {
working(2, 0, 0);
} else {
Syslog('+', "Updated menu %s", temp);
fseek(tmp, 0, SEEK_SET);
while (fread(&menus, sizeof(menus), 1, tmp) == 1) {
if (menus.MenuType || menus.AutoExec)
if (menus.MenuKey[0] || menus.AutoExec)
fwrite(&menus, sizeof(menus), 1, fil);
}
fclose(fil);
@ -359,6 +355,8 @@ void EditMenu(char *Name)
if (strncmp(pick, "A", 1) == 0) {
working(1, 0, 0);
memset(&menus, 0, sizeof(menus));
menus.ForeGnd = LIGHTGRAY;
menus.HiForeGnd = WHITE;
fseek(tmp, 0, SEEK_END);
fwrite(&menus, sizeof(menus), 1, tmp);
records++;
@ -573,6 +571,10 @@ int bbs_menu_doc(FILE *fp, FILE *toc, int page)
fprintf(fp, " Maximum level %d\n", menus.MaxSecurity);
fprintf(fp, " Password %s\n", menus.Password);
fprintf(fp, " Credits %ld\n", menus.Credit);
fprintf(fp, " Lo-colors %s on %s\n",
get_color(menus.ForeGnd), get_color(menus.BackGnd));
fprintf(fp, " Hi-colors %s on %s\n",
get_color(menus.HiForeGnd), get_color(menus.HiBackGnd));
if (menus.MenuType == 7) {
fprintf(fp, " No door.sys %s\n", getboolean(menus.NoDoorsys));
fprintf(fp, " Y2K door.sys %s\n", getboolean(menus.Y2Kdoorsys));