Skip to content
Snippets Groups Projects
Select Git revision
  • dailybuild_linux-x64
  • dailybuild_win32
  • master default protected
  • dd_msg_reader_use_dd_msg_area_chooser_and_area_sort_update
  • sqlite
  • rip_abstraction
  • dailybuild_macos-armv8
  • dd_file_lister_filanem_in_desc_color
  • mode7
  • dd_msg_reader_are_you_there_warning_improvement
  • c23-playing
  • syncterm-1.3
  • syncterm-1.2
  • test-build
  • hide_remote_connection_with_telgate
  • 638-can-t-control-c-during-a-file-search
  • add_body_to_pager_email
  • mingw32-build
  • cryptlib-3.4.7
  • ree/mastermind
  • sbbs320d
  • syncterm-1.6
  • syncterm-1.5
  • syncterm-1.4
  • sbbs320b
  • syncterm-1.3
  • syncterm-1.2
  • syncterm-1.2rc6
  • syncterm-1.2rc5
  • push
  • syncterm-1.2rc4
  • syncterm-1.2rc2
  • syncterm-1.2rc1
  • sbbs319b
  • sbbs318b
  • goodbuild_linux-x64_Sep-01-2020
  • goodbuild_win32_Sep-01-2020
  • goodbuild_linux-x64_Aug-31-2020
  • goodbuild_win32_Aug-31-2020
  • goodbuild_win32_Aug-30-2020
40 results

freqitcfg.js

Blame
  • freqitcfg.js 4.82 KiB
    load("sbbsdefs.js");
    load("uifcdefs.js");
    load("fidocfg.js");
    
    var cfg=new FREQITCfg();
    
    // Backward compatability hack.
    if (typeof uifc.list.CTX === "undefined") {
    	uifc.list.CTX = function () {
    		this.cur = 0;
    		this.bar = 0;
    	}
    }
    
    /*
     * Pass false if you will not be immediately redrawing your menu
     */
    var dctx = {};
    var gctx = new uifc.list.CTX();
    function pick_dir(act)
    {
    	var cmd = 0;
    	var libs = Object.keys(file_area.lib);
    	var actflags = act ? WIN_ACT : 0;
    
    	function do_pick_dir(grp) {
    		var dirs;
    		var dircodes;
    		var dir;
    		var ret;
    
    		dir = 0;
    		while (dir >= 0) {
    			if (dctx[grp] === undefined)
    				dctx[grp] = new uifc.list.CTX();
    
    			dircodes = file_area.lib[libs[cmd]].dir_list.map(function(v){return v.code;});
    			dirs = dircodes.map(function(v){return file_area.dir[v].name;});
    			dir = uifc.list(WIN_BOT|WIN_SAV|actflags, "Select Dir", dirs, dctx[grp]);
    			if (dir >= 0)
    				return dircodes[dir];
    		}
    		return undefined;
    	}
    
    	while (cmd >= 0) {
    		cmd = uifc.list(WIN_RHT|WIN_SAV||actflags, "Select Group" , libs, gctx);
    		if (cmd >= 0) {
    			file = do_pick_dir(libs[cmd]);
    			if (file !== undefined)
    				return file;
    		}
    	}
    	return undefined;
    }
    
    var dirctx = new uifc.list.CTX();
    function edit_dirs(list)
    {
    	var dir=0;
    	var dirs;
    
    	while (dir >= 0) {
    		dirs = list.map(function(v){return file_area.dir[v].name;});
    		dir = uifc.list(WIN_ACT|WIN_INS|WIN_INSACT|WIN_DEL|WIN_XTR|WIN_SAV, "Directories", dirs, dirctx);
    		if (dir == -1)
    			return undefined;
    		if (dir == dirs.length || dir & MSK_INS) {
    			dir &= MSK_OFF;
    			var newdir=pick_dir(true);
    			if (newdir) {
    				if (list.indexOf(newdir) !== -1)
    					uifc.msg(newdir+" already in list");
    				else
    					list.splice(dir, 0, newdir);
    			}
    		}
    		else if (dir & MSK_DEL) {
    			dir &= MSK_OFF;
    			list.splice(dir, 1);
    		}
    		else {
    			// TODO... something when it's selected...
    		}
    	}
    	return undefined;
    }
    
    function edit_magic(magic, sect)
    {
    	var cmd=0;
    	var ctx = new uifc.list.CTX();
    	var opts;
    	var val;
    
    	while(cmd >= 0) {
    		opts = ["Dir:    "+magic.dir,
    			"Secure: "+(magic.secure?'Yes':'No'),
    			"Match:  "+magic.match];
    		cmd = uifc.list(WIN_ACT|WIN_BOT|WIN_SAV, "Edit "+sect, opts, ctx);
    		switch(cmd) {
    			case 0:
    				val = pick_dir(true);
    				if (val != undefined)
    					magic.dir = val;
    				break;
    			case 1:
    				magic.secure = !magic.secure;
    				break;
    			case 2:
    				val = uifc.input(WIN_MID|WIN_SAV, "Wildcard Match", magic.match, K_EDIT);
    				if (val != undefined) {
    					if (val.length == 0)
    						uifc.msg("Invalid match!");
    					else
    						magic.match = val;
    				}
    				break;
    			default:
    				break;
    		}
    	}
    }
    
    var mctx = new uifc.list.CTX();
    function edit_magics()
    {
    	var magic=0;
    	var magics;
    	var val;
    	var dir;
    	var mask;
    	var secure;
    
    	while (magic >= 0) {
    		magics = Object.keys(cfg.magic);
    		magic = uifc.list(WIN_ACT|WIN_INS|WIN_INSACT|WIN_DEL|WIN_XTR|WIN_SAV, "Magic Names", magics, mctx);
    		if (magic == -1)
    			return;
    		if (magic == magic.length || magic & MSK_INS) {
    			magic &= MSK_OFF;
    			// TODO: Does WIN_RHT not work for input fields?
    			val = uifc.input(WIN_MID|WIN_RHT|WIN_SAV, "Magic Name", 20);
    			if (val != undefined && val !== '') {
    				if (Object.keys(cfg.magic).map(function(v){return v.toUpperCase();}).indexOf(val.toUpperCase()) >= 0) {
    					uifc.msg("Magic name '"+val+"' already exists!");
    				}
    				else {
    					dir = pick_dir(false);
    					if (dir != undefined) {
    						mask = uifc.input(WIN_MID|WIN_SAV, "Wildcard Match");
    						if (mask != undefined && mask.length > 0) {
    							switch(uifc.list(WIN_MID|WIN_SAV, "Secure Only?", ["No", "Yes"])) {
    								case 0:
    									secure=false;
    									break;
    								case 1:
    									secure=true;
    									break;
    								case -1:
    									continue;
    							}
    						}
    						cfg.magic[val]={dir:dir, secure:secure, mask:mask};
    					}
    				}
    			}
    		}
    		else if (magic & MSK_DEL) {
    			magic &= MSK_OFF;
    			delete cfg.magic[magics[magic]];
    		}
    		else {
    			edit_magic(cfg.magic[magics[magic]], magics[magic]);
    		}
    	}
    }
    
    function main()
    {
    	var cmd=0;
    	var ctx = new uifc.list.CTX();
    	var opts;
    	var val;
    
    	uifc.init("FREQIT Config");
    	while (cmd >= 0) {
    		opts = ["Dirs...", "Secure Dirs...", format("Max Files (%d)", cfg.maxfiles), "Magic Names..."];
    		cmd = uifc.list(WIN_ACT|WIN_ORG|WIN_MID, "FREQIT Options", opts, ctx);
    		switch(cmd) {
    			case 0:		// Dirs
    				edit_dirs(cfg.dirs);
    				break;
    			case 1:		// Secure Dirs
    				edit_dirs(cfg.securedirs);
    				break;
    			case 2:		// Max Files
    				val = uifc.input(WIN_MID|WIN_SAV, "Max Files", cfg.maxfiles.toString(), 10, K_NUMBER|K_EDIT);
    				if (val != undefined)
    					cfg.maxfiles=parseInt(val, 10);
    				break;
    			case 3:		// Magic Names
    				edit_magics();
    				break;
    			case -1:	// Done
    				switch(uifc.list(WIN_ACT|WIN_MID, 'Save File', ['Yes', 'No'])) {
    					case 0:
    						uifc.bail();
    						cfg.save();
    						break;
    					case 1:
    						uifc.bail();
    						break;
    					case -1:
    						cmd = 0;
    						break;
    				}
    		}
    	}
    }
    
    main();