{$I DIRECT.INC}
{ infusion online configuration, started on 03/22/98 by skaboy101 }
unit config;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
interface
uses crt,dos,subs1,subs2,gensubs,gentypes,configrt,video,windows,little,modem,
fileLock,dosMem,userRet,protedit,config2;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure cConfig0;
Procedure cConfigSubs(sub : byte);
Procedure cUserEdit;
Procedure cMenuEdit;
Procedure cConferenceEdit(conf : byte);
Procedure cThemeEdit;
Procedure cProtocolEdit;
Procedure cMiniDos; {mini dos is in here too!}
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
const
cTotalOptns = 15;
cMatrix : array[1..cTotalOptns] of string = (
' Main System Information 1 ',
' Main System Information 2 ',
' System Paths ',
' Modem/Node Specifications ',
' System Passwords ',
' Access (ACS) Variables ',
' File Area Setup ',
' New User Voting / NUV ',
' Infoforms ',
' System Colors ',
' File/Mail Network Information ',
' Misc Information ',
' Misc Information 2 ',
' Generic Menu Generation Options ',
' (Q)uit ');
cTotals : array[1..(cTotalOptns-1)] of byte = (9,19,12,13,6,14,11,13,11,17,3,17,10,12);
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
type
cBarRec = record
bLast : array[0..cTotalOptns] of byte;
bValue : array[0..cTotalOptns] of byte;
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
var
cBarData : cBarRec;
cTempVar : byte;
cSelectChar : array[1..26] of char;
cIgnore : boolean;
cValue : array[1..2] of byte;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
implementation
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Function b00lean(b00l : boolean) : string;
begin
if (b00l=true) then b00lean := 'Yup ' else
b00lean := 'Nope';
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
function colorWrite(color : integer) : string;
const colorstr : array [0..15] of string[8] =
('Black ','Blue ','Green ','Cyan ','Red ','Purple ',
'Brown ','White ','Gray ','Hi Blue ','Hi Green','Hi Cyan ',
'Hi Red ','Magenta ','Yellow ','Hi White ');
colorstr2 : array[0..15] of string[2] =
('00','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15');
colorStr3 : array[0..7] of string[2] = ('B0','B1','B2','B3','B4','B5','B6','B7');
var colors : string;
begin
colors := '|'+colorStr2[color and 15]+'|'+colorStr3[(color shr 4) and 7];
colorWrite := colors+colorstr[Color and 15]+' on '+colorstr[(Color shr 4) and 7]+'|B0';
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure cDrawScreens(scrn : byte; id : byte);
begin
if (scrn=0) then
begin
ansiCls;
multiColor('|08┌────────────────────|07:|15: |03infusion online configuration |15:|07:|08───────────────────────┐');
multiColor('|08└──────────────────────────────────────────────────────────────────────────────┘');
for cTempVar := 1 to cTotalOptns do
begin
goXY(22,2+cTempVar);
multicolor('|B0|08│|07'+cMatrix[cTempVar]+'|08│');
end;
goXY(1,18);
multiColor('|08┌──────────────────────────────────────────────────────────────────────────────┐');
multiColor('|08└───────────|07:|15: |03arrow keys navigate lightbar, enter edits options |15:|07:|08────────────┘');
end else
if (scrn=1) then
begin
if (id=0) then begin
ansiCls;
multiColor('|08┌|07:|15: |03main system info 1 |15:|07:|08──────────────────────────────────────────────────────┐');
multiColor('|08└──────────────────────────────────────────────────────────────────────────────┘');
end;
if (id in [0,1]) then begin goXY(1,3); multicolor('|08(|15a|08) |07System Name |08: |15'+cfg.longname) end;
if (id in [0,2]) then begin goXY(1,4); multicolor('|08(|15b|08) |07System Acronym |08: |15'+cfg.shortname) end;
if (id in [0,3]) then begin goXY(1,5); multicolor('|08(|15c|08) |07System Location |08: |15'+cfg.location) end;
if (id in [0,4]) then begin goXY(1,6); multicolor('|08(|15d|08) |07Node Phone Number |08: |15'+cfg.boardphone) end;
if (id in [0,5]) then begin goXY(1,7); multicolor('|08(|15e|08) |07Sysop Handle |08: |15'+cfg.sysopname) end;
if (id in [0,6]) then begin goXY(1,8); multicolor('|08(|15f|08) |07Co-Sysop Handle |08: |15'+cfg.cosysopname) end;
if (id in [0,7]) then begin goXY(1,9); multicolor('|08(|15g|08) |07Test Code 1 |08: |15'+cfg.regcode1) end;
if (id in [0,8]) then begin goXY(1,10);multicolor('|08(|15h|08) |07Test Code 2 |08: |15'+cfg.regcode2) end;
if (id in [0,9]) then begin goXY(1,11);multiColor('|08(|15i|08) |07Node Number |08: |15'+strr(cfg.nodeNum)+'|CR')
end;
if (id=0) then begin
multiColor('|08┌──────────────────────────────────────────────────────────────────────────────┐');
multiColor('|08└|07:|15: |03arrow keys navigate, X exits, hot keys jump to editing field |15:|07:|08────────────┘');
end;
end else
if (scrn=2) then
begin
if (id=0) then
begin
ansiCls;
goXY(1,1);
multiColor('|08┌|07:|15: |03main system info 2 |15:|07:|08──────────────────────────────────────────────────────┐');
multiColor('|08└──────────────────────────────────────────────────────────────────────────────┘');
end;
if (id in [0,1]) then
begin goXY(1,3); multiColor('|08(|15a|08) |07Starting Menu |08: |15'+cfg.startMenu) end;
if (id in [0,2]) then
begin goXY(1,4); multiColor('|08(|15b|08) |07Total Matrices |08: |15'+strr(cfg.amtMatrix)) end;
if (id in [0,3]) then
begin goXY(1,5); multiColor('|08(|15c|08) |07Default WFC Screen |08: |15'+cfg.defaultWfc) end;
if (id in [0,4]) then
begin goXY(1,6); multiColor('|08(|15d|08) |07Direct Screen Writes |08: |15'+b00lean(cfg.directVideoMode)) end;
if (id in [0,5]) then
begin goXY(1,7); multiColor('|08(|15e|08) |07Use XMS/EMS |08: |15'+b00lean(cfg.useEms)) end;
if (id in [0,6]) then
begin goXY(1,8); multiColor('|08(|15f|08) |07Swap Mem for Shell |08: |15'+b00lean(cfg.maxDosShell)) end;
if (id in [0,7]) then
begin goXY(1,9); multiColor('|08(|15g|08) |07Local Sysop Login |08: |15'+b00lean(cfg.autoLogin)) end;
if (id in [0,8]) then
begin goXY(1,10);multiColor('|08(|15h|08) |07Mins til Screen Saver |08: |15'+strr(cfg.screenSave)) end;
if (id in [0,9]) then
begin goXY(1,11);multiColor('|08(|15i|08) |07Closed System |08: |15'+b00lean(cfg.private)) end;
if (id in [0,10]) then
begin goXY(1,12);multiColor('|08(|15j|08) |07Chat Page Cost |08: |15'+strr(cfg.chatCost)) end;
if (id in [0,11]) then
begin goXY(1,13);multiColor('|08(|15k|08) |07Allow Chat Time Start |08: |15'+cfg.availTime) end;
if (id in [0,12]) then
begin goXY(1,14);multiColor('|08(|15l|08) |07Allow Chat Time End |08: |15'+cfg.unAvailTime) end;
if (id in [0,13]) then
begin goXY(1,15);multiColor('|08(|15m|08) |07Make Noise on Page |08: |15'+b00lean(cfg.chatNoise)) end;
if (id in [0,14]) then
begin goXY(1,16);multiColor('|08(|15n|08) |07Use Input Box |08: |15'+b00lean(cfg.useBox)) end;
if (id in [0,15]) then
begin goXY(1,17);multiColor('|08(|15o|08) |07Input Box Char |08: |15'+cfg.boxChar) end;
{!}if (id in [0,16]) then
begin goXY(1,18);multiColor('|08(|15p|08) |07Default Bottom Line |08: |15'+strr(cfg.defBottomLine)) end;
if (id in [0,17]) then
begin goXY(1,19);multiColor('|08(|15q|08) |07Default Top Five List |08: |15'+strr(cfg.defTopFive)) end;
if (id in [0,18]) then
begin goXY(1,20);multiColor('|08(|15r|08) |07QWK Packet Name |08: |15'+cfg.QWKName) end;
if (id in [0,19]) then
begin goXY(1,21);multiColor('|08(|15s|08) |07Max One Liners |08: |15'+strr(cfg.MaxOneLiners)+'|CR') end;
if (id=0) then begin multiColor('|08┌──────────────────────────────────────────────────────────────────────────────┐');
multiColor('|08└|07:|15: |03arrow keys navigate, X exits, hot keys jump to editing field |15:|07:|08────────────┘') end;
end else
if (scrn=3) then
begin
ansiCls;
multiColor('|08┌|07:|15: |03system paths |15:|07:|08────────────────────────────────────────────────────────────┐');
multiColor('|08└──────────────────────────────────────────────────────────────────────────────┘');
goXY(1,3); multiColor('|08(|15a|08) |07Root Infusion Directory|08: |15'+cfg.infusionDir);
goXY(1,4); multiColor('|08(|15b|08) |07Textfile Directory |08: |15'+cfg.textFileDir);
goXY(1,5); multiColor('|08(|15c|08) |07Message Base Directory |08: |15'+cfg.textDir);
goXY(1,6); multiColor('|08(|15d|08) |07Ascii Upload Directory |08: |15'+cfg.uploadDir);
goXY(1,7); multiColor('|08(|15e|08) |07Sub-Board Directory |08: |15'+cfg.boardDir);
goXY(1,8); multiColor('|08(|15f|08) |07Doors Directory |08: |15'+cfg.doorDir);
goXY(1,9); multiColor('|08(|15g|08) |07Datafiles Directory |08: |15'+cfg.dataDir);
goXY(1,10);multiColor('|08(|15h|08) |07Temp Extract Directory |08: |15'+cfg.extractDir);
goXY(1,11);multiColor('|08(|15i|08) |07Menus Directory |08: |15'+cfg.menuDir);
goXY(1,12);multiColor('|08(|15j|08) |07Screens Directory |08: |15'+cfg.screensDir);
goXY(1,13);multiColor('|08(|15k|08) |07Scripts Directory |08: |15'+cfg.iclDir);
goXY(1,14);multiColor('|08(|15l|08) |07IVF Menu Directory |08: |15'+cfg.gifMenuDir+'|CR');
multiColor('|08┌──────────────────────────────────────────────────────────────────────────────┐');
multiColor('|08└|07:|15: |03arrow keys navigate, X exits, hot keys jump to editing field |15:|07:|08────────────┘');
end else
if (scrn=4) then
begin
ansiCls;
goXY(1,1);
multiColor('|08┌|07:|15: |03modem/node info |15:|07:|08─────────────────────────────────────────────────────────┐');
multiColor('|08└──────────────────────────────────────────────────────────────────────────────┘');
goXY(1,3); multiColor('|08(|15a|08) |07Multinode System |08: |15'+b00lean(cfg.multiNode));
goXY(1,4); multiColor('|08(|15b|08) |07Total Nodes in System |08: |15'+strr(cfg.totalNodes));
goXY(1,5); multiColor('|08(|15c|08) |07Telnet Node |08: |15'+b00lean(cfg.telnetNode));
goXY(1,6); multiColor('|08(|15d|08) |07Comm Port (0-8) |08: |15'+strr(cfg.useCom));
goXY(1,7); multiColor('|08(|15e|08) |07Locked Baudrate |08: |15'+strr(cfg.defBaudRate));
goXY(1,8); multiColor('|08(|15f|08) |07Init String #1 |08: |15'+cfg.modemSetupStr);
goXY(1,9); multiColor('|08(|15g|08) |07Init String #2 |08: |15'+cfg.modemSetupStr2);
goXY(1,10);multiColor('|08(|15h|08) |07Init String #3 |08: |15'+cfg.modemSetupStr3);
goXY(1,11);multiColor('|08(|15i|08) |07Hang-up String |08: |15'+cfg.modemHangupStr);
goXY(1,12);multiColor('|08(|15j|08) |07Offhook String |08: |15'+cfg.offHookStr);
goXY(1,13);multiColor('|08(|15k|08) |07Answer String |08: |15'+cfg.autoAnswerStr);
goXY(1,14);multiColor('|08(|15l|08) |07Force Auto (usually no)|08: |15'+b00lean(cfg.useAutoAnswer)+'|CR');
goXY(1,15);multiColor('|08(|15m|08) |07Use FOSSIL Driver |08: |15'+b00lean(cfg.useFossil)+'|CR');
multiColor('|08┌──────────────────────────────────────────────────────────────────────────────┐');
multiColor('|08└|07:|15: |03arrow keys navigate, X exits, hot keys jump to editing field |15:|07:|08────────────┘');
end else
if (scrn=5) then
begin
ansiCls;goXY(1,1);
multiColor('|08┌|07:|15: |03system passwords |15:|07:|08────────────────────────────────────────────────────────┐');
multiColor('|08└──────────────────────────────────────────────────────────────────────────────┘');
goXY(1,3); multiColor('|08(|15a|08) |07Matrix Password |08: |15'+cfg.systemPassword);
goXY(1,4); multiColor('|08(|15b|08) |07New User Password |08: |15'+cfg.newUserPassword);
goXY(1,5); multiColor('|08(|15c|08) |07Sysop Password |08: |15'+cfg.dosPassword);
goXY(1,6); multiColor('|08(|15d|08) |07Lowbaud Password |08: |15'+cfg.lowBaudPassword);
goXY(1,7); multiColor('|08(|15e|08) |07Local Keyboard Password|08: |15'+cfg.kbUnlockPassword);
goXY(1,8); multiColor('|08(|15f|08) |07Local Exit Password |08: |15'+cfg.exitPassword+'|CR');
multiColor('|08┌──────────────────────────────────────────────────────────────────────────────┐');
multiColor('|08└|07:|15: |03arrow keys navigate, X exits, hot keys jump to editing field |15:|07:|08────────────┘');
end else
if (scrn=6) then
begin
ansiCls;goXY(1,1);
multiColor('|08┌|07:|15: |03acs information |15:|07:|08─────────────────────────────────────────────────────────┐');
multiColor('|08└──────────────────────────────────────────────────────────────────────────────┘');
goXY(1,3); multiColor('|08(|15a|08) |07New User ACS Level |08: |15'+strr(cfg.defLevel));
goXY(1,4); multiColor('|08(|15b|08) |07New User Note |08: |15'+cfg.defUserNote);
goXY(1,5); multiColor('|08(|15c|08) |07New User File Level |08: |15'+strr(cfg.defUdLevel));
goXY(1,6); multiColor('|08(|15d|08) |07New User File Points |08: |15'+strr(cfg.defUdPoints));
goXY(1,7); multiColor('|08(|15e|08) |07New User U/D Ratio |08: |15'+strr(cfg.defUdRatio));
goXY(1,8); multiColor('|08(|15f|08) |07New User U/D KB Ratio |08: |15'+strr(cfg.defUdKRatio));
goXY(1,9); multiColor('|08(|15g|08) |07Daily D/L KB Limit |08: |15'+strr(cfg.defDailyKBLimit));
goXY(1,10);multiColor('|08(|15h|08) |07Required P/C Ratio |08: |15'+strr(cfg.defPCR));
goXY(1,11);multiColor('|08(|15i|08) |07Required Msg Length |08: |15'+strr(cfg.defMsgLength));
goXY(1,12);multiColor('|08(|15j|08) |07New User ACS Flags |08: |15'+cfg.defFlags);
goXY(1,13);multiColor('|08(|15k|08) |07Min. Sysop ACS Level |08: |15'+strr(cfg.sysopLevel));
goXY(1,14);multiColor('|08(|15l|08) |07Min. Logon ACS Level |08: |15'+strr(cfg.logonLevel));
goXY(1,15);multiColor('|08(|15m|08) |07Ratio-Exempt ACS Level |08: |15'+strr(cfg.exemptLevel));
goXY(1,16);multiColor('|08(|15n|08) |07Post Anon ACS Level |08: |15'+strr(cfg.anonymousLevel)+'|CR');
multiColor('|08┌──────────────────────────────────────────────────────────────────────────────┐');
multiColor('|08└|07:|15: |03arrow keys navigate, X exits, hot keys jump to editing field |15:|07:|08────────────┘');
end else
if (scrn=7) then
begin
ansiCls;goXY(1,1);
multiColor('|08┌|07:|15: |03file area setup |15:|07:|08─────────────────────────────────────────────────────────┐');
multiColor('|08└──────────────────────────────────────────────────────────────────────────────┘');
goXY(1,3); multiColor('|08(|15a|08) |07Min. Freespace for UL |08: |15'+strr(cfg.minFreeSpace));
goXY(1,4); multiColor('|08(|15b|08) |07DSZLOG Environment Dir |08: |15'+cfg.dszLog);
goXY(1,5); multiColor('|08(|15c|08) |07Force DIZ/SAUCE Usage |08: |15'+b00lean(cfg.forceDiz));
goXY(1,6); multiColor('|08(|15d|08) |07UL File Point Grant |08: |15'+strr(cfg.uploadFactor));
goXY(1,7); multiColor('|08(|15e|08) |07# of K per Point |08: |15'+strr(cfg.kPerPoint));
goXY(1,8); multiColor('|08(|15f|08) |07UL Time % Returned |08: |15'+strr(cfg.timePercentBack));
goXY(1,9); multiColor('|08(|15g|08) |07Cost per Extract_File |08: |15'+strr(cfg.extractCost));
goXY(1,10);multiColor('|08(|15h|08) |07MCI File Point String |08: |15'+cfg.filePoint);
goXY(1,11);multiColor('|08(|15i|08) |07MCI File Points String |08: |15'+cfg.filePoints);
goXY(1,12);multiColor('|08(|15j|08) |07Use MOVE.EXE |08: |15'+b00lean(cfg.useMove));
goXY(1,13);multiColor('|08(|15k|08) |07DL Commision Points |08: |15'+strr(cfg.pointCommision)+'|CR');
multiColor('|08┌──────────────────────────────────────────────────────────────────────────────┐');
multiColor('|08└|07:|15: |03arrow keys navigate, X exits, hot keys jump to editing field |15:|07:|08────────────┘');
end else
if (scrn=8) then
begin
ansiCls;goXY(1,1);
multiColor('|08┌|07:|15: |03new user voting |15:|07:|08─────────────────────────────────────────────────────────┐');
multiColor('|08└──────────────────────────────────────────────────────────────────────────────┘');
goXY(1,3); multiColor('|08(|15a|08) |07Use New User Voting |08: |15'+b00lean(cfg.useNuv));
goXY(1,4); multiColor('|08(|15b|08) |07NUV Infoform Number |08: |15'+strr(cfg.nuvForm));
goXY(1,5); multiColor('|08(|15c|08) |07Look in AUTOVAL.TXT |08: |15'+b00lean(cfg.useAutoVal));
goXY(1,6); multiColor('|08(|15d|08) |07Min. Voting ACS Level |08: |15'+strr(cfg.nuvUseLevel));
goXY(1,7); multiColor('|08(|15e|08) |07Required Yes Votes |08: |15'+strr(cfg.nuvY));
goXY(1,8); multiColor('|08(|15f|08) |07Required No Votes |08: |15'+strr(cfg.nuvN));
goXY(1,9); multiColor('|08(|15g|08) |07Force NUV on ALL Users |08: |15'+b00lean(cfg.autoAddNuv));
goXY(1,10);multiColor('|08(|15h|08) |07AutoVal Accepted Users |08: |15'+b00lean(cfg.nuvValidate));
goXY(1,11);multiColor('|08(|15i|08) |07Ban Rejected Users |08: |15'+b00lean(cfg.nuvKill));
goXY(1,12);multiColor('|08(|15j|08) |07Acc. Users ACS Level |08: |15'+strr(cfg.nuvLevel));
goXY(1,13);multiColor('|08(|15k|08) |07Acc. Users File Level |08: |15'+strr(cfg.nuvUDLevel));
goXY(1,14);multiColor('|08(|15l|08) |07Acc. Users File Points |08: |15'+strr(cfg.nuvPoints));
goXY(1,15);multiColor('|08(|15m|08) |07Local AC Users Percent |08: |15'+strr(cfg.percentLocal)+'|CR');
multiColor('|08┌──────────────────────────────────────────────────────────────────────────────┐');
multiColor('|08└|07:|15: |03arrow keys navigate, X exits, hot keys jump to editing field |15:|07:|08────────────┘');
end else
if (scrn=9) then
begin
ansiCls;goXY(1,1);
multiColor('|08┌|07:|15: |03infoforms stuff |15:|07:|08─────────────────────────────────────────────────────────┐');
multiColor('|08└──────────────────────────────────────────────────────────────────────────────┘');
goXY(1,3); multiColor('|08(|15a|08) |07Required Infoforms |08: |15'+cfg.requiredForms);
goXy(1,4); multiColor('|08(|15b|08) |07Infoform 1 Descrip. |08: |15'+cfg.infoformStr[1]);
goXY(1,5); multiColor('|08(|15c|08) |07Infoform 1 Min. Level |08: |15'+strr(cfg.infoformLvl[1]));
goXY(1,6); multiColor('|08(|15d|08) |07Infoform 2 Descrip. |08: |15'+cfg.infoformStr[2]);
goXY(1,7); multiColor('|08(|15e|08) |07Infoform 2 Min. Level |08: |15'+strr(cfg.infoformLvl[2]));
goXY(1,8); multiColor('|08(|15f|08) |07Infoform 3 Descrip. |08: |15'+cfg.infoformStr[3]);
goXY(1,9); multiColor('|08(|15g|08) |07Infoform 3 Min. Level |08: |15'+strr(cfg.infoformLvl[3]));
goXY(1,10);multiColor('|08(|15h|08) |07Infoform 4 Descrip. |08: |15'+cfg.infoformStr[4]);
goXY(1,11);multiColor('|08(|15i|08) |07Infoform 4 Min. Level |08: |15'+strr(cfg.infoformLvl[4]));
goXY(1,12);multiColor('|08(|15j|08) |07Infoform 5 Descrip. |08: |15'+cfg.infoformStr[5]);
goXY(1,13);multiColor('|08(|15k|08) |07Infoform 5 Min. Level |08: |15'+strr(cfg.infoformLvl[5])+'|CR');
multiColor('|08┌──────────────────────────────────────────────────────────────────────────────┐');
multiColor('|08└|07:|15: |03arrow keys navigate, X exits, hot keys jump to editing field |15:|07:|08────────────┘');
end else
if (scrn=10) then
begin
ansiCls;goXY(1,1);
multiColor('|08┌|07:|15: |03system colors |15:|07:|08───────────────────────────────────────────────────────────┐');
multiColor('|08└──────────────────────────────────────────────────────────────────────────────┘');
goXY(1,3); multiColor('|08(|15a|08) |07Default User Color 1 |08: |15'+colorWrite(cfg.defColor1));
goXY(1,4); multiColor('|08(|15b|08) |07Default User Color 2 |08: |15'+colorWrite(cfg.defColor2));
goXY(1,5); multiColor('|08(|15c|08) |07Default User Color 3 |08: |15'+colorWrite(cfg.defColor3));
goXY(1,6); multiColor('|08(|15d|08) |07Default User Color 4 |08: |15'+colorWrite(cfg.defColor4));
goXY(1,7); multiColor('|08(|15e|08) |07Default User Color 5 |08: |15'+colorWrite(cfg.defColor5));
goXY(1,8); multiColor('|08(|15f|08) |07Default User Color 6 |08: |15'+colorWrite(cfg.defColor6));
goXY(1,9); multiColor('|08(|15g|08) |07Default User Color 7 |08: |15'+colorWrite(cfg.defColor7));
goXY(1,10);multiColor('|08(|15h|08) |07Uploaded By Color |08: |15'+colorWrite(cfg.uploadedByColor));
goXY(1,11);multiColor('|08(|15i|08) |07Crazy Chat Color 1 |08: |15'+colorWrite(cfg.cc[1]));
goXY(1,12);multiColor('|08(|15j|08) |07Crazy Chat Color 2 |08: |15'+colorWrite(cfg.cc[2]));
goXY(1,13);multiColor('|08(|15k|08) |07Crazy Chat Color 3 |08: |15'+colorWrite(cfg.cc[3]));
goXY(1,14);multiColor('|08(|15l|08) |07Crazy Chat Color 4 |08: |15'+colorWrite(cfg.cc[4]));
goXY(1,15);multiColor('|08(|15m|08) |07Crazy Chat Color 5 |08: |15'+colorWrite(cfg.cc[5]));
goXY(1,16);multiColor('|08(|15n|08) |07Crazy Chat Color 6 |08: |15'+colorWrite(cfg.cc[6]));
goXY(1,17);multiColor('|08(|15o|08) |07Crazy Chat Color 7 |08: |15'+colorWrite(cfg.cc[7]));
goXY(1,18);multiColor('|08(|15p|08) |07Yes/No Selected Color |08: |15'+colorWrite(cfg.yesColor));
goXY(1,19);multiColor('|08(|15q|08) |07Yes/No Normal Color |08: |15'+colorWrite(cfg.noColor)+'|CR');
multiColor('|08┌──────────────────────────────────────────────────────────────────────────────┐');
multiColor('|08└|07:|15: |03arrow keys navigate, X exits, hot keys jump to editing field |15:|07:|08────────────┘');
end else
if (scrn=11) then
begin
ansiCls;goXY(1,1);
multiColor('|08┌|07:|15: |03file/mail network info |15:|07:|08──────────────────────────────────────────────────┐');
multiColor('|08└──────────────────────────────────────────────────────────────────────────────┘');
goXY(1,3); multiColor('|08(|15a|08) |07Default Net Origin |08: |15'+cfg.fidoOrigin);
goXY(1,4); multiColor('|08(|15b|08) |07Default Net Address |08: |15'+cfg.defFidoAddress);
goXY(1,5); multiColor('|08(|15c|08) |07Default Net Name |08: |15'+cfg.netName+'|CR');
multiColor('|08┌──────────────────────────────────────────────────────────────────────────────┐');
multiColor('|08└|07:|15: |03arrow keys navigate, X exits, hot keys jump to editing field |15:|07:|08────────────┘');
end else
if (scrn=12) then
begin
ansiCls;goXY(1,1);
multiColor('|08┌|07:|15: |03misc information 1 |15:|07:|08──────────────────────────────────────────────────────┐');
multiColor('|08└──────────────────────────────────────────────────────────────────────────────┘');
goXY(1,3); multiColor('|08(|15a|08) |07Password Character |08: |15'+cfg.dotChar);
goXY(1,4); multiColor('|08(|15b|08) |07Use One Liners |08: |15'+b00lean(cfg.use_one_liners));
goXY(1,5); multiColor('|08(|15c|08) |07Yes Bar String |08: |15'+cfg.yesStr);
goXY(1,6); multiColor('|08(|15d|08) |07No Bar String |08: |15'+cfg.noStr);
goXY(1,7); multiColor('|08(|15e|08) |07Total Prelogon Screens |08: |15'+strr(cfg.numPrelogon));
goXY(1,8); multiColor('|08(|15f|08) |07Total Stat Screens |08: |15'+strr(cfg.numStats));
goXY(1,9); multiColor('|08(|15g|08) |07Total Welcome Screens |08: |15'+strr(cfg.numWelcomes));
goXY(1,10);multiColor('|08(|15h|08) |07Minutes Until Timeout |08: |15'+strr(cfg.minTimeOut));
goXY(1,11);multiColor('|08(|15i|08) |07Bar Menu Brackets |08: |15'+cfg.barChar);
goXY(1,12);multiColor('|08(|15j|08) |07Rumor Brackets |08: |15'+cfg.rumChar);
goXY(1,13);multiColor('|08(|15k|08) |07Nightly Event Time |08: |15'+cfg.eventTime);
goXY(1,14);multiColor('|08(|15l|08) |07Event Batch File |08: |15'+cfg.eventBatch);
goXY(1,15);multiColor('|08(|15m|08) |07Use Bios Screen Writes |08: |15'+b00lean(cfg.directVideoMode));
goXY(1,16);multiColor('|08(|15n|08) |07Enable Snow Checking |08: |15'+b00lean(cfg.checkSnowMode));
goXY(1,17);multiColor('|08(|15o|08) |07Allow Note Changing |08: |15'+b00lean(cfg.changeNote));
goXY(1,18);multiColor('|08(|15p|08) |07Filter Msg Quotes |08: |15'+b00lean(cfg.filterQuote));
goXY(1,19);multiColor('|08(|15q|08) |07Inputbox Abort String |08: |15'+cfg.boxAbort+'|CR');
multiColor('|08┌──────────────────────────────────────────────────────────────────────────────┐');
multiColor('|08└|07:|15: |03arrow keys navigate, X exits, hot keys jump to editing field |15:|07:|08────────────┘');
end else
if (scrn=13) then
begin
ansiCls;goXY(1,1);
multiColor('|08┌|07:|15: |03misc information 2 |15:|07:|08──────────────────────────────────────────────────────┐');
multiColor('|08└──────────────────────────────────────────────────────────────────────────────┘');
goXY(1,3); multiColor('|08(|15a|08) |07Anonymous String |08: |15'+cfg.anonymousStr);
goXY(1,4); multiColor('|08(|15b|08) |07Max Msg Quoted Lines |08: |15'+strr(cfg.maxQuotedLines));
goXY(1,5); multiColor('|08(|15c|08) |07Max Time in Time Bank |08: |15'+strr(cfg.maxTimeBank));
goXY(1,6); multiColor('|08(|15d|08) |07Total File Conferences |08: |15'+strr(cfg.maxFileConf));
goXY(1,7); multiColor('|08(|15e|08) |07Total Msg Conferences |08: |15'+strr(cfg.maxMsgConf));
goXY(1,8); multiColor('|08(|15f|08) |07Hangup on New Users |08: |15'+b00lean(cfg.hangUpOnNew));
goXY(1,9); multiColor('|08(|15g|08) |07CD-ROM Drives |08: |15'+cfg.cdRom);
goXY(1,10);multiColor('|08(|15h|08) |07Terminal Batch File |08: |15'+cfg.terminalFile);
goXY(1,11);multiColor('|08(|15i|08) |07Use Animated Prompts |08: |15'+b00lean(cfg.useAnimatedPrompts));
goXY(1,12);multiColor('|08(|15j|08) |07Total Animated Prompts |08: |15'+strr(cfg.totalAnimatedPrompts)+'|CR');
multiColor('|08┌──────────────────────────────────────────────────────────────────────────────┐');
multiColor('|08└|07:|15: |03arrow keys navigate, X exits, hot keys jump to editing field |15:|07:|08────────────┘');
end else
if (scrn=14) then
begin
ansiCls;goXY(1,1);
multiColor('|08┌|07:|15: |03generic menu options |15:|07:|08────────────────────────────────────────────────────┐');
multiColor('|08└──────────────────────────────────────────────────────────────────────────────┘');
goXY(1,3); multiColor('|08(|15a|08) |07Auto-Generate Menus |08: |15'+b00lean(cfg.genGenerate)+'|CR');
goXY(1,4); multiColor('|08(|15b|08) |07Header/Top Filename |08: |15'+cfg.genHeaderFile);
goXY(1,5); multiColor('|08(|15c|08) |07Command/Mid Filename |08: |15'+cfg.genMiddleFile);
goXY(1,6); multiColor('|08(|15d|08) |07Footer/Bot Filename |08: |15'+cfg.genFooterFile);
goXY(1,7); multiColor('|08(|15e|08) |07Key Box Characters |08: |15'+cfg.genKeyBoxCharz);
goXY(1,8); multiColor('|08(|15f|08) |07Key Box Color |08: |15'+colorWrite(cfg.genKeyBoxColor));
goXY(1,9); multiColor('|08(|15g|08) |07Key Color |08: |15'+colorWrite(cfg.genKeyColor));
goXY(1,10);multiColor('|08(|15h|08) |07Description Color |08: |15'+colorWrite(cfg.genDescriptionColor));
goXY(1,11);multiColor('|08(|15i|08) |07Commands Per Line |08: |15'+strr(cfg.genCmndsPerLine));
goXY(1,12);multiColor('|08(|15j|08) |07Start X Pos for Menu |08: |15'+strr(cfg.genStartXPos));
goXY(1,13);multiColor('|08(|15k|08) |07Start Y Pos for Menu |08: |15'+strr(cfg.genStartYPos));
goXY(1,14);multiColor('|08(|15l|08) |07Description Padding |08: |15'+strr(cfg.genDescriptionPadding)+'|CR');
multiColor('|08┌──────────────────────────────────────────────────────────────────────────────┐');
multiColor('|08└|07:|15: |03arrow keys navigate, X exits, hot keys jump to editing field |15:|07:|08────────────┘');
end;
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Function cSelectShit(cOptions : byte) : char;
var cInKey : char;
cKill : boolean;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure cShowSelection;
begin
goXY(1,2+cValue[1]);multicolor('|08(|15'+chr(cValue[1]+96)+'|08)');
goXY(1,2+cValue[2]);multicolor('|B7 |08'+chr(cValue[2]+96)+'|B7 ');
goXY(1,1);
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::}
begin
cShowSelection;
repeat
cInKey := upCase(ArrowKey(True));
case cInKey of
^A : begin
cValue[1] := cValue[2];
if (cValue[1]<>1) then dec(cValue[2]);
cShowSelection;
end;
^B : begin
cValue[1] := cValue[2];
if (cValue[1]<>cOptions) then inc(cValue[2]);
cShowSelection;
end;
']' : begin
cSelectShit := ']';
cKill := true;
end;
'[' : begin
cSelectShit := '[';
cKill := true;
end;
' ' : begin
cSelectShit := #32;
cKill := true;
end;
#27,'X' : begin
cSelectShit := 'X';
cKill := True;
end;
'A'..'Z': begin
if (ord(cInkey)<=64+cOptions) then
begin
cValue[1] := cValue[2];
cValue[2] := ord(cInKey)-64;
cShowSelection;
cSelectShit := cInkey;
cKill := true;
end;
end;
#13 : begin
cSelectShit := cSelectChar[cValue[2]];
cKill := true;
end;
#27 : begin
cSelectShit := #0;
cKill := true;
end;
end;
until (cKill=true);
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure cUpdateBars(bSet : byte);
begin
if (bSet=0) then
begin
goxy(23,2+cBarData.bLast[0]);
multicolor('|07|B0'+cMatrix[cBarData.bLast[0]]);
goxy(23,2+cBarData.bValue[0]);
multicolor('|15|B3'+cMatrix[cBarData.bValue[0]]);
goXY(1,1);
end;
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Function cInputStr(x,y,fg,bg,len : byte; bufStr : lStr) : lStr;
var iPos : byte;
iStr : lStr;
iChar : char;
begin
cChange := true;
iStr := bufStr;
goxy(x,y);
for iPos := 1 to len do multicolor('|B0|07'+#32);goxy(x,y);
inputbox2(len, bufStr);
if inpt<>'<<undo>>' then cInputStr := inpt else
cInputStr := iStr;
goxy(x,y);
for iPos := 1 to len do multicolor('|B0|07'+#32);goxy(x,y);
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure writeConfig;
var f : file of configsettype;
begin
assign(f,configFile);
rewrite(f);
write(f,cfg);
close(f);
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Function cPromptSave : boolean;
begin
goXy(1,24);
ansiColor(7);
writeStr('Save your changes :: !');
if yes then cPromptSave := true;
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Function cBoolToggle(b : boolean) : boolean;
begin
asm xor b, 1 end;
cBoolToggle := b;
cChange := true;
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Function cEditColor(x,y : byte;color : integer) : integer;
var fg,bg,col : byte;
begin
cChange := true;
goXY(x,y);
multiColor('|07Enter Forground Color (0-15) :: ');
inputBox(2);fg := stoi(inpt);
goXY(x,y);for bg := 1 to 40 do sendFull(' ');
goXY(x,y);
multiColor('|07Enter Background Color (0-7) :: ');
inputBox(1);bg := stoi(inpt);
cEditColor := bg*16+fg;
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Function cInputCh(x,y,fg,bg,len : byte;bufStr : char) : char;
var s : string;
begin
s := cInputStr(x,y,fg,bg,1,bufStr);
cInputCh := s[1];
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure cEditShit(cSection,cNumber : byte);
begin
if (cSection=1) then
begin
case cNumber of
1 : cfg.longname := cInputStr(30,2+cNumber,00,7,45,cfg.longname);
2 : cfg.shortname := cInputStr(30,2+cNumber,00,7,04,cfg.shortname);
3 : cfg.location := cInputStr(30,2+cNumber,00,7,45,cfg.location);
4 : cfg.boardphone := cInputStr(30,2+cNumber,00,7,12,cfg.boardphone);
5 : cfg.sysopname := cInputStr(30,2+cNumber,00,7,15,cfg.sysopname);
6 : cfg.cosysopname := cInputStr(30,2+cNumber,00,7,15,cfg.cosysopname);
7 : cfg.regcode1 := cInputStr(30,2+cNumber,00,7,12,cfg.regcode1);
8 : cfg.regcode2 := cInputStr(30,2+cNumber,00,7,12,cfg.regcode2);
9 : cfg.nodeNum := stoi(cInputStr(30,2+cNumber,00,7,3,strr(cfg.nodeNum)));
10 : cfg.useGifMenus := cBoolToggle(cfg.useGifMenus);
end;
end else
if (cSection=2) then
begin
case cNumber of
1 : cfg.startMenu := cInputStr(30,3,00,7,8,cfg.startMenu);
2 : cfg.amtMatrix := stoi(cInputStr(30,4,00,7,3,strr(cfg.amtMatrix)));
3 : cfg.defaultWfc := cInputStr(30,5,00,7,12,cfg.defaultWfc);
4 : cfg.directVideoMode := cBoolToggle(cfg.directVideoMode);
5 : cfg.useEms := cBoolToggle(cfg.useEms);
6 : cfg.maxDosShell := cBoolToggle(cfg.maxDosShell);
7 : cfg.autoLogin := cBoolToggle(cfg.autoLogin);
8 : cfg.screenSave := stoi(cInputStr(30,10,00,7,3,strr(cfg.screenSave)));
9 : cfg.private := cBoolToggle(cfg.private);
10 : cfg.chatCost := stoi(cInputStr(30,12,00,7,3,strr(cfg.chatCost)));
11 : cfg.availTime := cInputStr(30,13,00,7,12,cfg.availTime);
12 : cfg.unAvailTime := cInputStr(30,14,00,7,12,cfg.unAvailTime);
13 : cfg.chatNoise := cBoolToggle(cfg.chatNoise);
14 : cfg.useBox := cBoolToggle(cfg.useBox);
15 : cfg.boxChar := cInputCh(30,17,00,7,1,cfg.boxChar);
16 : cfg.defBottomLine := stoi(cInputStr(30,18,00,7,1,strr(cfg.defBottomLine)));
17 : cfg.defTopFive := stoi(cInputStr(30,19,00,7,1,strr(cfg.defTopFive)));
18 : cfg.QWKName := cInputStr(30,20,00,7,15,cfg.qwkName);
19 : cfg.maxOneLiners := stoi(cInputStr(30,21,00,7,2,strr(cfg.maxOneLiners)));
end;
end else
if (cSection=3) then
begin
case cNumber of
1 : cfg.infusionDir := cInputStr(30,3,00,7,44,cfg.infusionDir);
2 : cfg.textFileDir := cInputStr(30,4,00,7,44,cfg.textFileDir);
3 : cfg.textDir := cInputStr(30,5,00,7,44,cfg.textDir);
4 : cfg.uploadDir := cInputStr(30,6,00,7,44,cfg.uploadDir);
5 : cfg.boardDir := cInputStr(30,7,00,7,44,cfg.boardDir);
6 : cfg.doorDir := cInputStr(30,8,00,7,44,cfg.doorDir);
7 : cfg.dataDir := cInputStr(30,9,00,7,44,cfg.dataDir);
8 : cfg.extractDir := cInputStr(30,10,00,7,44,cfg.extractDir);
9 : cfg.menuDir := cInputStr(30,11,00,7,44,cfg.menuDir);
10 : cfg.screensDir := cInputStr(30,12,00,7,44,cfg.screensDir);
11 : cfg.iclDir := cInputStr(30,13,00,7,44,cfg.iclDir);
12 : cfg.gifMenuDir := cInputStr(30,14,00,7,44,cfg.gifMenuDir);
end;
end else
if (cSection=4) then
begin
case cNumber of
1 : cfg.multiNode := cBoolToggle(cfg.multiNode);
2 : cfg.totalNodes := stoi(cInputStr(30,4,00,7,3,strr(cfg.totalNodes)));
3 : cfg.telnetNode := cBoolToggle(cfg.telnetNode);
4 : cfg.useCom := stoi(cInputStr(30,6,00,7,3,strr(cfg.useCom)));
5 : cfg.defBaudRate := stoi(cInputStr(30,7,00,7,5,strr(cfg.defBaudRate)));
6 : cfg.modemSetupStr := cInputStr(30,8,00,7,40,cfg.modemSetupStr);
7 : cfg.modemSetupStr2 := cInputStr(30,9,00,7,40,cfg.modemSetupStr2);
8 : cfg.modemSetupStr3 := cInputStr(30,10,00,7,40,cfg.modemSetupStr3);
9 : cfg.modemHangupStr := cInputStr(30,11,00,7,40,cfg.modemHangupStr);
10 : cfg.offHookStr := cInputStr(30,12,00,7,40,cfg.offHookStr);
11 : cfg.autoAnswerStr := cInputStr(30,13,00,7,40,cfg.autoAnswerStr);
12 : cfg.useAutoAnswer := cBoolToggle(cfg.useAutoAnswer);
13 : cfg.useFossil := cBoolToggle(cfg.useFossil);
end;
end else
if (cSection=5) then
begin
case cNumber of
1 : cfg.systemPassword := cInputStr(30,3,00,7,20,cfg.systemPassword);
2 : cfg.newUserPassword := cInputStr(30,4,00,7,20,cfg.newUserPassword);
3 : cfg.dosPassword := cInputStr(30,5,00,7,20,cfg.dosPassword);
4 : cfg.lowBaudPassword := cInputStr(30,6,00,7,20,cfg.lowBaudPassword);
5 : cfg.kbUnlockPassword:= cInputStr(30,7,00,7,20,cfg.kbUnlockPassword);
6 : cfg.exitPassword := cInputStr(30,8,00,7,20,cfg.exitPassword);
end;
end else
if (cSection=6) then
begin
case cNumber of
1 : cfg.defLevel := stoi(cInputStr(30,3,00,7,5, strr(cfg.defLevel)));
2 : cfg.defUserNote := cInputStr(30,4,00,7,40,cfg.defUserNote);
3 : cfg.defUdLevel := stoi(cInputStr(30,5,00,7,5, strr(cfg.defudLevel)));
4 : cfg.defUdPoints := stoi(cInputStr(30,6,00,7,5, strr(cfg.defUdPoints)));
5 : cfg.defUdRatio := stoi(cInputStr(30,7,00,7,5, strr(cfg.defUdRatio)));
6 : cfg.defUdKratio := stoi(cInputStr(30,8,00,7,5, strr(cfg.defUdKRatio)));
7 : cfg.defDailyKBLimit := stoi(cInputStr(30,9,00,7,5, strr(cfg.defDailyKBLimit)));
8 : cfg.defPcr := stoi(cInputStr(30,10,00,7,5, strr(cfg.defPcr)));
9 : cfg.defMsgLength := stoi(cInputStr(30,11,00,7,5,strr(cfg.defMsgLength)));
10 : cfg.defFlags := cInputStr(30,12,0,7,26,cfg.defFlags);
11 : cfg.sysopLevel := stoi(cInputStr(30,13,00,7,5,strr(cfg.sysopLevel)));
12 : cfg.logonLevel := stoi(cInputStr(30,14,00,7,5,strr(cfg.logonLevel)));
13 : cfg.exemptLevel := stoi(cInputStr(30,15,00,7,5,strr(cfg.exemptLevel)));
14 : cfg.anonymousLevel := stoi(cInputStr(30,16,00,7,5,strr(cfg.anonymousLevel)));
end;
end else
if (cSection=7) then
begin
case cNumber of
1 : cfg.minFreeSpace := stoi(cInputStr(30,3,00,7,4,strr(cfg.minFreeSpace)));
2 : cfg.dszLog := cInputStr(30,4,00,7,44,cfg.dszLog);
3 : cfg.forceDiz := cBoolToggle(cfg.forceDiz);
4 : cfg.uploadFactor := stoi(cInputStr(30,6,00,7,3,strr(cfg.uploadFactor)));
5 : cfg.kPerPoint := stoi(cInputStr(30,7,00,7,3,strr(cfg.kPerPoint)));
6 : cfg.timePercentBack := stoi(cInputStr(30,8,00,7,3,strr(cfg.timePercentBack)));
7 : cfg.extractCost := stoi(cInputStr(30,9,00,7,3,strr(cfg.extractCost)));
8 : cfg.filePoint := cInputStr(30,10,00,7,30,cfg.filePoint);
9 : cfg.filePoints := cInputStr(30,11,00,7,30,cfg.filePoints);
10 : cfg.useMove := cBoolToggle(cfg.useMove);
11 : cfg.pointCommision := stoi(cInputStr(30,13,00,7,3,strr(cfg.pointCommision)));
end;
end else
if (cSection=8) then
begin
case cNumber of
1 : cfg.useNuv := cBoolToggle(cfg.useNuv);
2 : cfg.nuvForm := stoi(cInputStr(30,4,00,7,1,strr(cfg.nuvForm)));
3 : cfg.useAutoVal := cBoolToggle(cfg.useAutoVal);
4 : cfg.nuvUseLevel := stoi(cInputStr(30,6,00,7,5,strr(cfg.nuvUseLevel)));
5 : cfg.nuvY := stoi(cInputStr(30,7,00,7,2,strr(cfg.nuvY)));
6 : cfg.nuvN := stoi(cInputStr(30,8,00,7,2,strr(cfg.nuvN)));
7 : cfg.autoAddNuv := cBoolToggle(cfg.autoAddNuv);
8 : cfg.nuvValidate := cBoolToggle(cfg.nuvValidate);
9 : cfg.nuvKill := cBoolToggle(cfg.nuvKill);
10 : cfg.nuvLevel := stoi(cInputStr(30,12,00,7,5,strr(cfg.nuvLevel)));
11 : cfg.nuvUDLevel := stoi(cInputStr(30,13,00,7,5,strr(cfg.nuvUDLevel)));
12 : cfg.nuvPoints := stoi(cInputStr(30,14,00,7,5,strr(cfg.nuvPoints)));
13 : cfg.percentLocal := stoi(cInputStr(30,15,00,7,3,strr(cfg.percentLocal)));
end;
end else
if (cSection=9) then
begin
case cNumber of
1 : cfg.requiredForms := cInputStr(30,3,00,7,5, cfg.requiredForms);
2 : cfg.infoformStr[1] := cInputStr(30,4,00,7,40,cfg.infoformStr[1]);
3 : cfg.infoformLvl[1] := stoi(cInputStr(30,5,00,7,5,strr(cfg.infoformLvl[1])));
4 : cfg.infoformStr[2] := cInputStr(30,6,00,7,40,cfg.infoformStr[2]);
5 : cfg.infoformLvl[2] := stoi(cInputStr(30,7,00,7,5,strr(cfg.infoformLvl[2])));
6 : cfg.infoformStr[3] := cInputStr(30,8,00,7,40,cfg.infoformStr[3]);
7 : cfg.infoformLvl[3] := stoi(cInputStr(30,9,00,7,5,strr(cfg.infoformLvl[3])));
8 : cfg.infoformStr[4] := cInputStr(30,10,00,7,40,cfg.infoformStr[4]);
9 : cfg.infoformLvl[4] := stoi(cInputStr(30,11,00,7,5,strr(cfg.infoformLvl[4])));
10 : cfg.infoformStr[5] := cInputStr(30,12,00,7,40,cfg.infoformStr[5]);
11 : cfg.infoformLvl[5] := stoi(cInputStr(30,13,00,7,5,strr(cfg.infoformLvl[5])));
end;
end else
if (cSection=10) then
begin
case cNumber of
1 : cfg.defColor1 := cEditColor(30,3, cfg.defColor1);
2 : cfg.defColor2 := cEditColor(30,4, cfg.defColor2);
3 : cfg.defColor3 := cEditColor(30,5, cfg.defColor3);
4 : cfg.defColor4 := cEditColor(30,6, cfg.defColor4);
5 : cfg.defColor5 := cEditColor(30,7, cfg.defColor5);
6 : cfg.defColor6 := cEditColor(30,8, cfg.defColor6);
7 : cfg.defColor7 := cEditColor(30,9, cfg.defColor7);
8 : cfg.uploadedByColor := cEditColor(30,10,cfg.uploadedByColor);
9 : cfg.cc[1] := cEditColor(30,11,cfg.cc[1]);
10 : cfg.cc[2] := cEditColor(30,12,cfg.cc[2]);
11 : cfg.cc[3] := cEditColor(30,13,cfg.cc[3]);
12 : cfg.cc[4] := cEditColor(30,14,cfg.cc[4]);
13 : cfg.cc[5] := cEditColor(30,15,cfg.cc[5]);
14 : cfg.cc[6] := cEditColor(30,16,cfg.cc[6]);
15 : cfg.cc[7] := cEditColor(30,17,cfg.cc[7]);
16 : cfg.yesColor := cEditColor(30,18,cfg.yesColor);
17 : cfg.noColor := cEditColor(30,19,cfg.noColor);
end;
end else
if (cSection=11) then
begin
case cNumber of
1 : cfg.fidoOrigin := cInputStr(30,3,00,7,40,cfg.fidoOrigin);
2 : cfg.defFidoAddress := cInputStr(30,4,00,7,15,cfg.defFidoAddress);
3 : cfg.netName := cInputStr(30,5,00,7,30,cfg.netName);
end;
end else
if (cSection=12) then
begin
case cNumber of
1 : cfg.dotChar := cInputCh(30,3,00,7,1,cfg.dotChar);
2 : cfg.use_one_liners := cBoolToggle(cfg.use_one_liners);
3 : cfg.yesStr := cInputStr(30,5,00,7,40,cfg.yesStr);
4 : cfg.noStr := cInputStr(30,6,00,7,40,cfg.noStr);
5 : cfg.numPrelogon := stoi(cInputStr(30,7,00,7,3,strr(cfg.numPreLogon)));
6 : cfg.numStats := stoi(cInputStr(30,8,00,7,3,strr(cfg.numStats)));
7 : cfg.numWelcomes := stoi(cInputStr(30,9,00,7,3,strr(cfg.numWelcomes)));
8 : cfg.minTimeOut := stoi(cInputStr(30,10,00,7,3,strr(cfg.minTimeOut)));
9 : cfg.barChar := cInputStr(30,11,00,7,2,cfg.barChar);
10 : cfg.rumChar := cInputStr(30,12,00,7,2,cfg.rumChar);
11 : cfg.eventTime := cInputStr(30,13,00,7,12,cfg.eventTime);
12 : cfg.eventBatch := cInputStr(30,14,00,7,12,cfg.eventBatch);
13 : cfg.directVideoMode:= cBoolToggle(cfg.directVideoMode);
14 : cfg.checkSnowMode := cBoolToggle(cfg.checkSnowMode);
15 : cfg.changeNote := cBoolToggle(cfg.changeNote);
16 : cfg.filterQuote := cBoolToggle(cfg.filterQuote);
17 : cfg.boxAbort := cInputStr(30,19,00,7,15,cfg.boxAbort);
end;
end else
if (cSection=13) then
begin
case cNumber of
1 : cfg.anonymousStr := cInputStr(30,3,00,7,15,cfg.anonymousStr);
2 : cfg.maxQuotedLines := stoi(cInputStr(30,4,00,7,2,strr(cfg.maxQuotedLines)));
3 : cfg.maxTimeBank := stoi(cInputStr(30,5,00,7,3,strr(cfg.maxTimeBank)));
4 : cfg.maxFileConf := stoi(cInputStr(30,6,00,7,3,strr(cfg.maxFileConf)));
5 : cfg.maxMsgConf := stoi(cInputStr(30,7,00,7,3,strr(cfg.maxMsgConf)));
6 : cfg.hangUpOnNew := cBoolToggle(cfg.hangUpOnNew);
7 : cfg.cdRom := cInputStr(30,9,00,7,26,cfg.cdRom);
8 : cfg.terminalFile := cInputStr(30,10,00,7,12,cfg.terminalFile);
9 : cfg.useAnimatedPrompts := cBoolToggle(cfg.useAnimatedPrompts);
10 : cfg.totalAnimatedPrompts := stoi(cInputStr(30,12,00,7,3,strr(cfg.totalAnimatedPrompts)));
end;
end else
if (cSection=14) then
begin
case cNumber of
1 : cfg.genGenerate := cBoolToggle(cfg.genGenerate);
2 : cfg.genHeaderFile := cInputStr(30,4,00,7,12,cfg.genHeaderFile);
3 : cfg.genMiddleFile := cInputStr(30,5,00,7,12,cfg.genMiddleFile);
4 : cfg.genFooterFile := cInputStr(30,6,00,7,12,cfg.genFooterFile);
5 : cfg.genKeyBoxCharz := cInputStr(30,7,00,7,2,cfg.genKeyBoxCharz);
6 : cfg.genKeyBoxColor := cEditColor(30,8,cfg.genKeyBoxColor);
7 : cfg.genKeyColor := cEditColor(30,9,cfg.genKeyColor);
8 : cfg.genDescriptionColor := cEditColor(30,10,cfg.genDescriptionColor);
9 : cfg.genCmndsPerLine := stoi(cInputStr(30,11,00,7,1,strr(cfg.genCmndsPerLine)));
10 : cfg.genStartXPos := stoi(cInputStr(30,12,00,7,2,strr(cfg.genStartXPos)));
11 : cfg.genStartYPos := stoi(cInputStr(30,13,00,7,2,strr(cfg.genStartYPos)));
12 : cfg.genDescriptionPadding := stoi(cInputStr(30,14,00,7,2,strr(cfg.genDescriptionPadding)));
end;
end;
if (cChange=true) then cDrawScreens(cSection,cNumber);cChange := false;
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure cConfig0;
var cDone : boolean;
cInkey : char;
begin
cDone := false;
cDrawScreens(0,0);
cUpdateBars(0);
repeat
cInkey := upCase(ArrowKey(True));
Case cInkey of
^A : begin
cBarData.bLast[0] := cBarData.bValue[0];
if (cBarData.bLast[0] <> 1) then dec(cBarData.bValue[0]);
cUpdateBars(0);
end; {up}
^B : begin
cBarData.bLast[0] := cBarData.bValue[0];
if (cBarData.bLast[0] <> cTotalOptns) then inc(cBarData.bValue[0]);
cUpdateBars(0);
end; {dn}
#13 : begin
if cBarData.bValue[0] in [1..(cTotalOptns-1)] then cConfigSubs(cBarData.bValue[0]);
if cBarData.bValue[0] = cTotalOptns then cDone := true;
end;
'Q' : cDone := true;
End;
until (cDone=true or HungUpOn);
ansiCls;multiColor('|15i|07nfusion |15o|07nline |15c|07onfiguration - |15v|07ersion .01a (c) |15s|07kaboy101 / |15a|07venge!'+
'|CR');
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure cConfigSubs(sub : byte);
var cDone : boolean;
cRet : char;
begin
cDrawScreens(sub,0);
cValue[1] := 1;cValue[2] := 1;
repeat
cRet := cSelectShit(cTotals[sub]);
case cRet of
'X' : cDone := true;
else begin
cEditShit(sub,ord(cRet)-64);
cDone := false;
end;
end;
until (cDone or HungUpOn);
if (cPromptSave=true) then writeConfig
else readCfg(false);
ansiCLS;
cDrawScreens(0,0);
cUpdateBars(0);
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure cMiniDos;
const
mVersion = '1.0';
var
mInString : lStr;
mDone : boolean;
begin
ansiCls;
if exist(cfg.textfiledir+'MDSTART.ANS') then printFile(cfg.textFileDir+'MDSTART.ANS');
multiColor('|08 -- |07Infusion BBS Mini-Dos version '+mVersion+' (c)copyright Grant Passmore|CR');
multiColor('|08 -- |07Command help is available at /HELP ...|CR');
repeat
writeStr('C:\>*');
mInString := inpt;
inpt := upString(inpt);
if (inpt='EXIT') then mDone := true;
until (mDone=true);
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure cUserEdit;
var
uShit : ^userRec;
uTotal : word;
uCurr : word;
uInChar : char;
uDone : boolean;
uChanged: boolean;
uBarData: array[1..2] of word;
Function uSelectWithBar : char;
const
uMatrix : array[1..36] of char =
('A','S','B','T','C','U','D','V','E','W','F','!','G','Y','H','Z','I','1',
'J','2','K','3','L','4','M','5','N','6','O','7','P',']','(','[',')','X');
uBarPos : array[1..36] of byte =
(3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,
17,18,18,19,19,20,20);
procedure uShowBar;
begin
if (odd(uBarData[1])=true) then
goXY(3,uBarPos[uBarData[1]]) else
goXY(52,uBarPos[uBarData[1]]);
multiColor('|08(|15'+uMatrix[uBarData[1]]+'|08)');
if (odd(uBarData[2])=true) then
goXY(3,uBarPos[uBarData[2]]) else
goXY(52,uBarPos[uBarData[2]]);
multiColor('|B7 |00'+uMatrix[uBarData[2]]+' |B0');
goXY(1,1);
end;
var inKey : char;
uGotBar : boolean;
x : byte;
uFound : boolean;
begin
uShowBar;
repeat
inKey := upCase(arrowKey(true));
case upcase(inKey) of
^M : begin
uSelectWithBar := uMatrix[uBarData[2]];
uGotBar := true;
end;
^B : begin
uBarData[1] := uBarData[2];
inc(uBarData[2],2);
if (uBarData[2]>36) then uBarData[2] := 36;
uShowBar;
end;
^A : begin
uBarData[1] := uBarData[2];
dec(uBarData[2],2);
if (uBarData[2]<1) then uBarData[2] := 1;
if (uBarData[2]>36) then uBarData[2] := 1;
uShowBar;
end;
^C : begin
uBarData[1] := uBarData[2];
inc(uBarData[2]);
if (uBarData[2]>36) then uBarData[2] := 36;
uShowBar;
end;
^D : begin
uBarData[1] := uBarData[2];
dec(uBarData[2]);
if (uBarData[2]<1) then uBarData[2] := 1;
uShowBar;
end;
'@': begin
uSelectWithBar := '@';
uGotBar := true;
end;
'^': begin
uSelectWithBar := '^';
uGotBar := true;
end;
#0..#255 : begin
x := 0;
repeat
inc(x);
if (uMatrix[x]=inKey) then uFound := true
else uFound := false;
until (uFound=true) or (x>=36);
if uFound=true then
begin
uBarData[1] := uBarData[2];
uBarData[2] := x;
uShowBar;
uSelectWithBar := inKey;
uGotBar := true;
end;
end;
end;
if (uBarData[1]>36) then uBarData[1] := 36;
if (uBarData[2]>36) then uBarData[2] := 36;
if (uBarData[1]<1) then uBarData[1] := 1;
if (uBarData[2]<1) then uBarData[2] := 1;
until (uGotBar=true);
end;
Procedure cLoadUser(uNumber : word);
var n : byte;
result : word;
begin
fillChar(uShit^,sizeOf(uShit^),0);
if not exist(cfg.dataDir+'USERS') then
begin
uTotal := 1;
uShit^.Handle := cfg.SysopName;
uShit^.Password := 'Sysop';
uShit^.RealName := 'Jack Kevorkian';
uShit^.PhoneNum := cfg.BoardPhone;
uShit^.TimeToday := 9999;
uShit^.Level := succ(cfg.SysopLevel);
uShit^.UDLevel := 101;
uShit^.UDPoints := 101;
uShit^.Config := [ansigraphics, asciigraphics, lowercase, eightycols, linefeeds, postprompts];
uShit^.Config := uShit^.Config + [mainsysop, udsysop, bulletinsysop, emailsysop, votingsysop, doorssysop,
fseditor, usebars];
uShit^.Color1 := cfg.DefColor1;
uShit^.Color2 := cfg.DefColor2;
uShit^.Color3 := cfg.DefColor3;
uShit^.Color4 := cfg.DefColor4;
uShit^.Color5 := cfg.DefColor5;
uShit^.Color6 := cfg.DefColor6;
uShit^.Color7 := cfg.DefColor7;
uShit^.Prompt := strng^.DefPrompt;
uShit^.SysopNote := 'System Operator';
uShit^.KDownToday := 0;
uShit^.DailyKBLimit := 0;
uShit^.EmailAnnounce := -1;
for n := 1 to 5 do uShit^.InfoForm[n] := -1;
uShit^.Displaylen := 24;
uShit^.Config := uShit^.Config + [ansigraphics];
writeUFile(uShit^,1);
end;
uTotal := fileSize(uFile) - 1; {stored with nul as #1}
seek(uFile,uCurr);
nRead(uFile,uShit^);
end;
Function uStatus : string;
begin
if (uShit^.level=0) then uStatus := '|07-->|15DELETED|07<--'
else uStatus := '|07-->|15ACTIVE|07<--';
end;
Procedure cDrawScreen;
begin
ansiCls;
multiColor('|07Infusion BBS Online |15Advanced |07User Editing System |CR');
multiColor('|08┌──────────────────────────────────────────────────────────────────────────────┐');
multiColor('|08│ |07(|15A|08)|07 Handle : |08(|15S|08) |07UD Ratio : |08│');
multiColor('|08│ |08(|15B|08)|07 Realname : |08(|15T|08) |07UDK Ratio : |08│');
multiColor('|08│ |08(|15C|08)|07 Password : |08(|15U|08) |07PC Ratio : |08│');
multiColor('|08│ |08(|15D|08)|07 Public Note : |08(|15V|08) |07KB/Day : |08│');
multiColor('|08│ |08(|15E|08)|07 Private Note : |08(|15W|08) |07Def Proto : |08│');
multiColor('|08│ |08(|15F|08)|07 Phone Number : |08(|15!|08) |07Time Lock : |08│');
multiColor('|08│ |08(|15G|08)|07 Birth Date : |08(|15Y|08) |07Skills : |08│');
multiColor('|08│ |08(|15H|08)|07 Security Level : |08(|15Z|08) |07Aphils : |08│');
multiColor('|08│ |08(|15I|08)|07 Total Calls : |08(|151|08) |07PC Type : |08│');
multiColor('|08│ |08(|15J|08)|07 Access Flags : |08(|152|08) |07ReqMsgLen : |08│');
multiColor('|08│ |08(|15K|08)|07 File Level : |08(|153|08) |07Time/DAY : |08│');
multiColor('|08│ |08(|15L|08)|07 File Points : |08(|154|08) |07Timebank : |08│');
multiColor('|08│ |08(|15M|08)|07 Uploads : |08(|155|08) |07Scrn Len : |08│');
multiColor('|08│ |08(|15N|08)|07 Downloads : |08(|156|08) |07Msg Hdr # : |08│');
multiColor('|08│ |08(|15O|08)|07 Upload Bytes : |08(|157|08) |07Time Tday : |08│');
multiColor('|08│ |08(|15P|08)|07 Download Bytes : |08(|15]|08) |07Next User |08│');
multiColor('|08│ |08(|15(|08)|07 Hack Attempts : |08(|15[|08) |07Prev User |08│');
multiColor('|08│ |08(|15)|08)|07 Theme # : |08(|15X|08) |07Exit |08│');
multiColor('|08└──────────────────────────────────────────────────────────────────────────────┘');
multiColor('|03 (|08@|08) |07Delete This User |03(|08^|08) |07Auto-validate User |CR');
multiColor('|08 ────────────────────────────────────────────────────────────────────────────── ');
goXY(70,1); multiColor('|03(|07'+strr(uCurr)+'|03/|07'+strr(uTotal)+'|03)');
goXY(55,1); multiColor(uStatus);
goXY(24,3); multiColor('|03'+uShit^.handle);
goXY(24,4); multiColor('|03'+uShit^.realname);
goXY(24,5); multiColor('|03'+uShit^.password);
goXY(24,6); multiColor('|03'+uShit^.sysopNote);
goXY(24,7); multiColor('|03'+uShit^.privateNote);
goXY(24,8); multiColor('|03'+uShit^.phoneNum);
goXY(24,9); multiColor('|03'+uShit^.birthDate);
goXY(24,10);multiColor('|03'+strr(uShit^.level));
goXY(24,11);multiColor('|03'+strr(uShit^.numOn));
goXY(24,12);multiColor('|03'+uShit^.flags);
goXY(24,13);multiColor('|03'+strr(uShit^.udLevel));
goXY(24,14);multiColor('|03'+strr(uShit^.udPoints));
goXY(24,15);multiColor('|03'+strr(uShit^.upLoads));
goXY(24,16);multiColor('|03'+strr(uShit^.downLoads));
goXY(24,17);multiColor('|03'+strr(uShit^.kUp));
goXY(24,18);multiColor('|03'+strr(uShit^.kDown));
goXY(24,19);multiColor('|03'+strr(uShit^.hackAttempts));
goXY(24,20);multiColor('|03'+strr(uShit^.graphics));
goXY(68,3); multiColor('|03'+strr(uShit^.udfRatio));
goXY(68,4); multiColor('|03'+strr(uShit^.udkRatio));
goXY(68,5); multiColor('|03'+strr(uShit^.pcR));
goXY(68,6); multiColor('|03'+strr(uShit^.dailyKBLimit));
goXY(68,7); multiColor('|03'+uShit^.defProto);
goXY(68,8); multiColor('|03'+b00lean(uShit^.timeLock));
goXY(68,9); multiColor('|03'+uShit^.skillz);
goXY(68,10);multiColor('|03'+uShit^.aphilz);
goXY(68,11);multiColor('|03'+uShit^.computer_type);
goXY(68,12);multiColor('|03'+strr(uShit^.msgLength));
goXY(68,13);multiColor('|03'+strr(uShit^.TimePerDay));
goXY(68,14);multiColor('|03'+strr(uShit^.timBank));
goXY(68,15);multiColor('|03'+strr(uShit^.displayLen));
goXY(68,16);multiColor('|03'+strr(uShit^.msgHdr));
goXY(68,17);multiColor('|03'+strr(uShit^.timeToday));
goXY(1,1);
end;
Procedure doLn;
var uDl : byte;
begin
goXY(1,22);for uDl := 1 to 80 do sendFull(' ');
goXY(1,22);
end;
Procedure uEditLetter(num : char);
var dummyBool : boolean;
begin
uChanged := true;
case num of
'A' : begin
uShit^.handle := cInputStr(24,3,00,7,27,uShit^.handle);
cDrawScreen;
end;
'B' : begin
uShit^.realname := cInputStr(24,4,00,7,27,uShit^.realName);
cDrawScreen;
end;
'C' : begin
uShit^.password := cInputStr(24,5,00,7,15,uShit^.passWord);
cDrawScreen;
end;
'D' : begin
uShit^.sysopNote := cInputStr(24,6,00,7,20,uShit^.sysopNote);
cDrawScreen;
end;
'E' : begin
uShit^.privateNote := cInputStr(24,7,00,7,20,uShit^.privateNote);
cDrawScreen;
end;
'F' : begin
uShit^.phoneNum := cInputStr(24,8,00,7,12,uShit^.phoneNum);
cDrawScreen;
end;
'G' : begin
uShit^.birthDate := cInputStr(24,9,00,7,8,uShit^.birthDate);
cDrawScreen;
end;
'H' : begin
uShit^.level := stoi(cInputStr(24,10,00,7,5,strr(uShit^.level)));
cDrawScreen;
end;
'I' : begin
uShit^.numOn := stoi(cInputStr(24,11,00,7,5,strr(uShit^.numOn)));
cDrawScreen;
end;
'J' : begin
uShit^.flags := cInputStr(24,12,00,7,26,uShit^.flags);
cDrawScreen;
end;
'K' : begin
uShit^.udLevel := stoi(cInputStr(24,13,00,7,5,strr(uShit^.udLevel)));
cDrawScreen;
end;
'L' : begin
uShit^.udPoints := stoi(cInputStr(24,14,00,7,5,strr(uShit^.udPoints)));
cDrawScreen;
end;
'M' : begin
uShit^.uploads := stoi(cInputStr(24,15,00,7,5,strr(uShit^.uploads)));
cDrawScreen;
end;
'N' : begin
uShit^.downloads := stoi(cInputStr(24,16,00,7,5,strr(uShit^.downloads)));
cDrawScreen;
end;
'O' : begin
uShit^.kUp := stoi(cInputStr(24,17,00,7,9,strr(uShit^.kUp)));
cDrawScreen;
end;
'P' : begin
uShit^.kDown := stoi(cInputStr(24,18,00,7,9,strr(uShit^.kDown)));
cDrawScreen;
end;
'(' : begin
uShit^.hackAttempts := stoi(cInputStr(24,19,00,7,3,strr(uShit^.hackAttempts)));
cDrawScreen;
end;
')' : begin
uShit^.graphics := stoi(cInputStr(24,20,00,7,3,strr(uShit^.graphics)));
cDrawScreen;
end;
'S' : begin
uShit^.udfRatio := stoi(cInputStr(68,3,00,7,3,strr(uShit^.udfRatio)));
cDrawScreen;
end;
'T' : begin
uShit^.udKratio := stoi(cInputStr(68,4,00,7,3,strr(uShit^.udKratio)));
cDrawScreen;
end;
'U' : begin
uShit^.pcr := stoi(cInputStr(68,5,00,7,3,strr(uShit^.pcr)));
cDrawScreen;
end;
'V' : begin
uShit^.dailyKBlimit := stoi(cInputStr(68,6,00,7,10,strr(uShit^.dailyKbLimit)));
cDrawScreen;
end;
'W' : begin
uShit^.defProto := cInputCh(68,7,00,7,1,uShit^.defProto);
cDrawScreen;
end;
'!' : begin
uShit^.timeLock := cBoolToggle(uShit^.timeLock);
cDrawScreen;
end;
'Y' : begin
uShit^.skillz := cInputStr(68,9,00,7,10,uShit^.skillz);
cDrawScreen;
end;
'Z' : begin
uShit^.aphilz := cInputStr(68,10,00,7,10,uShit^.aphilz);
cDrawScreen;
end;
'1' : begin
uShit^.computer_type := cInputStr(68,11,00,7,10,uShit^.computer_type);
cDrawScreen;
end;
'2' : begin
uShit^.msgLength := stoi(cInputStr(68,12,00,7,4,strr(uShit^.msgLength)));
cDrawScreen;
end;
'3' : begin
uShit^.timePerDay := stoi(cInputStr(68,13,00,7,4,strr(uShit^.timePerDay)));
cDrawScreen;
end;
'4' : begin
uShit^.timBank := stoi(cInputStr(68,14,00,7,4,strr(uShit^.timBank)));
cDrawScreen;
end;
'5' : begin
uShit^.displayLen := stoi(cInputStr(68,15,00,7,2,strr(uShit^.displayLen)));
cDrawScreen;
end;
'6' : begin
uShit^.msgHdr := stoi(cInputStr(68,16,00,7,2,strr(uShit^.msgHdr)));
cDrawScreen;
end;
'7' : begin
uShit^.timeToday := stoi(cInputStr(68,17,00,7,4,strr(uShit^.timeToday)));
cDrawScreen;
end;
end;
end;
Procedure SaveUser(number : byte);
var result: word;
begin
goXY(1,24);writeStr('Save this user - !');
if (yes=true) then
begin
uChanged := false;
writeUFile(uShit^,uCurr);
end;
end;
begin
uDone := false;
uBarData[1] := 1;
uBarData[2] := 1;
new(uShit);
uCurr := 1;
uTotal := 1;
If IsOpen(UFile) Then Close(UFile);
Assign(UFile, cfg.DataDir + 'USERS');
ResetOrReWrite(UFile, SizeOf(UserRec));
cLoadUser(uCurr);
cDrawScreen;
repeat
uInChar := upCase(uSelectWithBar);
if (uCurr=0) then uCurr := 1;
if (uTotal=0) then uTotal := 1;
case uInChar of
']' : begin
if uChanged then begin
saveUser(uCurr);
end;
if (uCurr=uTotal) then uCurr := 1
else inc(uCurr);
cLoadUser(uCurr);
cDrawScreen;
end;
'[' : begin
if uChanged then begin
saveUser(uCurr);
end;
if (uCurr=1) then uCurr := uTotal
else dec(uCurr);
cLoadUser(uCurr);
cDrawScreen;
end;
'X' : begin
if uChanged then begin
saveUser(uCurr);
end;
uDone := true;
end;
'@' : begin
uShit^.level := 0;
uChanged := true;
cDrawScreen;
end;
'^' : begin
uShit^.udLevel := cfg.defUdLevel;
uShit^.udPoints := cfg.defUdPoints;
uShit^.level := cfg.defLevel;
uShit^.udfRatio := cfg.defUdRatio;
uShit^.udKRatio := cfg.defUdKRatio;
uShit^.pcr := cfg.defPcr;
uShit^.msgLength := cfg.defMsgLength;
uShit^.dailyKbLimit := cfg.defDailyKbLimit;
uShit^.flags := cfg.defFlags;
uChanged := true;
cDrawScreen;
end;
#0..#255 : uEditLetter(uInChar);
end;
until (uDone=true);
dispose(uShit);
ansiCls;
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure cMenuEdit;
type
mFileType = array[1..50] of string[8];
mCommandArray = array[1..50] of commandRec;
var
mFileData : ^mFileType;
mMenuData : ^MenuRec;
mCommands : ^mCommandArray;
mTotalC : 0..50;
mTotal : 0..50;
mCurrentC : 0..50;
mMenu : string[8];
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure mCheckSave(sec : byte);
var f : file {of menuRec};
sCount : 1..50;
begin
goxy(1,24);writeStr('save yer changes ::: !');
if (sec=1) and (yes=true) then
begin
assign(f,cfg.menuDir+mMenu+'.MNU');
reset(f,1);
blockWrite(f,mMenuData^,sizeOf(menuRec));
close(f);
end else
if (sec=2) and (yes=true) then
begin
assign(f,cfg.menuDir+mMenu+'.MNU');
rewrite(f,1);
blockWrite(f,mMenuData^,sizeOf(menuRec));
blockWrite(f,mCommands^,sizeOf(commandRec)*mTotalC);
close(f);
end;
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure mLoadFiles;
var dosList : searchRec;
begin
mTotal := 0;
findfirst(cfg.menudir+'*.MNU',archive,doslist);
while (doserror = 0) AND (mTotal <= 50) do
begin
inc(mTotal);
mFileData^[mTotal] := dosList.name;
findnext(doslist);
end;
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure mLoadMenu(menuName : string);
var f : file;
mCount: 1..50;
begin
fillChar(mMenuData^,sizeOf(mMenuData^),0);
fillChar(mCommands^,sizeOf(mCommands^),0);
assign(f,cfg.menuDir+menuName+'.MNU');
reset(f,1);
blockRead(f,mMenuData^,sizeOf(menuRec));
seek(f,sizeOf(menuRec));
mTotalC := (fileSize(f)-sizeOf(menuRec)) div (sizeOf(commandRec));
for mCount := 1 to mTotalC do
begin
blockRead(f,mCommands^[mCount],sizeOf(commandRec));
end;
close(f);
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure mDrawScreen(scrn : byte);
var mCount : 1..80;
begin
if (scrn=1) then
begin
ansiCls;
multiColor('|08┌|07:|15: |03menu data editor |15:|07:|08────────────────────────────────────────────────────────┐');
multiColor('|08└──────────────────────────────────────────────────────────────────────────────┘');
goXY(1,3); multiColor('|08(|15a|08) |07Menu Title |08: |03'+mMenuData^.title);{20}
goXY(1,4); multiColor('|08(|15b|08) |07Display File |08: |03'+mMenuData^.helpMenu);{12}
goXY(1,5); multiColor('|08(|15c|08) |07Required ACS |08: |03'+mMenuData^.acs);{30}
goXY(1,6); multiColor('|08(|15d|08) |07Password |08: |03'+mMenuData^.password);{15}
goXY(1,7); multiColor('|08(|15e|08) |07Fallback Menu |08: |03'+mMenuData^.fallBack);{8}
goXY(1,8); multiColor('|08(|15f|08) |07Force Help Level |08: |03'+strr(mMenuData^.forceHelpLevel));{00}
goXY(1,9); multiColor('|08(|15g|08) |07PullBar Menu |08: |03'+b00lean(mMenuData^.usePullBar));{bool}
goXY(1,10);multiColor('|08(|15h|08) |07Clear Screen Before |08: |03'+b00lean(mMenuData^.clrScrBefore));{""}
goXY(1,11);multiColor('|08(|15i|08) |07Force Hotkeys |08: |03'+b00lean(mMenuData^.force_HotKey));{""}
goXY(1,12);multiColor('|08(|15j|08) |07Message Conference |08: |03'+strr(mMenuData^.mes_Conf));{byte}
goXY(1,13);multiColor('|08(|15k|08) |07File Conference |08: |03'+strr(mMenuData^.file_conf));{""}
goXY(1,14);multiColor('|08(|15l|08) |07Use Prompt |08: |03'+b00lean(mMenuData^.usePrompt));{b}
goXY(1,15);multiColor('|08(|15m|08) |07Prompt line 1 |08: |03'+mMenuData^.prompt1);{str}
goXY(1,16);multiColor('|08(|15n|08) |07Prompt line 2 |08: |03'+mMenuData^.prompt2);
goXY(1,17);multiColor('|08(|15o|08) |07UpKey PullBar INC |08: |03'+strr(mMenuData^.upKey));
goXY(1,18);multiColor('|08(|15p|08) |07DownKey PullBar DEC |08: |03'+strr(mMenuData^.downKey));
goXY(1,19);multiColor('|08(|15q|08) |07RightKey PullBar INC |08: |03'+strr(mMenuData^.rightKey));
goXY(1,20);multiColor('|08(|15r|08) |07LeftKey PullBar DEC |08: |03'+strr(mMenuData^.leftKey)+'|CR');
multiColor('|08┌──────────────────────────────────────────────────────────────────────────────┐');
multiColor('|08└|07:|15: |03arrow keys navigate, X exits, [space] edits commands |15:|07:|08────────────────────┘');
end else
if (scrn=2) then
begin
ansiCls;
multiColor('|08┌|07:|15: |03menu command editor |15:|07:|08─────────────────────────────────────────────────────┐');
multiColor('|08└──────────────────────────────────────────────────────────────────────────────┘');
goXy(50,1);multiColor('|07:|15: |03'+strr(mCurrentC)+' of '+strr(mTotalC)+' |15:|07:');
goXY(1,3); multiColor('|08(|15a|08) |07Pullbar ID (REQUIRED)|08: |03'+strr(mCommands^[mCurrentC].IDNumber));
goXY(1,4); multiColor('|08(|15b|08) |07Command Description |08: |03'+mCommands^[mCurrentC].descrip);
goXY(1,5); multiColor('|08(|15c|08) |07Activation Key(s) |08: |03'+mCommands^[mCurrentC].keys);
goXY(1,6); multiColor('|08(|15d|08) |07Menu Command |08: |03'+mCommands^[mCurrentC].command);
goXY(1,7); multiColor('|08(|15e|08) |07Required ACS Flags |08: |03'+mCommands^[mCurrentC].acs);
goXY(1,8); multiColor('|08(|15f|08) |07List in Generics |08: |03'+b00lean(mCommands^[mCurrentC].hidden));
goXY(1,9); multiColor('|08(|15g|08) |07Pullbar XPos |08: |07'+strr(mCommands^[mCurrentC].barX));
goXY(1,10); multiColor('|08(|15h|08) |07Pullbar Ypos |08: |07'+strr(mCommands^[mCurrentC].barY));
goXY(1,11);multiColor('|08(|15i|08) |07Pullbar Lit String |08: |07'+mCommands^[mCurrentC].barLit);
goXY(1,12);multiColor('|08(|15j|08) |07Pullbar Unlit String |08: |07'+mCommands^[mCurrentC].barUnlit);
goXY(1,13); multiColor('|08(|15k|08) |07Next Command');
goXY(1,14); multiColor('|08(|15l|08) |07Previous Command');
goXY(1,15);multiColor('|08(|15m|08) |07Insert Command');
goXY(1,16);multiColor('|08(|15n|08) |07Delete Command|CR');
multiColor('|08┌──────────────────────────────────────────────────────────────────────────────┐');
multiColor('|08└|07:|15: |03arrow keys navigate, X exits, hot keys jump to editing field |15:|07:|08────────────┘');
end;
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure mEditShit(part,num : byte);
var shitOnMyFinger : boolean;
begin
if (part=1) then
begin
case num of
1 : mMenuData^.title := cInputStr(28,3,00,7,20,mMenuData^.title);
2 : mMenuData^.helpMenu := cInputStr(28,4,00,7,12,mMenuData^.helpMenu);
3 : mMenuData^.acs := cInputStr(28,5,00,7,40,mMenuData^.acs);
4 : mMenuData^.password := cInputStr(28,6,00,7,15,mMenuData^.passWord);
5 : mMenuData^.fallBack := cInputStr(28,7,00,7,08,mMenuData^.fallBack);
6 : mMenuData^.forceHelpLevel := stoi(cInputStr(28,8,00,7,4,strr(mMenuData^.forceHelpLevel)));
7 : begin shitOnMyFinger := mMenuData^.usePullBar;
asm xor shitOnMyFinger,1 end;
mMenuData^.usePullBar := shitOnMyFinger;
end;
8 : begin shitOnMyFinger := mMenuData^.clrScrBefore;
asm xor shitOnMyFinger,1 end;
mMenuData^.clrScrBefore := shitOnMyFinger;
end;
9 : begin shitOnMyFinger := mMenuData^.force_hotKey;
asm xor shitOnMyFinger,1 end;
mMenuData^.force_hotKey := shitOnMyFinger;
end;
10 : mMenuData^.mes_conf := stoi(cInputStr(28,12,00,7,3,strr(mMenuData^.mes_conf)));
11 : mMenuData^.file_conf := stoi(cInputStr(28,13,00,7,3,strr(mMenuData^.file_conf)));
12 : begin shitOnMyFinger := mMenuData^.usePrompt;
asm xor shitOnMyFinger,1 end;
mMenuData^.usePrompt := shitOnMyFinger;
end;
13 : mMenuData^.prompt1 := cInputStr(28,15,00,7,40,mMenuData^.prompt1);
14 : mMenuData^.prompt2 := cInputStr(28,16,00,7,40,mMenuData^.prompt2);
15 : mMenuData^.upKey := stoi(cInputStr(28,17,00,7,2,strr(mMenuData^.upKey)));
16 : mMenuData^.downKey := stoi(cInputStr(28,18,00,7,2,strr(mMenuData^.DownKey)));
17 : mMenuData^.RightKey:= stoi(cInputStr(28,19,00,7,2,strr(mMenuData^.RightKey)));
18 : mMenuData^.LeftKey := stoi(cInputStr(28,20,00,7,2,strr(mMenuData^.LeftKey)));
end;
mDrawScreen(1);
end else
if (part=2) then
begin
case num of
1 : mCommands^[mCurrentC].IDNumber:= stoi(cInputStr(28,3,00,7,3,strr(mCommands^[mCurrentC].IDNumber)));
2 : mCommands^[mCurrentC].descrip := cInputStr(28,4,00,7,30,mCommands^[mCurrentC].descrip);
3 : mCommands^[mCurrentC].keys := cInputStr(28,5,00,7,15,mCommands^[mCurrentC].keys);
4 : mCommands^[mCurrentC].command := cInputStr(28,6,00,7,30,mCommands^[mCurrentC].command);
5 : mCommands^[mCurrentC].acs := cInputStr(28,7,00,7,26,mCommands^[mCurrentC].acs);
6 : mCommands^[mCurrentC].hidden := cBoolToggle(mCommands^[mCurrentC].hidden);
7 : mCommands^[mCurrentC].barX := stoi(cInputStr(28,9,00,7,2,strr(mCommands^[mCurrentC].barX)));
8 : mCommands^[mCurrentC].barY := stoi(cInputStr(28,10,00,7,2,strr(mCommands^[mCurrentC].barY)));
9 : mCommands^[mCurrentC].barLit := cInputStr(28,11,00,7,50,mCommands^[mCurrentC].barLit);
10 : mCommands^[mCurrentC].barUnLit:= cInputStr(28,12,00,7,50,mCommands^[mCurrentC].barUnLit);
end;
mDrawScreen(2);
end;
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure mDeleteCommand;
var
cCount : 1..50;
begin
goXY(1,19);writeStr('verify command #'+strr(mCurrentC)+'''s deletion - !');
if yes then
begin
for cCount := mCurrentC to mTotalC do
mCommands^[cCount] := mCommands^[cCount+1];
dec(mTotalC);
if mCurrentC > mTotalC then mCurrentC := mTotalC;
mDrawScreen(2);
end;
goXY(1,19);sendFull(' ');
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure mInsertCommand;
var
cCount : 1..50;
mInsertPos : 1..50;
begin
goXy(1,19);multiColor('|07insert command where (1-'+strr(mTotalC+1)+'): ');
inputBox(2);if (stoi(inpt) <= mTotalC+1) and (stoi(inpt)>0) then
begin
inc(mTotalC);
mInsertPos := stoi(inpt);
for cCount := mTotalC downto mInsertPos do
mCommands^[cCount] := mCommands^[cCount-1];
fillChar(mCommands^[mInsertPos],sizeOf(commandRec),0);
mCommands^[mInsertPos].IDNumber:= mInsertPos;
mCommands^[mInsertPos].descrip := 'New Command';
mCommands^[mInsertPos].keys := 'X';
mCommands^[mInsertPos].command := 'X';
mCommands^[mInsertPos].acs := '';
mDrawScreen(2);
end;
goXY(1,19);sendFull(' ');
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure mInsertMenu;
var f : file;
begin
if (whereX<>1) then sendCr('');
multiColor('|07Enter the menu to insert: ');
inputBox(8);
assign(f,cfg.menuDir+inpt+'.MNU');
rewrite(f,1);
fillChar(mMenuData^,sizeOf(mMenuData^),0);
mMenuData^.title := 'New Menu';
mMenuData^.helpMenu := 'NEWMENU.ANS';
fillChar(mCommands^,sizeOf(mCommands^),0);
mCommands^[1].descrip := 'New Command';
mCommands^[1].keys := 'X';
mCommands^[1].command := 'CHANGE';
mCommands^[1].idnumber:= 1;
blockWrite(f,mMenuData^,sizeOf(mMenuData^));
blockWrite(f,mCommands^[1],sizeOf(mCommands^[1]));
close(f);
mLoadFiles;
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure mEditCommands;
var cMInShit : char;
cMDone : boolean;
begin
mCurrentC := 1;
mDrawScreen(2);
cValue[1] := 1;cValue[2] := 1;
repeat
cMInShit := cSelectShit(14);
case cMInShit of
'A'..'J' : mEditShit(2,ord(cMInShit)-64);
'X' : cMDone := true;
'K',']' : begin
if (mCurrentC<>mTotalC) then
begin inc(mCurrentC);
mDrawScreen(2) end;
end;
'L','[' : begin
if (mCurrentC<>1) then begin
dec(mCurrentC);
mDrawScreen(2);
end;
end;
'M' : mInsertCommand;
'N' : mDeleteCommand;
end;
until (cMDone=true);
mCheckSave(2);
mDrawScreen(1);
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure mModify;
var
mCount : byte;
mInKey : char;
mDone : boolean;
begin
if (whereX<>1) then sendCr('');
multiColor('|07Enter menu to modify: ');
inputBox(8);
mMenu := inpt; if Not exist(cfg.menudir+mMenu+'.MNU') then
begin
goXY(1,whereY);
for mCount := 1 to 80 do sendFull(' ');
exit;
end;
mLoadMenu(mMenu);
ansiCls;
mDrawScreen(1);
cValue[1] := 1;cValue[2] := 1;
repeat
mInKey := cSelectShit(18);
case mInKey of
'X' : mDone := true;
'A'..'R' : mEditShit(1,(ord(mInKey)-64));
' ' : mEditCommands;
end;
until (mDone=true);
mCheckSave(1);
mDone := false;
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure mSelectMenu;
var mInKey : char;
mDone : boolean;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
procedure mDisplayOne;
var
mCount : byte;
mYPos : byte;
begin
ansiCls;
multiColor('|08┌|07:|15: |03infusion menu editor |15:|07:|08────────────────────────────────────────────────────┐');
multiColor('|08└──────────────────────────────────────────────────────────────────────────────┘');
goXY(1,3);
for mCount := 1 to mTotal do
begin
if (pos('.',mFileData^[mCount])>0) then
delete(mFileData^[mCount],pos('.',mFileData^[mCount]),length(mFileData^[mCount])-1);
multiColor('|07'+tab(mFileData^[mCount],10));
if (whereX=80) then goXY(1,whereY+1);
end;
if (whereX<>1) and (whereX<>80) then sendCr('');
for mCount := 1 to 80 do multiColor('|08─');
mYPos := whereY;
multiColor('|07Enter command (|15M|07)odify, (|15I|07)nsert, (|15D|07)elete, or (|15X|07)Exit|03: ');
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
begin
mLoadFiles;
mDisplayOne;
repeat
mInKey := upCase(arrowKey(false));
case mInKey of
'X' : begin
mDone := true;
end;
'M' : begin
mModify;
mDisplayOne;
end;
'D' : begin
if (whereX<>1) then sendCr('');
multiColor('|07Enter the menu to delete: ');
inputBox(8);
if exist(cfg.menuDir+inpt+'.MNU') then
begin
deleteFile(cfg.menuDir+inpt+'.MNU');
mLoadFiles;
end;
mDisplayOne;
end;
'I' : begin
mInsertMenu;
mDisplayOne;
end;
end;
until (mDone=true);
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
begin
inConfigMode := true;
mTotal := 0;
new(mFileData);
new(mMenuData);
new(mCommands);
mSelectMenu;
dispose(mFileData);
dispose(mMenuData);
dispose(mCommands);
inConfigMode := false;
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure cMessageEdit;
Type ConfRec = Record
Name,
Password : Lstr;
Flags : String[26];
Minlevel,
Maxlevel : integer;
OpenTime,
CloseTime : Sstr;
End;
var
cFile : file of confRec;
cData : ^confRec;
cTotal : byte;
cCurrent : byte;
cDone : boolean;
cInChar : char;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure cMakeNew;
Begin
fillChar(cData^,sizeOf(cData^),0);
ReWrite(cFile);
cData^.Name := 'New Conference';
cData^.OpenTime := '4:01 am';
cData^.CloseTime := '4:00 am';
cData^.MinLevel := 5;
cData^.MaxLevel := 9999;
Seek(cFile,0);
NWrite(cFile,cData^);
End;
Procedure cLoadConference;
begin
cTotal := fileSize(cFile);
seek(cFile,cCurrent-1);
read(cFile,cData^);
end;
Procedure cDrawScreens(scrn : byte);
begin
if (scrn=1) then
begin
ansiCls;
multiColor('|08┌|07:|15: |03infusion conference editor |15:|07:|08──────────────────────────────────────────────┐');
multiColor('|08└──────────────────────────────────────────────────────────────────────────────┘');
goXY(50,1);multiColor('|07:|15: |03'+strr(cCurrent)+' of '+strr(cTotal)+' |15:|07:');
goXY(1,3); multiColor('|08(|15a|08) |07Conference Name |08: |15'+cData^.name);
goXY(1,4); multiColor('|08(|15b|08) |07Conference Password |08: |15'+cData^.password);
goXY(1,5); multiColor('|08(|15c|08) |07Conference Flags |08: |15'+cData^.flags);
goXY(1,6); multiColor('|08(|15d|08) |07Minimum Entry Level |08: |15'+strr(cData^.minLevel));
goXY(1,7); multiColor('|08(|15e|08) |07Maximum Entry Level |08: |15'+strr(cData^.maxLevel));
goXY(1,8); multiColor('|08(|15f|08) |07Conference Open Time |08: |15'+cData^.openTime);
goXY(1,9); multiColor('|08(|15g|08) |07Conference Close Time |08: |15'+cData^.closeTime);
goXY(1,10);multiColor('|08(|15h|08) |07Next Conference');
goXY(1,11);multiColor('|08(|15i|08) |07Previous Conference');
goXY(1,12);multiColor('|08(|15j|08) |07Insert Conference');
goXY(1,13);multiColor('|08(|15k|08) |07Delete Conference|CR');
multiColor('|08┌──────────────────────────────────────────────────────────────────────────────┐');
multiColor('|08└|07:|15: |03arrow keys navigate, X exits, hot keys jump to editing field |15:|07:|08────────────┘');
end;
end;
Procedure cEditConf(num : byte);
begin
case num of
1 : cData^.name := cInputStr(30,3,00,7,40,cData^.name);
2 : cData^.password := cInputStr(30,4,00,7,30,cData^.password);
3 : cData^.flags := cInputStr(30,5,00,7,26,cData^.flags);
4 : cData^.minLevel := stoi(cInputStr(30,6,00,7,4,strr(cData^.minLevel)));
5 : cData^.maxLevel := stoi(cInputStr(30,7,00,7,4,strr(cData^.maxLevel)));
6 : cData^.openTime := cInputStr(30,8,00,7,12,cData^.openTime);
7 : cData^.closeTime := cInputStr(30,9,00,7,12,cData^.closeTime);
end;
cDrawScreens(1);
end;
Procedure cCheckSave;
begin
goXY(1,17);writeStr('Save this conference''s changes :: @');
if (yes=true) then begin
seek(cFile,cCurrent-1);
NWrite(cFile,cData^);
end;
end;
begin
new(cData);
cCurrent := 1;
{>}assign(cFile,cfg.dataDir+'MSGCONF.DAT');
{>}if not exist(cfg.dataDir+'MSGCONF.DAT') or (cTotal=0) then cMakeNew else reset(cFile);
cLoadConference;
cDrawScreens(1);
repeat
cInChar := cSelectShit(11);
case cInChar of
'A'..'G' : cEditConf(ord(cInChar)-64);
'H' : begin
cCheckSave;
inc(cCurrent);
if (cCurrent>cTotal) then cCurrent := 1;
cLoadConference;
cDrawScreens(1);
end;
'I' : begin
cCheckSave;
dec(cCurrent);
if (cCurrent<1) then cCurrent := cTotal;
cLoadConference;
cDrawScreens(1);
end;
'J' : begin
cCheckSave;
FillChar(cData^,SizeOf(cData^),0);
Seek(cFile,FileSize(cFile));
cData^.Name := 'New Conference';
cData^.OpenTime := '4:01 am';
cData^.CloseTime := '4:00 am';
cData^.MinLevel := 5;
cData^.MaxLevel := 9999;
NWrite(cFile,cData^);
Inc(cTotal);
cCurrent := cTotal;
cLoadConference;
cDrawScreens(1);
end;
'K' : begin
goXY(1,17);writeStr('Confirm conference deletion :: @');
if (yes=true) then
begin
fillchar(cData^,SizeOf(cData^),0);
Seek(cFile,cCurrent-1);
NWrite(cFile,cData^);
If cCurrent = cTotal Then Begin
Seek(cFile,cCurrent-1);
Truncate(cFile);
End;
end;
cCurrent := 1;
cLoadConference;
cDrawScreens(1);
end;
'X' : cDone := true;
end;
until (cDone=true);
cCheckSave;
dispose(cData);
close(cFile);
end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure cThemeEdit;
begin config2.cThemeEdit end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure cConferenceEdit(conf : byte);
begin config2.cConfEdit(conf); end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure cProtocolEdit;
begin protedit.cProtocolEdit end;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
begin
cValue[1]:=1;cValue[2]:=1;
for cTempVar := 0 to cTotalOptns do
begin
cBarData.bLast[cTempVar] := 1;
cBarData.bValue[cTempVar] := 1;
end;
for cTempVar := ord('A') to ord('Z') do
cSelectChar[cTempVar-64] := chr(cTempVar);
inConfigMode := false;
end.