// ansiview.js by echicken -at- bbs.electronicchicken.com
load("sbbsdefs.js");
load("tree.js");
// Configuration variables:
varansiRoot=js.exec_dir+"library/";// The location of your ANSI library, eg. "/dev/magicalansigenerator/"
tree_settings.lfg=WHITE;// The lightbar foreground colour, see sbbsdefs.js for valid values
tree_settings.lbg=BG_CYAN;// The lightbar background colour, see sbbsdefs.js for valid values
vardisallowedFiles=["PASSWD","USER.DAT","*.COM","*.EXE","*.GIF","*.JPG","*.MP3","*.PNG","*.RAR"];// Files matching these patterns will not be shown in directory listings
varslow=.033;// Seconds between printed characters, slow speed
varmedium=.0033;// Seconds between printed characters, medium speed
varfast=.00033;// Seconds between printed characters, fast speed
varansiDelay=medium;// Default output speed as one of slow, medium, or fast
// Configuration variables:
var ansiRoot = js.exec_dir + "library/"; // The location of your ANSI library, eg. "/dev/magicalansigenerator/"
var disallowedFiles = ["PASSWD", "USER.DAT", "*.COM", "*.EXE", "*.GIF", "*.JPG", "*.MP3", "*.PNG", "*.RAR"]; // Files matching these patterns will not be shown in directory listings
var slow = .033; // Seconds between printed characters, slow speed
var medium = .0033; // Seconds between printed characters, medium speed
var fast = .00033; // Seconds between printed characters, fast speed
var ansiDelay = medium; // Default output speed as one of slow, medium, or fast
// End of configuration variables
varretval=1;console.clear(LIGHTGRAY);forLoop:for(vara=0;a<ansi.length;a++){console.putmsg(ansi[a]);console.line_counter=0;while(system.timer-lastPrint<ansiDelay){retval=getInput(slideshow,ansiName);if(retval!=1)breakforLoop;}lastPrint=system.timer;}if(retval==1){console.print("\1h\1w[\1c"+ansiName+"\1w - \1c Press any key to continue\1w]");console.getkey(K_NOECHO|K_NOCRLF);}returnretval;}
functionfileChooser(){console.clear(LIGHTGRAY);varf=newFile(js.exec_dir+"ansiview.ans");f.open("r");varg=f.read();f.close();console.putmsg(g);console.gotoxy(3,4);console.putmsg(ascii(27)+"[1;37;40mpath: "+curDir.replace(ansiRoot,"/"));vardirList=directory(curDir+"*.*");varframe=newFrame(2,6,76,15)vartree=newTree(frame);tree.colors.lfg=WHITE;// The lightbar foreground colour, see sbbsdefs.js for valid values
tree.colors.lbg = BG_CYAN; // The lightbar background colour, see sbbsdefs.js for valid values
if(curDir != ansiRoot)
tree.addItem("[..]", parentDir);
for(var d = 0; d < dirList.length; d++) {
if(checkFile(dirList[d]))
continue;
disp = dirList[d].split("/");
if(file_isdir(dirList[d])) {
disp = disp[disp.length - 2];
disp = "[" + disp + "]";
} else {
disp = disp[disp.length - 1];
}
tree.addItem(disp, dirList[d]);
}
frame.open();
tree.open();
while(!js.terminated) {
frame.cycle();
userInput = console.inkey(K_NOECHO, 5).toUpperCase();
if(userInput == "")
continue;
if(userInput == "Q" || userInput == "S" || userInput == "H")
break;
userInput = tree.getcmd(userInput);
console.line_counter = 0;
if(userInput != false)
break;
}
return userInput;
}
function loadAnsiFile(ansi) {
var f = new File(ansi);
if(f.exists) f.open("r");
if(!f.is_open) return;
var ansiFileContents = f.read();
f.close();
return ansiFileContents;
}
function checkFile(str) {
if(file_isdir(str)) {
var matchMe = str.split("/");
matchMe = matchMe[matchMe.length - 2];
} else {
matchMe = file_getname(str);
}
for(var f = 0; f < disallowedFiles.length; f++)
if(wildmatch(false, matchMe, disallowedFiles[f]))
return true;
return false;
}