home
StrataCafe Forums
Username:
Password:
Save Password
Forgot your Password?

 All Forums
 Older Forums
 Strata Live 3D CX
 Changing default animation button!
 Forum Locked
 Printer Friendly
Author Previous Topic Topic Next Topic  

soil
Infrequent Poster

China
13 Posts

Posted - 03/22/2012 :  02:22:28  Show Profile
I have two questions.
First,I have make an animation via Strata live and export it to html ,and in my browser the animation works well!But in default, animation buttons are placed in the front left of may broswer.How can I placed them in other place of my broswer page? And how can I add customized animation buttons to replace the default text button?


Image Insert:

16.5 KB



Image Insert:

10.18 KB
Sceond,as you know,after we have finished animations and export the animations via Strata live,we can view and control our animations in a broswer (ie. Microsoft internet explorer).But in the browser if we use mouse's middle button, the screen will flicker! I have tested many other Strata live's animaion, and all of them have the same problem,for example,IBM'S power_795 animation(http://ibmtvdemo.edgesuite.net/servers/power/demos/power_795/index.html). How can we deal with the problem?

Edited by - soil on 03/22/2012 02:40:50

jesmith
A Regular

USA
214 Posts

Posted - 03/22/2012 :  10:19:24  Show Profile  Visit jesmith's Homepage
IBM did that by writing custom Meson code. Crack open the UI.jar file and change the .txt file in there however you like.

As for the flicker, that sounds like a Java bug that you should report to Oracle.



-Joshua
Go to Top of Page

soil
Infrequent Poster

China
13 Posts

Posted - 03/22/2012 :  18:43:48  Show Profile
Thanks a million!
But as you know,after exported by Strata Live there are typically 6 files,ie.strata.jar,mesonApplet.jar,rasterGluon.jar,sceneGluon.jar, xxxuserdefinedXXX.html and xxxuserdefinedXXX.jar. I can't find "UI.jar".
How can I get or find a file named UI.jar ? Does it need special operations in Strata Live?
Go to Top of Page

jesmith
A Regular

USA
214 Posts

Posted - 03/23/2012 :  07:47:08  Show Profile  Visit jesmith's Homepage
In your case, the user interface code is in "strata.jar"

-Joshua
Go to Top of Page

soil
Infrequent Poster

China
13 Posts

Posted - 03/23/2012 :  14:34:48  Show Profile
OK,first thank you for your quick answer! Then I have another three questions.
First,when I unzipped my strata.jar file ,I find the folder have some gif-type files and a file named "template.txt". Do you mean I can add special buttons' photo looking like the IBM Power795's Strata live animation in the folder and edit the file named "template.txt" to reach my aim?

Second,can you offer some tutorials or examples about how to change the default location of animation buttons ?And how to add beautiful buttons to replace the default text-style button?

Third, when downloaded the IBM Power795's Strata live animation from its page,I find the animation project includes those files:1)index.html,2)model.jar,3)model_ui.jar,4)mesonCombined.jar,5)externalweb.jar,and its files' structure is diffrent from my animation's file structure explored from Strata live animation .And that's why?

Edited by - soil on 03/23/2012 14:40:01
Go to Top of Page

soil
Infrequent Poster

China
13 Posts

Posted - 03/27/2012 :  02:24:51  Show Profile
NEED HELP!!!
Go to Top of Page

soil
Infrequent Poster

China
13 Posts

Posted - 03/27/2012 :  19:20:14  Show Profile
Disappointing!None will answer me.
Go to Top of Page

Julie A.
Admin

47 Posts

Posted - 03/28/2012 :  11:16:17  Show Profile
Joshua is the expert here, but you might want to check the Strata Live 3D FAQs. Here's the Advanced Editing category:
http://support.strata.com/index.php?action=show&cat=20

Also, it sounds like you need to get into the Meson code, you can out where to get the Blackboard system in this FAQ:
http://support.strata.com/index.php?action=artikel&cat=20&id=260&artlang=en

You will find a link to the Meson Language Manual in the Help menu of Strata Live 3D CX.

Julie A.
Strata Software
Go to Top of Page

soil
Infrequent Poster

China
13 Posts

Posted - 03/28/2012 :  12:02:47  Show Profile
Thank you very much for your attention and the links you offered!
Now I can add buttons like IBM Power795's Strata live animation and place animation buttons on the positon that I want.
But currently I confront another quesition:I could not display Chinese language on my broswer.
I have tried to edit UI.txt and template.txt by studing some examples(following links),but all falled?How can I set the displaying language?
http://www.cisco.com/en/US/prod/ps10265/ps10279/ucs_kaon_model_preso.html

http://www.dslgroup.com/catalog/index.html

http://www-03.ibm.com/systems/data/flash/bladecenter/hardware/servers/tour/bladeschassis/
http://www.galileoecho.com/Echo_Web_Product_Tour/index.html

http://catalog.kaon.com/static/index.html
Go to Top of Page

soil
Infrequent Poster

China
13 Posts

Posted - 03/28/2012 :  12:10:28  Show Profile
Following is the content of my template.txt file,can you tell me where is wrong?
Go to Top of Page

soil
Infrequent Poster

China
13 Posts

Posted - 03/28/2012 :  12:12:12  Show Profile
iskeyvalid=true;
bcolor="FF000000";
tcolor="FFFFFFFF";
logolayer=1;

lengthMethod=Meson.getMethod(^class="java.lang.String",^method="length",^args=[])

/* soil language=Meson.language */
Meson.gluon("com.kaon.meson.scene.SceneGluon")
unitsMul={Scene.3d.inch};
unitsLabel={" "~l10n("in")}
templateModelFile="model.jar";
templateUIFile="model_ui.jar";

Shadow.Shadow_3d.alpha=0.0


/* Text Formating */
/* soil */
Meson.addContextMenu(^applet="Applet.Primary",^label="Inches")
Meson.addContextMenu(^applet="Applet.Primary",^label="Centimeters")
Trigger.GoInch.test={Applet.Primary.menuItem=="Inches"}
Trigger.GoInch.exec={unitsMul={Scene.3d.inch};unitsLabel={" "~l10n("in")}}
Trigger.GoCM.test={Applet.Primary.menuItem=="Centimeters"}
Trigger.GoCM.exec={unitsMul={Scene.3d.cm};unitsLabel={" "~l10n("cm")}}

Meson.addContextMenu(^applet="Applet.Primary",^label="-")

Trigger.GoEn.test={Applet.Primary.menuItem==I18N.en.lang}; Trigger.GoEn.exec={language="en"}
Trigger.GoZh.test={Applet.Primary.menuItem==I18N.zh.lang}; Trigger.GoZh.exec={language="zh"}

/* soil */

l10n={@("I18N."~language~.~#arg)}
I18N.extends=""
/* soil */
I18N.Class.showOnMenu=true
/* soil */
I18N.Class<<
.lang="English"
.in="inches"
.cm="centimeters"
.drag="Drag to Measure"
.moveonHint="Click & Hold Mouse Button Over Model to Move"
.moveoffHint="Click Left Button to Enter Move Mode"
.zoominHint="Click Mouse Button to Zoom In"
.zoomoutHint="Click Mouse Button to Zoom Out"
.measureonHint="Click Mouse Button and Drag to Measure (Press i Key for Inches, c Key for Centimeters)"
.measureoffHint="Click Mouse Button to Enter Measure Mode"
.noteonHint="Click Mouse Button to Display Notes"
.noteoffHint="Click Mouse Button to Hide Notes"
.resetHint="Click Mouse Button to Reset View"
.rotateonHint="Click & Hold Mouse Button Over Model to Rotate"
.rotateoffHint="Click Left Button to Enter Rotate Mode"
.productDemoLabel="Product Demonstrations"
.style="Normal"
>>
/* soil */
I18N.zh<<
.lang="繁體中文"
.in="英寸"
.cm="厘米"
.drag="阻力对措施"
.moveonHint="移动"
.moveoffHint="移动模式"
.zoominHint="缩小"
.zoomoutHint="放大"
.measureonHint="测量"
.measureoffHint="测量模式"
.noteonHint="显示 Notes"
.noteoffHint="隐藏Notes"
.resetHint="重设"
.rotateonHint="旋转"
.rotateoffHint="旋转模式"
.productDemoLabel="产品演示"
.style="Large"
>>

I18N.en.showOnMenu?Meson.addContextMenu(^applet="Applet.Primary",^label=I18N.en.lang)
I18N.zh.showOnMenu?Meson.addContextMenu(^applet="Applet.Primary",^label=I18N.zh.lang)

language=(noLanguages?"en":Meson.language)
language=="en"?Trigger.GoInch.exec():Trigger.GoCM.exec()
customizeUI()
/* soil */
Style.Bullet<<
.marginLeft=15
.contentPre="%BulletMark{\u25B6}\t"
>>
Style.BulletMark<<
.marginLeft=0
.color="0000FF"
.fontWeight=_BOLD
>>

Style.BoldText<<
.fontWeight=_BOLD
>>

/* 3D model scene */
Scene.3d<<
.width={2.7*(Display.Primary.width/3)}
.height={(Display.Primary.height)-50}
.centerY={(Scene.3d.height/3.2)}
.x={showDetailToggle?-230:-200}
.y=60
.enabled=false
>>

/* 3D model and model UI pointers */
Scene.3d.dataSource="Data.Model"
Data.Model.scene="Scene.3d"
Data.Model.url=templateModelFile

Style.Loading<<
.fontWeight=_BOLD
.fontSize=18
.textAlign=_CENTER
>>

Image.Loading<<
.layer=20
.title="Loading-Please Wait."
.text={"%Loading{"~Image.Loading.title~"}"}
.x={Display.Primary.width/2};
.y={Display.Primary.height/2};
.anchor=_C
>>


Trigger.3DLoad.test={Scene.3d.loaded&Data.Model.imagePercentLoaded>=25}
Trigger.3DLoad.exec={
showScene;
Image.Loading.layer=-1;
Scene.3d.enabled=true;
Anim.FadeTools.enabled=true;
Image.Tools.layer=50;
}

showScene={customizeModel();Scene.3d.layer=(iskeyvalid?1:-1);}


Style.InvalidKey<<
.fontWeight=_BOLD
.fontSize=30
.textAlign=_CENTER
>>

Image.InvalidKey<<
.x=50
.y=300
.anchor=_NW
.layer=(iskeyvalid?-1:1)
.title="Content License has Expired"
.text={"%InvalidKey{"~Image.InvalidKey.title~"}"}
.enabled=false
>>



Trigger.3DUnpacked.test={Scene.3d.loaded&Data.Model.imagePercentLoaded>90}
Trigger.3DUnpacked.exec={Timer.HSIt.start}

Trigger.LoadUI.test={Scene.3d.loaded}
Trigger.LoadUI.exec={Data.ModelUI.url=templateUIFile}


/* Borders */
Image.TopBorder<<
.x=0
.y=0
.layer=1
.buffer=bcolor
.width={Display.Primary.width}
.height=60
.enabled=false
>>

Image.BottomBorder<<
.x=0
.y={Display.Primary.height-60}
.layer=1
.buffer=bcolor
.width={Display.Primary.width}
.height=60
.enabled=false
>>



/* Product Title */
Style.ProductTitle<<
.fontWeight=_BOLD
.color=tcolor
.fontSize=20
.textAlign=_CENTER
>>

Image.ProductTitle<<
.x=75
.y=20
.anchor=_NW
.layer=1
.title=""
.text={"%ProductTitle{"~Image.ProductTitle.title~"}"}
.enabled=false
>>



Image.Logo<<
.x={Display.Primary.width-20}
.y=6
.anchor=_NE
.layer=logolayer
.alpha=1
.dataSource=Meson.documentBase
.file="logo.png"
.enabled=false;
>>


AppControlProductTitle.extends=""
AppControlProductTitle.Class<<
.new={
Image.ProductTitle.title={l10n("$")->text};
}
>>



/* Navigation Tool Bar */
showNoteToggle={ShowNotesByDefault==true?true:false}
showNote={showNoteToggle}

Image.Tools<<
.file="toolsColor.gif@toolsMask.gif"
.y={Display.Primary.height-Image.Tools.height-80}
.x={showDetailToggle?(Display.Primary.width/6):(Display.Primary.width/6)+375}
.anchor=_NW
.states=["off","seloff","on","selon"]
.alpha=1
.layer=-1
>>

panLock=false
panLocked={panLock&(allPlayingScripts==[])}

Trigger.PanLock.test={panLocked&(Scene.3d.mode!=_MOVE)}
Trigger.PanLock.exec={Scene.3d.mode=_MOVE}
Trigger.PanUnlock.test={!panLocked}
Trigger.PanUnlock.exec={Scene.3d.mode=_ROTATE}

Style.ToolLabel<<
.fontSize=10
.fontWeight=_BOLD
.textAlign=_CENTER
.color=606060
>>

ToolLabel.extends="Area"
ToolLabel.Class<<
.image="Image.Tools"
.cursor=_HAND
.enabled={$$.available&allPlayingScripts==[]}
.state="off"
.available=true
.y=0
.width=52
.height=52
.new={
Image.$_lbl.parent="Image.Tools";
Image.$_lbl.x={$$.x+$$.width/2};
Image.$_lbl.y={(Meson.isMac?"44":"42")};
Image.$_lbl.anchor=_C;
Image.$_lbl.enabled=false;
Trigger.$.test={$$.press};
Trigger.$.exec={ClickOn$()};
}
>>

ToolLabel<<
.Rotate.x=0
.Rotate.available={!panLocked}
.Zoom.x=52
.Zoom.y=0
.Zoom.height=26
.Zoom.width=54;
.Measure.x=52
.Measure.y=27
.Measure.height=26
.Measure.width=54;
.Measure.available={!panLocked}
.Reset.x=108
.Reset.y=0
.Reset.height=26
.Reset.width=28
.Note.x=108
.Note.y=26
.Note.width=28
.Note.height=26
.Note.state={showNoteToggle?"on":"off"}
.Move.x=136
.Move.width=47
>>


keyPressed={Image.Tools.layer>=0?Display.Primary.key:""}

Button.extends="Area"
Button.Class<<
.image="Image.Tools"
.keyDown={$$.enabled&(Scene.3d.mode~keyPressed==Button.$.modeKey)}
.tool=""
.state={($$.hover|$$.keyDown?"sel":"")~$$.tool->state}
.new={
Ticker.$.order={Button.$.press|Button.$.keyDown?1:-1};
Ticker.$.exec={"View.3d."~Button.$.attr=@("View.3d."~Button.$.attr)+Button.$.step*Meson.frameStep};
}
>>


Ticker.TTop.exec={View.3d.setDesiredPhi(View.3d.desiredPhi+Button.TTop.step*Meson.frameStep)}
Ticker.TBottom.exec={View.3d.setDesiredPhi(View.3d.desiredPhi+Button.TBottom.step*Meson.frameStep)}

Trigger.AnyKey.test={keyPressed!=""}

Trigger.AnyKey.exec={Anim.FadeTools.enabled=false;Image.Tools.alpha=1}
Trigger.RestoreFade.test={Display.Primary.press}
Trigger.RestoreFade.exec={Anim.FadeTools.enabled=true}

Trigger.Space.test={keyPressed==" "}
Trigger.Space.exec={Scene.3d.mode=(Scene.3d.mode==_ROTATE?_MOVE:_ROTATE)}
Trigger.Enter.test={keyPressed==_ENTER}
Trigger.Enter.exec={ClickOnReset()}

Area.ZoomIn.image="Image.Tools"
Area.ZoomIn.state={Area.ZoomIn.press?"on":Area.ZoomIn.hover?"seloff":"off"}
Area.ZoomIn.cursor=_HAND
Trigger.ZoomIn.test={Area.ZoomIn.press|keyPressed=="+"|keyPressed=="="}
Trigger.ZoomIn.exec={Scene.3d.distance=0;View.3d.setDesiredFov(View.3d.desiredFov*0.8)}

Area.ZoomOut.image="Image.Tools"
Area.ZoomOut.state={Area.ZoomOut.press?"on":Area.ZoomOut.hover?"seloff":"off"}
Area.ZoomOut.cursor=_HAND
Trigger.ZoomOut.test={Area.ZoomOut.press|keyPressed=="-"}
Trigger.ZoomOut.exec={Scene.3d.distance=0;View.3d.setDesiredFov(View.3d.desiredFov*1.2)}


Area.ZoomIn.x=52;Area.ZoomIn.y=0;Area.ZoomIn.width=26;Area.ZoomIn.height=26
Area.ZoomOut.x=80;Area.ZoomOut.y=0;Area.ZoomOut.width=26;Area.ZoomOut.height=26

Trigger.GoInch.test={keyPressed=="i"}
Trigger.GoInch.exec={unitsMul={Scene.3d.inch};unitsLabel={" "~l10n("in")}}
Trigger.GoCM.test={keyPressed=="c"}
Trigger.GoCM.exec={unitsMul={Scene.3d.cm};unitsLabel={" "~l10n("cm")}}



Area.Move.state={Scene.3d.mode==_MOVE?(Area.Move.hover?"selon":"on"):Area.Move.hover?"seloff":"off"}
Area.Rotate.state={Scene.3d.mode==_ROTATE?(Area.Rotate.hover?"selon":"on"):Area.Rotate.hover?"seloff":"off"}
Area.Measure.state={Scene.3d.mode==_MEASURE?(Area.Measure.hover?"selon":"on"):Area.Measure.hover?"seloff":"off"}
Area.Reset.state={Area.Reset.press?"on":Area.Reset.hover?"seloff":"off"}
Area.Note.state={showNoteToggle?(Area.Note.hover?"selon":"on"):Area.Note.hover?"seloff":"off"}
Area.Reset.enabled=true


Trigger.NoteClick.test={Area.Note.press}
Trigger.NoteClick.exec={showNoteToggle=!showNoteToggle}


Style.Tip<<
.fontSize=11
>>

Image.RotateHint<<
.parent="Image.Tools"
.text={"%Tip{"~l10n(Scene.3d.mode==_ROTATE?"rotateonHint":"rotateoffHint")~"}"}
.anchor=_C
.x={Image.Tools.width/2}
.y=65
.alpha=0
.enabled=false
>>
Anim.RotateHintA<<
.attr="Image.RotateHint.alpha"
.rate={Area.Rotate.hover?0.33:2}
.goal={Area.Rotate.hover?1:0}
>>

Image.ZoomInHint<<
.parent="Image.Tools"
.text={"%Tip{"~l10n("zoominHint")~"}"}
.anchor=_C
.x={Image.Tools.width/2}
.y=65
.alpha=0
.enabled=false
>>
Anim.ZoomInHintA<<
.attr="Image.ZoomInHint.alpha"
.rate={Area.ZoomIn.hover?0.33:2}
.goal={Area.ZoomIn.hover?1:0}
>>

Image.ZoomOutHint<<
.parent="Image.Tools"
.text={"%Tip{"~l10n("zoomoutHint")~"}"}
.anchor=_C
.x={Image.Tools.width/2}
.y=65
.alpha=0
.enabled=false
>>
Anim.ZoomOutHintA<<
.attr="Image.ZoomOutHint.alpha"
.rate={Area.ZoomOut.hover?0.33:2}
.goal={Area.ZoomOut.hover?1:0}
>>


Image.MeasureHint<<
.parent="Image.Tools"
.text={"%Tip{"~l10n(Scene.3d.mode==_MEASURE?"measureonHint":"measureoffHint")~"}"}
.anchor=_C
.x={Image.Tools.width/2}
.y=65
.alpha=0
.enabled=false
>>
Anim.MeasureHintA<<
.attr="Image.MeasureHint.alpha"
.rate={Area.Measure.hover?0.33:2}
.goal={Area.Measure.hover?1:0}
>>


Image.ResetHint<<
.parent="Image.Tools"
.text={"%Tip{"~l10n("resetHint")~"}"}
.anchor=_C
.x={Image.Tools.width/2}
.y=65
.alpha=0
.enabled=false
>>

Anim.ResetHintA<<
.attr="Image.ResetHint.alpha"
.rate={Area.Reset.hover?0.33:2}
.goal={Area.Reset.hover?1:0}
>>

Image.NoteHint<<
.parent="Image.Tools"
.text={"%Tip{"~l10n(showNoteToggle?"noteoffHint":"noteonHint")~"}"}
.anchor=_C
.x={Image.Tools.width/2}
.y=65
.alpha=0
.enabled=false
>>

Anim.NoteHintA<<
.attr="Image.NoteHint.alpha"
.rate={Area.Note.hover?0.33:2}
.goal={Area.Note.hover?1:0}
>>


Image.MoveHint<<
.parent="Image.Tools"
.text={"%Tip{"~l10n(Scene.3d.mode==_MOVE?"moveonHint":"moveoffHint")~"}"}
.anchor=_C
.x={Image.Tools.width/2}
.y=65
.alpha=0
.enabled=false
>>

Anim.MoveHintA<<
.attr="Image.MoveHint.alpha"
.rate={Area.Move.hover?0.33:2}
.goal={Area.Move.hover?1:0}
>>


ResetSerial=0
ClickOnReset={foreach(^elem="i";^in=allPlayingScripts;^do={#i->stop});Scene.3d.playInstantly(Scene.3d.runtime->getInitID());ResetSerial=ResetSerial+1}
ClickOnMeasure={Scene.3d.mode=_MEASURE}
ClickOnMove={Scene.3d.mode=_MOVE}
ClickOnRotate={Scene.3d.mode=_ROTATE}
ClickOnZoom={Scene.3d.distance=0}

Area.Tools.y={Image.Tools.y}
Area.Tools.boxPick=true

Anim.FadeTools<<
.attr="Image.Tools.alpha"
.goal={Area.Tools.hover?1:0.4}
.rate={Area.Tools.hover?2:0.5}
.enabled=true
>>


/* Measure function
Image.Measure0<<
.file="measure.gif"
.parent="Scene.3d"
.layer={Scene.3d.mode==_MEASURE&Scene.3d.distance>0?1:-1}
.anchor=_C
.x={Scene.3d.pressX}
.y={Scene.3d.pressY}
>>

Image.Measure1<<
.file="measure.gif"
.parent="Scene.3d"
.layer={Scene.3d.mode==_MEASURE&Scene.3d.distance>0?1:-1}
.anchor=_C
.x={Scene.3d.dragX}
.y={Scene.3d.dragY}
>>

Style.Dist<<
.fontSize=16
.color=aqua
.dropShadow="8000"
>>

Image.Distance<<
.text={#d=Scene.3d.distance*unitsMul;"%Dist{"~(#d==0?l10n("drag"):Raster.formatFloat(^value=#d,^format=0.1)~unitsLabel)~"}"}
.layer={Scene.3d.mode==_MEASURE?1:-1}
.anchor=_S
.x={(Image.Measure0.x+Image.Measure1.x)/2}
.y={(Image.Measure0.y+Image.Measure1.y)/2-10}
>>


/* Note hotspots */
ActionLabelLayout.extends=""
ActionLabelLayout.Class<<
.imageAnchor=_NW
.imageX=0
.imageY=0
.textAnchor=_NW
.textX=0
.textY=0
.width=0
.height=0
>>

tiMaxWidth={("ActionLabelText."~#inst~"_text")->width > ("ActionLabelImage."~#inst~"_image")->width ? ("ActionLabelText."~#inst~"_text")->width : ("ActionLabelImage."~#inst~"_image")->width}
tiMaxHeight={("ActionLabelText."~#inst~"_text")->height > ("ActionLabelImage."~#inst~"_image")->height ? ("ActionLabelText."~#inst~"_text")->height : ("ActionLabelImage."~#inst~"_image")->height}
tiSumWidth={("ActionLabelText."~#inst~"_text")->width + ("ActionLabelImage."~#inst~"_image")->width}
tiSumHeight={("ActionLabelText."~#inst~"_text")->height + ("ActionLabelImage."~#inst~"_image")->height}

ActionLabelLayout.L<<
.imageAnchor=_NW
.imageX=0
.imageY=0
.textAnchor=_NW
.textX=0
.textY=0
.width={tiMaxWidth(^inst=#inst)}
.height={tiMaxHeight(^inst=#inst)}
>>

ActionLabelLayout.Ltopcenter<<
.imageAnchor=_N
.imageX={("ActionLabel."~#inst)->width / 2}
.imageY=0
.textAnchor=_N
.textX={("ActionLabel."~#inst)->width / 2}
.textY={("ActionLabelImage."~#inst~"_image")->height}
.width={tiMaxWidth(^inst=#inst)}
.height={tiSumHeight(^inst=#inst)}
>>

ActionLabelLayout.Ltopleft<<
.imageAnchor=_NW
.imageX=0
.imageY=0
.textAnchor=_NW
.textX=0
.textY={("ActionLabelImage."~#inst~"_image")->height}
.width={tiMaxWidth(^inst=#inst)}
.height={tiSumHeight(^inst=#inst)}
>>

ActionLabelLayout.Ltopright<<
.imageAnchor=_NE
.imageX={("ActionLabel."~#inst)->width}
.imageY=0
.textAnchor=_NE
.textX={("ActionLabel."~#inst)->width}
.textY={("ActionLabelImage."~#inst~"_image")->height}
.width={tiMaxWidth(^inst=#inst)}
.height={tiSumHeight(^inst=#inst)}
>>

ActionLabelLayout.Lbottomcenter<<
.imageAnchor=_N
.imageX={("ActionLabel."~#inst)->width / 2}
.imageY={("ActionLabelText."~#inst~"_text")->height}
.textAnchor=_N
.textX={("ActionLabel."~#inst)->width / 2}
.textY=0
.width={tiMaxWidth(^inst=#inst)}
.height={tiSumHeight(^inst=#inst)}
>>

ActionLabelLayout.Lbottomleft<<
.imageAnchor=_NW
.imageX=0
.imageY={("ActionLabelText."~#inst~"_text")->height}
.textAnchor=_NW
.textX=0
.textY=0
.width={tiMaxWidth(^inst=#inst)}
.height={tiSumHeight(^inst=#inst)}
>>

ActionLabelLayout.Lbottomright<<
.imageAnchor=_NE
.imageX={("ActionLabel."~#inst)->width}
.imageY={("ActionLabelText."~#inst~"_text")->height}
.textAnchor=_NE
.textX={("ActionLabel."~#inst)->width}
.textY=0
.width={tiMaxWidth(^inst=#inst)}
.height={tiSumHeight(^inst=#inst)}
>>

ActionLabelLayout.Lleftcenter<<
.imageAnchor=_W
.imageX=0
.imageY={("ActionLabel."~#inst)->height / 2}
.textAnchor=_W
.textX={("ActionLabelImage."~#inst~"_image")->width}
.textY={("ActionLabel."~#inst)->height / 2}
.width={tiSumWidth(^inst=#inst)}
.height={tiMaxHeight(^inst=#inst)}
>>

ActionLabelLayout.Llefttop<<
.imageAnchor=_NW
.imageX=0
.imageY=0
.textAnchor=_NW
.textX={("ActionLabelImage."~#inst~"_image")->width}
.textY=0
.width={tiSumWidth(^inst=#inst)}
.height={tiMaxHeight(^inst=#inst)}
>>

ActionLabelLayout.Lleftbottom<<
.imageAnchor=_SW
.imageX=0
.imageY={("ActionLabel."~#inst)->height}
.textAnchor=_SW
.textX={("ActionLabelImage."~#inst~"_image")->width}
.textY={("ActionLabel."~#inst)->height}
.width={tiSumWidth(^inst=#inst)}
.height={tiMaxHeight(^inst=#inst)}
>>

ActionLabelLayout.Lrightcenter<<
.imageAnchor=_W
.imageX={("ActionLabelText."~#inst~"_text")->width}
.imageY={("ActionLabel."~#inst)->height / 2}
.textAnchor=_W
.textX=0
.textY={("ActionLabel."~#inst)->height / 2}
.width={tiSumWidth(^inst=#inst)}
.height={tiMaxHeight(^inst=#inst)}
>>

ActionLabelLayout.Lrighttop<<
.imageAnchor=_NW
.imageX={("ActionLabelText."~#inst~"_text")->width}
.imageY=0
.textAnchor=_NW
.textX=0
.textY=0
.width={tiSumWidth(^inst=#inst)}
.height={tiMaxHeight(^inst=#inst)}
>>

ActionLabelLayout.Lrightbottom<<
.imageAnchor=_SW
.imageX={("ActionLabelText."~#inst~"_text")->width}
.imageY={("ActionLabel."~#inst)->height}
.textAnchor=_SW
.textX=0
.textY={("ActionLabel."~#inst)->height}
.width={tiSumWidth(^inst=#inst)}
.height={tiMaxHeight(^inst=#inst)}
>>

ActionLabelText.extends="Image"
ActionLabelText.Class<<
.inst=""
.states=["plain","hover"]
.anchor={$$.parent->layout->textAnchor(^inst=$$.inst)}
.x={$$.parent->layout->textX(^inst=$$.inst)}
.y={$$.parent->layout->textY(^inst=$$.inst)}
.layer=9
.text={$$.parent->textValue}
.enabled=false
.new={
Area.$.image="$$";
Area.$.state={@("Area."~$$.inst~".state")}
}
>>
ActionLabelImage.extends="Image"
ActionLabelImage.Class<<
.inst=""
.anchor={$$.parent->layout->imageAnchor(^inst=$$.inst)}
.x={$$.parent->layout->imageX(^inst=$$.inst)}
.y={$$.parent->layout->imageY(^inst=$$.inst)}
.layer={$$.file == "" ? -1 : 9}
.file={$$.parent->imageFile}
.dataSource="Data.ModelUI";
.enabled=false
>>

ActionLabel.extends="Image"
ActionLabel.Class<<
.anchor=_S
.layout={"ActionLabelLayout.L"~l10n("$")->imagePlacement~l10n("$")->imageAlignment}
.width={$$.layout->width(^inst="$")}
.height={$$.layout->height(^inst="$")}
.textValue={l10n("$")->text}
.imageFile={l10n("$")->imageFile}
.enabled=false
.new={
ActionLabelText.$_text.parent="ActionLabel.$";
ActionLabelText.$_text.inst="$";
ActionLabelImage.$_image.parent="ActionLabel.$";
ActionLabelImage.$_image.inst="$";
}
>>

ActionTrigger.extends=""
ActionTrigger.Class<<
.inst="$"
.script=""
.subGroup=""
.trackingURL=""
.onClick=""
.subMembers=["$$"]
.runnableInst="$"
.actionType=""
.jumpToTime=-1
.runnable=false
.hasScripts={^h=false;foreach(^elem="j";^in=$$.subMembers;^do={#j->script!=""?#h=true});^h}
.updateRunnable={($$.runnable=($$.hasScripts&allPlayingScripts==[]))?(^w="";$$.runnableInst="";foreach(^elem="j";^in=$$.subMembers;^do={Scene.3d.testPreconditions(#j->script)?(#w=true,$$.runnableInst=#j->inst)});$$.runnable=^w)}
.actionPress=false
.new={
Trigger.$.test={ActionTrigger.$.actionPress};
Trigger.$.exec={allPlayingScripts==[]?foreach(^elem="i";^in=$$.subMembers;^do={#i->script!=""?((#i->actionType=="still"?(Scene.3d.playStartSlow(#i->script)?Scene.3d.jumpToTime(^script=#i->script;^time=#i->jumpToTime)):Scene.3d.playStartSlow(#i->script))?TrackUserAction(#i->trackingURL))});$$.onClick()};
Ticker.$_urun.exec={ActionTrigger.$.updateRunnable()};
Ticker.$_urun.order=20;
}
>>


Style.Hot<<
.fontSize=14
.color="000"
.textAlign=_LEFT
.margin=5
>>

Image.HSIndicator<<
.file="hotColor.gif@hotMask.gif"
.parent="Scene.3d"
.anchorX=13
.anchorY=13
.enabled=false
.layer=-1
>>
Anim.HSIAlpha<<
.attr="Image.HSIndicator.alpha"
.rate=0.5
.goal={showNote?1:0}
>>


HotSpot.Class.enabled=true;

HotImage.extends=""
HotImage.Class<<
.lineColor="ff0"
.x={Scene.3d.absX+(($$.anchor=="_S"|$$.anchor=="_N")?Scene.3d.width/2:HotSpot.3d_$.x)+($$.anchorX>0?-22:22)}
.y={Scene.3d.absY+(HotSpot.3d_$.y-$$.floatUpBy*(($$.anchor=="_SE"|$$.anchor=="_S"|$$.anchor=="_SW")?1:-1))}
.floatUpBy=9
.anchor={"_"~(HotSpot.3d_$.y>($$.height+$$.floatUpBy)?"S":"N")~(($$.width>Display.Primary.width/2)?"":((HotSpot.3d_$.x+Scene.3d.absX+$$.width>Display.Primary.width-25)?"E":"W"))}
.offLayer=-1
.layer={HotImage.$.forceShow|HotSpotButton.$.active&HotSpot.3d_$.hover?100:HotImage.$.offLayer}
.showFlag={HotSpotButton.$.active&(l10n("$")->text!="")&!HotSpot.3d_$.hover}
.enabled=false
.buffer="cfff"
.forceShow=false
.textValue={"%Hot{"~l10n("$")->text~"}"}
.dx={(Scene.3d.absX+HotSpot.3d_$.x)-$$.x}
.dy={(Scene.3d.absY+HotSpot.3d_$.y)-$$.y-$$.height/2}
.new={
Image.HSIndicator.offsets=Image.HSIndicator.offsets++[{HotImage.$.showFlag?HotSpot.3d_$.x:_N},{HotSpot.3d_$.y}];
Trigger.$_init.test={$$.layer>=0};
Trigger.$_init.exec={$$.init()};
}
.init={
ActionLabel.Hot.x={$$.x};
ActionLabel.Hot.y={$$.y};
ActionLabel.Hot.anchor={$$.anchor};
ActionLabel.Hot.enabled={$$.enabled};
ActionLabel.Hot.buffer={$$.buffer};
ActionLabel.Hot.textValue={$$.textValue};
ActionLabel.Hot.layer={$$.layer};
ActionLabel.Hot.alpha=0;
ActionLabel.Hot.inst="$";
ActionLabel.Hot.rebuild=true;
$$.width={ActionLabel.Hot.width};
$$.height={ActionLabel.Hot.height};
$$.anchorX={ActionLabel.Hot.anchorX};
$$.anchorY={ActionLabel.Hot.anchorY};
Anim.Hot_inout.attr="ActionLabel.Hot.alpha";
Anim.Hot_inout.rate=2;
Anim.Hot_inout.goal={$$.forceShow|HotSpot.3d_$.hover&Area.3d.hover&!Area.3d.press?1:0};
ImageBorder.Hot.color={$$.lineColor};
Image.Hot_pt.enabled=false;
Image.Hot_pt.parent="ActionLabel.Hot";
Image.Hot_pt.layer={(!$$.forceShow|$$.anchor==_S|$$.anchor==_N|(ActionLabel.Hot.alpha<1))?-1:0};
Image.Hot_pt.anchor=_C;
Image.Hot_pt.x={$$.anchorX+($$.anchor==_SE|$$.anchor==_NE?16:-16)};
Image.Hot_pt.y={$$.anchorY+($$.anchor==_SW|$$.anchor==_SE?5:-5)};
Image.Hot_pt.dataSource=Image.Tools.dataSource;
Image.Hot_pt.file="arrowColor.gif@arrowMask.gif";
/* Image.Hot_pt.buffer={$$.lineColor}; */
Image.Hot_pt.width=17;
Image.Hot_pt.height=34;
Image.Hot_pt.scaleX=.5;
/* Image.Hot_pt.scaleY=3;*/
/* Image.Hot_pt.m10={0-Image.Hot_pt.scaleX*Image.Hot_pt.sinAngle};*/
Image.Hot_pt.angle={$$.anchor==_SE?160:$$.anchor==_NE?-160:$$.anchor==_SW?70:$$.anchor==_NW?-70:0};
}
>>

allArmedHS=[]
Area.3d.cursor={allArmedHS==[]?"":_HAND}

HotSpotButton.extends=["HotSpotRT", "ActionTrigger"]
HotSpotButton.Class<<
.actionPress={HotSpot.3d_$.enabled&HotSpot.3d_$.press}
.active={($$.runnable|$$.script=="")&$$.mouseOver&HotSpot.3d_$.visible&allPlayingScripts==[]}
.mouseOver=true
.armed={$$.runnable&$$.mouseOver&HotSpot.3d_$.hover}
.force=""
.new={
HotImage.$.buffer;
Trigger.Block_$HS.test={Area.3d.press&!HotSpot.3d_$.press};
Trigger.Block_$HS.exec={HotSpot.3d_$.enabled=false};
Trigger.Unblock_$HS.test={!Area.3d.press};
Trigger.Unblock_$HS.exec={HotSpot.3d_$.enabled=true};
ChangeTrigger.Armed_$.test={$$.armed};
ChangeTrigger.Armed_$.exec={$$.armed?(allArmedHS=allArmedHS++["$$"]):(allArmedHS=allArmedHS--["$$"])};
}
>>



AppHotSpot.extends=""
AppHotSpot.Class<<
.inst="$"
.script=""
.actionType="anim"
.jumpToTime=-1
.alwaysVisible=false
.location=["","",0,0,0,0]
.mouseOver=true
.force=""
.onClick=""
.newHotSpot={
HotSpotButton.$.actionType=$$.actionType;
HotSpotButton.$.jumpToTime=$$.jumpToTime;
HotSpotButton.$.script=$$.script;
HotSpotButton.$.alwaysVisible=$$.alwaysVisible;
HotSpotButton.$.location=$$.location;
HotSpotButton.$.onClick={$$.onClick()};
HotSpotButton.$.mouseOver=$$.mouseOver;
HotSpotButton.$.force=$$.force;
HotImage.$.lineColor="00f";
HotImage.$.forceShow={HotSpotButton.$.force!="" & @("SceneState.3d."~HotSpotButton.$.force[0])==HotSpotButton.$.force[1]};
$$.mouseOver?(Image.HSIndicator.layer={allPlayingScripts==[]?1:-1});
}
.new={
pendingHotSpots=pendingHotSpots ++ ["$$"];
}
>>
pendingHotSpots=[]



Ticker.ProcessHotSpots.order={(pendingHotSpots==[] | Image.Tools.layer<0)?-1:1}
Ticker.ProcessHotSpots.exec={
#hsInst=pendingHotSpots[0];
pendingHotSpots=pendingHotSpots--[#hsInst];
#hsInst->newHotSpot();
pendingHotSpots==[]?(Scene.3d.dirty=true);
}




/* Top Menu */
showDetailToggle=true;
showDemoToggle=false;


TopMenuButton.extends="Image"
TopMenuButton.Class<<
.dataSource=Image.Tools.dataSource
.file="menuColor.gif@menuMask.gif"
.y=70
.x={Display.Primary.width-10}
.anchor=_NE
.states=["off","seloff","on","selon"]
.alpha=1
.layer=1
.new={
Area.Detail.image="TopMenuButton.$";
Area.Detail.state={showDetailToggle?(Area.Detail.hover?"selon":"on"):Area.Detail.hover?"seloff":"off"};
Area.Detail.cursor=_HAND;
Area.Detail.x=0;
Area.Detail.y=0;
Area.Detail.width=109;
Area.Detail.height=32;
Area.Detail.enabled={allPlayingScripts==[]};
Trigger.DetailClick.test={Area.Detail.press};
Trigger.DetailClick.exec={showDetailToggle=!showDetailToggle;showDemoToggle=!showDemoToggle};
Area.Demo.image="TopMenuButton.$";
Area.Demo.state={showDemoToggle?(Area.Demo.hover?"selon":"on"):Area.Demo.hover?"seloff":"off"};
Area.Demo.cursor=_HAND;
Area.Demo.x=113;
Area.Demo.y=0;
Area.Demo.width=156;
Area.Demo.height=32;
Area.Demo.enabled={allPlayingScripts==[]};
Trigger.DemoClick.test={Area.Demo.press};
Trigger.DemoClick.exec={showDetailToggle=!showDetailToggle;showDemoToggle=!showDemoToggle;};
}
>>

Style.TopMenuLabel<<
.fontSize=14
.color="000"
.textAlign=_LEFT
.fontWeight=_BOLD
.margin=5
>>

TopMenuLabelOnly.extends="Image"
TopMenuLabelOnly.Class<<
.y=75
.x={Display.Primary.width-20}
.text={"%TopMenuLabel{"~l10n("productDemoLabel")~"}"}
.anchor=_NE
.layer=1
>>





/* Details */
currentDetail=""
detailButtonCounter=0

Image.DetailButtons<<
.y=110
.x={Display.Primary.width-10}
.width=500
.height=500
.layer={showDetailToggle?3:-1}
>>



Style.DetailTextFormatSmall<<
.color=black
.fontSize=13
>>
Style.DetailTextFormatLarge<<
.color=black
.fontSize=16
>>


Image.detailsize.layer=1;
Image.detailsize.wrapWidth=330
Image.detailsize.text="";
Image.detailsize.x=-400;
Image.detailsize.y=100;


DetailText.extends="Image"
DetailText.Class<<
.wrapWidth=330
.tabStops=[15,30,45,60]
.anchor=_NE
.label=""
.text={Image.detailsize.text={"%DetailTextFormatLarge{"~$$.label~"}"};Image.detailsize.height>Display.Primary.height-170?"%DetailTextFormatSmall{"~$$.label~"}":"%DetailTextFormatLarge{"~$$.label~"}"}
>>



DetailContent.extends="Image"
DetailContent.Class<<
.create=false
.y=110
.x={Display.Primary.width-230}
.layer={showDetailToggle?3:-1}
.label=""
.new={
DetailText.$_text.parent="$$";
DetailText.$_text.label={$$.label};
}
>>

DetailContent.detailwindow.create=true;




AppControlSection.extends=""
AppControlSection.Class<<
.create=true
.section=""
.new={
DetailButton.$.detailText={l10n("$")->text};
DetailButton.$.label={l10n("$")->section};
}
>>

Style.DetailButtonSmall<<
_off.color=black
_on.color=yellow
_off.fontWeight=_BOLD
_on.fontWeight=_BOLD
_off.fontSize=10
_on.fontSize=10
>>

Style.DetailButtonLarge<<
_off.color=black
_on.color=yellow
_off.fontWeight=_BOLD
_on.fontWeight=_BOLD
_off.fontSize=12
_on.fontSize=12
>>



DetailButton.extends="Image"
DetailButton.Class<<
.anchor=_NE
.dataSource=Image.Tools.dataSource;
.file="buttonColor.gif@buttonMask.gif"
.parent="Image.DetailButtons"
.label=""
.detailText=""
.width=192
.height=23
.x=0
.y=0
.states=["off","on"]
.new={
currentDetail==""?(currentDetail="$";DetailContent.detailwindow.label={$$.detailText});
DetailButton.$.y=(detailButtonCounter*26);
detailButtonCounter=detailButtonCounter+1;
Area.$.image="DetailButton.$";
Area.$.state={Area.$.hover?"on":"off"};
Area.$.cursor=_HAND;
Area.$.boxPick=true;
Image.$_lbl.parent="DetailButton.$";
Image.$_lbl.layer=2;
Image.$_lbl.x=96;
Image.$_lbl.y=11;
Image.$_lbl.anchor=_C;
Image.$_lbl.enabled=false;
Image.$_lbl.states=["off","on"];
Image.$_lbl.text={Meson.callMethod(^method=lengthMethod,^args=[$$.label])>24?"%DetailButtonSmall_#{"~$$.label~"}":"%DetailButtonLarge_#{"~$$.label~"}"};
Area.$_lbl.image="Image.$_lbl";
Area.$_lbl.state={currentDetail=="$"?"on":"off"};
Trigger.$_press.test={Area.$.press};
Trigger.$_press.exec={
@{"Area."~currentDetail~"_lbl.state"}="off";
currentDetail="$";
@{"Area."~currentDetail~"_lbl.state"}="on";
DetailContent.detailwindow.label=DetailButton.$.detailText;
};
}
>>

autoplayButtons=[]
autoplayButtonCounter=0

/* Demos */
demoButtonCounter=0

ActionTrigger.extends=""
ActionTrigger.Class<<
.inst="$"
.script=""
.subGroup=""
.trackingURL=""
.onClick=""
.subMembers=["$$"]
.runnableInst="$"
.actionType=""
.jumpToTime=-1
.runnable=false
.hasScripts={^h=false;foreach(^elem="j";^in=$$.subMembers;^do={#j->script!=""?#h=true});^h}
.updateRunnable={($$.runnable=($$.hasScripts&allPlayingScripts==[]))?(^w="";$$.runnableInst="";foreach(^elem="j";^in=$$.subMembers;^do={Scene.3d.testPreconditions(#j->script)?(#w=true,$$.runnableInst=#j->inst)});$$.runnable=^w)}
.actionPress=false
.new={
Trigger.$.test={ActionTrigger.$.actionPress};
Trigger.$.exec={allPlayingScripts==[]?foreach(^elem="i";^in=$$.subMembers;^do={#i->script!=""?((#i->actionType=="still"?(Scene.3d.playStartSlow(#i->script)?Scene.3d.jumpToTime(^script=#i->script;^time=#i->jumpToTime)):Scene.3d.playStartSlow(#i->script)))});$$.onClick()};
Ticker.$_urun.exec={ActionTrigger.$.updateRunnable()};
Ticker.$_urun.order=20;
}
.playScripts={allPlayingScripts==[]?foreach(^elem="i";^in=$$.subMembers;^do={#i->script!=""?((#i->actionType=="still"?(Scene.3d.playStartSlow(#i->script)?Scene.3d.jumpToTime(^script=#i->script;^time=#i->jumpToTime)):Scene.3d.playStartSlow(#i->script)))});$$.onClick()}
>>



Image.DemoButtons<<
.y=110
.x={Display.Primary.width-10}
.width=500
.height=500
.layer={showDemoToggle?4:-1}
>>

AppControl.extends=""
AppControl.Class<<
.inst="$"
.subGroup=""
.onClick=""
.xOffset=0
.script=""
.actionType="anim"
.jumpToTime=-1
.newDemo={
processedDemos[processedDemosCounter]="$$";
processedDemosCounter=processedDemoCounter+1;
DemoButton.$.actionType=$$.actionType;
DemoButton.$.jumpToTime=$$.jumpToTime;
DemoButton.$.script=$$.script;
DemoButton.$.subGroup=$$.subGroup;
DemoButton.$.onClick={$$.onClick()};
DemoButton.$.label={l10n("$")->text};
autoplayButtons[autoplayButtonCounter]="ActionTrigger.$";
autoplayButtonCounter=autoplayButtonCounter+1;
}
.addAction={
DemoButton.$.subMembers=DemoButton.$.subMembers++[#arg];
autoplayButtons[autoplayButtonCounter]="ActionTrigger.$";
autoplayButtonCounter=autoplayButtonCounter+1;
}
.new={
pendingDemos[pendingDemosCounter]="$$";
pendingDemosCounter=pendingDemosCounter+1;
}
>>



Style.DemoButtonSmall<<
.color=black
.fontWeight=_BOLD
.fontSize=10
>>

Style.DemoButtonLarge<<
.color=black
.fontWeight=_BOLD
.fontSize=12
>>


DemoButton.extends=["ActionTrigger", "Image"]
DemoButton.Class<<
.anchor=_NE
.dataSource=Image.Tools.dataSource;
.file="buttonColor.gif@buttonMask.gif"
.parent="Image.DemoButtons"
.label=""
.width=192
.height=23
.x=0
.y=0
.states=["off","on"]
.enabled={Scene.3d.enabled&allPlayingScripts==[]&$$.runnable}
.alpha={(!$$.hasScripts|$$.enabled)?1:0.5}
.actionPress={Area.$.press}
.tip={l10n($$.runnableInst)->tipText}
.place=-1
.textValue={"%Script_#{"~l10n("$")->text~"}"}
.new={
$$.place=demoButtonCounter;
DemoButton.$.y=(demoButtonCounter*26);
demoButtonCounter=demoButtonCounter+1;
Area.$.image="DemoButton.$";
Area.$.state={Area.$.hover?"on":"off"};
Area.$.cursor=_HAND;
Area.$.boxPick=true;
Image.$_lbl.parent="DemoButton.$";
Image.$_lbl.layer=2;
Image.$_lbl.x=96;
Image.$_lbl.y=11;
Image.$_lbl.anchor=_C;
Image.$_lbl.enabled=false;
Image.$_lbl.text={Meson.callMethod(^method=lengthMethod,^args=[$$.tip~" "~$$.label])>24?"%DemoButtonSmall{"~$$.tip~" "~$$.label~"}":"%DemoButtonLarge{"~$$.tip~" "~$$.label~"}"};

/*Image.$_lbl.text={"%DemoButton{"~$$.tip~" "~$$.label~"}"}; */
}
>>

pendingDemos=[]
pendingDemosCounter=0
processedDemos=[]
processedDemosCounter=0
processPendingDemos={
foreach(^elem="c"; ^in=pendingDemos; ^do={
#c->subGroup=="" ? #c->newDemo() : (#mainC=@("sub_"~#c->subGroup))=="" ? (("sub_"~(#c->subGroup))=#c; #c->newDemo()) : #mainC->addAction(#c);
});
}


/* Sidecars */
Style.Sidecar<<
.fontSize=14
.color=black
.textAlign=_LEFT
.lineSpacing=2
.marginTop=4
.marginLeft=4
.marginRight=4
.marginBottom=4
>>
Style.SidecarTitle<<
.fontWeight=_BOLD
.fontSize=10
.color=black
.textAlign=_C
.marginTop=2
.marginLeft=4
.marginRight=4
>>


ImageBorder.extends=""
ImageBorder.Class<<
.thickness=1
.color=black
.shadowColor={$$.color}
.highlightColor={$$.color}
.borderFor="Image.$"
.new={
Image.$_bt.parent={ImageBorder.$.borderFor};
Image.$_bt.buffer={ImageBorder.$.highlightColor};
Image.$_bt.x=-1;
Image.$_bt.y=-1;
Image.$_bt.width={ImageBorder.$.borderFor->width+2};
Image.$_bt.height=1;
Image.$_bb.parent={ImageBorder.$.borderFor};
Image.$_bb.buffer={ImageBorder.$.shadowColor};
Image.$_bb.x=-1;
Image.$_bb.y={ImageBorder.$.borderFor->height};
Image.$_bb.width={ImageBorder.$.borderFor->width+2};
Image.$_bb.height=1;
Image.$_bl.parent={ImageBorder.$.borderFor};
Image.$_bl.buffer={ImageBorder.$.highlightColor};
Image.$_bl.x=-1;
Image.$_bl.y=-1;
Image.$_bl.width=1;
Image.$_bl.height={ImageBorder.$.borderFor->height+2};
Image.$_br.parent={ImageBorder.$.borderFor};
Image.$_br.buffer={ImageBorder.$.shadowColor};
Image.$_br.x={ImageBorder.$.borderFor->width};
Image.$_br.y=-1;
Image.$_br.width=1;
Image.$_br.height={ImageBorder.$.borderFor->height+2};
}
>>


AppControlSidecar.extends="ActionLabel"
AppControlSidecar.Class<<
.anchor=_NE
.x={Display.Primary.width-215}
.y=140
.script=""
.buffer="ccf5f5f5"
.textValue={"%Sidecar{"~l10n("$")->text~"}"}
.pleaseShow=false
.scriptRT={@("Scene.3d.script_"~$$.script)}
.alpha=0
.new={
Anim.$_inout.attr="$$.alpha";
Anim.$_inout.rate=0.7;
Anim.$_inout.goal={$$.pleaseShow?1:0};
ImageBorder.$.shadowColor="bb7";
ImageBorder.$.highlightColor="ffe";
Image.$_topBar.parent="$$";
Image.$_topBar.buffer="44999999";
Image.$_topBar.width={$$.width};
Image.$_topBar.height=20;
Image.$_topBar.text={"%SidecarTitle{"~l10n("$")->titleText~"}"};
Image.$_topBar.y=0;
Image.$_topBar.layer=10;
Image.$_topBar.anchor=_SW;
ImageBorder.$_topBar.shadowColor="bb7";
ImageBorder.$_topBar.highlightColor="ffe";
Image.$_close.parent="$$";
Image.$_close.anchor=_SE;
Image.$_close.x={$$.width};
Image.$_close.y=0;
Image.$_close.layer=11;
Image.$_close.dataSource=Image.Tools.dataSource;
Image.$_close.file="close.gif";
Image.$_close.states=["off","on"];
Image.$_close.cursor=_HAND;
Image.$_close.absEnabled=true;
Area.$_close.image="Image.$_close";
Area.$_close.boxPick=true;
Area.$_close.state={Area.$_close.hover?"on":"off"};
Trigger.$_show.test={$$.scriptRT!=""&$$.scriptRT->playing};
Trigger.$_show.exec={$$.pleaseShow=true;$$.layer=98};
Trigger.$_restore.test={$$.pleaseShow&showDemoToggle};
Trigger.$_restore.exec={$$.layer=98};
Trigger.$_temphide.test={$$.pleaseShow&showDetailToggle};
Trigger.$_temphide.exec={$$.layer=-1};
Trigger.$_hide.test={Area.$_close.press|(allPlayingScripts!=[]&(!$$.scriptRT->playing))};
Trigger.$_hide.exec={$$.pleaseShow=false;$$.layer=97;Area.$_close.press?($$.alpha=0)};
ChangeTrigger.$_on_reset.test={ResetSerial};
ChangeTrigger.$_on_reset.exec={Trigger.$_hide.exec();$$.alpha=0}
}
>>

uiDone={
processPendingDemos();
detailButtonCounter==0?(showDetailToggle=false;showDemoToggle=true;TopMenuLabelOnly.TMLabel.create=true;):(showDetailToggle=true;showDemoToggle=false;TopMenuButton.TMButton.create=true;)
}

/* AUTOPLAY code */
Autoplay.extends="Image"
Autoplay.Class<<
.startTime=AutoplayStartTime
.delayTime={AutoplayDelayTime!=""?AutoplayDelayTime:10}
.active=false
.counter=0
.scriptState=0
.x={Display.Primary.width-70}
.y={Display.Primary.height-20}
.anchor=_SE
.layer=1
.alpha=1
.pleaseShow=true;
.text={$$.active?"Demonstration autolay running: Move mouse to stop":""}
.playDemo={$$.active?$$.scriptState=0;autoplayButtons[$$.counter]->playScripts();$$.counter=$$.counter+1}
.new={
Timer.$_activate.exec={Timer.$_activate.stop();$$.scriptState!=1?($$.active=true;ClickOnReset();$$.counter=0;showDetailToggle=false;showDemoToggle=true;$$.playDemo())};
Timer.$_activate.delay=$$.startTime;
Timer.$_activate.start();
Timer.$_next.exec={Timer.$_next.stop();($$.counter==autoplayButtonCounter?(ClickOnReset();$$.counter=0));$$.playDemo()};
Timer.$_next.delay=$$.delayTime;
ChangeTrigger.$_start.test={Display.Primary.mouseX};
ChangeTrigger.$_start.exec={($$.active==false?Timer.$$_activate.stop():(ClickOnReset();showDetailToggle=true;showDemoToggle=false;$$.counter=0;$$.active=false;Timer.$_next.stop()));Timer.$_activate.start()};
Trigger.$_nextDemo.test={$$.active&$$.scriptState==2};
Trigger.$_nextDemo.exec={Timer.$_next.start()};
ChangeTrigger.$_scriptState.test={allPlayingScripts==[]};
ChangeTrigger.$_scriptState.exec={allPlayingScripts==[]?($$.scriptState==1?($$.scriptState=2)):($$.scriptState=1)};
Anim.$_msgFlash.attr="$$.alpha";
Anim.$_msgFlash.rate=0.7;
Anim.$_msgFlash.goal={$$.pleaseShow?1:0};
Timer.$_msgFlashTrigger.exec={$$.pleaseShow=!$$.pleaseShow};
Timer.$_msgFlashTrigger.delay=2;
Timer.$_msgFlashTrigger.repeat=true;
Timer.$_msgFlashTrigger.start();
}
>>

AutoplayStartTime!=""?AutoplayStartTime>0?Autoplay.demos.create=true;




Go to Top of Page

soil
Infrequent Poster

China
13 Posts

Posted - 03/28/2012 :  13:08:47  Show Profile
The link(http://support.strata.com/index.php?sid=2637485&lang=en&action=artikel&cat=20&id=313&artlang=en) said that we can change default language by add a line in the html file,but when I do that ,the diaplaying language is also English! That's why?
Following is the content of my html file:
<html>
<head>
<SCRIPT LANGUAGE="JavaScript">
var title=location.href;
title=title.substring(0,title.lastIndexOf("/index.html"));
title=title.substring(title.lastIndexOf("/")+1);
title=title.replace(/_/g," ");
document.write('<title> '+title+' </title>');
//-->
</script>
</head>
<body scroll="auto" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" bgcolor="#FFFFFF">

<center>
<script>
document.write("<applet code=com.kaon.meson.MesonApplet ");
document.write("archive='mesonCombined.jar' width=100% height=100% ");
document.write("alt='Please Enable Java' codebase='.' MAYSCRIPT>");
document.write("<PARAM name='java_arguments' value='-Xmx256m'>");
document.write("<PARAM name='brand' value='strata'>");
document.write("<PARAM name='Meson.language' value='zh'>");
document.write("<PARAM name='meson' value='Meson.setCurrentDataSource(Meson.documentBase=Meson.codeBase);Meson.gluon(\"com.kaon.meson.raster.RasterGluon\");Meson.gluon(\"com.kaon.meson.scene.SceneGluon\");Data.Program.url=\"externalweb.jar\";'>");
document.write("Java is currently not available on your browser. Please enable Java (www.java.com) to view the model.");
document.write("</applet>");
</script>
</center>
</body>
</html>

Go to Top of Page

soil
Infrequent Poster

China
13 Posts

Posted - 04/11/2012 :  13:38:42  Show Profile
Now I have realized the displaying of Chinese language on my broswer. I found it has none relationship with template.txt ,and just add the key words "_zh" in the ui.txt!And I hope the above information may help the man who whant to diaplay special language in his strata live animaion.

Edited by - soil on 04/11/2012 13:42:28
Go to Top of Page
  Previous Topic Topic Next Topic  
 Forum Locked
 Printer Friendly
Jump To:
StrataCafe Forums © 2009 StrataCafe Go To Top Of Page
Snitz Forums 2000