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.

1837 lines
64 KiB

<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="jsml.xsl"?>
<jsml xmlns="http://cutesoft.net/jsml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://cutesoft.net/jsml ../../JSML/jsml.xsd">
<panel jsml-class="subitemfilltype" height="20" width="150">
<panel dock="fill" vertical_align="middle">
<label dock="left" width="10" overflow="visible" text="@Tool_Draw_Mode" horizontal_align="center" vertical_align="middle"></label>
<dropdown dock="left" width="70">
<initialize>
<![CDATA[
self.set_text(ImageEditorDocument.GetOption("Ctx_FillType"));
]]>
</initialize>
<attach name="click">
<![CDATA[
ImageEditorDocument.SetOption("Ctx_FillType", self.get_text());
previewpanel.Refresh();
]]>
</attach>
<listitem text="@Select_Mode_Fill" value="fill"></listitem>
<listitem text="@Select_Mode_Stroke" value="stroke"></listitem>
<listitem text="@Select_Mode_FillStroke" value="fillstroke"></listitem>
</dropdown>
<panel dock="left" width="20" margin="0,0,0,5" vertical_align="middle" horizontal_align="center">
<panel width="16" height="16" jsml-local="previewpanel" tooltip="@Title_Preview">
<initialize>
<![CDATA[
self.Refresh();
]]>
</initialize>
<method name="Refresh">
<![CDATA[
var _forecolor = ImageEditorDocument.GetOption("Ctx_ForeColor");
var _backcolor = ImageEditorDocument.GetOption("Ctx_BackColor");
var _filltype = ImageEditorDocument.GetOption("Ctx_FillType");
self.set_border_width(0);
self.set_back_color("transparent");
if(_filltype=="fill" || _filltype=="fillstroke")
self.set_back_color(_backcolor);
if(_filltype=="stroke" || _filltype=="fillstroke")
{
self.set_border_width(1);
self.set_border_color(_forecolor);
}
]]>
</method>
<attach name="attach_dom">
<![CDATA[
if(self._eventattached)return;
self._eventattached=true;
self._handleOptionChanged=function()
{
self.Refresh();
}
ImageEditorDocument.attach_event("OptionChanged",self._handleOptionChanged);
]]>
</attach>
<attach name="detach_dom">
<![CDATA[
self._eventattached=false;
ImageEditorDocument.detach_event("OptionChanged",self._handleOptionChanged);
]]>
</attach>
<attach name="click" arguments="sender,evt">
<![CDATA[
//popup color picker dialog likes PS
var cp = ImageEditorDocument.$050();
cp.set_target(self);
cp.set_visible(1);
//var style = cp._element.style;
function AdjustPos()
{
var target = self.get_element();
var y = 0;
var x = 0;
while(target != document.body)
{
x += parseInt(target.offsetLeft)||0;
y += parseInt(target.offsetTop)||0;
target = target.parentNode;
}
var left = x + self.get_current_width() + 5;
var top = y;
if(top<0) top =0;
cp.set_offset_x(left);
cp.set_offset_y(top);
}
AdjustPos();
ImageEditorDocument.CancelBubble(evt);
return false;
]]>
</attach>
<method name="SaveColor" arguments="color">
<![CDATA[
if(ImageEditorDocument.GetOption("Ctx_FillType")=="stroke")
{
self.set_border_color(color);
ImageEditorDocument.SetOption("Ctx_ForeColor",color);
}
else
{
self.set_back_color(color);
ImageEditorDocument.SetOption("Ctx_BackColor",color);
}
]]>
</method>
</panel>
</panel>
</panel>
</panel>
<panel jsml-class="subitempentype" height="20" width="150">
<panel dock="fill" vertical_align="middle">
<label dock="left" width="10" overflow="visible" text="@Tool_Draw_Mode" horizontal_align="center" vertical_align="middle"></label>
<dropdown dock="left" width="70">
<initialize>
<![CDATA[
self.set_text(ImageEditorDocument.GetOption("Ctx_PenType"));
]]>
</initialize>
<attach name="click">
<![CDATA[
ImageEditorDocument.SetOption("Ctx_PenType", self.get_text());
previewpanel.Refresh();
]]>
</attach>
<listitem text="@Select_Mode_Fill" value="fill"></listitem>
<listitem text="@Select_Mode_Stroke" value="stroke"></listitem>
<listitem text="@Select_Mode_FillStroke" value="fillstroke"></listitem>
</dropdown>
<panel dock="left" width="20" margin="0,0,0,5" vertical_align="middle" horizontal_align="center">
<panel width="16" height="16" jsml-local="previewpanel" tooltip="@Title_Preview">
<initialize>
<![CDATA[
self.Refresh();
]]>
</initialize>
<method name="Refresh">
<![CDATA[
var _forecolor = ImageEditorDocument.GetOption("Ctx_ForeColor");
var _backcolor = ImageEditorDocument.GetOption("Ctx_BackColor");
var _filltype = ImageEditorDocument.GetOption("Ctx_PenType");
self.set_border_width(0);
self.set_back_color("transparent");
if(_filltype=="fill" || _filltype=="fillstroke")
self.set_back_color(_forecolor);
if(_filltype=="stroke" || _filltype=="fillstroke")
{
self.set_border_width(1);
self.set_border_color(_backcolor);
}
]]>
</method>
<attach name="attach_dom">
<![CDATA[
if(self._eventattached)return;
self._eventattached=true;
self._handleOptionChanged=function()
{
self.Refresh();
}
ImageEditorDocument.attach_event("OptionChanged",self._handleOptionChanged);
]]>
</attach>
<attach name="detach_dom">
<![CDATA[
self._eventattached=false;
ImageEditorDocument.detach_event("OptionChanged",self._handleOptionChanged);
]]>
</attach>
</panel>
</panel>
</panel>
</panel>
<panel jsml-class="patternitem" width="23" height="20" border_width="1" padding="2,1,0,1" border_color="transparent" vertical_align="middle" horizontal_align="center">
<property name="pattern_url">
<get>
return self._pattern_url;
</get>
<set arguments="val">
self._pattern_url = val;
patt.set_src(val);
</set>
</property>
<image jsml-local="patt">
<attach name="click">
<![CDATA[
instance.SetSelected();
]]>
</attach>
</image>
<method name="SetSelected">
<![CDATA[
var img = new Image();
img.onload = function()
{
ImageEditorDocument.SetOption("Ctx_FillPattern",ImageEditorDocument._2d.createPattern(img,"repeat"));
self.set_border_color("rgb(89,89,89)");
}
img.src = self.get_pattern_url();
]]>
</method>
<method name="UnSelected">
<![CDATA[
self.set_border_color("transparent");
]]>
</method>
</panel>
<panel jsml-class="subitempattern">
<htmlcontrol width="20" dock="left" margin="1,0,0,0">
<xmldata>
<input id="cbx_usepattern" type="checkbox">
</input>
</xmldata>
<initialize>
var _usepattern = ImageEditorDocument.GetOption("Ctx_UsePattern");
self.find_element("cbx_usepattern").checked = _usepattern;
</initialize>
<attach name="click">
ImageEditorDocument.SetOption("Ctx_UsePattern",self.find_element("cbx_usepattern").checked);
</attach>
</htmlcontrol>
<label dock="left" width="10" overflow="visible" text="@Tool_Draw_Pattern" tooltip="@Title_UsePattern" vertical_align="middle"></label>
<panel dock="left" jsml-local="patt_1" jsml-base="patternitem" pattern_url="images/pattern/patt_1.gif">
<initialize>
self.SetSelected();
</initialize>
<attach name="click">
instance.ClearAllSelected();
</attach>
</panel>
<panel dock="left" jsml-local="patt_2" jsml-base="patternitem" pattern_url="images/pattern/patt_2.gif">
<attach name="click">
instance.ClearAllSelected();
</attach>
</panel>
<method name="ClearAllSelected">
<![CDATA[
var arr=[patt_1,patt_2];
for(var i=0;i<arr.length;i++)
arr[i].UnSelected();
]]>
</method>
</panel>
<panel jsml-class="subitemgradtype" height="20" width="150">
<panel dock="fill" vertical_align="middle">
<label dock="left" width="10" overflow="visible" text="@Tool_Draw_Mode" horizontal_align="center" vertical_align="middle"></label>
<dropdown dock="left" width="70">
<initialize>
<![CDATA[
self.set_text(ImageEditorDocument.GetOption("Ctx_GradientType"));
]]>
</initialize>
<attach name="click">
<![CDATA[
ImageEditorDocument.SetOption("Ctx_GradientType", self.get_text());
previewpanel.Refresh();
]]>
</attach>
<listitem text="@Select_Gradient_Linear" value="linear"></listitem>
<listitem text="@Select_Gradient_Radial" value="radial"></listitem>
</dropdown>
<panel dock="left" width="20" margin="0,0,0,5" vertical_align="middle" horizontal_align="center">
<panel width="20" height="20" jsml-local="previewpanel" tooltip="Preview">
<initialize>
<![CDATA[
self.Refresh();
]]>
</initialize>
<property name="currenttype">
<get>
return self._currenttype;
</get>
<set arguments="val">
self._currenttype = val;
</set>
</property>
<method name="Refresh">
<![CDATA[
var _gradienttype = ImageEditorDocument.GetOption("Ctx_GradientType");
if(_gradienttype==self.get_currenttype())
return;
self.set_currenttype(_gradienttype);
var suffix = _gradienttype=="radial"?"_radial":"";
self.get_element().style.background="url(images/grad"+suffix+".png) left 2px no-repeat";
]]>
</method>
</panel>
</panel>
</panel>
</panel>
<panel jsml-class="subitemcompositeoperation" vertical_align="middle" horizontal_align="left">
<label dock="left" width="10" overflow="visible" text="@Tool_Draw_Composite" vertical_align="middle"></label>
<image dock="left" jsml-local="img_sourceover" width="18" border_color="rgb(89,89,89)" border_width="1" vertical_align="bottom" src="images/composite_sourceover.gif" tooltip="source-over">
<attach name="click">
<![CDATA[
instance.SaveConfig(self.get_tooltip());
]]>
</attach>
</image>
<image dock="left" jsml-local="img_destinationout" width="18" border_color="transparent" border_width="1" vertical_align="bottom" src="images/composite_destinationout.gif" tooltip="destination-out">
<attach name="click">
<![CDATA[
instance.SaveConfig(self.get_tooltip());
]]>
</attach>
</image>
<image dock="left" jsml-local="img_destinationin" width="18" border_color="transparent" border_width="1" vertical_align="bottom" src="images/composite_destinationin.gif" tooltip="destination-in">
<attach name="click">
<![CDATA[
instance.SaveConfig(self.get_tooltip());
]]>
</attach>
</image>
<image dock="left" jsml-local="img_xor" width="18" border_color="transparent" border_width="1" vertical_align="bottom" src="images/composite_xor.gif" tooltip="xor">
<attach name="click">
<![CDATA[
instance.SaveConfig(self.get_tooltip());
]]>
</attach>
</image>
<initialize>
<![CDATA[
ImageEditorDocument.SetOption("Ctx_CompositeOperation","source-over");
]]>
</initialize>
<method name="SaveConfig" arguments="val">
<![CDATA[
ImageEditorDocument.SetOption("Ctx_CompositeOperation",val);
var imgs = [img_sourceover,img_destinationout,img_destinationin,img_xor];
for(var i=0;i<imgs.length;i++)
{
var img = imgs[i];
if(img.get_tooltip()==val)
img.set_border_color("rgb(89,89,89)");
else
img.set_border_color("transparent");
}
]]>
</method>
</panel>
<panel jsml-class="submenudrawarea" dock="fill" vertical_align="middle">
<panel dock="left" jsml-base="subitemfilltype"></panel>
<label dock="left" width="10" horizontal_align="center" text="|" text_color="gray"></label>
<checkbox dock="left" margin="2,0,0,0">
<attach name="click">
<![CDATA[
if(self.get_checked())
radiuspanel.set_visible(1);
else
radiuspanel.set_visible(0);
ImageEditorDocument.SetOption("Ctx_UseRadius",self.get_checked());
]]>
</attach>
</checkbox>
<label dock="left" width="10" overflow="visible" vertical_align="middle" text="@Tool_Rect_Radius"></label>
<panel dock="left" width="60" jsml-local="radiuspanel" visible="0">
<textbox dock="left" width="40" text="3">
<initialize>
<![CDATA[
ImageEditorDocument.SetOption("Ctx_UseRadius",false);
ImageEditorDocument.SetOption("Ctx_RadiusVal",self.get_text());
self._input.onkeyup = function()
{
var invalidChars = /[^0-9]/gi
if(invalidChars.test(self.get_text())) {
self.set_text(self.get_text().replace(invalidChars,""));
}
}
self._input.onblur = function()
{
var val = self.get_text();
ImageEditorDocument.SetOption("Ctx_RadiusVal",val);
}
]]>
</initialize>
</textbox>
<label dock="left" width="10" text="px"></label>
</panel>
<label dock="left" width="10" horizontal_align="center" text="|" text_color="gray"></label>
<panel dock="left" jsml-base="subitempattern" width="150" vertical_align="middle"></panel>
<label dock="left" width="10" horizontal_align="center" text="|" text_color="gray"></label>
<panel dock="left" jsml-base="subitemcompositeoperation" width="300"></panel>
</panel>
<panel jsml-class="submenudrawarc" dock="fill" vertical_align="middle">
<panel dock="left" jsml-base="subitemfilltype"></panel>
<label dock="left" width="10" horizontal_align="center" text="|" text_color="gray"></label>
<panel dock="left" jsml-base="subitempattern" width="150" vertical_align="middle"></panel>
<label dock="left" width="10" horizontal_align="center" text="|" text_color="gray"></label>
<panel dock="left" jsml-base="subitemcompositeoperation" width="300"></panel>
</panel>
<panel jsml-class="submenugradient" vertical_align="middle">
<panel dock="left" jsml-base="subitemgradtype"></panel>
</panel>
<panel jsml-class="submenudrawline">
<panel dock="left" jsml-base="subitempattern" width="300"></panel>
</panel>
<panel jsml-class="submenudrawpen">
<panel dock="left" jsml-base="subitempentype"></panel>
<label dock="left" width="10" horizontal_align="center" text="|" text_color="gray"></label>
<panel dock="left" jsml-base="subitempattern" width="300"></panel>
</panel>
<panel jsml-class="submenuvarnish">
<label dock="left" width="10" overflow="visible" text="@Tool_Fill_Color" horizontal_align="center" vertical_align="middle"></label>
<panel dock="left" width="20" margin="0,0,0,5" vertical_align="middle" horizontal_align="center">
<panel width="16" height="16" jsml-local="previewpanel" tooltip="@Title_Preview">
<initialize>
<![CDATA[
self.Refresh();
]]>
</initialize>
<method name="Refresh">
<![CDATA[
var _backcolor = ImageEditorDocument.GetOption("Ctx_BackColor");
self.set_border_width(0);
self.set_back_color("transparent");
self.set_back_color(_backcolor);
]]>
</method>
<attach name="attach_dom">
<![CDATA[
if(self._eventattached)return;
self._eventattached=true;
self._handleOptionChanged=function()
{
self.Refresh();
}
ImageEditorDocument.attach_event("OptionChanged",self._handleOptionChanged);
]]>
</attach>
<attach name="detach_dom">
<![CDATA[
self._eventattached=false;
ImageEditorDocument.detach_event("OptionChanged",self._handleOptionChanged);
]]>
</attach>
<attach name="click" arguments="sender,evt">
<![CDATA[
//popup color picker dialog likes PS
var cp = ImageEditorDocument.$050();
cp.set_target(self);
cp.set_visible(1);
//var style = cp._element.style;
function AdjustPos()
{
var target = self.get_element();
var y = 0;
var x = 0;
while(target != document.body)
{
x += parseInt(target.offsetLeft)||0;
y += parseInt(target.offsetTop)||0;
target = target.parentNode;
}
var left = x + self.get_current_width() + 5;
var top = y;
if(top<0) top =0;
cp.set_offset_x(left);
cp.set_offset_y(top);
}
AdjustPos();
ImageEditorDocument.CancelBubble(evt);
return false;
]]>
</attach>
<method name="SaveColor" arguments="color">
self.set_back_color(color);
ImageEditorDocument.SetOption("Ctx_BackColor",color);
</method>
</panel>
</panel>
<label dock="left" width="10" horizontal_align="center" text="|" text_color="gray"></label>
<panel dock="left" jsml-base="subitempattern" width="150" vertical_align="middle"></panel>
</panel>
<panel jsml-class="submenutext" width="450" height="30">
<panel dock="left" width="0">
<panel dock="left" width="40" visible="0">
<label dock="top" height="20" text=""></label>
</panel>
<textbox jsml-local="ipt_text" text_mode="multipleline" height="0"></textbox>
</panel>
<panel dock="top" height="23">
<label dock="left" width="10" overflow="visible" text="@Tool_Text_Font" margin="0,0,0,5" vertical_align="middle"></label>
<panel dock="left" width="100">
<panel jsml-local="ddl_font" jsml-base="subitemdropdown" dock="top" height="22">
<initialize>
self.set_text("Arial");
self._oldval = self.get_text();
</initialize>
<attach name="click">
<![CDATA[
var owner = instance;
var ddl = self;
var box=jsml.class_create_instance("floatbox");
box.show(self.get_element(),0,0,{"floatMode":"b-r"});
var xh = jsml.xmlhttp();
xh.onreadystatechange = function () {
if (xh.readyState < 4) return;
xh.onreadystatechange = new Function();
if (xh.status == 0) return;
var gvars = {};
gvars.doc = ImageEditorDocument;
gvars.box = box;
gvars.loadfunc = function(name)
{
}
gvars.selectfunc = function(name)
{
ddl.set_text(name);
owner.OptionChanged(ddl,name);
}
function initfunc(obj) {
box.append_child(obj);
}
jsml.parse_xmldoc(xh.responseXML, initfunc, gvars);
}
xh.open("GET", "dropdown/fontfamily.xml", true);
xh.send("");
]]>
</attach>
</panel>
</panel>
<button dock="left" width="80" text="@Btn_MoreFonts" margin="0,0,0,2" vertical_align="middle" css_text="border:solid #999999 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px; text-align:center;">
<attach name="click">
<![CDATA[
var owner = instance;
var ddl = ddl_font;
var box=jsml.class_create_instance("floatbox");
box.show(self.get_element(),0,0,{"floatMode":"b-r"});
var xh = jsml.xmlhttp();
xh.onreadystatechange = function () {
if (xh.readyState < 4) return;
xh.onreadystatechange = new Function();
if (xh.status == 0) return;
var gvars = {};
gvars.doc = ImageEditorDocument;
gvars.box = box;
gvars.loadfunc = function(name)
{
ImageEditorDocument.$0110(name);
//ddl.add_item(name);
ddl.set_text(name);
owner.OptionChanged(ddl,name);
}
gvars.selectfunc = function(name)
{
ddl.set_text(name);
owner.OptionChanged(ddl,name);
}
function initfunc(obj) {
box.append_child(obj);
}
jsml.parse_xmldoc(xh.responseXML, initfunc, gvars);
}
xh.open("GET", "dropdown/font.xml", true);
xh.send("");
]]>
</attach>
</button>
<label dock="left" width="10" overflow="visible" text="@Tool_Text_Size" margin="0,0,0,5" vertical_align="middle"></label>
<panel dock="left" width="80">
<panel jsml-local="ddl_size" jsml-base="subitemdropdown" dock="top" height="22">
<initialize>
self.set_text("16px");
self._oldval = self.get_text();
</initialize>
<attach name="click">
<![CDATA[
var owner = instance;
var ddl = self;
var box=jsml.class_create_instance("floatbox");
box.show(self.get_element(),0,0,{"floatMode":"b-r"});
var xh = jsml.xmlhttp();
xh.onreadystatechange = function () {
if (xh.readyState < 4) return;
xh.onreadystatechange = new Function();
if (xh.status == 0) return;
var gvars = {};
gvars.doc = ImageEditorDocument;
gvars.box = box;
gvars.loadfunc = function(name)
{
}
gvars.selectfunc = function(name)
{
ddl.set_text(name);
owner.OptionChanged(ddl,name);
}
function initfunc(obj) {
box.append_child(obj);
}
jsml.parse_xmldoc(xh.responseXML, initfunc, gvars);
}
xh.open("GET", "dropdown/fontsize.xml", true);
xh.send("");
]]>
</attach>
</panel>
</panel>
<label dock="left" width="10" overflow="visible" text="@Tool_Text_Bold" margin="0,0,0,5" vertical_align="middle"></label>
<panel dock="left" width="60">
<panel jsml-local="ddl_bold" jsml-base="subitemdropdown" dock="top" height="22">
<initialize>
self.set_text(ImageEditorDocument.Text["Select_Bool_False"]);
self._oldval = self.get_text();
</initialize>
<attach name="click">
<![CDATA[
var owner = instance;
var ddl = self;
var box=jsml.class_create_instance("floatbox");
box.set_width(60);
box.show(self.get_element(),0,0,{"floatMode":"b-r"});
var xh = jsml.xmlhttp();
xh.onreadystatechange = function () {
if (xh.readyState < 4) return;
xh.onreadystatechange = new Function();
if (xh.status == 0) return;
var gvars = {};
gvars.doc = ImageEditorDocument;
gvars.box = box;
gvars.loadfunc = function(name)
{
}
gvars.selectfunc = function(name)
{
ddl.set_text(name);
owner.OptionChanged(ddl,name);
}
function initfunc(obj) {
box.append_child(obj);
}
jsml.parse_xmldoc(xh.responseXML, initfunc, gvars);
}
xh.open("GET", "dropdown/bool.xml", true);
xh.send("");
]]>
</attach>
</panel>
<dropdown jsml-local="ddl_bold1" dock="top" height="20">
<initialize>
self._oldval = self.get_text();
</initialize>
<attach name="click">
<![CDATA[
instance.OptionChanged(self,self.get_text());
]]>
</attach>
<listitem text="@Select_Bool_False" value="normal"></listitem>
<listitem text="@Select_Bool_True" value="bold"></listitem>
</dropdown>
</panel>
<label dock="left" width="10" overflow="visible" text="@Tool_Text_Color" margin="0,0,0,5" vertical_align="middle"></label>
<panel dock="left" width="20">
<panel jsml-local="Ctx_TextColor" width="16" height="16" border_width="1" margin="3,2,3,2" border_color="gray" tooltip="@Title_Preview">
<attach name="click" arguments="sender,evt">
<![CDATA[
//popup color picker dialog likes PS
var cp = ImageEditorDocument.$050();
cp.set_target(self);
cp.set_visible(1);
//var style = cp._element.style;
function AdjustPos()
{
var target = self.get_element();
var y = 0;
var x = 0;
while(target != document.body)
{
x += parseInt(target.offsetLeft)||0;
y += parseInt(target.offsetTop)||0;
target = target.parentNode;
}
var left = x + self.get_current_width() + 5;
var top = y;
if(top<0) top =0;
cp.set_offset_x(left);
cp.set_offset_y(top);
}
AdjustPos();
ImageEditorDocument.CancelBubble(evt);
return false;
]]>
</attach>
<method name="SaveColor" arguments="color">
self.set_back_color(color);
ImageEditorDocument.SetOption("Ctx_TextColor",color);
instance.OptionChanged(self,color);
ipt_text.set_text_color(color);
</method>
<initialize>
self.set_back_color(ImageEditorDocument.GetOption('Ctx_TextColor') || 'Black');
</initialize>
</panel>
</panel>
<panel dock="left" width="10" overflow="visible" vertical_align="middle">
<htmlcontrol dock="left" width="25" vertical_align="middle">
<xmldata>
<input type="checkbox" id="cbx_newlayer"></input>
</xmldata>
</htmlcontrol>
<label dock="left" width="10" overflow="visible" vertical_align="middle" padding="0,3,0,0" text="@Tool_Text_NewLayer"></label>
</panel>
<panel dock="left" width="60" margin="0,0,0,5" >
<button dock="fill" text="@Btn_Apply" css_text="border:solid #999999 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;">
<attach name="click">
<![CDATA[
var bv = ddl_bold.get_text() == ImageEditorDocument.Text["Select_Bool_False"]?"normal":"bold";
instance.Apply(ipt_text.get_text(),ddl_font.get_text(),ddl_size.get_text(),bv,instance.find_element("cbx_newlayer").checked);
ipt_text.set_text("");
]]>
</attach>
</button>
</panel>
<panel dock="left" width="60" margin="0,0,0,5" >
<button dock="fill" text="@Btn_Cancel" css_text="border:solid #999999 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;">
<attach name="click">
<![CDATA[
ipt_text.set_text("");
ipt_text._input.focus();
ImageEditorDocument.$0118();
]]>
</attach>
</button>
</panel>
</panel>
<panel dock="top" height="23" margin="2,0,0,0" visible="0">
</panel>
<method name="OptionChanged" arguments="sender,val">
<![CDATA[
if(typeof(sender._oldval)!="undefined" && sender._oldval==val)
return;
sender._oldval = val;
var bv = ddl_bold.get_text() == ImageEditorDocument.Text["Select_Bool_False"]?"normal":"bold";
instance.Preview(ipt_text.get_text(),ddl_font.get_text(),ddl_size.get_text(),bv);
]]>
</method>
<method name="GetEditor">
<![CDATA[
return ipt_text._input;
]]>
</method>
</panel>
<panel jsml-class="submenurotate">
<panel dock="left" width="115">
<image dock="left" margin="0,3,0,3" width="20" border_color="transparent" border_width="1" vertical_align="middle" horizontal_align="center" src="images/rotateleft90.png" tooltip="@Title_Rotate90Left">
<attach name="click">
instance.DoRotate(270);
</attach>
<attach name="mousehover">
self.set_back_color("white");
self.set_border_color("Gray");
</attach>
<attach name="mouseleave">
self.set_back_color("");
self.set_border_color("transparent");
</attach>
</image>
<image dock="left" margin="0,3,0,3" width="20" border_color="transparent" border_width="1" vertical_align="middle" horizontal_align="center" src="images/rotateright90.png" tooltip="@Title_Rotate90Right">
<attach name="click">
instance.DoRotate(90);
</attach>
<attach name="mousehover">
self.set_back_color("white");
self.set_border_color("Gray");
</attach>
<attach name="mouseleave">
self.set_back_color("");
self.set_border_color("transparent");
</attach>
</image>
<image dock="left" margin="0,3,0,3" width="20" border_color="transparent" border_width="1" vertical_align="middle" horizontal_align="center" src="images/fliph.png" tooltip="@Title_FlipH">
<attach name="click">
instance.DoFlip("h");
</attach>
<attach name="mousehover">
self.set_back_color("white");
self.set_border_color("Gray");
</attach>
<attach name="mouseleave">
self.set_back_color("");
self.set_border_color("transparent");
</attach>
</image>
<image dock="left" margin="0,3,0,3" width="20" border_color="transparent" border_width="1" vertical_align="middle" horizontal_align="center" src="images/flipv.png" tooltip="@Title_FlipV">
<attach name="click">
instance.DoFlip("v");
</attach>
<attach name="mousehover">
self.set_back_color("white");
self.set_border_color("Gray");
</attach>
<attach name="mouseleave">
self.set_back_color("");
self.set_border_color("transparent");
</attach>
</image>
</panel>
<label dock="left" width="10" overflow="visible" vertical_align="middle" margin="0,0,0,5" text="@Tool_Rotate_Degree"></label>
<textbox dock="left" jsml-local="txt_degree" width="60" text="30">
<initialize>
ImageEditorDocument.$093(self._input);
</initialize>
</textbox>
<dropdown dock="left" jsml-local="ddl_direct" width ="80">
<listitem text="@Select_Rotate_CW" value="clockwise"></listitem>
<listitem text="@Select_Rotate_ACW" value="anticlockwise"></listitem>
</dropdown>
<button text="@Btn_Apply" dock="left" css_text="border:solid #999999 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;" margin="0,0,0,5" width="60">
<attach name="click">
<![CDATA[
var dgtxt = txt_degree.get_text();
if(!dgtxt || isNaN(dgtxt))
{
txt_degree.set_text("");
txt_degree.get_element().focus();
return;
}
var degree = parseInt(dgtxt);
var calcdegree = degree%360;
if(calcdegree==0)
{
return;
}
var direct = ddl_direct.get_text();
if(direct == "anticlockwise")
calcdegree = 360 - calcdegree;
instance.DoRotate(calcdegree);
]]>
</attach>
</button>
<method name="DoRotate" arguments="degree">
<![CDATA[
if(!degree)
return;
ImageEditorDocument.$0122(degree);
]]>
</method>
<method name="DoFlip" arguments="direct">
<![CDATA[
if(!direct)
return;
ImageEditorDocument.$0128(direct);
]]>
</method>
</panel>
<panel jsml-class="submenuselect" width="280">
<label dock="left" width="10" overflow="visible" text="Zoom:" horizontal_align="center" vertical_align="middle"></label>
<panel jsml-enable="0" jsml-local="scrollbarselect" jsml-base="scrollbarbase" dock="left" width="130" min="0.4" max="6" default="1">
<initialize>
<![CDATA[
function DoScale(scale)
{
instance.Fire();
}
self.set_action(DoScale);
]]>
</initialize>
</panel>
<dropdown jsml-local="ddlzoom" dock="left" width="80">
<initialize>
self._oldval = self.get_text();
</initialize>
<attach name="click">
<![CDATA[
if(self.get_text()==self._oldval)
return;
self._oldval = self.get_text();
instance.Fire();
]]>
</attach>
<listitem value="1" text="100%"></listitem>
<listitem value="0.2" text="20%"></listitem>
<listitem value="0.5" text="50%"></listitem>
<listitem value="0.8" text="80%"></listitem>
<listitem value="1.5" text="150%"></listitem>
<listitem value="2" text="200%"></listitem>
<listitem value="2.5" text="250%"></listitem>
<listitem value="3" text="300%"></listitem>
<listitem value="4" text="400%"></listitem>
<listitem value="5" text="500%"></listitem>
<listitem value="6" text="600%"></listitem>
<listitem value="7" text="700%"></listitem>
<listitem value="8" text="800%"></listitem>
<listitem value="9" text="900%"></listitem>
<listitem value="10" text="1000%"></listitem>
</dropdown>
<button text="@Btn_ActualSize" dock="left" css_text="border:solid #999999 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;" margin="0,0,0,5" width="80">
<attach name="click">
<![CDATA[
ddlzoom.set_text("1");
ddlzoom._oldval="1";
instance.Fire();
]]>
</attach>
</button>
<label jsml-enable="0" dock="left" width="50" text="OffsetX:" horizontal_align="center" vertical_align="middle"></label>
<panel jsml-enable="0" jsml-local="scrollbaroffsetx" jsml-base="scrollbarbase" dock="left" width="160" min="-100" max="300" default="0">
<initialize>
<![CDATA[
function DoScale(scale)
{
instance.Fire();
}
self.set_action(DoScale);
]]>
</initialize>
</panel>
<label jsml-enable="0" dock="left" width="50" text="OffsetY:" horizontal_align="center" vertical_align="middle"></label>
<panel jsml-enable="0" jsml-local="scrollbaroffsety" jsml-base="scrollbarbase" dock="left" width="130" min="-100" max="200" default="0">
<initialize>
<![CDATA[
function DoScale(scale)
{
instance.Fire();
}
self.set_action(DoScale);
]]>
</initialize>
</panel>
<initialize>
<![CDATA[
var sel = ImageEditorDocument.get_selection();
if (!sel)
return;
if(sel._scale)
{
ddlzoom.set_text(sel._scale.x+"");
ddlzoom._oldval=sel._scale.x+"";
//scrollbarselect.set_default(sel._scale.x);
//scrollbarselect.CalcScrollbarPos();
//scrollbaroffsetx.set_default(sel._offset.x);
//scrollbaroffsetx.CalcScrollbarPos();
//scrollbaroffsety.set_default(sel._offset.y);
//scrollbaroffsety.CalcScrollbarPos();
}
]]>
</initialize>
<method name="Fire">
var offsety = 0;//scrollbaroffsety.GetValue();
var offsetx = 0;//scrollbaroffsetx.GetValue();
//var scale = scrollbarselect.GetValue();
var scale = parseFloat(ddlzoom.get_text());
ImageEditorDocument.$049(scale,scale,offsetx,offsety);
</method>
<method name="Restore">
ddlzoom.set_text("1");
ddlzoom._oldval="1";
//scrollbaroffsetx.set_default(0);
//scrollbaroffsety.set_default(0);
//scrollbarselect.set_default(1);
//scrollbaroffsetx.CalcScrollbarPos();
//scrollbaroffsety.CalcScrollbarPos();
//scrollbarselect.CalcScrollbarPos();
</method>
</panel>
<panel jsml-class="submenucrop" width="420">
<label dock="left" width="10" overflow="visible" text="@Tool_Width" vertical_align="middle"></label>
<textbox jsml-local="txt_width" dock="left" width="60" vertical_align="middle">
<initialize>
<![CDATA[
ImageEditorDocument.$093(self._input);
self._oldval = "";
self._input.onblur=function()
{
instance.OptionChanged(self,self.get_text());
}
]]>
</initialize>
</textbox>
<label dock="left" width="10" overflow="visible" text="@Tool_Height" vertical_align="middle" margin="0,0,0,5"></label>
<textbox jsml-local="txt_height" dock="left" width="60" vertical_align="middle">
<initialize>
<![CDATA[
ImageEditorDocument.$093(self._input);
self._oldval = "";
self._input.onblur=function()
{
instance.OptionChanged(self,self.get_text());
}
]]>
</initialize>
</textbox>
<label dock="left" width="10" overflow="visible" text="@Tool_Crop_OffsetX" vertical_align="middle" margin="0,0,0,5"></label>
<textbox jsml-local="txt_offsetx" dock="left" width="60" vertical_align="middle">
<initialize>
<![CDATA[
ImageEditorDocument.$093(self._input);
self._oldval = "";
self._input.onblur=function()
{
instance.OptionChanged(self,self.get_text());
}
]]>
</initialize>
</textbox>
<label dock="left" width="10" overflow="visible" text="@Tool_Crop_OffsetY" vertical_align="middle" margin="0,0,0,5"></label>
<textbox jsml-local="txt_offsety" dock="left" width="60" vertical_align="middle">
<initialize>
<![CDATA[
ImageEditorDocument.$093(self._input);
self._oldval = "";
self._input.onblur=function()
{
instance.OptionChanged(self,self.get_text());
}
]]>
</initialize>
</textbox>
<button text="@Btn_Apply" dock="left" width="60" margin="0,0,0,5" css_text="border:solid #999999 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;">
<attach name="click">
<![CDATA[
ImageEditorDocument.$033();
]]>
</attach>
</button>
<button text="@Btn_Cancel" dock="left" width="60" margin="0,0,0,5" css_text="border:solid #999999 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;">
<attach name="click">
<![CDATA[
ImageEditorDocument.set_selection(null);
ImageEditorDocument.set_SelectedTool(null);
instance.set_visible(0);
ImageEditorDocument._cropcomp._cropdiv.style.display = "none";
ImageEditorDocument.$0118();
]]>
</attach>
</button>
<initialize>
<![CDATA[
var cropdiv = ImageEditorDocument._cropcomp._cropdiv;
self.UpdateCropPos(parseInt(cropdiv.style.width),parseInt(cropdiv.style.height),cropdiv._offsetX,cropdiv._offsetY);
]]>
</initialize>
<method name="UpdateCropPos" arguments="w,h,x,y">
<![CDATA[
txt_width.set_text(w+"");
txt_width._oldval = w;
txt_height.set_text(h+"");
txt_height._oldval = h;
txt_offsetx.set_text(x+"");
txt_offsetx._oldval = x;
txt_offsety.set_text(y+"");
txt_offsety._oldval = y;
]]>
</method>
<method name="OptionChanged" arguments="sender,val">
<![CDATA[
if(typeof(sender._oldval)!="undefined" && sender._oldval==val)
return;
if(val.length==0)
{
sender.set_text(sender._oldval);
return;
}
if(isNaN(val))
{
sender.set_text(sender._oldval);
return;
}
if(parseInt(val)<0)
{
sender.set_text(sender._oldval);
return;
}
var w = parseInt(txt_width.get_text());
var h = parseInt(txt_height.get_text());
var x = parseInt(txt_offsetx.get_text());
var y = parseInt(txt_offsety.get_text());
var cropdiv = ImageEditorDocument._cropcomp._cropdiv;
if(cropdiv.style.display=="none")
return;
var canvas = ImageEditorDocument._canvas;
if(w>canvas.width || h>canvas.height)
{
txt_width.set_text(parseInt(cropdiv.style.width));
txt_height.set_text(parseInt(cropdiv.style.height));
return;
}
if(w+x>canvas.width)
{
x = canvas.width-w;
}
if(h+y>canvas.height)
{
y = canvas.height-h;
}
cropdiv._offsetX = x;
cropdiv._offsetY = y;
cropdiv.style.width = w + "px";
cropdiv.style.height = h + "px";
ImageEditorDocument.$051();
sender._oldval = val;
]]>
</method>
</panel>
<panel jsml-class="submenuerase" width="460" height="20" vertical_align="middle">
<label dock="left" width="10" overflow="visible" text="@Tool_Erase_BrushType" horizontal_align="center" vertical_align="middle"></label>
<dropdown dock="left" width="60">
<initialize>
<![CDATA[
self.set_text(ImageEditorDocument.GetOption("EraseBrushShape"));
self._oldval = self.get_text();
]]>
</initialize>
<attach name="click">
<![CDATA[
if(self.get_text() == self._oldval)
return;
self._oldval = self.get_text();
ImageEditorDocument.SetOption("EraseBrushShape",self._oldval);
ImageEditorDocument.$099();
]]>
</attach>
<listitem text="@Select_Erase_Rect" value="rect"></listitem>
<listitem text="@Select_Erase_Arc" value="arc"></listitem>
</dropdown>
<label dock="left" width="10" overflow="visible" text="@Tool_Erase_BrushColor" vertical_align="middle" margin="0,0,0,5"></label>
<dropdown jsml-local="ddl_brushcolor" dock="left" width="90">
<initialize>
ImageEditorDocument.SetOption("EraseBrushColor","transparent");
</initialize>
<attach name="click">
<![CDATA[
var bc = self.get_text();
var rc = "transparent";
if(bc=="transparent")
{
previewpanel.set_back_color("transparent");
}
else if(bc=="backcolor")
{
rc = ImageEditorDocument.GetOption("Ctx_BackColor");
previewpanel.set_back_color(rc);
}
else
{
rc = ImageEditorDocument.GetOption("Ctx_ForeColor");
previewpanel.set_back_color(rc);
}
ImageEditorDocument.SetOption("EraseBrushColor",rc);
ImageEditorDocument.$099();
]]>
</attach>
<listitem value="transparent" text="@Select_Color_Transparent"></listitem>
<listitem value="backcolor" text="@Select_Color_BackColor"></listitem>
<listitem value="forecolor" text="@Select_Color_ForeColor"></listitem>
</dropdown>
<panel dock="left" width="20" margin="0,0,0,5" vertical_align="middle" horizontal_align="center">
<panel width="16" height="16" jsml-local="previewpanel" tooltip="@Title_Preview" border_color="Gray" border_width="1">
</panel>
</panel>
<label dock="left" width="10" overflow="visible" text="@Tool_Erase_BrushSize" horizontal_align="center" vertical_align="middle"></label>
<panel jsml-local="scrollbarselect" jsml-base="scrollbarbase" dock="left" width="110" min="2" max="50" default="20">
<initialize>
<![CDATA[
self.set_default(ImageEditorDocument.GetOption("EraseBrushSize"));
self.CalcScrollbarPos();
function SizeChanged(size)
{
instance.UpdateDiameter(size);
}
function SizeRelease(size)
{
ImageEditorDocument.SetOption("EraseBrushSize", size);
ImageEditorDocument.$099();
}
self.set_action(SizeChanged);
self.set_release(SizeRelease);
]]>
</initialize>
</panel>
<label dock="left" width="10" overflow="visible" text="@Tool_Erase_Diameter" horizontal_align="center" vertical_align="middle"></label>
<label jsml-local="labeldiameter" dock="left" width="10" overflow="visible" horizontal_align="left" vertical_align="middle">
<initialize>
instance.UpdateDiameter(ImageEditorDocument.GetOption("EraseBrushSize"));
</initialize>
</label>
<method name="UpdateDiameter" arguments="val">
labeldiameter.set_text(Math.floor(val) + "px");
</method>
</panel>
<panel jsml-class="submenuredeye" width="460" height="20" vertical_align="middle">
<label dock="left" width="10" overflow="visible" text="@Tool_Erase_BrushSize" horizontal_align="center" vertical_align="middle"></label>
<panel jsml-local="scrollbarselect" jsml-base="scrollbarbase" dock="left" width="110" min="2" max="50" default="20">
<initialize>
<![CDATA[
self.set_default(ImageEditorDocument.GetOption("EraseBrushSize"));
self.CalcScrollbarPos();
function SizeChanged(size)
{
instance.UpdateDiameter(size);
}
function SizeRelease(size)
{
ImageEditorDocument.SetOption("EraseBrushSize", size);
ImageEditorDocument.$099();
}
self.set_action(SizeChanged);
self.set_release(SizeRelease);
]]>
</initialize>
</panel>
<label dock="left" width="10" overflow="visible" text="@Tool_Erase_Diameter" horizontal_align="center" vertical_align="middle"></label>
<label jsml-local="labeldiameter" dock="left" width="10" overflow="visible" horizontal_align="left" vertical_align="middle">
<initialize>
instance.UpdateDiameter(ImageEditorDocument.GetOption("EraseBrushSize"));
</initialize>
</label>
<method name="UpdateDiameter" arguments="val">
labeldiameter.set_text(Math.floor(val) + "px");
</method>
</panel>
<panel jsml-class="submenunewdoc" width="520">
<label dock="left" width="10" overflow="visible" text="Create Type:" vertical_align="middle"></label>
<dropdown dock="left" width="110">
<initialize>
<![CDATA[
if(typeof(window.FileReader)=="undefined")
{
//var items = self._items;
//self.del_item(items[items.length-1]);
self._sel.options[2] = null;
}
]]>
</initialize>
<attach name="click">
<![CDATA[
panel_1.set_visible(0);
panel_2.set_visible(0);
panel_3.set_visible(0);
var ct = self.get_text();
if(ct=="new")
panel_1.set_visible(1);
else if(ct=="url")
panel_2.set_visible(1);
else if(ct=="local")
panel_3.set_visible(1);
]]>
</attach>
<listitem text="Create Canvas" value="new"></listitem>
<listitem text="From URL" value="url"></listitem>
<listitem text="Local File" value="local"></listitem>
</dropdown>
<panel jsml-local="panel_1" dock="fill">
<label dock="left" width="60" text="File Name:" vertical_align="middle"></label>
<textbox jsml-local="txt_docname" dock="left" width="80" vertical_align="middle" text="Unnamed"></textbox>
<label dock="left" width="45" text="Width:" vertical_align="middle" margin="0,0,0,5"></label>
<textbox jsml-local="txt_width" dock="left" width="60" vertical_align="middle"></textbox>
<label dock="left" width="45" text="Height:" vertical_align="middle" margin="0,0,0,5"></label>
<textbox jsml-local="txt_height" dock="left" width="60" vertical_align="middle"></textbox>
<label dock="left" width="65" text="Fill Color:" vertical_align="middle" margin="0,0,0,5"></label>
<dropdown jsml-local="ddl_fillcolor" dock="left" width="90">
<listitem value="transparent" text="Transparent"></listitem>
<listitem value="backcolor" text="Back Color"></listitem>
<listitem value="forecolor" text="Fore Color"></listitem>
</dropdown>
<button dock="left" text="@Btn_Apply" css_text="border:solid #999999 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;" width="60" margin="0,0,0,5">
<attach name="click">
<![CDATA[
var w = txt_width.get_text();
var h = txt_height.get_text();
if(!w || !h)
return;
if(isNaN(w) || parseInt(w)<=0)
{
alert(ImageEditorDocument.Text["CreateWidth"]);
return;
}
if(isNaN(h) || parseInt(h)<=0)
{
alert(ImageEditorDocument.Text["CreateHeight"]);
return;
}
if(!txt_docname.get_text())
{
alert(ImageEditorDocument.Text["NeedFileName"]);
return;
}
if(!confirm(ImageEditorDocument.Text["ConfirmCreate"]))
return;
var fillcolor = ddl_fillcolor.get_text();
var backcolor = ImageEditorDocument.GetOption("Ctx_BackColor");
var forecolor = ImageEditorDocument.GetOption("Ctx_ForeColor");
ImageEditorDocument.$090();
ImageEditorDocument.SetOption("FileName", txt_docname.get_text());
ImageEditorDocument._canvas.width = parseInt(w);
ImageEditorDocument._canvas.height = parseInt(h);
ImageEditorDocument.SetOption("CanvasRealSize", {width:parseInt(w),height:parseInt(h)});
ImageEditorDocument.$0116();
ImageEditorDocument._history = null;
ImageEditorDocument._history = jsml.class_create_instance("$029", [ImageEditorDocument]);
ImageEditorDocument._history.set_name(ImageEditorDocument.Text["Layer_Background"]);
if(fillcolor!="transparent")
{
var layer = jsml.class_create_instance("$042", [ImageEditorDocument]);
layer.set_name(ImageEditorDocument.Text["Layer_Background"]);
layer._2d.fillStyle = fillcolor=="backcolor"?backcolor:forecolor;
layer._2d.fillRect(0,0,layer._canvas.width,layer._canvas.height);
ImageEditorDocument._history._layers[0] = layer;
}
ImageEditorDocument.$055([ImageEditorDocument._history]);
ImageEditorDocument.set_SelectedTool(null);
ImageEditorDocument._canvas.calcpos();
//ImageEditorDocument.$0118();
instance.set_visible(0);
]]>
</attach>
</button>
</panel>
<panel jsml-local="panel_2" dock="fill" visible="0">
<label dock="left" width="70" text="File Name:" vertical_align="middle"></label>
<textbox jsml-local="txt_docname2" dock="left" width="90" vertical_align="middle" text="Unnamed"></textbox>
<label dock="left" width="30" text="Url:" vertical_align="middle" margin="0,0,0,5"></label>
<textbox jsml-local="txt_imageurl" dock="left" width="240" vertical_align="middle"></textbox>
<button dock="left" text="@Btn_Apply" css_text="border:solid #999999 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;" width="60" margin="0,0,0,5">
<attach name="click">
<![CDATA[
if(!txt_docname2.get_text())
{
alert(ImageEditorDocument.Text["NeedFileName"]);
return;
}
if(!txt_imageurl.get_text())
{
alert(ImageEditorDocument.Text["NeedUrl"]);
return;
}
if(!confirm(ImageEditorDocument.Text["ConfirmCreate"]))
return;
ImageEditorDocument.LoadUrl(txt_docname2.get_text(),txt_imageurl.get_text());
instance.set_visible(0);
]]>
</attach>
</button>
</panel>
<panel jsml-local="panel_3" dock="fill" visible="0">
<button dock="left" text="Select File" css_text="border:solid #999999 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;" width="90" margin="0,0,0,5">
<attach name="click">
<![CDATA[
var input=document.getElementById("imageeditorloadfile");
if(!input.files)
{
alert(ImageEditorDocument.Text["FileAPI"]);
return;
}
input.onchange=function()
{
var file=input.files[0];
ImageEditorDocument.$0109(file,true);
instance.set_visible(0);
}
input.click();
]]>
</attach>
</button>
</panel>
</panel>
<panel jsml-class="submenuresize" width="550">
<label dock="left" width="10" overflow="visible" text="@Tool_Resize_Mode" vertical_align="middle"></label>
<dropdown jsml-local="ddl_mode" dock="left" width="80">
<attach name="click">
<![CDATA[
if(self.get_text()=="canvas")
{
positionpanel.set_visible(1);
}
else
{
positionpanel.set_visible(0);
}
]]>
</attach>
<listitem value="image" text="@Select_Resize_Image"></listitem>
<listitem value="canvas" text="@Select_Resize_Canvas"></listitem>
</dropdown>
<panel jsml-local="positionpanel" dock="left" width="170" visible="0">
<label dock="left" width="10" overflow="visible" text="@Tool_Resize_Position" tooltip="@Title_Resize_Position" vertical_align="middle" margin="0,0,0,5"></label>
<dropdown jsml-local="ddl_position" dock="left" width="110">
<listitem value="center" text="@Select_Resize_Center"></listitem>
<listitem value="topleft" text="@Select_Resize_TL"></listitem>
<listitem value="topcenter" text="@Select_Resize_TC"></listitem>
<listitem value="topright" text="@Select_Resize_TR"></listitem>
<listitem value="middleleft" text="@Select_Resize_ML"></listitem>
<listitem value="middleright" text="@Select_Resize_MR"></listitem>
<listitem value="bottomleft" text="@Select_Resize_BL"></listitem>
<listitem value="bottomcenter" text="@Select_Resize_BC"></listitem>
<listitem value="bottomright" text="@Select_Resize_BR"></listitem>
</dropdown>
</panel>
<label dock="left" width="10" overflow="visible" text="@Tool_Width" vertical_align="middle" margin="0,0,0,5"></label>
<textbox jsml-local="txt_width" dock="left" width="60" vertical_align="middle">
<initialize>
<![CDATA[
ImageEditorDocument.$093(self._input);
self._input.onblur = function()
{
instance.CheckConstrain(self);
}
]]>
</initialize>
</textbox>
<label dock="left" width="10" overflow="visible" text="@Tool_Height" vertical_align="middle" margin="0,0,0,5"></label>
<textbox jsml-local="txt_height" dock="left" width="60" vertical_align="middle">
<initialize>
<![CDATA[
ImageEditorDocument.$093(self._input);
self._input.onblur = function()
{
instance.CheckConstrain(self);
}
]]>
</initialize>
</textbox>
<checkbox jsml-local="cbx_constrain" dock="left" width="20" vertical_align="middle" margin="0,0,2,5" checked="true"></checkbox>
<label dock="left" width="10" overflow="visible" text="@Tool_Constrained_Size" vertical_align="middle"></label>
<button dock="left" text="@Btn_Apply" width="60" css_text="border:solid #999999 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;" margin="0,0,0,5">
<attach name="click">
<![CDATA[
var w = txt_width.get_text();
var h = txt_height.get_text();
if(!w || !h)
return;
if(isNaN(w) || parseInt(w)<=0)
{
alert(ImageEditorDocument.Text["CreateWidth"]);
return;
}
if(isNaN(h) || parseInt(h)<=0)
{
alert(ImageEditorDocument.Text["CreateHeight"]);
return;
}
var mode = ddl_mode.get_text();
if(mode=="canvas")
{
var pos = ddl_position.get_text();
ImageEditorDocument.$069(parseInt(w),parseInt(h),pos);
}
else
{
ImageEditorDocument.$087(parseInt(w),parseInt(h));
}
//ImageEditorDocument.set_SelectedTool(null);
//instance.set_visible(0);
]]>
</attach>
</button>
<initialize>
<![CDATA[
var rs = ImageEditorDocument.GetOption("CanvasRealSize");
txt_width.set_text(rs.width);
txt_height.set_text(rs.height);
txt_width.oldval = rs.width;
txt_height.oldval = rs.height;
]]>
</initialize>
<method name="CheckConstrain" arguments="txt_ctl">
<![CDATA[
var cons = cbx_constrain.get_checked();
if(!cons)
{
if(txt_ctl.get_text())
txt_ctl.oldval = parseInt(txt_ctl.get_text());
else
txt_ctl.set_text(txt_ctl.oldval);
return;
}
var txt_ctl2;
if(txt_ctl==txt_width)
txt_ctl2 = txt_height;
else
txt_ctl2 = txt_width;
if(!txt_ctl2.get_text() || !txt_ctl.get_text() || txt_ctl.get_text() == txt_ctl.oldval)
return;
var val1 = parseInt(txt_ctl.get_text());
var val2 = parseInt(parseInt(txt_ctl2.get_text()) * val1 / txt_ctl.oldval);
txt_ctl.oldval = val1;
txt_ctl2.oldval = val2;
txt_ctl2.set_text(val2);
]]>
</method>
</panel>
<panel jsml-class="submenuzoom" width="300">
<label dock="left" width="10" overflow="visible" text="@Tool_Zoom_Mode" vertical_align="middle"></label>
<panel jsml-local="mode1" dock="left" width="24" border_color="gray" back_color="white" border_width="1" tooltip="@Title_ZoomIn">
<image src="images/zoomin.png" dock="fill" vertical_align="middle" horizontal_align="center">
<attach name="click">
mode2.set_border_color("transparent");
mode2.set_back_color("");
mode1.set_border_color("gray");
mode1.set_back_color("white");
ImageEditorDocument._zoommode = "in";
</attach>
</image>
</panel>
<panel jsml-local="mode2" dock="left" width="24" margin="0,5,0,5" border_color="transparent" border_width="1" tooltip="@Title_ZoomOut">
<image src="images/zoomout.png" dock="fill" vertical_align="middle" horizontal_align="center">
<attach name="click">
mode1.set_border_color("transparent");
mode1.set_back_color("");
mode2.set_border_color("gray");
mode2.set_back_color("white");
ImageEditorDocument._zoommode = "out";
</attach>
</image>
</panel>
<button text="@Btn_ActualSize" dock="left" css_text="border:solid #999999 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;" margin="0,0,0,5" width="80">
<attach name="click">
<![CDATA[
ImageEditorDocument.SetOption("ZoomCount",0);
ImageEditorDocument.SetOption("ZoomX", 0);
ImageEditorDocument.SetOption("ZoomY", 0);
ImageEditorDocument.$0118();
ImageEditorDocument._canvas.calcpos();
]]>
</attach>
</button>
<initialize>
<![CDATA[
ImageEditorDocument._zoommode = "in";
]]>
</initialize>
</panel>
<panel jsml-class="submenusave" width="400">
<label dock="left" width="10" overflow="visible" text="@Tool_Save_FileName" vertical_align="middle"></label>
<textbox jsml-local="txt_filename" dock="left" width="100" vertical_align="middle">
<initialize>
<![CDATA[
self.set_text(ImageEditorDocument.GetOption("FileName")||"");
]]>
</initialize>
</textbox>
<label dock="left" width="10" overflow="visible" text="@Tool_Save_FileType" vertical_align="middle" margin="0,0,0,5"></label>
<dropdown jsml-local="ddl_type" dock="left" width="50">
<initialize>
<![CDATA[
self.set_text(ImageEditorDocument.GetOption("FileType")||"png");
if(ImageEditorDocument.GetOption("LockFileName")==true)
{
txt_filename._input.setAttribute("readonly","readonly");
ddl_type._sel.disabled = true;
}
]]>
</initialize>
<listitem value="png" text="png"></listitem>
<listitem value="jpg" text="jpg"></listitem>
<listitem value="gif" text="gif"></listitem>
<listitem value="bmp" text="bmp"></listitem>
</dropdown>
<label dock="left" jsml-local="txt_overwrite" width="10" overflow="visible" text="@Tool_Save_Overwrite" vertical_align="middle" margin="0,0,0,5"></label>
<dropdown jsml-local="ddl_overwrite" dock="left" width="60">
<initialize>
<![CDATA[
self.set_text(ImageEditorDocument.GetOption("Overwrite"));
if(ImageEditorDocument.GetOption("LockOverwrite")==true)
{
txt_overwrite.set_visible(0);
self.set_visible(0);
//self._sel.disabled = true;
}
]]>
</initialize>
<listitem value="false" text="@Select_Bool_False"></listitem>
<listitem value="true" text="@Select_Bool_True"></listitem>
</dropdown>
<button text="@Btn_Save" dock="left" css_text="border:solid #999999 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;" margin="0,0,0,5" width="50">
<attach name="click">
<![CDATA[
var filename = txt_filename.get_text();
filename = filename.replace(/(^\s*)/g, "").replace(/(\s*$)/g, "");
if(!filename)
{
alert(ImageEditorDocument.Text["NeedFileName"]);
return;
}
var filetype = ddl_type.get_text();
var overwrite = ddl_overwrite.get_text();
ImageEditorDocument.SetOption("ZoomCount",0);
ImageEditorDocument.SetOption("ZoomX", 0);
ImageEditorDocument.SetOption("ZoomY", 0);
ImageEditorDocument.$0118();
//save
ImageEditorDocument.$053(filename, filetype, overwrite);
]]>
</attach>
</button>
</panel>
<panel jsml-class="submenupolygon" dock="fill" vertical_align="middle">
<label dock="left" width="10" overflow="visible" text="@Tool_Polygon_Sides" vertical_align="middle"></label>
<textbox dock="left" width="30" text="5">
<initialize>
<![CDATA[
self.set_text(ImageEditorDocument.GetOption("Ctx_PolygonSides"));
self._input.onkeyup = function()
{
var val = self.get_text();
var invalidChars = /[^0-9]/gi;
if(invalidChars.test(val)) {
self.set_text(val.replace(invalidChars,""));
}
}
self._input.onblur = function()
{
var val = self.get_text();
if(!val || parseInt(val)<3)
{
self.set_text("3");
}
val = parseInt(self.get_text());
ImageEditorDocument.SetOption("Ctx_PolygonSides",val);
}
]]>
</initialize>
</textbox>
<label dock="left" width="10" horizontal_align="center" text="|" text_color="gray"></label>
<panel dock="left" jsml-base="subitemfilltype"></panel>
<label dock="left" width="10" horizontal_align="center" text="|" text_color="gray"></label>
<panel dock="left" jsml-base="subitempattern" width="150" vertical_align="middle"></panel>
<label dock="left" width="10" horizontal_align="center" text="|" text_color="gray"></label>
<panel dock="left" jsml-base="subitemcompositeoperation" width="300"></panel>
</panel>
<panel jsml-class="submenustar" dock="fill" vertical_align="middle">
<label dock="left" width="10" overflow="visible" text="@Tool_Star_Points" vertical_align="middle"></label>
<textbox dock="left" width="30" text="5">
<initialize>
<![CDATA[
self.set_text(ImageEditorDocument.GetOption("Ctx_StarPoints"));
self._input.onkeyup = function()
{
var val = self.get_text();
var invalidChars = /[^0-9]/gi;
if(invalidChars.test(val)) {
self.set_text(val.replace(invalidChars,""));
}
}
self._input.onblur = function()
{
var val = self.get_text();
if(!val || parseInt(val)<3)
{
self.set_text("3");
}
val = parseInt(self.get_text());
ImageEditorDocument.SetOption("Ctx_StarPoints",val);
}
]]>
</initialize>
</textbox>
<label dock="left" width="10" overflow="visible" text="@Tool_Star_Ratio" vertical_align="middle" margin="0,0,0,5"></label>
<panel jsml-local="scrollbarselect" jsml-base="scrollbarbase" dock="left" width="90" min="0" max="1" default="0.4">
<initialize>
<![CDATA[
self.set_default(ImageEditorDocument.GetOption("Ctx_StarRatio")+"");
self.CalcScrollbarPos();
function SizeChanged(size)
{
if(size.toString().length>4)
size = parseFloat(size).toFixed(2);
instance.UpdateRatio(size);
ImageEditorDocument.SetOption("Ctx_StarRatio", parseFloat(size));
}
self.set_action(SizeChanged);
]]>
</initialize>
</panel>
<label jsml-local="labelratio" dock="left" width="30" overflow="visible" horizontal_align="left" margin="0,0,0,3" vertical_align="middle">
<initialize>
instance.UpdateRatio(ImageEditorDocument.GetOption("Ctx_StarRatio")+"");
</initialize>
</label>
<label dock="left" width="10" horizontal_align="center" text="|" text_color="gray"></label>
<panel dock="left" jsml-base="subitemfilltype"></panel>
<label dock="left" width="10" horizontal_align="center" text="|" text_color="gray"></label>
<panel dock="left" jsml-base="subitempattern" width="150" vertical_align="middle"></panel>
<label dock="left" width="10" horizontal_align="center" text="|" text_color="gray"></label>
<panel dock="left" jsml-base="subitemcompositeoperation" width="300"></panel>
<method name="UpdateRatio" arguments="val">
labelratio.set_text(val);
</method>
</panel>
<panel jsml-class="submenustamp" dock="fill" vertical_align="middle">
<label dock="left" width="10" overflow="visible" text="@Tool_Erase_Diameter" vertical_align="middle"></label>
<panel jsml-local="scrollbarselect" jsml-base="scrollbarbase" dock="left" width="120" min="1" max="200" default="20">
<initialize>
<![CDATA[
self.set_default(ImageEditorDocument.GetOption("Ctx_StampDiameter"));
self.CalcScrollbarPos();
function SizeChanged(size)
{
instance.UpdateDiameter(size);
}
function SizeRelease(size)
{
ImageEditorDocument.SetOption("Ctx_StampDiameter", parseInt(size));
}
self.set_action(SizeChanged);
self.set_release(SizeRelease);
]]>
</initialize>
</panel>
<label jsml-local="labeldiameter" dock="left" width="40" overflow="visible" margin="0,0,0,5" horizontal_align="left" vertical_align="middle">
<initialize>
instance.UpdateDiameter(ImageEditorDocument.GetOption("Ctx_StampDiameter"));
</initialize>
</label>
<label dock="left" width="10" overflow="visible" text="@Tool_Stamp_Hardness" margin="0,0,0,10" vertical_align="middle"></label>
<panel jsml-local="scrollbarhardness" jsml-base="scrollbarbase" dock="left" width="110" min="0" max="100" default="100">
<initialize>
<![CDATA[
self.set_default(ImageEditorDocument.GetOption("Ctx_StampHardness"));
self.CalcScrollbarPos();
function SizeChanged(size)
{
instance.UpdateHardness(size);
}
function SizeRelease(size)
{
ImageEditorDocument.SetOption("Ctx_StampHardness", parseInt(size));
}
self.set_action(SizeChanged);
self.set_release(SizeRelease);
]]>
</initialize>
</panel>
<label jsml-local="labelhardness" dock="left" width="35" overflow="visible" margin="0,0,0,5" horizontal_align="left" vertical_align="middle">
<initialize>
instance.UpdateHardness(ImageEditorDocument.GetOption("Ctx_StampHardness"));
</initialize>
</label>
<label dock="left" width="10" overflow="visible" text="@Tool_Stamp_Alpha" margin="0,0,0,10" vertical_align="middle"></label>
<panel jsml-local="scrollbaralpha" jsml-base="scrollbarbase" dock="left" width="110" min="0" max="100" default="100">
<initialize>
<![CDATA[
self.set_default(ImageEditorDocument.GetOption("Ctx_StampAlpha"));
self.CalcScrollbarPos();
function SizeChanged(size)
{
instance.UpdateAlpha(size);
}
function SizeRelease(size)
{
ImageEditorDocument.SetOption("Ctx_StampAlpha", parseInt(size));
}
self.set_action(SizeChanged);
self.set_release(SizeRelease);
]]>
</initialize>
</panel>
<label jsml-local="labelalpha" dock="left" width="35" overflow="visible" margin="0,0,0,5" horizontal_align="left" vertical_align="middle">
<initialize>
instance.UpdateAlpha(ImageEditorDocument.GetOption("Ctx_StampAlpha"));
</initialize>
</label>
<checkbox dock="left" width="20" margin="0,0,0,5">
<initialize>
<![CDATA[
self.set_checked(ImageEditorDocument.GetOption("Ctx_StampAlignment"));
]]>
</initialize>
<attach name="click">
ImageEditorDocument.SetOption("Ctx_StampAlignment",self.get_checked())
</attach>
</checkbox>
<label dock="left" width="10" overflow="visible" vertical_align="middle" text="@Tool_Stamp_Alignment"></label>
<method name="UpdateDiameter" arguments="val">
labeldiameter.set_text(Math.floor(val) + "px");
</method>
<method name="UpdateHardness" arguments="val">
labelhardness.set_text(Math.floor(val) + "%");
</method>
<method name="UpdateAlpha" arguments="val">
labelalpha.set_text(Math.floor(val) + "%");
</method>
</panel>
<panel jsml-class="subitemdropdown" back_color="white" border_color="rgb(238,238,238)" border_width="1">
<image dock="right" width="13" src="images/tbdown.gif" horizontal_align="center">
<attach name="mousehover">
<![CDATA[
ImageEditorDocument.$043(self.get_element(),"top", "#eaf6fd","#a9dbf6");
]]>
</attach>
<attach name="mouseleave">
<![CDATA[
self.get_element().style.background = "";
if(jsml.msie) self.get_element().style.filter = "";
]]>
</attach>
</image>
<label jsml-local="txt_field" dock="fill" vertical_align="middle" horizontal_align="left" padding="0,2,0,2"></label>
<property name="text">
<get>return txt_field.get_text();</get>
<set>return txt_field.set_text(value);</set>
</property>
</panel>
<execute>
<![CDATA[
plugin.LoadUI = function(ctrl,menuname,callback)
{
var item = jsml.class_create_instance(menuname);
if(callback)
callback(ctrl,item);
}
]]>
</execute>
</jsml>