You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
324 lines
7.6 KiB
324 lines
7.6 KiB
<?xml version="1.0" encoding="utf-8" ?>
|
|
<jsml xmlns="http://cutesoft.net/jsml"
|
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://cutesoft.net/jsml ../core/jsml.xsd">
|
|
|
|
<execute>
|
|
dialog.set_title("RichTextEditor Developer Center Beta");
|
|
</execute>
|
|
|
|
<panel jsml-class="developerdialog" dock="fill" margin="0" padding="0" back_color="black" text_color="white">
|
|
<xmldata>
|
|
<h1>Help</h1>
|
|
<ul>
|
|
<li>help - print this line</li>
|
|
<li>buildihtml5</li>
|
|
<li>joinallimages</li>
|
|
</ul>
|
|
</xmldata>
|
|
<panel jsml-local="sp" dock="fill" overflow_y="scroll">
|
|
<panel dock="bottom">
|
|
<label dock="left" text=">" width="5" vertical_align="middle" text_align="right" margin="0,1,0,0"/>
|
|
<textbox dock="fill" back_color="black" text_color="white" border_width="0">
|
|
<initialize>
|
|
setTimeout(function(){self.focus();},100);
|
|
</initialize>
|
|
<attach name="enterkey">
|
|
var text=self.get_text()
|
|
self.set_text();
|
|
self.focus();
|
|
text=text.replace(/(^\s+)|(\s+$)/g,'');
|
|
if(text)instance.executeline(text);
|
|
else instance.printtext("");
|
|
</attach>
|
|
<attach name="keydown">
|
|
|
|
</attach>
|
|
</textbox>
|
|
</panel>
|
|
<htmlcontrol dock="fill" jsml-local="hc" overflow="visible">
|
|
</htmlcontrol>
|
|
</panel>
|
|
<method name="jsml_append_xmldata" arguments="xmldata">
|
|
self._xmldata=jsml.get_node_innerxml(xmldata);
|
|
</method>
|
|
<method name="insertdiv" arguments="div">
|
|
<![CDATA[
|
|
hc._content.appendChild(div);
|
|
hc.invoke_notify_content();
|
|
jsml.queue_resumehandler(function()
|
|
{
|
|
sp.set_scrolly(hc.get_demand_height());
|
|
});
|
|
]]>
|
|
</method>
|
|
<method name="printhelp">
|
|
var div=document.createElement("DIV");
|
|
div.innerHTML=this._xmldata;
|
|
self.insertdiv(div);
|
|
</method>
|
|
<initialize>
|
|
var div=document.createElement("DIV");
|
|
div.innerHTML="RichTextEditor : "+editor._config.version+" ? "+editor._config._urlsuffix
|
|
self.insertdiv(div);
|
|
self.printhelp();
|
|
</initialize>
|
|
<method name="printtext" arguments="text,color,bold">
|
|
<![CDATA[
|
|
var div=document.createElement("DIV");
|
|
div.innerHTML=jsml.html_encode(text)||" ";
|
|
if(color)div.style.color=color;
|
|
if(bold)div.style.fontWeight='bold';
|
|
self.insertdiv(div);
|
|
]]>
|
|
</method>
|
|
<method name="executeline" arguments="text">
|
|
<;
|
|
return;
|
|
}
|
|
}
|
|
catch(x)
|
|
{
|
|
self.printtext('error : '+x.message,'red',true);
|
|
return;
|
|
}
|
|
self.printtext('Unknown command : '+text,'red',true);
|
|
]]>
|
|
</method>
|
|
|
|
<method name="joinallimages" arguments="cmdargs">
|
|
<![CDATA[
|
|
if(!jsml.html5)
|
|
{
|
|
self.printtext('Require HTML5','red',true);
|
|
return;
|
|
}
|
|
|
|
var folder=editor._config.folder;
|
|
var skin=editor._config.skin;
|
|
|
|
if(!editor._config.allimageindexdata)
|
|
{
|
|
self.printtext('no config.allimageindexdata','red',true);
|
|
return;
|
|
}
|
|
|
|
var imagenames=editor._config.allimageindexdata.split(',');
|
|
|
|
var allcanvas=document.createElement("canvas");
|
|
allcanvas.width=20;
|
|
allcanvas.height=20*imagenames.length;
|
|
var allctx=allcanvas.getContext("2d");
|
|
|
|
var index=-1;
|
|
|
|
function DoReport()
|
|
{
|
|
var str=allcanvas.toDataURL("image/png");
|
|
str=str.substring("data:image/png;base64,".length);
|
|
|
|
var form=document.createElement("form");
|
|
var textarea=document.createElement("TEXTAREA");
|
|
textarea.value=str;
|
|
textarea.style.width="480px";
|
|
textarea.style.height="320px";
|
|
var div=document.createElement("DIV");
|
|
div.appendChild(form);
|
|
form.appendChild(textarea);
|
|
self.insertdiv(div);
|
|
|
|
self.printtext('completed. count:'+imagenames.length+', size:'+textarea.value.length);
|
|
|
|
if(!cmdargs)return;
|
|
|
|
textarea.name="base64";
|
|
form.method="post";
|
|
form.target="_blank";
|
|
form.action=cmdargs+"?name=all.png&type=image/png";
|
|
form.submit();
|
|
}
|
|
|
|
function DoNext()
|
|
{
|
|
index++;
|
|
var imagename=imagenames[index];
|
|
if(!imagename) return DoReport();
|
|
|
|
var url=folder+"images/"+imagename+".png";
|
|
|
|
var img=document.createElement("IMG");
|
|
img.onload=function()
|
|
{
|
|
allctx.drawImage(img,0,20*index);
|
|
setTimeout(DoNext,1);
|
|
}
|
|
img.onerror=function()
|
|
{
|
|
self.printtext("error:"+url,"red");
|
|
return;
|
|
}
|
|
img.setAttribute("src",url);
|
|
}
|
|
DoNext();
|
|
|
|
]]>
|
|
</method>
|
|
|
|
<method name="buildihtml5">
|
|
<![CDATA[
|
|
|
|
if(!jsml.html5)
|
|
{
|
|
self.printtext('Require HTML5','red',true);
|
|
return;
|
|
}
|
|
|
|
var folder=editor._config.folder;
|
|
var skin=editor._config.skin;
|
|
|
|
var images=[];
|
|
function fillimages(ctrl)
|
|
{
|
|
if(ctrl.is_jsml_type("image"))
|
|
{
|
|
images.push(ctrl.get_src());
|
|
}
|
|
var arr=ctrl.get_children();
|
|
for(var i=0;i<arr.length;i++)
|
|
fillimages(arr[i]);
|
|
}
|
|
fillimages(editor._config.skin_control)
|
|
|
|
var oldcount=0;
|
|
var newcount=0;
|
|
var datamap={};
|
|
var index=-1;
|
|
|
|
var rteic=editor._config._rte_image_cache;
|
|
if(rteic)
|
|
{
|
|
for(var p in rteic)
|
|
{
|
|
var v=rteic[p];
|
|
if(typeof(v)=="string"&&v.substring(0,5)=="data:")
|
|
{
|
|
datamap[p]=v;
|
|
oldcount++;
|
|
}
|
|
}
|
|
}
|
|
|
|
if(editor._config.allimageindexdata)
|
|
{
|
|
var imagenames=editor._config.allimageindexdata.split(',');
|
|
for(var i=0;i<imagenames.length;i++)
|
|
images.push(folder+"images/"+imagenames[i]+".png");
|
|
var newimages=[];
|
|
var mapimages={};
|
|
for(var i=0;i<images.length;i++)
|
|
{
|
|
if(mapimages[images[i]])
|
|
continue;
|
|
mapimages[images[i]]=true;
|
|
newimages.push(images[i]);
|
|
}
|
|
}
|
|
|
|
self.printtext('loading images...');
|
|
|
|
function DoReport()
|
|
{
|
|
var code=[];
|
|
code.push("window._rte_image_cache=new function(){");
|
|
code.push("\r\n\r\n");
|
|
for(var p in datamap)
|
|
{
|
|
code.push("this['");
|
|
code.push(p);
|
|
code.push("']='");
|
|
code.push(datamap[p]);
|
|
code.push("';\r\n");
|
|
}
|
|
code.push("\r\n\r\n}\r\n");
|
|
|
|
var textarea=document.createElement("TEXTAREA");
|
|
textarea.value=code.join("");
|
|
textarea.style.width="480px";
|
|
textarea.style.height="320px";
|
|
var div=document.createElement("DIV");
|
|
div.appendChild(textarea);
|
|
self.insertdiv(div);
|
|
|
|
self.printtext('completed. exists:'+oldcount+', new:'+newcount+', size:'+textarea.value.length);
|
|
}
|
|
function DoNext()
|
|
{
|
|
index++;
|
|
var image=images[index];
|
|
if(!image) return DoReport();
|
|
|
|
var url=image;
|
|
|
|
if(url.substring(0,5)=="data:")
|
|
{
|
|
setTimeout(DoNext,1);
|
|
return;
|
|
}
|
|
if(url.substring(0,folder.length)!=folder)
|
|
{
|
|
self.printtext("skip:"+url,"red");
|
|
setTimeout(DoNext,1);
|
|
return;
|
|
}
|
|
|
|
var img=document.createElement("IMG");
|
|
img.onload=function()
|
|
{
|
|
var canvas=document.createElement("canvas");
|
|
canvas.width=img.width;
|
|
canvas.height=img.height;
|
|
var ctx=canvas.getContext("2d");
|
|
ctx.drawImage(img,0,0);
|
|
|
|
var p=url.substring(folder.length);
|
|
if(!datamap[p])
|
|
newcount++;
|
|
datamap[p]=canvas.toDataURL("image/png");
|
|
setTimeout(DoNext,1);
|
|
}
|
|
img.onerror=function()
|
|
{
|
|
self.printtext("error:"+url,"red");
|
|
setTimeout(DoNext,1);
|
|
}
|
|
img.setAttribute("src",url);
|
|
}
|
|
DoNext();
|
|
|
|
]]>
|
|
</method>
|
|
|
|
</panel>
|
|
|
|
<panel jsml-base="developerdialog" />
|
|
|
|
</jsml>
|