aardio的webview富文本实例

该代码示例展示了一个基于Aardio的富文本实例,包括文件管理、按钮操作(如主页、新建、编辑、退出)、列表视图排序及过滤功能,以及右键菜单的实现,支持文本、图片、表格等内容的处理。
摘要由CSDN通过智能技术生成

import win.ui;
import godking.vlistEx;//控件前
/*DSG{{*/
var winform = win.form(text="富文本实例";right=759;bottom=469)
winform.add(
buttonBegin={cls="button";text="主页";left=378;top=416;right=450;bottom=458;color=14120960;font=LOGFONT(h=-14);note=" ";z=8};
buttonClose={cls="button";text="退出";left=681;top=416;right=753;bottom=458;color=14120960;font=LOGFONT(h=-14);note=" ";z=5};
buttonEdit={cls="button";text="编辑";left=529;top=416;right=601;bottom=458;color=14120960;font=LOGFONT(h=-14);note=" ";z=2};
buttonNew={cls="button";text="新建";left=226;top=416;right=298;bottom=458;color=14120960;font=LOGFONT(h=-14);note=" ";z=4};
custom={cls="custom";text="自定义控件";left=208;top=8;right=752;bottom=408;ah=1;aw=1;dl=1;dt=1;z=1};
listview={cls="vlistEx";left=8;top=40;right=192;bottom=408;ah=1;dl=1;dt=1;edge=1;z=3};
plusFile={cls="plus";left=40;top=415;right=194;bottom=447;align="left";border={bottom=1;color=-6908266};dl=1;editable=1;font=LOGFONT(h=-13);notify=1;textPadding={top=6;bottom=2};z=9};
plusKey={cls="plus";left=38;top=0;right=192;bottom=32;align="left";border={bottom=1;color=-6908266};dl=1;editable=1;font=LOGFONT(h=-13);notify=1;textPadding={top=6;bottom=2};z=6};
static={cls="static";text="文件";left=10;top=423;right=38;bottom=447;ah=1;aw=1;dl=1;transparent=1;z=10};
staticFilter={cls="static";text="筛选";left=8;top=8;right=36;bottom=32;ah=1;aw=1;dl=1;transparent=1;z=7};
staticTime={cls="static";text="时间";left=44;top=437;right=192;bottom=450;ah=1;dl=1;transparent=1;z=11}
)
/*}}*/

//aardio富文本实例

import console;
import fsys.file;
import time;
import win.ui.atom;
import win.dlg.message;
import godking.message;
import godking.inputBox;
import web.view;
import yang.ice_editor;
import crypt.bin;

//工具-编码-GUID生成器
var atom,hwnd = winform.atom("B0768BAB-8031-4F84-89BB-732B2D59D7E9");
if(!atom){
	win.quitMessage();
	return;
}

win.setPos(winform.hwnd,0,0,1024,768)

var wb = web.view(winform.custom);
wb.enableDefaultContextMenus(false); //禁止鼠标右键

topHtml = /**
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<style type="text/css">html,body{ height:100%; } </style>
</head>
<body style="background:#A6CAF0;overflow:hidden;">
<center>
<br><br>
<font size="72pt" color="#00753D"><b>欢迎使用富文本实例</b></font>
<br>
**/
footHtml = /**
</center>
</body></html>
**/

html = topHtml+`
<table width=85%><tr><td>
<br>目录:rich
<br>格式:.txt(其实是html富文本)
<br>新建:指定文件名,或自动日期(1).txt,最大值100个
<br>维护:右键菜单,更名或删除
<br>文字:直接复制粘贴
<br>图片:截图、图片文件复制粘贴,保存为 data:image/png
<br>表格:网页表格、Word表格、Excel表格(Notepad可转换为无边框)复制粘贴
<br>excel表格:可复制为图片,格式为位图
</td></tr></table>
`+footHtml

nohtml = topHtml++`
<table width=85%><tr><td>
<br>无内容
</td></tr></table>
`++footHtml

wb.html = html;

var saveDir = io.fullpath(".")++"\rich\";
if _STUDIO_INVOKED saveDir="D:\1_aardio\rich\";
//console.log(saveDir)
if !io.exist(saveDir) io.createDir(saveDir);

var saveFile,title = null,null;
var dataTable,dataTableClone = {},{};

var today = time(time.now(),"%Y%m%d"); //全局取值

//读目录
winform.readDirOld = function(){
	dataTable = {};
	dataTable['fields']={"file"};
	fsys.enum( saveDir, "*.txt",
		function(dirPath,fileName){
			table.push(dataTable,{"file"=fileName});
		} 
	);
	//console.dump(dataTable)
}

//读目录:修改时间排序
winform.readDir = function(){
	dataTable = {};
	dataTable['fields']={"file","fileTime"};
	fsys.enum( saveDir, "*.txt",
		function(dirPath,fileName){
			var f = fsys.file(saveDir++fileName,"r");
			fileTime = time(tonumber(f.getTime().write),"%Y-%m-%d %H:%M:%S")
			f.close();
			table.push(dataTable,{"file"=fileName,"fileTime"=fileTime});
		}
	);
	
	//时间大到小排序
	table.sort(dataTable,function(b){
		return b.fileTime<owner.fileTime
	});
	
	dataTableClone = table.clone(dataTable)
	//console.dump(dataTable)
}

winform.toVlist = function(){
	if #dataTable {
		winform.listview.onlyText = true;
		winform.listview.setTable(dataTable);
		winform.listview.setColumns("文件名称"); //重置标题
	}
}
winform.readDir();
winform.toVlist();

winform.plusKey.editBox.wndproc = function(hwnd,message,wParam,lParam){
	if(message == 0x101/*_WM_KEYUP*/){
        //console.dump(dataTableClone); //提前深拷贝
        if !#winform.plusKey.text dataTableFilter=table.clone(dataTableClone)
        if #winform.plusKey.text {
			dataTableFilter = table.filter(dataTableClone,function(v,index){
				//console.dump(v.file,tostring(winform.plusKey.text))
				return string.match(v.file,tostring(winform.plusKey.text))
			});
			dataTableFilter['fields']={'file'};
		}
		//console.dump("filter:",dataTableFilter);
		winform.listview.onlyText = true;
		winform.listview.setTable(dataTableFilter);
		winform.listview.setColumns("文件名称"); //重置标题
    }
	//无返回值则继续调用默认回调函数
}

winform.listview.onClick = function(row/*行*/,col/*列*/){
	/*鼠标左键点击项目事件*/
	//row=0空行,getText报错
	if row {
		//var fileName = winform.listview.getText(row, col);
		var fileName,fileTime = dataTable[row]['file'],dataTable[row]['fileTime']
		saveFile = saveDir++fileName;
		title = string.match(saveFile,`.*\\(.*)`);
		当前文件
		winform.plusFile.text = fileName;
		winform.staticTime.text = fileTime;
		//预览
		//console.log(saveFile,title);
		wb.html = string.load(saveFile);
		if !#string.load(saveFile) wb.html = nohtml
	}
}

/**
winform.listview.onEditBegin = true; 
winform.listview.onEditBegin = function(row/*行*/,col/*列*/){ //允许编辑
	return true;
}

winform.listview.onEditEnd = function(row/*行*/,col/*列*/){ //允许编辑
	return true;
}

winform.listview.onnotify = function(id,code,ptr){
	if( code == 0xFFFFFF9B/*_LVN_ITEMCHANGED*/ ){
		var row = winform.listview.selIndex;
	}
}
**/

winform.listview.onSortColumn = function(col,desc){
	/*点击列标题进行排序。col:列号,从1开始。desc:是否倒序。*/
	owner.sort( col, desc, 0 /*数据转换:0默认 1时间 2数值 3文本*/ ,false /*使用微软api进行文本排序*/ );
}

winform.listview.onRClick = function(row/*行*/,col/*列*/){
	/*鼠标右键点击项目事件*/
	//var fileName = owner.getText(row, col);
	//var fileName = dataTable[row][dataTable['fields'][col]]
	var fileName = dataTable[row]['file']
	//console.log(fileName);
	winform.popmenu = win.ui.popmenu(winform);//创建弹出菜单
	winform.popmenu.addTable( {
		{ "更名";
			function(id){
				//修改库 show = function(msg,dlgValue,isPassword=false);
				var new = godking.inputBox( winform );
				var newFile = new.show("请输入新文件名:",fileName,false);
				if #newFile {
					if io.exist(saveDir++newFile) {
						winform.msgErr("文件已存在!");
					} else {
						if !io.exist(saveDir++newFile) {
							var tab = io.splitpath(newFile);
							if !#tab.ext newFile += ".txt";
							//console.log(saveDir+fileName,saveDir++newFile)
							io.rename(saveDir+fileName,saveDir++newFile);
							winform.msgOk("更名成功!"); //x
						} else {
							winform.msgErr("更名失败!");
						}
					}
				} else {
					winform.msgErr("未输入新文件名!");
				}
				winform.init(); //主页
			} 
		};
		{ "删除";
			function(id){
				var currFile = saveDir++fileName;
				if winform.msgboxTest("是否真的删除?") {
					//fsys.file(currFile).close()
					//fsys.file(currFile).delete()
					io.remove(currFile);
					winform.msgOk("删除成功!");
					winform.init(); //主页
				}
			} 
		};
	} )
	winform.popmenu.popup();
}

winform.buttonNew.oncommand = function(id,event){
	//新建
	var newFile,newFileFlag = null,null
	if !#winform.plusFile.text {
		newFile = saveDir++tostring(today)++".txt";
		if !io.exist(newFile){
			newFileFlag = true;
		} else {
			for(i=1;100;1){
				newFile = saveDir++tostring(today)++"("++i++")"++".txt";
				if !io.exist(newFile) {
					newFileFlag = true;
					break;
				}
			}
		}
	} else {
		newFile = saveDir++winform.plusFile.text;
		var tab = io.splitpath(newFile);
		if !#tab.ext newFile += ".txt";
		if !io.exist(newFile) {
			newFileFlag = true;
		} else {
			winform.msgOk("文件已存在!")
		}
	}
	//console.log("newFile:",newFile,newFileFlag)
	if newFileFlag {
		string.save(newFile,"");
		winform.init(); //主页
	}
}

winform.init = function(){
	winform.plusFile.text = "";
	winform.staticTime.text = "";
	winform.readDir();
	winform.toVlist();
	wb.html = html;	
}

winform.buttonBegin.oncommand = function(id,event){
	//主页
	winform.init()
}

winform.buttonEdit.oncommand = function(id,event){
	if !saveFile return ;
	yang.ice_editor.start(,function(html,text){
		/*回调函数对富文本进行处理*/
		wb.html = html;
		//自动保存
		string.save(saveFile,html);
		winform.msgOk("保存成功!");
	},title,string.load(saveFile));
	
}

winform.buttonClose.oncommand = function(id,event){
	win.quitMessage();
}



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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值