diff --git a/exec/lbshell.js b/exec/lbshell.js index f18e23d5adf036cd041a3f5a6c809f0c751805c6..b97949b7a54532db9e6801ec212b3e27307d0979 100644 --- a/exec/lbshell.js +++ b/exec/lbshell.js @@ -124,13 +124,10 @@ function get_message() /* Sysop Chat? */ if(system.node_list[bbs.node_num-1].misc & NODE_LCHAT) { - stop_mouse(); - bbs.private_chat(true); - bbs.nodesync(); - draw_main(true); - for(i=0; i<menus_displayed.length; i++) - menus_displayed[i].draw(); - start_mouse(); + menu_opt(function() { + bbs.private_chat(true); + bbs.nodesync(); + }); } /* Time left warning? */ @@ -743,36 +740,28 @@ while(bbs.online) { handle_a_ctrlkey(key); break; case 'I': - stop_mouse(); - clear_screen(); - bbs.sys_info(); - console.pause(); - draw_main(true); - start_mouse(); + menu_opt(function() { + bbs.sys_info(); + console.pause(); + }); break; case 'V': - stop_mouse(); - clear_screen(); - bbs.ver(); - console.pause(); - draw_main(true); - start_mouse(); + menu_opt(function() { + bbs.ver(); + console.pause(); + }); break; case 'S': - stop_mouse(); - clear_screen(); - bbs.sub_info(); - console.pause(); - draw_main(true); - start_mouse(); + menu_opt(function() { + bbs.sub_info(); + console.pause(); + }); break; case 'Y': - stop_mouse(); - clear_screen(); - bbs.user_info(); - console.pause(); - draw_main(true); - start_mouse(); + menu_opt(function() { + bbs.user_info(); + console.pause(); + }); break; case KEY_LEFT: if(infomenu.items[infomenu.current].retval!='U') { @@ -809,42 +798,31 @@ while(bbs.online) { userlists.erase(); break userlistloop; case 'L': - stop_mouse(); - clear_screen(); - bbs.list_logons(); - console.pause(); - draw_main(true); - infomenu.draw(); - start_mouse(); + menu_opt(function() { + bbs.list_logons(); + console.pause(); + }); break; case 'S': - stop_mouse(); - clear_screen(); - bbs.list_users(UL_SUB); - console.pause(); - draw_main(true); - infomenu.draw(); - start_mouse(); + menu_opt(function() { + bbs.list_users(UL_SUB); + console.pause(); + }); break; case 'A': - stop_mouse(); - clear_screen(); - bbs.list_users(UL_ALL); - console.pause(); - draw_main(true); - infomenu.draw(); - start_mouse(); + menu_opt(function() { + bbs.list_users(UL_ALL); + console.pause(); + }); break; } } menus_displayed.pop(); break; case 'T': - stop_mouse(); - clear_screen(); - bbs.text_sec(); - draw_main(true); - start_mouse(); + menu_opt(function() { + bbs.text_sec(); + }); break infoloop; case KEY_RIGHT: main_right(); @@ -926,6 +904,17 @@ function draw_main(topline) cleararea(1,2,console.screen_columns,console.screen_rows,true); } +function menu_opt(func) +{ + stop_mouse(); + clear_screen(); + func(); + draw_main(true); + for(i=0; i<menus_displayed.length; i++) + menus_displayed[i].draw(); + start_mouse(); +} + function main_right() { do { @@ -1001,22 +990,50 @@ function show_filemenu() menus_displayed.pop(); return; case 'C': - stop_mouse(); - clear_screen(); - changedir: do { - if(!file_area.lib_list.length) - break changedir; - while(bbs.online) { - var orig_lib=bbs.curlib; - i=0; - j=0; - if(file_area.lib_list.length>1) { - if(file_exists(system.text_dir+"menu/libs.*")) - bbs.menu("libs"); + menu_opt(function() { + changedir: do { + if(!file_area.lib_list.length) + break changedir; + while(bbs.online) { + var orig_lib=bbs.curlib; + i=0; + j=0; + if(file_area.lib_list.length>1) { + if(file_exists(system.text_dir+"menu/libs.*")) + bbs.menu("libs"); + else { + console.putmsg(bbs.text(CfgLibLstHdr),P_SAVEATR); + for(i=0; i<file_area.lib_list.length; i++) { + if(i==bbs.curlib) + console.putmsg('*',P_SAVEATR); + else + console.putmsg(' ',P_SAVEATR); + if(i<9) + console.putmsg(' ',P_SAVEATR); + if(i<99) + console.putmsg(' ',P_SAVEATR); + // We use console.putmsg to expand ^A, @, etc + console.putmsg(format(bbs.text(CfgLibLstFmt),i+1,file_area.lib_list[i].description),P_SAVEATR); + } + } + console.mnemonics(format(bbs.text(JoinWhichLib),bbs.curlib+1)); + j=console.getnum(file_area.lib_list.length,false); + if(j<0) + break changedir; + if(!j) + j=bbs.curlib; + else + j--; + } + bbs.curlib=j; + if(file_exists(system.text_dir+"menu/dirs"+(bbs.curlib+1))) + bbs.menu("dirs"+(bbs.curlib+1)); else { - console.putmsg(bbs.text(CfgLibLstHdr),P_SAVEATR); - for(i=0; i<file_area.lib_list.length; i++) { - if(i==bbs.curlib) + console.line_counter=0; + console.clear(); + console.putmsg(format(bbs.text(DirLstHdr), file_area.lib_list[j].description),P_SAVEATR); + for(i=0; i<file_area.lib_list[j].dir_list.length; i++) { + if(i==bbs.curdir) console.putmsg('*',P_SAVEATR); else console.putmsg(' ',P_SAVEATR); @@ -1024,65 +1041,33 @@ function show_filemenu() console.putmsg(' ',P_SAVEATR); if(i<99) console.putmsg(' ',P_SAVEATR); - // We use console.putmsg to expand ^A, @, etc - console.putmsg(format(bbs.text(CfgLibLstFmt),i+1,file_area.lib_list[i].description),P_SAVEATR); + console.putmsg(format(bbs.text(DirLstFmt),i+1, file_area.lib_list[j].dir_list[i].description,"",todo_getfiles(j,i)),P_SAVEATR); } } - console.mnemonics(format(bbs.text(JoinWhichLib),bbs.curlib+1)); - j=console.getnum(file_area.lib_list.length,false); - if(j<0) - break changedir; - if(!j) - j=bbs.curlib; - else - j--; - } - bbs.curlib=j; - if(file_exists(system.text_dir+"menu/dirs"+(bbs.curlib+1))) - bbs.menu("dirs"+(bbs.curlib+1)); - else { - console.line_counter=0; - console.clear(); - console.putmsg(format(bbs.text(DirLstHdr), file_area.lib_list[j].description),P_SAVEATR); - for(i=0; i<file_area.lib_list[j].dir_list.length; i++) { - if(i==bbs.curdir) - console.putmsg('*',P_SAVEATR); - else - console.putmsg(' ',P_SAVEATR); - if(i<9) - console.putmsg(' ',P_SAVEATR); - if(i<99) - console.putmsg(' ',P_SAVEATR); - console.putmsg(format(bbs.text(DirLstFmt),i+1, file_area.lib_list[j].dir_list[i].description,"",todo_getfiles(j,i)),P_SAVEATR); - } - } - console.mnemonics(format(bbs.text(JoinWhichDir),bbs.curdir+1)); - i=console.getnum(file_area.lib_list[j].dir_list.length); - if(i==-1) { - if(file_area.lib_list.length==1) { - bbs.curlib=orig_lib; - break changedir; + console.mnemonics(format(bbs.text(JoinWhichDir),bbs.curdir+1)); + i=console.getnum(file_area.lib_list[j].dir_list.length); + if(i==-1) { + if(file_area.lib_list.length==1) { + bbs.curlib=orig_lib; + break changedir; + } + continue; } - continue; + if(!i) + i=bbs.curdir; + else + i--; + bbs.curdir=i; + break changedir; } - if(!i) - i=bbs.curdir; - else - i--; - bbs.curdir=i; - break changedir; - } - } while(0); - draw_main(true); - start_mouse(); + } while(0); + }); break; case 'L': - stop_mouse(); - clear_screen(); - bbs.list_files(file_area.lib_list[bbs.curlib].dir_list[bbs.curdir].number); - console.pause(); - draw_main(true); - start_mouse(); + menu_opt(function() { + bbs.list_files(file_area.lib_list[bbs.curlib].dir_list[bbs.curdir].number); + console.pause(); + }); break; case 'N': var typemenu=new Filedirmenu(filemenu.xpos+filemenu.full_width, filemenu.current+1, true); @@ -1098,47 +1083,35 @@ function show_filemenu() handle_a_ctrlkey(ret); break; case 'A': - stop_mouse(); - clear_screen(); - console.putmsg("\r\nchNew File Scan (All)\r\n"); - bbs.scan_dirs(FL_ULTIME,true); - console.pause(); - draw_main(true); - filemenu.draw(); - start_mouse(); + menu_opt(function() { + console.putmsg("\r\nchNew File Scan (All)\r\n"); + bbs.scan_dirs(FL_ULTIME,true); + console.pause(); + }); break; case 'L': /* Scan this lib only */ - stop_mouse(); - clear_screen(); - console.putmsg("\r\nchNew File Scan (Lib)\r\n"); - for(i=0; i<file_area.lib_list[bbs.curlib].dir_list.length; i++) - if(bbs.list_files(file_area.lib_list[bbs.curlib].dir_list[i].number,FL_ULTIME)<0) - break; - console.pause(); - draw_main(true); - filemenu.draw(); - start_mouse(); + menu_opt(function() { + console.putmsg("\r\nchNew File Scan (Lib)\r\n"); + for(i=0; i<file_area.lib_list[bbs.curlib].dir_list.length; i++) + if(bbs.list_files(file_area.lib_list[bbs.curlib].dir_list[i].number,FL_ULTIME)<0) + break; + console.pause(); + }); break; case 'D': /* Scan this dir only */ - stop_mouse(); - clear_screen(); - console.putmsg("\r\nchNew File Scan (Dir)\r\n"); - bbs.list_files(file_area.lib_list[bbs.curlib].dir_list[bbs.curdir].number,FL_ULTIME); - console.pause(); - draw_main(true); - filemenu.draw(); - start_mouse(); + menu_opt(function() { + console.putmsg("\r\nchNew File Scan (Dir)\r\n"); + bbs.list_files(file_area.lib_list[bbs.curlib].dir_list[bbs.curdir].number,FL_ULTIME); + console.pause(); + }); break; case 'N': // ToDo: Don't clear screen here, just do one line - stop_mouse(); - clear_screen(); - bbs.new_file_time=bbs.get_newscantime(bbs.new_file_time); - draw_main(true); - filemenu.draw(); - start_mouse(); + menu_opt(function() { + bbs.new_file_time=bbs.get_newscantime(bbs.new_file_time); + }); break; case KEY_RIGHT: typemenu.erase(); @@ -1175,54 +1148,43 @@ function show_filemenu() handle_a_ctrlkey(ret); break; case 'A': - stop_mouse(); - clear_screen(); - console.putmsg("\r\nchSearch for Filename(s) (All)\r\n"); - var spec=bbs.get_filespec(); - for(i=0; i<file_area.lib_list.length; i++) { - for(j=0;j<file_area.lib_list[i].dir_list.length;j++) - if(bbs.list_files(file_area.lib_list[i].dir_list[j].number,spec,0)<0) - break; - } - console.pause(); - draw_main(true); - filemenu.draw(); - start_mouse(); + menu_opt(function() { + console.putmsg("\r\nchSearch for Filename(s) (All)\r\n"); + var spec=bbs.get_filespec(); + for(i=0; i<file_area.lib_list.length; i++) { + for(j=0;j<file_area.lib_list[i].dir_list.length;j++) + if(bbs.list_files(file_area.lib_list[i].dir_list[j].number,spec,0)<0) + break; + } + console.pause(); + }); break; case 'L': /* Scan this lib only */ - stop_mouse(); - clear_screen(); + menu_opt(function() { console.putmsg("\r\nchSearch for Filename(s) (Lib)\r\n"); - var spec=bbs.get_filespec(); - for(j=0;j<file_area.lib_list[bbs.curlib].dir_list.length;j++) - if(bbs.list_files(file_area.lib_list[bbs.curlib].dir_list[j].number,spec,0)<0) - break; - console.pause(); - draw_main(true); - filemenu.draw(); - start_mouse(); + var spec=bbs.get_filespec(); + for(j=0;j<file_area.lib_list[bbs.curlib].dir_list.length;j++) + if(bbs.list_files(file_area.lib_list[bbs.curlib].dir_list[j].number,spec,0)<0) + break; + console.pause(); + }); break; case 'D': /* Scan this dir only */ - stop_mouse(); - clear_screen(); - console.putmsg("\r\nchSearch for Filename(s) (Dir)\r\n"); - var spec=bbs.get_filespec(); - bbs.list_files(file_area.lib_list[bbs.curlib].dir_list[bbs.curdir].number,spec,0); - console.pause(); - draw_main(true); - filemenu.draw(); - start_mouse(); + menu_opt(function() { + console.putmsg("\r\nchSearch for Filename(s) (Dir)\r\n"); + var spec=bbs.get_filespec(); + bbs.list_files(file_area.lib_list[bbs.curlib].dir_list[bbs.curdir].number,spec,0); + console.pause(); + }); break; case KEY_RIGHT: - stop_mouse(); filemenu.erase(); typemenu.erase(); menus_displayed.pop(); menus_displayed.pop(); main_right(); - start_mouse(); return; case '\b': if (typemenu.mouse_miss_str !== undefined) { @@ -1252,48 +1214,39 @@ function show_filemenu() handle_a_ctrlkey(ret); break; case 'A': - stop_mouse(); - clear_screen(); - console.putmsg("\r\nchSearch for Text in Description(s) (All)\r\n"); - console.putmsg(bbs.text(SearchStringPrompt)); - var spec=console.getstr(40,K_LINE|K_UPPER); - for(i=0; i<file_area.lib_list.length; i++) { - for(j=0;j<file_area.lib_list[i].dir_list.length;j++) - if(bbs.list_files(file_area.lib_list[i].dir_list[j].number,spec,FL_FINDDESC)<0) - break; - } - console.pause(); - draw_main(true); - filemenu.draw(); - start_mouse(); + menu_opt(function() { + console.putmsg("\r\nchSearch for Text in Description(s) (All)\r\n"); + console.putmsg(bbs.text(SearchStringPrompt)); + var spec=console.getstr(40,K_LINE|K_UPPER); + for(i=0; i<file_area.lib_list.length; i++) { + for(j=0;j<file_area.lib_list[i].dir_list.length;j++) + if(bbs.list_files(file_area.lib_list[i].dir_list[j].number,spec,FL_FINDDESC)<0) + break; + } + console.pause(); + }); break; case 'L': /* Scan this lib only */ - stop_mouse(); - clear_screen(); - console.putmsg("\r\nchSearch for Text in Description(s) (Lib)\r\n"); - console.putmsg(bbs.text(SearchStringPrompt)); - var spec=console.getstr(40,K_LINE|K_UPPER); - for(j=0;j<file_area.lib_list[bbs.curlib].dir_list.length;j++) - if(bbs.list_files(file_area.lib_list[bbs.curlib].dir_list[j].number,spec,FL_FINDDESC)<0) - break; - console.pause(); - draw_main(true); - filemenu.draw(); - start_mouse(); + menu_opt(function() { + console.putmsg("\r\nchSearch for Text in Description(s) (Lib)\r\n"); + console.putmsg(bbs.text(SearchStringPrompt)); + var spec=console.getstr(40,K_LINE|K_UPPER); + for(j=0;j<file_area.lib_list[bbs.curlib].dir_list.length;j++) + if(bbs.list_files(file_area.lib_list[bbs.curlib].dir_list[j].number,spec,FL_FINDDESC)<0) + break; + console.pause(); + }); break; case 'D': /* Scan this dir only */ - stop_mouse(); - clear_screen(); - console.putmsg("\r\nchSearch for Text in Description(s) (Dir)\r\n"); - console.putmsg(bbs.text(SearchStringPrompt)); - var spec=console.getstr(40,K_LINE|K_UPPER); - bbs.list_files(file_area.lib_list[bbs.curlib].dir_list[bbs.curdir].number,spec,FL_FINDDESC); - console.pause(); - draw_main(true); - filemenu.draw(); - start_mouse(); + menu_opt(function() { + console.putmsg("\r\nchSearch for Text in Description(s) (Dir)\r\n"); + console.putmsg(bbs.text(SearchStringPrompt)); + var spec=console.getstr(40,K_LINE|K_UPPER); + bbs.list_files(file_area.lib_list[bbs.curlib].dir_list[bbs.curdir].number,spec,FL_FINDDESC); + console.pause(); + }); break; case KEY_RIGHT: filemenu.erase(); @@ -1337,30 +1290,20 @@ function show_filemenu() handle_a_ctrlkey(ret); break; case 'B': - stop_mouse(); - clear_screen(); - bbs.batch_download(); - /* Redraw just in case */ - draw_main(true); - filemenu.draw(); - start_mouse(); + menu_opt(function() { + bbs.batch_download(); + }); break; case 'N': - stop_mouse(); - clear_screen(); - var spec=bbs.get_filespec(); - bbs.list_file_info(bbs.curdir,spec,FI_DOWNLOAD); - draw_main(true); - filemenu.draw(); - start_mouse(); + menu_opt(function() { + var spec=bbs.get_filespec(); + bbs.list_file_info(bbs.curdir,spec,FI_DOWNLOAD); + }); break; case 'U': - stop_mouse(); - clear_screen(); - bbs.list_file_info(bbs.curdir,spec,FI_USERXFER); - draw_main(true); - filemenu.draw(); - start_mouse(); + menu_opt(function() { + bbs.list_file_info(bbs.curdir,spec,FI_USERXFER); + }); break; case KEY_RIGHT: filemenu.erase(); @@ -1414,36 +1357,24 @@ function show_filemenu() handle_a_ctrlkey(ret); break; case 'C': // Current dir - stop_mouse(); - clear_screen(); - bbs.upload_file(file_area.lib_list[bbs.curlib].dir_list[bbs.curdir].number); - draw_main(true); - filemenu.draw(); - start_mouse(); + menu_opt(function() { + bbs.upload_file(file_area.lib_list[bbs.curlib].dir_list[bbs.curdir].number); + }); break; case 'P': // Upload dir - stop_mouse(); - clear_screen(); - bbs.upload_file(file_area.upload_dir); - draw_main(true); - filemenu.draw(); - start_mouse(); + menu_opt(function() { + bbs.upload_file(file_area.upload_dir); + }); break; case 'S': // Sysop dir - stop_mouse(); - clear_screen(); - bbs.upload_file(file_area.sysop_dir); - draw_main(true); - filemenu.draw(); - start_mouse(); + menu_opt(function() { + bbs.upload_file(file_area.sysop_dir); + }); break; case 'U': // To user - stop_mouse(); - clear_screen(); - bbs.upload_file(file_area.user_dir); - draw_main(true); - filemenu.draw(); - start_mouse(); + menu_opt(function() { + bbs.upload_file(file_area.user_dir); + }); break; case KEY_RIGHT: filemenu.erase(); @@ -1467,48 +1398,44 @@ function show_filemenu() } break; case 'R': - stop_mouse(); - clear_screen(); - fileremove: do { - console.putmsg("\r\nchRemove/Edit File(s)\r\n"); - str=bbs.get_filespec(); - if(str==null) - break fileremove; - if(!bbs.list_file_info(file_area.lib_list[bbs.curlib].dir_list[bbs.curdir].number, str, FI_REMOVE)) { - var s=0; - console.putmsg(bbs.text(SearchingAllDirs)); - for(i=0; i<file_area.lib_list[bbs.curlib].dir_list.length; i++) { - if(i!=bbs.curdir && - (s=bbs.list_file_info(file_area.lib_list[bbs.curlib].dir_list[i].number, str, FI_REMOVE))!=0) { - if(s==-1 || str.indexOf('?')!=-1 || str.indexOf('*')!=-1) { - break fileremove; - } - } - } - console.putmsg(bbs.text(SearchingAllLibs)); - for(i=0; i<file_area.lib_list.length; i++) { - if(i==bbs.curlib) - continue; - for(j=0; j<file_area.lib_list[i].dir_list.length; j++) { - if((s=bbs.list_file_info(file_area.lib_list[i].dir_list[j].number, str, FI_REMOVE))!=0) { + menu_opt(function() { + fileremove: do { + console.putmsg("\r\nchRemove/Edit File(s)\r\n"); + str=bbs.get_filespec(); + if(str==null) + break fileremove; + if(!bbs.list_file_info(file_area.lib_list[bbs.curlib].dir_list[bbs.curdir].number, str, FI_REMOVE)) { + var s=0; + console.putmsg(bbs.text(SearchingAllDirs)); + for(i=0; i<file_area.lib_list[bbs.curlib].dir_list.length; i++) { + if(i!=bbs.curdir && + (s=bbs.list_file_info(file_area.lib_list[bbs.curlib].dir_list[i].number, str, FI_REMOVE))!=0) { if(s==-1 || str.indexOf('?')!=-1 || str.indexOf('*')!=-1) { break fileremove; } } } + console.putmsg(bbs.text(SearchingAllLibs)); + for(i=0; i<file_area.lib_list.length; i++) { + if(i==bbs.curlib) + continue; + for(j=0; j<file_area.lib_list[i].dir_list.length; j++) { + if((s=bbs.list_file_info(file_area.lib_list[i].dir_list[j].number, str, FI_REMOVE))!=0) { + if(s==-1 || str.indexOf('?')!=-1 || str.indexOf('*')!=-1) { + break fileremove; + } + } + } + } } - } - } while(0); - draw_main(true); - start_mouse(); + } while(0); + }); break; case 'B': - stop_mouse(); console.attributes=LBShell_Attr; - clear_screen(); - bbs.batch_menu(); - draw_main(true); - start_mouse(); + menu_opt(function() { + bbs.batch_menu(); + }); break; case 'V': var typemenu=new ShellLB; @@ -1599,31 +1526,22 @@ function show_filemenu() start_mouse(); break; case 'P': - stop_mouse(); - clear_screen(); - bbs.xfer_policy(); - console.pause(); - draw_main(true); - filemenu.draw(); - start_mouse(); + menu_opt(function() { + bbs.xfer_policy(); + console.pause(); + }); break; case 'D': - stop_mouse(); - clear_screen(); - bbs.dir_info(); - console.pause(); - draw_main(true); - filemenu.draw(); - start_mouse(); + menu_opt(function() { + bbs.dir_info(); + console.pause(); + }); break; case 'U': - stop_mouse(); - clear_screen(); - bbs.list_users(UL_DIR); - console.pause(); - draw_main(true); - filemenu.draw(); - start_mouse(); + menu_opt(function() { + bbs.list_users(UL_DIR); + console.pause(); + }); break; case 'S': break; @@ -1839,11 +1757,9 @@ function show_messagemenu() start_mouse(); break; case 'R': - stop_mouse(); - clear_screen(); - bbs.scan_posts(); - draw_main(true); - start_mouse(); + menu_opt(function() { + bbs.scan_posts(); + }); break; case 'N': var typemenu=new ShellLB; @@ -1874,58 +1790,40 @@ function show_messagemenu() handle_a_ctrlkey(ret); break; case 'A': - stop_mouse(); - clear_screen(); - console.putmsg("\r\n\x01c\x01hNew Message Scan\r\n"); - bbs.scan_subs(SCAN_NEW|SCAN_MSGSONLY,/* All? */ true); - draw_main(true); - messagemenu.draw(); - start_mouse(); + menu_opt(function() { + console.putmsg("\r\n\x01c\x01hNew Message Scan\r\n"); + bbs.scan_subs(SCAN_NEW|SCAN_MSGSONLY,/* All? */ true); + }); break; case 'G': - stop_mouse(); - clear_screen(); - console.putmsg("\r\n\x01c\x01hNew Message Scan\r\n"); - for(i=0; i<msg_area.grp_list[bbs.curgrp].sub_list.length; i++) - if(msg_area.grp_list[bbs.curgrp].sub_list[i].scan_cfg&SCAN_CFG_NEW - && !bbs.scan_posts(msg_area.grp_list[bbs.curgrp].sub_list[i].number, SCAN_NEW)) - break; - draw_main(true); - messagemenu.draw(); - start_mouse(); + menu_opt(function() { + console.putmsg("\r\n\x01c\x01hNew Message Scan\r\n"); + for(i=0; i<msg_area.grp_list[bbs.curgrp].sub_list.length; i++) + if(msg_area.grp_list[bbs.curgrp].sub_list[i].scan_cfg&SCAN_CFG_NEW + && !bbs.scan_posts(msg_area.grp_list[bbs.curgrp].sub_list[i].number, SCAN_NEW)) + break; + }); break; case 'S': - stop_mouse(); - clear_screen(); - console.putmsg("\r\n\x01c\x01hNew Message Scan\r\n"); - bbs.scan_posts(msg_area.grp_list[bbs.curgrp].sub_list[bbs.cursub].number, SCAN_NEW); - draw_main(true); - messagemenu.draw(); - start_mouse(); + menu_opt(function() { + console.putmsg("\r\n\x01c\x01hNew Message Scan\r\n"); + bbs.scan_posts(msg_area.grp_list[bbs.curgrp].sub_list[bbs.cursub].number, SCAN_NEW); + }); break; case 'C': - stop_mouse(); - clear_screen(); - bbs.cfg_msg_scan(SCAN_CFG_NEW); - draw_main(true); - messagemenu.draw(); - start_mouse(); + menu_opt(function() { + bbs.cfg_msg_scan(SCAN_CFG_NEW); + }); break; case 'P': - stop_mouse(); - clear_screen(); - bbs.cfg_msg_ptrs(SCAN_CFG_NEW); - draw_main(true); - messagemenu.draw(); - start_mouse(); + menu_opt(function() { + bbs.cfg_msg_ptrs(SCAN_CFG_NEW); + }); break; case 'R': - stop_mouse(); - clear_screen(); - bbs.reinit_msg_ptrs() - draw_main(true); - messagemenu.draw(); - start_mouse(); + menu_opt(function() { + bbs.reinit_msg_ptrs() + }); break; case KEY_RIGHT: cleararea(messagemenu.xpos,messagemenu.ypos,messagemenu.items[0].text.length,messagemenu.items.length,true); @@ -1975,42 +1873,30 @@ function show_messagemenu() handle_a_ctrlkey(ret); break; case 'A': - stop_mouse(); - clear_screen(); - console.putmsg("\r\n\x01c\x01hYour Message Scan\r\n"); - bbs.scan_subs(SCAN_TOYOU, /* All? */ true); - draw_main(true); - messagemenu.draw(); - start_mouse(); + menu_opt(function() { + console.putmsg("\r\n\x01c\x01hYour Message Scan\r\n"); + bbs.scan_subs(SCAN_TOYOU, /* All? */ true); + }); break; case 'G': - stop_mouse(); - clear_screen(); - console.putmsg("\r\n\x01c\x01hYour Message Scan\r\n"); - for(i=0; i<msg_area.grp_list[bbs.curgrp].sub_list.length; i++) - if(msg_area.grp_list[bbs.curgrp].sub_list.scan_cfg&SCAN_CFG_TOYOU - && !bbs.scan_posts(msg_area.grp_list[bbs.curgrp].sub_list[i].number, SCAN_TOYOU)) - break; - draw_main(true); - messagemenu.draw(); - start_mouse(); + menu_opt(function() { + console.putmsg("\r\n\x01c\x01hYour Message Scan\r\n"); + for(i=0; i<msg_area.grp_list[bbs.curgrp].sub_list.length; i++) + if(msg_area.grp_list[bbs.curgrp].sub_list.scan_cfg&SCAN_CFG_TOYOU + && !bbs.scan_posts(msg_area.grp_list[bbs.curgrp].sub_list[i].number, SCAN_TOYOU)) + break; + }); break; case 'S': - stop_mouse(); - clear_screen(); - console.putmsg("\r\n\x01c\x01hYour Message Scan\r\n"); - bbs.scan_posts(msg_area.grp_list[bbs.curgrp].sub_list[bbs.cursub].number, SCAN_TOYOU); - draw_main(true); - messagemenu.draw(); - start_mouse(); + menu_opt(function() { + console.putmsg("\r\n\x01c\x01hYour Message Scan\r\n"); + bbs.scan_posts(msg_area.grp_list[bbs.curgrp].sub_list[bbs.cursub].number, SCAN_TOYOU); + }); break; case 'C': - stop_mouse(); - clear_screen(); - bbs.cfg_msg_scan(SCAN_CFG_TOYOU); - draw_main(true); - messagemenu.draw(); - start_mouse(); + menu_opt(function() { + bbs.cfg_msg_scan(SCAN_CFG_TOYOU); + }); break; case KEY_RIGHT: cleararea(messagemenu.xpos,messagemenu.ypos,messagemenu.items[0].text.length,messagemenu.items.length,true); @@ -2061,60 +1947,51 @@ function show_messagemenu() handle_a_ctrlkey(ret); break; case 'A': - stop_mouse(); - clear_screen(); - console.putmsg("\r\n\x01c\x01hMessage Search\r\n"); - bbs.scan_subs(SCAN_FIND, /* All? */true); - console.crlf(); - if(console.line_counter) - console.pause(); - draw_main(true); - messagemenu.draw(); - start_mouse(); + menu_opt(function() { + console.putmsg("\r\n\x01c\x01hMessage Search\r\n"); + bbs.scan_subs(SCAN_FIND, /* All? */true); + console.crlf(); + if(console.line_counter) + console.pause(); + }); break; case 'G': - stop_mouse(); - clear_screen(); - console.putmsg("\r\n\x01c\x01hMessage Search\r\n"); - subonly=console.yesno(bbs.text(DisplaySubjectsOnlyQ)); - console.putmsg(bbs.text(SearchStringPrompt)); - str=console.getstr("",40,K_LINE|K_UPPER); - if(str.length) { - for(i=0; i<msg_area.grp_list[bbs.curgrp].sub_list.length; i++) { - if(subonly) - bbs.list_msgs(msg_area.grp_list[bbs.curgrp].sub_list[i].number, SCAN_FIND, str); - else { - if(!bbs.scan_posts(msg_area.grp_list[bbs.curgrp].sub_list[i].number, SCAN_FIND, str)) - break; + menu_opt(function() { + console.putmsg("\r\n\x01c\x01hMessage Search\r\n"); + subonly=console.yesno(bbs.text(DisplaySubjectsOnlyQ)); + console.putmsg(bbs.text(SearchStringPrompt)); + str=console.getstr("",40,K_LINE|K_UPPER); + if(str.length) { + for(i=0; i<msg_area.grp_list[bbs.curgrp].sub_list.length; i++) { + if(subonly) + bbs.list_msgs(msg_area.grp_list[bbs.curgrp].sub_list[i].number, SCAN_FIND, str); + else { + if(!bbs.scan_posts(msg_area.grp_list[bbs.curgrp].sub_list[i].number, SCAN_FIND, str)) + break; + } } } - } - console.crlf(); - if(console.line_counter) - console.pause(); - draw_main(true); - messagemenu.draw(); - start_mouse(); + console.crlf(); + if(console.line_counter) + console.pause(); + }); break; case 'S': - stop_mouse(); - clear_screen(); - console.putmsg("\r\n\x01c\x01hMessage Search\r\n"); - subonly=console.yesno(bbs.text(DisplaySubjectsOnlyQ)); - console.putmsg(bbs.text(SearchStringPrompt)); - str=console.getstr("",40,K_LINE|K_UPPER); - if(str.length) { - if(subonly) - bbs.list_msgs(msg_area.grp_list[bbs.curgrp].sub_list[bbs.cursub].number, SCAN_FIND, str); - else - bbs.scan_posts(msg_area.grp_list[bbs.curgrp].sub_list[bbs.cursub].number, SCAN_FIND, str); - } - console.crlf(); - if(console.line_counter) - console.pause(); - draw_main(true); - messagemenu.draw(); - start_mouse(); + menu_opt(function() { + console.putmsg("\r\n\x01c\x01hMessage Search\r\n"); + subonly=console.yesno(bbs.text(DisplaySubjectsOnlyQ)); + console.putmsg(bbs.text(SearchStringPrompt)); + str=console.getstr("",40,K_LINE|K_UPPER); + if(str.length) { + if(subonly) + bbs.list_msgs(msg_area.grp_list[bbs.curgrp].sub_list[bbs.cursub].number, SCAN_FIND, str); + else + bbs.scan_posts(msg_area.grp_list[bbs.curgrp].sub_list[bbs.cursub].number, SCAN_FIND, str); + } + console.crlf(); + if(console.line_counter) + console.pause(); + }); break; case KEY_RIGHT: cleararea(messagemenu.xpos,messagemenu.ypos,messagemenu.items[0].text.length,messagemenu.items.length,true); @@ -2138,33 +2015,25 @@ function show_messagemenu() } break; case 'P': - stop_mouse(); - clear_screen(); - bbs.post_msg(); - draw_main(true); - start_mouse(); + menu_opt(function() { + bbs.post_msg(); + }); break; case 'A': - stop_mouse(); - clear_screen(); - bbs.auto_msg(); - draw_main(true); - start_mouse(); + menu_opt(function() { + bbs.auto_msg(); + }); break; case 'Q': - stop_mouse(); - clear_screen(); - bbs.qwk_sec(); - draw_main(true); - start_mouse(); + menu_opt(function() { + bbs.qwk_sec(); + }); break; case 'V': - stop_mouse(); - clear_screen(); - bbs.sub_info(); - console.pause(); - draw_main(true); - start_mouse(); + menu_opt(function() { + bbs.sub_info(); + console.pause(); + }); break; } cur=messagemenu.current; @@ -2246,72 +2115,57 @@ function show_emailmenu() handle_a_ctrlkey(ret); break; case 'S': - stop_mouse(); - clear_screen(); - bbs.email(1,WM_EMAIL,bbs.text(ReFeedback)); - draw_main(true); - emailmenu.draw(); - start_mouse(); + menu_opt(function() { + bbs.email(1,WM_EMAIL,bbs.text(ReFeedback)); + }); break; case 'L': - stop_mouse(); - clear_screen(); - console.putmsg("\x01_\r\n\x01b\x01hE-mail (User name or number): \x01w"); - str=console.getstr("",40,K_UPRLWR); - if(str!=null && str!="") { - if(str=="Sysop") - str="1"; - if(str.search(/\@/)!=-1) - bbs.netmail(str); - else { - i=bbs.finduser(str); - if(i>0) - bbs.email(i,WM_EMAIL); + menu_opt(function() { + console.putmsg("\x01_\r\n\x01b\x01hE-mail (User name or number): \x01w"); + str=console.getstr("",40,K_UPRLWR); + if(str!=null && str!="") { + if(str=="Sysop") + str="1"; + if(str.search(/\@/)!=-1) + bbs.netmail(str); + else { + i=bbs.finduser(str); + if(i>0) + bbs.email(i,WM_EMAIL); + } } - } - draw_main(true); - emailmenu.draw(); - start_mouse(); + }); break; case 'A': - stop_mouse(); - clear_screen(); - console.putmsg("\x01_\r\n\x01b\x01hE-mail (User name or number): \x01w"); - str=console.getstr("",40,K_UPRLWR); - if(str!=null && str!="") { - i=bbs.finduser(str); - if(i>0) - bbs.email(i,WM_EMAIL|WM_FILE); - } - draw_main(true); - emailmenu.draw(); - start_mouse(); + menu_opt(function() { + console.putmsg("\x01_\r\n\x01b\x01hE-mail (User name or number): \x01w"); + str=console.getstr("",40,K_UPRLWR); + if(str!=null && str!="") { + i=bbs.finduser(str); + if(i>0) + bbs.email(i,WM_EMAIL|WM_FILE); + } + }); break; case 'R': - stop_mouse(); - clear_screen(); - if(console.noyes("\r\nAttach a file")) - i=0; - else - i=WM_FILE; - console.putmsg(bbs.text(EnterNetMailAddress),P_SAVEATR); - str=console.getstr("",60,K_LINE); - if(str!=null && str !="") - bbs.netmail(str,i); - draw_main(true); - emailmenu.draw(); - start_mouse(); + menu_opt(function() { + if(console.noyes("\r\nAttach a file")) + i=0; + else + i=WM_FILE; + console.putmsg(bbs.text(EnterNetMailAddress),P_SAVEATR); + str=console.getstr("",60,K_LINE); + if(str!=null && str !="") + bbs.netmail(str,i); + }); break; case 'T': - stop_mouse(); - clear_screen(); - console.putmsg("\x01_\r\n\x01b\x01hE-mail (User name or number): \x01w"); - str=console.getstr("",40,K_UPRLWR); - if(str!=null && str!="") - bbs.netmail(str,WM_FILE); - draw_main(true); - emailmenu.draw(); - start_mouse(); + menu_opt(function() { + console.putmsg("\x01_\r\n\x01b\x01hE-mail (User name or number): \x01w"); + str=console.getstr("",40,K_UPRLWR); + if(str!=null && str!="") + bbs.netmail(str,WM_FILE); + }); break; case KEY_RIGHT: cleararea(emailmenu.xpos,emailmenu.ypos,emailmenu.items[0].text.length,emailmenu.items.length,true); @@ -2335,20 +2189,16 @@ function show_emailmenu() } break; case 'R': - stop_mouse(); - clear_screen(); - bbs.read_mail(MAIL_YOUR); - console.pause(); - draw_main(true); - start_mouse(); + menu_opt(function() { + bbs.read_mail(MAIL_YOUR); + console.pause(); + }); break; case 'M': - stop_mouse(); - clear_screen(); - bbs.read_mail(MAIL_SENT); - console.pause(); - draw_main(true); - start_mouse(); + menu_opt(function() { + bbs.read_mail(MAIL_SENT); + console.pause(); + }); break; } cur=emailmenu.current; @@ -2405,67 +2255,51 @@ function show_chatmenu() menus_displayed.pop(); return; case 'M': - stop_mouse(); - clear_screen(); - bbs.multinode_chat(); - draw_main(true); - start_mouse(); + menu_opt(function() { + bbs.multinode_chat(); + }); break; case 'P': - stop_mouse(); - clear_screen(); - bbs.private_chat(); - draw_main(true); - start_mouse(); + menu_opt(function() { + bbs.private_chat(); + }); break; case 'C': - stop_mouse(); - clear_screen(); - if(!bbs.page_sysop()) - bbs.page_guru(); - draw_main(true); - start_mouse(); + menu_opt(function() { + if(!bbs.page_sysop()) + bbs.page_guru(); + }); break; case 'T': - stop_mouse(); - clear_screen(); - bbs.page_guru(); - draw_main(true); - start_mouse(); + menu_opt(function() { + bbs.page_guru(); + }); break; case 'F': - stop_mouse(); - clear_screen(); - bbs.exec("?finger"); - console.pause(); - draw_main(true); - start_mouse(); + menu_opt(function() { + bbs.exec("?finger"); + console.pause(); + }); break; case 'R': - stop_mouse(); - clear_screen(); - { + menu_opt(function() { var server = "irc.synchro.net 6667"; if(user.security.level >= 90 || user.security.exemptions&UFLAG_C) { write("\001n\001y\001hIRC Server: "); server=console.getstr(server, 40, K_EDIT|K_LINE|K_AUTODEL); if(console.aborted) - break; + return; } write("\001n\001y\001hIRC Channel: "); var channel=console.getstr("#Synchronet", 40, K_EDIT|K_LINE|K_AUTODEL); if(!console.aborted) bbs.exec("?irc -a " + server + " " + channel); - } - draw_main(true); - start_mouse(); + }); break; case 'I': - stop_mouse(); - clear_screen(); - bbs.exec("?sbbsimsg"); - draw_main(true); - start_mouse(); + menu_opt(function() { + bbs.exec("?sbbsimsg"); + }); break; case 'S': while(bbs.online) { @@ -2545,24 +2379,20 @@ function show_settingsmenu() handle_a_ctrlkey(ret); break; case 'U': - stop_mouse(); - clear_screen(); - user.cached=false; - var oldshell=user.command_shell; - bbs.user_config(); - user.cached=false; - /* Still using this shell? */ - if(user.command_shell != oldshell) - exit(0); - draw_main(true); - start_mouse(); + menu_opt(function() { + user.cached=false; + var oldshell=user.command_shell; + bbs.user_config(); + user.cached=false; + /* Still using this shell? */ + if(user.command_shell != oldshell) + exit(0); + }); break; case 'B': - stop_mouse(); - clear_screen(); - bbs.time_bank(); - draw_main(true); - start_mouse(); + menu_opt(function() { + bbs.time_bank(); + }); break; case KEY_RIGHT: settingsmenu.erase();