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

Updated for menulib.js support.

parent ba7222f4
Branches
Tags
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