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.
289 lines
7.4 KiB
289 lines
7.4 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>
|
|
<![CDATA[
|
|
jsml.brsw1=["border-top-width","border-right-width","border-bottom-width","border-left-width"];
|
|
jsml.brsw2=["borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"];
|
|
]]>
|
|
</execute>
|
|
|
|
<jsml-def name="rteborderstyle">
|
|
<attach name="attach_dom">
|
|
<![CDATA[
|
|
if(self._border)return;
|
|
var sty=jsml.msie?self._element.currentStyle:window.getComputedStyle(self._element,null);
|
|
var arr=jsml.msie?jsml.brsw2:jsml.brsw1;
|
|
var bor=[];
|
|
for(var i=0;i<arr.length;i++)
|
|
{
|
|
var val=jsml.msie?sty[arr[i]]:sty.getPropertyValue(arr[i]);
|
|
bor[i]=parseInt(val)||0;
|
|
}
|
|
self.set_border_width(bor);
|
|
]]>
|
|
</attach>
|
|
</jsml-def>
|
|
|
|
<jsml-def name="rtemousecontrol">
|
|
<jsml-ref name="rteborderstyle"/>
|
|
<initialize>
|
|
self._element.ondragstart=new Function("","return false");
|
|
</initialize>
|
|
<attach name="mousehover">
|
|
if(self._hovered)return;
|
|
self._hovered=true;
|
|
self.invoke_event("tooglecssclass","hovered",self._hovered);
|
|
</attach>
|
|
<attach name="mousedown" arguments="jevent,devent">
|
|
self._isclicked=true;
|
|
self.invoke_event("tooglecssclass","clicked",self._isclicked);
|
|
if(devent)devent.cancel_default();
|
|
</attach>
|
|
<attach name="mouseup">
|
|
self._isclicked=false;
|
|
self.invoke_event("tooglecssclass","clicked",self._isclicked);
|
|
</attach>
|
|
<attach name="mouseleave">
|
|
<![CDATA[
|
|
self._hovered=false;
|
|
setTimeout(function()
|
|
{
|
|
if(self._hovered)return;
|
|
self._isclicked=false;
|
|
self.invoke_event("tooglecssclass","hovered",self._hovered);
|
|
self.invoke_event("tooglecssclass","clicked",self._isclicked);
|
|
},1);
|
|
]]>
|
|
</attach>
|
|
<attach name="detach_dom">
|
|
self._hovered=false;
|
|
self._isclicked=false;
|
|
self.invoke_event("tooglecssclass","hovered",self._hovered);
|
|
self.invoke_event("tooglecssclass","clicked",self._isclicked);
|
|
</attach>
|
|
</jsml-def>
|
|
|
|
<jsml-def name="rtebuttoncontrol">
|
|
<jsml-ref name="rtemousecontrol"/>
|
|
<initialize>
|
|
self.toggle_css_class("tbcontrol",true);
|
|
</initialize>
|
|
<property name="checked">
|
|
<get>return self._checked</get>
|
|
<set>self._checked=!!value;this.invoke_event("set_checked");</set>
|
|
</property>
|
|
<property name="disabled">
|
|
<get>return self._disabled</get>
|
|
<set>self._disabled=!!value;this.invoke_event("set_disabled");</set>
|
|
</property>
|
|
<attach name="set_checked">
|
|
self.invoke_event("tooglecssclass","checked",self._checked);
|
|
</attach>
|
|
<attach name="set_disabled">
|
|
self.invoke_event("tooglecssclass","disabled",self._disabled);
|
|
</attach>
|
|
<attach name="tooglecssclass" arguments="jevent,name,mode">
|
|
self.toggle_css_class("tbcontrol_"+name,mode);
|
|
</attach>
|
|
</jsml-def>
|
|
|
|
<jsml-def name="rtecommandcontrol">
|
|
<property name="command">
|
|
<get>
|
|
return self._command;
|
|
</get>
|
|
<set>
|
|
self._command=value;
|
|
self.update_image();
|
|
</set>
|
|
</property>
|
|
<property name="arguments">
|
|
<get>
|
|
return self._arguments;
|
|
</get>
|
|
<set>
|
|
self._arguments=value;
|
|
</set>
|
|
</property>
|
|
<property name="imagename">
|
|
<get>
|
|
return self._imagename;
|
|
</get>
|
|
<set>
|
|
self._imagename=value;
|
|
self.update_image();
|
|
</set>
|
|
</property>
|
|
<method name="find_config">
|
|
<![CDATA[
|
|
for(var ctrl=self;ctrl!=null;ctrl=ctrl.get_jsml_parent())
|
|
if(ctrl._rteconfig)return ctrl._rteconfig;
|
|
var editor=self.find_editor();
|
|
if(editor)return editor._config;
|
|
]]>
|
|
</method>
|
|
<method name="find_editor">
|
|
<![CDATA[
|
|
if(self._rteinstance)return self._rteinstance;
|
|
for(var ctrl=self;ctrl!=null;ctrl=ctrl.get_jsml_parent())
|
|
{
|
|
if(!ctrl._rteinstance)continue;
|
|
self._rteinstance=ctrl._rteinstance;
|
|
return ctrl._rteinstance;
|
|
}
|
|
]]>
|
|
</method>
|
|
|
|
<method name="change_src" arguments="image,value">
|
|
<![CDATA[
|
|
image.set_src(value);
|
|
]]>
|
|
</method>
|
|
<method name="update_image">
|
|
<![CDATA[
|
|
|
|
var image=self.image||self;
|
|
|
|
if(!self._dom_attached)return;
|
|
var imgname=self._imagename||self._command;
|
|
if(!imgname)
|
|
return;
|
|
|
|
imgname=imgname.toLowerCase();
|
|
var imgfile="images/"+imgname+".png";
|
|
|
|
self.change_src(image,"{folder}"+imgfile);
|
|
|
|
]]>
|
|
</method>
|
|
<attach name="attach_dom">
|
|
self._config=self.find_config();
|
|
|
|
self.update_image();
|
|
</attach>
|
|
<attach name="click">
|
|
self.exec_command();
|
|
</attach>
|
|
<method name="exec_command" arguments="suffix,splitcmd">
|
|
<![CDATA[
|
|
var editor=self.find_editor();
|
|
if(!editor)return;
|
|
if(!splitcmd)
|
|
{
|
|
splitcmd=self.get_command();
|
|
if(!splitcmd)return;
|
|
if(suffix)splitcmd+=suffix;
|
|
}
|
|
var args=self.get_arguments();
|
|
if(!args)args=[];
|
|
else args=args.split(',');
|
|
var target=self._commandelement||self._element;
|
|
editor.ExecUICommand(target,splitcmd,args[0],args[1],args[2],args[3]);
|
|
]]>
|
|
</method>
|
|
|
|
</jsml-def>
|
|
|
|
<jsml-def name="rtetoolbarcontrol">
|
|
|
|
<jsml-ref name="rtecommandcontrol" />
|
|
|
|
<attach name="contextmenu" arguments="je,de">
|
|
de.cancel_default();
|
|
</attach>
|
|
|
|
<property name="noactive">
|
|
<get>return self._noactive;</get>
|
|
<set>self._noactive=value;</set>
|
|
</property>
|
|
<attach name="editor_ready" arguments="jevent,arg0">
|
|
<![CDATA[
|
|
self._rteinstance=arg0;
|
|
self._rteinstanceeventid=self._rteinstance.AttachEvent("UpdateUI",function(editor,e){
|
|
self.invoke_event("update_statusui");
|
|
});
|
|
self.invoke_event("update_statusui");
|
|
]]>
|
|
</attach>
|
|
<attach name="disposing">
|
|
if(self._rteinstanceeventid)self._rteinstance.DetachEvent("UpdateUI",self._rteinstanceeventid);
|
|
</attach>
|
|
<attach name="update_statusui">
|
|
<![CDATA[
|
|
var command=self.get_command();
|
|
if(!command)return;
|
|
|
|
var dc=!self._rteinstance.IsCommandReady(command)
|
|
if(dc!=(!!self._disabled))
|
|
{
|
|
self.set_disabled(dc);
|
|
}
|
|
var qc=this._noactive?false:(!!self._rteinstance.IsCommandActive(command));
|
|
if(qc!=(!!self._checked))
|
|
{
|
|
self.set_checked(qc);
|
|
}
|
|
]]>
|
|
</attach>
|
|
</jsml-def>
|
|
|
|
<jsml-def name="rtecommandcolor">
|
|
<panel id="colorpanel" width="16" height="4" left="2" bottom="2" back_color="black" />
|
|
|
|
<attach name="update_statusui">
|
|
<![CDATA[
|
|
var image=self.image;
|
|
var editor=self._rteinstance;
|
|
var cmdlower=self.get_command().toLowerCase();
|
|
var colorpanel=self.find_child("colorpanel");
|
|
if(cmdlower=='forecolor')
|
|
{
|
|
var color=editor.current_forecolor||editor._config.default_forecolor;
|
|
colorpanel.set_back_color(color);
|
|
}
|
|
if(cmdlower=='backcolor')
|
|
{
|
|
var color=editor.current_backcolor||editor._config.default_backcolor;
|
|
colorpanel.set_back_color(color);
|
|
}
|
|
]]>
|
|
</attach>
|
|
</jsml-def>
|
|
|
|
|
|
<image jsml-class="dlimage" cursor="pointer" width="22" height="20" overflow="none" dock="left">
|
|
<jsml-ref name="rtebuttoncontrol" />
|
|
<jsml-ref name="rtetoolbarcontrol"/>
|
|
<initialize>
|
|
self.toggle_css_class("dlimage");
|
|
</initialize>
|
|
<attach name="tooglecssclass" arguments="jevent,name,mode">
|
|
self.toggle_css_class("dlimage_"+name,mode);
|
|
</attach>
|
|
</image>
|
|
|
|
<panel jsml-class="dlgroup" dock="flow" overflow_x="visible" margin="2,3,3,1" height="22" width="20" padding="0,-1,0,-1">
|
|
|
|
<jsml-ref name="rteborderstyle"/>
|
|
|
|
<initialize>
|
|
self.toggle_css_class("dlgroup");
|
|
</initialize>
|
|
<attach name="tooglecssclass" arguments="jevent,name,mode">
|
|
self.toggle_css_class("dlgroup_"+name,mode);
|
|
</attach>
|
|
</panel>
|
|
|
|
|
|
|
|
<execute>
|
|
<![CDATA[
|
|
jsml.rtecommonlibraryloaded=true;
|
|
]]>
|
|
</execute>
|
|
|
|
</jsml>
|