Skip to content
Snippets Groups Projects
Commit 54ef826d authored by rswindell's avatar rswindell
Browse files

Updated for menulib.js support.

parent ba7222f4
No related branches found
No related tags found
No related merge requests found
...@@ -10,7 +10,7 @@ load("menulib.js"); ...@@ -10,7 +10,7 @@ load("menulib.js");
var menu_stack = new Array(); var menu_stack = new Array();
var pop_count = 0; var pop_count = 0;
menu(argv[0]); exec_menu(argv[0]);
function isdigit(ch) function isdigit(ch)
{ {
...@@ -19,7 +19,7 @@ function isdigit(ch) ...@@ -19,7 +19,7 @@ function isdigit(ch)
return(val>=ascii('0') && val<=ascii('9')); return(val>=ascii('0') && val<=ascii('9'));
} }
function menu(fname) function exec_menu(fname)
{ {
if(!fname) { if(!fname) {
alert(log(LOG_WARNING,"!No menu file specified")); alert(log(LOG_WARNING,"!No menu file specified"));
...@@ -36,6 +36,7 @@ function menu(fname) ...@@ -36,6 +36,7 @@ function menu(fname)
return; return;
} }
log("Reading menu file" + fname);
var menu; var menu;
if((menu=read_menu(fname))==undefined) if((menu=read_menu(fname))==undefined)
return(false); return(false);
...@@ -51,48 +52,49 @@ function menu(fname) ...@@ -51,48 +52,49 @@ function menu(fname)
} }
var cmd_keys=""; var cmd_keys="";
var cmd_list=new Array(); var cmd_list=new Array();
if(hotkey_ext) if(menu.hotkey_ext)
cmd_keys+=hotkey_ext; cmd_keys+=menu.hotkey_ext;
for(i in command) { for(i in menu.command) {
if(command[i].ars && !user.compare_ars(command[i].ars)) if(menu.command[i].ars && !user.compare_ars(menu.command[i].ars))
continue; continue;
cmd_keys+=command[i].key; cmd_keys+=menu.command[i].key;
cmd_list.push(command[i]); cmd_list.push(menu.command[i]);
} }
log("menu.show: " + menu.show);
if(show_menu || !expert || !(user.settings&USER_EXPERT)) { if(menu.show || !menu.expert || !(user.settings&USER_EXPERT)) {
if(menu_file) /* static menu */ if(menu.file) /* static menu */
bbs.menu(menu_file); bbs.menu(menu.file);
else { /* dynamic menu */ else { /* dynamic menu */
var column=0; var column=0;
for(var i in cmd_list) { for(var i in cmd_list) {
if(cmd_list[i].description) { if(cmd_list[i].description) {
if(column+menu_colwidth>=console.screen_columns) if(column+menu.colwidth>=console.screen_columns)
console.crlf(), column=0; console.crlf(), column=0;
var str=format(menu_fmt var str=format(menu.fmt
,menu_reverse ? cmd_list[i].description : cmd_list[i].key.toUpperCase() ,menu.reverse ? cmd_list[i].description : cmd_list[i].key.toUpperCase()
,menu_reverse ? cmd_list[i].key.toUpperCase() : cmd_list[i].description); ,menu.reverse ? cmd_list[i].key.toUpperCase() : cmd_list[i].description);
console.putmsg(str); console.putmsg(str);
console.right(menu_colwidth-console.strlen(str)); console.right(menu.colwidth-console.strlen(str));
if(console.strlen(str)>menu_colwidth) if(console.strlen(str)>menu.colwidth)
column+=console.strlen(str); column+=console.strlen(str);
else else
column+=menu_colwidth; column+=menu.colwidth;
} }
} }
} }
show_menu = false; menu.show = false;
} }
bbs.nodesync(); bbs.nodesync();
console.aborted=false; console.aborted=false;
if(exec) if(menu.exec)
eval(exec); eval(menu.exec);
if(prompt) if(menu.prompt)
console.putmsg(eval(prompt)); console.putmsg(eval(menu.prompt));
var cmd; var cmd;
if(hotkeys) if(menu.hotkeys)
console.write(cmd=console.getkey(K_UPPER)); console.write(cmd=console.getkey(K_UPPER));
else else
cmd=console.getstr(K_UPPER); cmd=console.getstr(K_UPPER);
...@@ -100,13 +102,15 @@ function menu(fname) ...@@ -100,13 +102,15 @@ function menu(fname)
if(cmd==undefined) if(cmd==undefined)
continue; continue;
if(isdigit(cmd) && num_exec) { log("menu.num_exec = " + menu.num_exec);
if(parseInt(cmd)*10 > maxnum) log("menu.maxnum = " + menu.maxnum);
eval(num_exec); if(isdigit(cmd) && menu.num_exec) {
if(parseInt(cmd)*10 <= menu.maxnum)
eval(menu.num_exec);
continue; continue;
} }
if(hotkeys && cmd.toUpperCase()==hotkey_ext) if(menu.hotkeys && cmd.toUpperCase()==menu.hotkey_ext)
cmd+=console.getkey(); cmd+=console.getkey();
print(); print();
...@@ -118,3 +122,5 @@ function menu(fname) ...@@ -118,3 +122,5 @@ function menu(fname)
menu_stack.pop(); menu_stack.pop();
} }
log("exiting");
\ No newline at end of file
...@@ -3,22 +3,30 @@ load("uifcdefs.js"); ...@@ -3,22 +3,30 @@ load("uifcdefs.js");
main(argc, argv); main(argc, argv);
function edit_menu(fname)
{
var menu = read_menu(fname);
if(!menu)
return menu;
var options=[];
for(var i in menu)
options.push(format("%-15s ", i) + menu[i]);
uifc.list(WIN_MID,"Options",options);
}
function main(argc, argv) function main(argc, argv)
{ {
uifc.init("Synchronet Menu Editor", "ansi"); uifc.init("Synchronet Menu Editor");
js.on_exit("uifc.bail()"); js.on_exit("uifc.bail()");
if(argc)
return edit_menu(argv[0]);
while(1) { while(1) {
var menu_list = directory(system.exec_dir + "*.menu"); var menu_list = directory(system.exec_dir + "*.menu");
var selection = uifc.list(WIN_MID|WIN_INS|WIN_XTR,"Menu Files",menu_list); var selection = uifc.list(WIN_ORG|WIN_MID|WIN_INS|WIN_XTR,"Menu Files",menu_list);
if(selection<0) if(selection<0)
break; break;
var menu = read_menu(file_getname(menu_list[selection])); edit_menu(file_getname(menu_list[selection]));
if(!menu)
continue;
var options=[];
for(var i in menu)
options.push(format("%-25s ", i) + menu[i]);
uifc.list(WIN_MID,"Options",options);
} }
} }
prompt:"-c\r\n bhMain nc h"+(user.security.exemptions&UFLAG_T ? "@TUSED@":"@TLEFT@")+" nc[h@GN@nc] @GRP@ [h@SN@nc] @SUB@: n" prompt:"-c\r\n bhMain nc h"+(user.security.exemptions&UFLAG_T ? "@TUSED@":"@TLEFT@")+" nc[h@GN@nc] @GRP@ [h@SN@nc] @SUB@: n"
exec: maxnum = msg_area.grp_list[bbs.curgrp].sub_list.length exec: menu.maxnum = msg_area.grp_list[bbs.curgrp].sub_list.length
expert: true expert: true
num_exec: bbs.cursub = parseInt(cmd)-1; num_exec: bbs.cursub = parseInt(cmd)-1;
hotkey_ext: / hotkey_ext: /
menu_column_width=11 column_width=11
menu_reverse = true reverse = true
[A] [A]
description: Option A description: Option A
...@@ -25,9 +25,12 @@ exec: bbs.post_msg() ...@@ -25,9 +25,12 @@ exec: bbs.post_msg()
description: test description: test
exec: print("blah") exec: print("blah")
[s]
exec: exec_menu("sub")
[x] [x]
description: exit description: exit
exec: done=true exec: done=true
[?] [?]
exec: show_menu=true exec: menu.show=true
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment