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;