import win.ui; /*DSG{{*/ var winform = win.form(text="aardio form";right=939;bottom=772;bgcolor=0xFFFFFF) winform.add( custom={cls="custom";left=148;top=6;right=921;bottom=751;bgcolor=0xFFFFFF;db=1;dl=1;dr=1;dt=1;z=4}; static={cls="static";left=139;top=7;right=140;bottom=757;bgcolor=0xFF9F1E;clip=1;db=1;dl=1;dt=1;z=3}; tabPlus1={cls="plus";text="模板控件";left=1;top=34;right=139;bottom=63;align="right";bgcolor=0xFF9F1E;clip=1;dl=1;dt=1;font=LOGFONT(h=-14);paddingRight=21;z=1}; tabPlus2={cls="plus";text="模板控件";left=1;top=63;right=139;bottom=92;align="right";bgcolor=0xFF9F1E;clip=1;dl=1;dt=1;font=LOGFONT(h=-14);paddingRight=21;z=2} ) /*}}*/ //创建高级选项卡 import win.ui.tabs; //至少要添加2个创建好的选项卡(作为设计模板,创建成功后可清除) var tabs = win.ui.tabs(winform.tabPlus2,winform.tabPlus1); //指定选项卡的外观样式,用法请参考plus控件说明 tabs.skin( background = { //背景 default = 0xFFFFFFFF; } color = { //文本颜色 hover = 0xF00000FF; } border = { //边框 default = { bottom = 1;color= 0xFF1E9FFF; } hover = { bottom = 1;right = 4;color= 0xFF1E9FFF; } } checked = { //选中状态 background = { hover = 0xFF99CCFF; focus = 0xFF1E9FFF; active = 0xFF333366; default = 0xFF1E9FFF; } color = { //文本颜色 hover = 0xFF000000; default = 0xFFFFFFFF; } border = { //边框 hover = { right = 2;color=0xFF1E9FFF} default = { right = 2;color=0xFF1E9FFF} } } ) tabs.clear(); import web.form; var wb = web.form( win.form(),5/*_UIFLAG_DIALOG*/,,,true); import process; wb.external ={ openSite = function(){ import ide; ide.openDocument("doc://guide/quickstart/web-server.html#create-project") } } wb.html = /** 网站程序 同一套 aardio 网站代码可运行于 IIS 这样 Web 服务器环境, 也可运行于标准库 wsock.tcp.simpleHttpServer / asynHttpServer 创建的HTTP服务器环境。 aardio 网站开发、FastCGI 开发入门教程 一、aardio 代码如果以 HTML 代码开始,或以 <? 标记开始则自动启用模板语法。 aardio 代码可以是纯 aardio 代码,也可以是纯 HTML,或者是 HTML、aardio 相互混合的模板代码。 可直接将 HTML 模板代码复制到 aardio 编辑器中运行并预览网页。 二、启用模板语法以后,aardio 代码必须置于 <? ..... ?> 内部。aardio 将不在 <? ..... ?> 之内的部分作为参数调用全局函数 print 函数输出。模板语法并不限于输出 HTML 代码 - 而是可用于输出任何文本。 三、使用 print 函数的规则: 1、aardio 中全局 print 函数只能用于捕获或修改模板输出,不可用于其他用途。 2、print 允许接收多个参数,并且必须对每个参数调用 tostring() 以转换为字符串。 3、在一个独立 aardio 模板文件解析结束时,print 函数将收到一个 null 参数调用。 四、模板开始标记 <? 必须独立,不能紧跟英文字母。例如 <?xml..... 不被解析为 aardio 代码段开始标记。 另外,aardio 总是忽略文件开始的空白字符(包含空格、制表符,换行)。 五、可以使用 <?=表达式?> 输出文本 - 作用类似于 print( 表达式 ),可用逗号分隔多个表达式。 aardio 会忽略表达式前面等号首尾的空白字符。 六、aardio 文件只能以 UTF-8 编码保存,不建议添加 UTF8 BOM。 **/ winform.setTimeout( function(){ wb.html = wb.html; },10 ); wb._form.getTemplatePath = function(){ return io.fullpath("/template/website/") } //动态添加更多选项卡 tabs.add({ text="网站程序"; },wb._form) import web.form; var wb = web.form( win.form(),5/*_UIFLAG_DIALOG*/,,,true); wb.html = /** HTTP服务端 标准库 wsock.tcp.simpleHttpServer 可用于创建多线程 HTTP 服务端。 标准库 wsock.tcp.asynHttpServer 可用于创建单线程异步模式的服务端。 这些服务端都是由纯 aardio 代码实现,不需要携带或安装其他第三方组件。 创建这些服务端仅仅需要很少的代码。 这个示例工程用 wsock.tcp.asynHttpServer 创建一个单线程异步服务端。 支持文件表单上传,分块传输协议,保持连接(Keep Alive),支持断点续传,支持 304 缓存, 可以与 WebSocket 服务端共存共享端口,请参考 aardio 范例: Web应用/WebSocket。 接口兼容 IIS/FastCGI 下 aardio 编写的网站。 同一个网站在 IIS 上可以跑,在几句代码就实现的 asynHttpServer 也可以跑起来。 **/ wb._form.getTemplatePath = function(){ return io.fullpath("/template/web-server/") } tabs.add({ text="Web 服务器"; },wb._form) tabs.selIndex = 1; //也可以用下面的代码自定义关闭按钮的外观样式 tabs.closeButton.skin( background = { hover = 0xFFe35c51; active = 0xFF8f241b; default = 0x99FFCC66; } color = { hover = 0xFFFFFFFF; active = 0xFFEEEEEE; default = 0xCCFFFFFF; } ) //可以自定义关闭按钮在选项卡上的显示位 tabs.beforeShowCloseButton = function(tab,rcTab,rcCloseButton){ return rcTab.right - rcCloseButton.width() - 5, rcTab.top + ( rcTab.height() - rcCloseButton.height() )/2; } winform.getTemplatePath = function(){ return tabs.selForm.getTemplatePath() } winform.onProjectCreated = function(projectDir,pathMain){ if(tabs.selForm.onProjectCreated){ return tabs.selForm.onProjectCreated(projectDir,pathMain); } } winform.show(); win.loopMessage(); return winform;