import fonts.fontAwesome;
import win.ui;
/*DSG{{*/
var winform = win.form(text="英语语法解析工具 ( 点击语法树节点自动选中源文本, 文本框右键菜单增加翻译、朗读、搜索等 )";right=890;bottom=811;parent=...)
winform.add(
btnParse={cls="button";text="解析语法";left=735;top=97;right=853;bottom=143;dr=1;dt=1;font=LOGFONT(name='FontAwesome');z=3};
editMessage={cls="richedit";left=14;top=89;right=721;bottom=151;dl=1;dr=1;dt=1;edge=1;font=LOGFONT(h=-16);hidesel=false;hscroll=1;multiline=1;vscroll=1;z=4};
editText={cls="richedit";text="I want to go home";left=14;top=6;right=871;bottom=66;dl=1;dr=1;dt=1;edge=1;font=LOGFONT(h=-16);hidesel=false;hscroll=1;multiline=1;vscroll=1;z=2};
lbTranslate={cls="static";left=13;top=68;right=879;bottom=86;dl=1;dr=1;dt=1;transparent=1;z=6};
treeview={cls="treeview";left=17;top=184;right=874;bottom=804;asel=false;bgcolor=15793151;db=1;dl=1;dr=1;dt=1;edge=1;hscroll=1;infoTip=1;vscroll=1;z=1};
wmplayer={cls="static";text="wmplayer";left=6;top=822;right=216;bottom=856;db=1;dl=1;transparent=1;z=5}
)
/*}}*/
import web.json;
winform.treeview.onnotify = function(id,code,ptr){
if( code == 0xFFFFFE3D/*_TVN_SELCHANGEDW*/ ){
var hItem = winform.treeview.getSelection();
if(hItem){
winform.editMessage.text = winform.treeview.getItemText(hItem)
var data = winform.treeview.getItemData(hItem);
if(type(data)!=type.table){
hItem = winform.treeview.getParentItem(hItem)
data = hItem ? winform.treeview.getItemData(hItem);
}
if(type(data)==type.table){
if(data.index && data.pos && data.token){
var text = winform.editText.text;
var index = 0;
for i,j in string.gmatch(text ,"()\w+()") {
index++;
if(index==data.index){
winform.editText.setsel(i,j-1)
break ;
}
}
}
}
}
}
elseif(code = 0xFFFFFFFB/*_NM_RCLICK*/){
var hItem,tvht = winform.treeview.hitTest();
winform.treeview.setSelected(hItem);
var menu = win.ui.popmenu(winform)
menu.add("删除",
function(){
winform.treeview.delItem(hItem)
}
)
menu.popup(x,y,true);
}
}
var parser = function(winform){
winform.btnParse.disabledText = {'\uF254';'\uF251';'\uF252';'\uF253';'\uF250'}
import youdao.fanyi;
var fanyi = youdao.fanyi();
winform.lbTranslate.text = fanyi.translate(winform.editText.text)[["translateResult"]][[1]][[1]][["tgt"]];
import parseyMcParseface;
var deepAi = parseyMcParseface.deepAi();
var result = deepAi.parseymcparseface(sentence=winform.editText.text)
winform.treeview.parseData = result;
result = table.mapDeep(result,function(v,k,result){
if(k=="pos"){
var en,zh = parseyMcParseface.pos.tag.en[v],parseyMcParseface.pos.tag.zh[v]
if(en&&zh){
return zh[1] + " " + en[1]
}
}
if(k=="label"){
var en,zh = parseyMcParseface.pos.label.en[v],parseyMcParseface.pos.label.zh[v]
if(en&&zh){
return v + " " + zh[1] + " " + en[1]
}
}
if(k=="dep"){
return parseyMcParseface.dep.zh[k][1];
}
return v;
})
if(result && result.output){
winform.treeview.insertTable(result.output[1])
winform.treeview.afterParse();
}
else {
winform.editMessage.text = "遇到错误,试试输入单句,不要提交大段英文"
}
winform.btnParse.disabledText = null;
}
import parseyMcParseface;
winform.treeview.afterParse = function(){
winform.treeview.enum(
function(hItem,parent){
var str = winform.treeview.getItemText(hItem);
var zh,en = parseyMcParseface.dep.zh[str],parseyMcParseface.dep.en[str]
if(zh && en){
winform.treeview.setItemText(hItem,str + ": " + zh[1] + " " + en[1]);
}
}
)
winform.treeview.expandAll()
}
winform.btnParse.oncommand = function(id,event){
thread.invoke(parser,winform)
}
import process;
import inet.url;
var editMenu = {
{ /*---分隔线---*/ };
{ "翻译/朗读";
function(id){
var word = winform.editText.selText;
if(!#word){
word = winform.editText.text;
}
import youdao.fanyi;
var fanyi = youdao.fanyi();
var result = fanyi.translate(word)[["translateResult"]][[1]][[1]];
if(result){
winform.wmplayer._object.url = "http://fanyi.baidu.com/gettts?lan=en&text="
+ inet.url.encode(word)
+"&spd=3&source=web"
winform.lbTranslate.text = string.concat(result[["tgt"]]," (",result[["src"]],")");
}
else {
winform.lbTranslate.text = "翻译接口错误"
}
fanyi.http.close()
}
};
{ /*---分隔线---*/ };
{ "Google翻译";
function(id){
var word = winform.editText.selText;
if(!#word){
word = winform.editText.text;
}
var url = "https://translate.google.cn/#en/zh-CN/" + inet.url.encode(word);
process.openUrl(url);
}
};
{ "百度翻译";
function(id){
var word = winform.editText.selText;
if(!#word){
word = winform.editText.text;
}
var url = "https://translate.google.cn/#en/zh-CN/" + inet.url.encode(word);
process.openUrl(url);
}
};
{ /*---分隔线---*/ };
{ "Google搜索";
function(id){
var word = winform.editText.selText;
if(!#word){
word = winform.editText.text;
}
var url = "https://www.google.com/search?q=" + inet.url.encode(word);
process.openUrl(url);
}
};
{ "百度搜索";
function(id){
var word = winform.editText.selText;
if(!#word){
word = winform.editText.text;
}
var url = "https://www.baidu.com/s?ie=utf-&wd=" + inet.url.encode(word);
process.openUrl(url);
}
};
}
winform.editText.enablePopMenu(editMenu);
winform.editMessage.enablePopMenu(editMenu);
winform.wmplayer = winform.wmplayer.createEmbed("WMPlayer.OCX");
winform.show();
win.loopMessage();
|