
import win.ui;
import win.ui.menu;
import win.ole.image;
/*DSG{{*/
var winform = win.form(parent=...; min=1;bottom=440;text="全局常量优化工具";right=685;cls="AAU_FORM" )
winform.add( 
txtCode={ bottom=411;right=662;left=25;multiline=1;top=64;z=0;text="_GLOBAL_CONST_AAA=123;
_GLOBAL__CONST_BBB=123;
_GLOBAL__CONST_CCC=123;
";edge=1;cls="edit" };
static={ bottom=50;text="本程序转换标准常量(下划线开始的大写标识符)为智能提示模板格式，
有优化AAuto性能、缩小程序体积的作用";left=40;top=9;transparent=1;z=1;right=407;cls="static" };
btnConv={ bottom=60;text="将常量声明转换为智能提示";left=337;right=588;top=28;z=2;cls="button" }
)
/*}}*/

winform.btnConv.oncommand = function(id,event){
	var str = winform.txtCode.text ;
	
	//记录常量
	var tconst ={}
	self@ = { //指定元表
	_set = function(k,v){
		if( (k[1]=='_'#) && (string.upper(k)==k) ){ //是下划线开头，并是大写
	    	if( type(v)==type.number) 
	        	table.push(tconst,string.format("%s=@0x%X/*%s*/",k,v,k ) ) 
		}
		global[[k]] = v; //这里要用[[ ]] 操作符，不然会再次递归调用_set元方法
	}
	_float = true; //指定元表可修改
	} 
	
	//加载并运行代码
	assert( loadcode(str) ) ();
	 
	//停止记录常量
	self@ = null 
	
	winform.txtCode.text = ' /**intellisense()\r\n' + string.join(tconst,'\r\n') + '\r\nend intellisense**/' ;

}//endproc


winform.show(true) 
win.loopMessage();
return winform;
