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.

376 lines
11 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">
<panel jsml-class="_shared_layout_{skin}_{color}_{toolbar}" dock="fill" overflow="visible" jsml-append="false">
<jsml-ref name="rteborderstyle"/>
<initialize>
self.toggle_css_class("tbtoolbar_{skin}");
self.toggle_css_class("tbtoolbar_{color}");
self.toggle_css_class("tbtoolbar_{skin}_{color}");
</initialize>
<jsml-ref name="toolbar_{toolbar}_{skin}_{color}"/>
</panel>
<jsml-def name="_shared_layout_{skin}_{color}">
<initialize>
self.toggle_css_class("rteskin_{skin}");
self.toggle_css_class("rteskin_{color}");
self.toggle_css_class("rteskin_{skin}_{color}");
</initialize>
<panel dock="bottom" height="26" padding="1,1,1,3" border_width="1,0,0,0" css_class="rtelayoutbottom" visible="false">
<panel jsml-base="tbgroup_{skin}_{color}" dock="left" margin="0,2,0,2" visible="false">
<image jsml-base="image_{skin}_{color}" command="TabEdit" imagename="design" overflow="visible" tooltip="@TABEDIT">
<attach name="editor_ready" arguments="je,editor">
if(!editor._config.showeditmode)self.set_visible(false);
</attach>
</image>
<image jsml-base="image_{skin}_{color}" command="TabCode" imagename="htmlview" overflow="visible" tooltip="@TABCODE">
<attach name="editor_ready" arguments="je,editor">
if(!editor._config.showcodemode)self.set_visible(false);
</attach>
</image>
<image jsml-base="image_{skin}_{color}" command="TabView" imagename="preview" overflow="visible" tooltip="@TABVIEW">
<attach name="editor_ready" arguments="je,editor">
if(!editor._config.showpreviewmode)self.set_visible(false);
</attach>
</image>
<attach name="editor_ready" arguments="je,editor">
if(editor._config.showeditmode)self.set_visible(true);
if(editor._config.showcodemode)self.set_visible(true);
if(editor._config.showpreviewmode)self.set_visible(true);
</attach>
</panel>
<panel dock="right" jsml-base="rtepluginholder" plugin="resizecorner" width="10" overflow="visible" />
<panel dock="right" jsml-base="rtepluginholder" plugin="zoomview" tooltip="@ZOOM" width="10" overflow="visible" />
<panel dock="right" jsml-base="rtepluginholder" plugin="statistics" width="10" overflow="visible" />
<panel dock="fill" jsml-base="rtepluginholder" plugin="taglist" />
<method name="find_config">
<![CDATA[
for(var ctrl=self;ctrl!=null;ctrl=ctrl.get_jsml_parent())
if(ctrl._rteconfig)return ctrl._rteconfig;
]]>
</method>
<initialize>
<![CDATA[
setTimeout(function()
{
var config=self.find_config();
if(config&&!config.showbottombar)
return;
self.set_visible(true);
},30);
]]>
</initialize>
</panel>
<panel jsml-member="tabeditpanel" dock="fill">
<panel dock="top" overflow_y="visible" padding="1" border_width="0,0,1,0" border_color="#7E9DB9" css_class="rtelayouttop" visible="false">
<method name="find_config">
<![CDATA[
for(var ctrl=self;ctrl!=null;ctrl=ctrl.get_jsml_parent())
if(ctrl._rteconfig)return ctrl._rteconfig;
]]>
</method>
<initialize>
<![CDATA[
setTimeout(function()
{
var config=self.find_config();
if(config&&!config.showtoolbar)
return;
self.set_visible(true);
setTimeout(function()
{
var ctrl=jsml.class_create_instance("_shared_layout_{skin}_{color}_{toolbar}");
self.append_child(ctrl);
if(self._rteinstance)ctrl.invoke_recursive("editor_ready",self._rteinstance);
},222);
},10);
]]>
</initialize>
<attach name="editor_ready" arguments="je,editor">
<![CDATA[
self._rteinstance=editor;
editor.AttachEvent("ReloadToolbar",function()
{
self.dispose_children();
var ctrl=jsml.class_create_instance("_shared_layout_{skin}_{color}_{toolbar}");
self.append_child(ctrl);
ctrl.invoke_recursive("editor_ready",editor);
});
]]>
</attach>
</panel>
<panel jsml-local="rulerpanel1" visible="false" dock="top" height="15" back_color="white">
<panel dock="left" width="15" height="15" border_color="#9EAAB6" border_width="0,1,1,0"></panel>
<panel dock="fill" background="white url({folder}images/ruler-horizontal.png) repeat-x">
</panel>
</panel>
<panel jsml-local="rulerpanel2" visible="false" dock="left" width="15" background="white url({folder}images/ruler-vertical.png) repeat-y" back_color="white"></panel>
<htmlcontrol jsml-member="editor_frame_container" dock="fill" back_color="white">
</htmlcontrol>
<panel dock="fill" cursor="wait" back_color="white">
<attach name="editor_ready" arguments="jevent,arg0">
jsml.dispose_delay(self);
</attach>
</panel>
</panel>
<panel jsml-member="tabcodepanel" dock="fill" visible="false">
<panel dock="top" overflow_y="visible" padding="3,1,1,3" border_width="0,0,1,0" border_color="#7E9DB9" css_class="rtelayouttop" >
<panel dock="fill" jsml-base="rtepluginholder" plugin="toolbar_code" />
</panel>
<panel dock="fill" back_color="black" >
<textbox jsml-member="codebox" text_mode="multipleline" dock="fill" back_color="white" border_color="white" border_width="5,0,5,5" font="normal 12px courier new" >
<attach name="editor_ready" arguments="jevent,arg0">
self._rteinstance=arg0;
</attach>
<attach name="keydown" arguments="je,de">
var editor=self._rteinstance;
if(de.keyCode==editor._config.event_fullscreenkeycode)
{
editor.ExecUICommand(null,"FullScreen");
return de.cancel_default();
}
</attach>
</textbox>
</panel>
</panel>
<panel jsml-member="tabviewpanel" dock="fill" visible="false">
<panel dock="top" overflow_y="visible" padding="3,1,1,3" border_width="0,0,1,0" border_color="#7E9DB9" css_class="rtelayouttop" >
<panel dock="fill" jsml-base="rtepluginholder" plugin="toolbar_view" />
</panel>
<htmlcontrol jsml-member="previewcontrol" dock="fill" back_color="white">
</htmlcontrol>
</panel>
<method name="synctext">
<![CDATA[
if(self._stopsync)return;
self.srchtml=self._rteinstance.GetHtmlCode();
self.codebox.set_text(self.srchtml);
function handletimer()
{
self.synctexttimerid=setTimeout(handletimer,10);
if(self.srchtml!=self.codebox.get_text())
{
self.srchtml=self.codebox.get_text();
self._stopsync=true;
self._rteinstance.SetHtmlCode(self.srchtml);
self._stopsync=false;
}
}
handletimer();
]]>
</method>
<method name="updatepanels" arguments="sync">
<![CDATA[
self.tabeditpanel.set_visible(self._rteinstance.IsTabEdit());
self.tabcodepanel.set_visible(self._rteinstance.IsTabCode());
self.tabviewpanel.set_visible(self._rteinstance.IsTabView());
clearTimeout(self.synctexttimerid);
self.codebox.set_disabled(self._rteinstance._config.readonly);
if(sync&&self._rteinstance.IsTabCode())
{
self.synctext();
}
if(sync)
{
if(self.previewiframe)
{
self.previewiframe.setAttribute("src",self._rteinstance._config.blankfileurl);
self.previewcontrol._content.innerHTML="";
self.previewiframe=null;
}
}
if(sync&&self._rteinstance.IsTabView())
{
self.updatepreviewframe();
}
]]>
</method>
<method name="updatepreviewframe" arguments="doprint">
<![CDATA[
var updated=false;
var config=self._rteinstance._config;
function doupdate()
{
if(updated)return;
updated=true;
self.previewiframe.onload=jsml.empty_function;
if(!self.previewiframe.inited)
self.previewiframe.inited=self._rteinstance.InitPreviewFrame(self.previewiframe);
if(!doprint)
return;
var framewin=self.previewiframe.contentWindow;
var time=new Date().getTime();
framewin.document.execCommand("print",false,null);
if(framewin.print&&new Date().getTime()-time<222)framewin.print();
if(jsml.chrome)
{
setTimeout(function()
{
if(new Date().getTime()-time>222)
return;
alert(self._rteinstance.GetLangText("printblocked"));
},100);
}
}
if(self.previewiframe)
{
doupdate();
self.adjustiframesize();
}
else
{
var iframe=document.createElement("iframe");
self.previewiframe=iframe;
iframe.onload=doupdate;
iframe.setAttribute("sendbox","sendbox");
iframe.setAttribute("src",self._rteinstance._config.blankfileurl);
iframe.setAttribute("frameborder","0");
self.previewcontrol._content.appendChild(iframe);
jsml.queue_resumehandler(function(){self.adjustiframesize()});
}
function checkie678()
{
if(updated)return;
if(!self.previewiframe)return;
if(self.previewiframe.document.readyState=="complete"&&self.previewiframe.document.documentElement)
doupdate();
else
setTimeout(checkie678,100);
}
if(jsml.msie5678)setTimeout(checkie678,100);
]]>
</method>
<method name="adjustiframesize">
if(!self.previewiframe)return;
self.previewiframe.style.width=self.previewcontrol.get_client_width()+"px";
self.previewiframe.style.height=self.previewcontrol.get_client_height()+"px";
jsml.queue_resumehandler(function(){self.previewcontrol.invoke_notify_content()});
</method>
<attach name="resize">
jsml.queue_resumehandler(function(){self.adjustiframesize()});
</attach>
<attach name="editor_ready" arguments="jevent,arg0">
<![CDATA[
self._rteinstance=arg0;
self.mode="edit";
self.updatepanels();
self.codebox.codetabindent=arg0._config.codetabindent
if(self._rteinstance._config.showrulers)
{
rulerpanel1.set_visible(true);
rulerpanel2.set_visible(true);
}
self._rteinstanceeventid=self._rteinstance.AttachEvent(function(editor,e){
if(e.Name=="TabModeChanged")
{
self.updatepanels(true);
if(self._rteinstance.IsTabCode())
self.codebox.start_log();
else
self.codebox.stop_log();
}
if(e.Name=="FullPageChanged")
{
self.updatepreviewframe(false);
}
if(e.Name=="TextChanged")
{
if(self._rteinstance.IsTabCode())
self.synctext();
}
if(e.Name=="DoFocus")
{
if(self._rteinstance.IsTabCode())
self.codebox.focus();
}
if(e.Name=="TCCut"||e.Name=="TCCopy")
{
var html=self.codebox.get_range_text();
if(html)
{
e.ReturnValue=html;
if(e.Name=="TCCut")
{
self.codebox.set_range_text("");
}
}
}
if(e.Name=="TCPaste")
{
self.codebox.set_range_text(e.Arguments[0]);
self.codebox.collapse(false);
}
if(e.Name=="TCAppend")
{
self.codebox.select_all();
self.codebox.collapse(false);
self.codebox.set_range_text(e.Arguments[0]);
self.codebox.collapse(false);
}
if(e.Name=="ExecCommand")
{
switch(e.Arguments[0].toLowerCase())
{
case "print":
self.updatepreviewframe(true);
break;
case "tc_undo":
self.codebox.undo();
break;
case "tc_redo":
self.codebox.redo();
break;
case "tc_selectall":
self.codebox.select_all();
break;
case "tc_delete":
self.codebox.set_range_text("");
break;
}
}
});
]]>
</attach>
</jsml-def>
</jsml>