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

winform.txtCode.limit = 0xFFFFFF

winform.btnConv.oncommand = function(id,event){
	var str = winform.txtCode.text ;
	
	//记录常量
	var tconst ={}
	self@ = { //指定元表
	_set = function(k,v){
		if( (k[1]=='_'#) ){ //是下划线开头，并是大写
	    	if( type(v)==type.number) {
	    		if( v > 9 )
	        		table.push(tconst,string.format("%s=@0x%X/*%s*/",k,v,k ) ) 
	        	else {
	        		table.push(tconst,string.format("%s=@%d/*%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;
