26 Replies Latest reply on Jul 8, 2013 5:27 AM by Trevorׅ

    ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic

    Trevorׅ Adobe Community Professional

      Ok. I must admit the title might be a bit on the negative side but there's a reason for that.

       

      In the 20 minutes or so that I have tried out some of SUI stuff on ID CC these are some of the problems I have come across.

      There a a bunch more that I can't be bothered to type out just now.

       

      1) The stacking order on Windows has changed to be the same as the Mac's -

      myImage = ...... (geometricBound[x,x,x,x])

      myStatic = ........(geo.. same as above)

      The static overlays the image - great, except for the masses of script that are going to get messed up by that.

      Like the day they will change from Left to Right Lane driving in England, nice idea but there's going to be a heck of a lot of funerals.

      Have to check is Mac then ...  is Window then is version ..... I guess in another 25 years time thing will sort themselves out.

       

      2) Horizontal Scrollbar gone, kaput, zap, pow disappeared of the face of the screen.

       

      3) Vertical scrollbar, looks like the words in this threads titles.

       

      4) See my beautiful scrollable panel function (don't forget to fix up the windows bug first) and see how rubbish it scrolls on CC - on CS6 and 5 looked great.

       

      5) The unenabled icon button show's as the enabled one and some combination of both of them show when unenabled, it is really both fascinating and scary to think just how much time adobe must of spent testing things out

       

      6) Image positions jump (a pixel) sometimes on clicking a radio button and sizes of panels have shrunk by just enough to make thinks look a mess.

       

      7) Treeview, cut down like grass, see http://forums.adobe.com/thread/1235394?tstart=0 for other problems that Marc wrote there.

       

      8) I set an editText graphic background color to null, on cs6 worked fine on "the new  more stable 64bit" indesign CC crashed within .001 of a second.

       

      Well a least it did something quick.

       

      I thought that I would wait some time before downloading indesign CC but when I saw the post on the treeview I decided to take a look.

       

      Please add to the list.

       

      P.s. Hi Peter, congrats on your new release of your excellent Grep book, good luck on your new release of the SUI guide (It's going to be a lot of work!!!)

        • 1. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
          Trevorׅ Adobe Community Professional

          9) Mouseover eventlistener not working 100%

           

          Here's a screen shot of a not finished script I'm working on.

          CS6 and CC spot the differences.

          scriptName + scriptVersion + scriptDate_2013-06-19_02-11-02.png

          scriptName + scriptVersion + scriptDate_2013-06-19_02-54-30.png

          scriptName + scriptVersion + scriptDate_2013-06-19_02-58-46.png

          The change is the icons is mainly caused by the change in the stacking order Icon

          • 2. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
            Vamitul Level 4

            Guess it's finally time for me to switch to ActionScript then.. too bad i just brought a RapidUI license.

             

            on a side note.. GODD.... that pink background is burning my eyes

            • 3. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
              TᴀW Adobe Community Professional & MVP

              I'm not sure about switching to Actionscript. I just watched a video by

              Jonathan Ferman (Adobe Exchange manager, on Adobe TV) from the IMAX

              expo, and if I understood correctly, even Adobe is planning to switch to

              HTML5 interfaces for panels and things.

               

              Don't have the link handy.

               

              Ariel

              • 4. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
                Laubender Adobe Community Professional & MVP

                @Ariel – I do have the link, but don't know if we are allowed to share it since it's part of the prerelease programme…

                 

                Uwe

                • 5. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
                  Trevorׅ Adobe Community Professional

                  Dear Peter,

                   

                  Can you please come out with your ActionScript HTML5 UI guide as soon as possible.

                   

                  Thanks,

                   

                  Trevor

                  • 6. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
                    Vamitul Level 4

                    The saddest part, for me, is that i was finaly getting confortable with using scriptUI and kind of excited to start with ExtensionBuilder. by the time i get the HTML5 Ui, they will probably switch to something else.

                    • 7. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
                      Trevorׅ Adobe Community Professional

                      10) Can't change font size, style or size on edit, static or button texts

                      11) When coloring the edit texts background color one gets a silly grey border.

                       

                       

                      CC

                      scriptName + scriptVersion + scriptDate_2013-06-19_14-40-01.png

                      CS6

                      _2013-06-19_14-41-24.png

                      • 8. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
                        [Jongware] Most Valuable Participant

                        "But hey look, all your scripts now can have our New Dark UI! That's gotta count as a plus!"

                         

                        Three words:

                        Dis. Appoint. Ing.

                         

                        The same three words that describe InDesign CC, New Scriptable Features In InDesign CC, and CC altogether.

                        • 9. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
                          Vamitul Level 4

                          what are "New Scriptable Features In InDesign CC"??

                          • 10. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
                            Marc Autret Level 4

                            Hi ~Trevor~

                             

                            Default colors are probably inherited from the InDesign skin itself, which can be changed from Preferences, or using the new uiBrightnessPreference property. (But of course this is not a good practice to change user prefs through scripting.)

                             

                            @+

                            Marc

                            • 12. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
                              [Jongware] Most Valuable Participant

                              A short summary : 43 pages for (every single ******** object in the DOM).createXXXQRcode, plus 1 page for uiBrightnessPreference. Does that sum it up?

                               

                              The programmers really took the shortest possible shortcut to adding createXXQRcode  -- they tied it to the most basic of base objects in InDesign. What possible use would Sound.createPlainTextQRCode and Checkbox.createPlainTextQRCode have!?

                               

                              Actually it's a surprise File.createPlainTextQRCode and Math.createPlainTextQRCode are not included as well.

                               

                              Message was edited by: [Jongware] What, "********" is a naughty word? How about "smegging" then?

                              • 13. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
                                Vamitul Level 4

                                no surprise actually. If they would touch base javascript classes they would give us reasons to complain why are we still stuck with ancient 3'rd edition of ECMA Script.

                                @ Mark, thank you.

                                I did see something that might be usefull so far (if it's not strictly related to epub workflow):

                                TOCStyle

                                makeAnchor     boolean         If true, make text anchor in source paragraph.

                                 

                                 

                                Still, i see no reason to upgrade from CS5.

                                • 14. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
                                  Andreas Jansson Level 2

                                  It's a great improvement, everyone is so happy with the New Dark Creative Cloud.

                                  Look at all the reviews: http://www.adobe.com/products/creativecloud/reviews.html

                                  4,5 out of 5 stars.

                                  Hm... I wonder...

                                   

                                  Nota bene: I have a dark ironic cloud over my head.

                                  • 15. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
                                    Harbs. Level 6

                                    Here's some encouraging news:

                                     

                                    I got word back from one of the engineers, and they are looking into things.

                                     

                                    They need scripts to reproduce points 5,6 and 9. If someone can give me some test scripts, I'll forward them on.

                                     

                                    The lack of font styling ability is a Drover ScriptUI limitation, and I don't think it can be addressed.

                                     

                                    The rest of the issues are being investigated.

                                    1 person found this helpful
                                    • 16. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
                                      Trevorׅ Adobe Community Professional

                                      Hi Harbs,

                                       

                                      Long time no see.

                                       

                                      Copy and paste of download from here.

                                       

                                      A bit of a confusing script to say the least and I'm sure there will be some sniggers out there but it illustrates some of the problems quite well.

                                      There seems to be a problem with the visible property.

                                      Try clicking on the top two buttons.

                                      The left one is my fake button that is the one to click on more.

                                      Keeping the mouse button down for some time made the images slowly loop on CC.

                                      Change the laying order of the images.

                                      There does seem to be a problem with the scripting of the script but on CS it works well.

                                       

                                      Regarding point 9, it was only happening some times, if I can reproduce the effect I'll post it.

                                       

                                      Regards to all,

                                       

                                      Trevor

                                       

                                       

                                      // target to the different indesign versions
                                      //#target "indesign-7.0"
                                      #target "indesign-8.0"
                                      //#target "indesign"
                                      #targetengine Trevor
                                      // try double Clicking on the enable / diable button when running CC
                                      
                                      var defaultImage =  "\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x000\x00\x00\x000\b\x03\x00\x00\x00`\u00DC\t\u00B5\x00\x00\x00\x03sBIT\b\b\b\u00DB\u00E1O\u00E0\x00\x00\x01\x1DPLTE\u00FF\u00FF\u00FF\u0087\u0087\u0087\u0081\u0081\u0081|||zzzxxxxxxvvvtttfffbbbZZZTTTJJJ333\u00FF\u00FF\u00FF\u00FB\u00FB\u00FB\u00F9\u00F9\u00F9\u00F7\u00F7\u00F7\u00F5\u00F5\u00F5\u00F1\u00F1\u00F1\u00EF\u00EF\u00EF\u00EB\u00EB\u00EB\u00E8\u00E8\u00E8\u00E7\u00E7\u00E7\u00E4\u00E4\u00E4\u00E1\u00E1\u00E1\u00DF\u00DF\u00DF\u00DD\u00DD\u00DD\u00D5\u00D5\u00D5\u00CF\u00CF\u00CF\u00CC\u00CC\u00CC\u00C9\u00C9\u00C9\u00C3\u00C3\u00C3\u00C1\u00C1\u00C1\u00BF\u00BF\u00BF\u00BD\u00BD\u00BD\u00BB\u00BB\u00BB\u00B8\u00B8\u00B8\u00B4\u00B4\u00B4\u00B3\u00B3\u00B3\u00AF\u00AF\u00AF\u00AC\u00AC\u00AC\u00AA\u00AA\u00AA\u00A5\u00A5\u00A5\u00A1\u00A1\u00A1\u009F\u009F\u009F\u0099\u0099\u0099\u0094\u0094\u0094\u008F\u008F\u008F\u008B\u008B\u008B\u0089\u0089\u0089\u0087\u0087\u0087\u0081\u0081\u0081\x7F\x7F\x7F|||tttrrrpppmmmjjjbbb```___\\\\\\TTTPPPNNNJJJGGGEEE???:::777333000,,,(((&&&$$$\"\"\"!!!\x1E\x1E\x1E\x1A\x1A\x1A\x18\x18\x18\x14\x14\x14\x12\x12\x12\x10\x10\x10\x0E\x0E\x0E\f\f\f\n\n\n\b\b\b\x05\x05\x05\x04\x04\x04\x00\x00\x00\u00CE\u00D2\u00BA\u00BB\x00\x00\x00_tRNS\x00\x11\x11333DDU\u0099\u0099\u00BB\u00BB\u00DD\u00EE\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00D9b\u00FDX\x00\x00\x00\tpHYs\x00\x00\x0B\x12\x00\x00\x0B\x12\x01\u00D2\u00DD~\u00FC\x00\x00\x00\x16tEXtCreation Time\x0006/24/13\b\u00BDv\u0096\x00\x00\x00\x1CtEXtSoftware\x00Adobe Fireworks CS6\u00E8\u00BC\u00B2\u008C\x00\x00\x02\u0087IDATH\u0089\u0095\u0096\x0F_\u009A@\x18\u00C7o\u0095\u00A6\u00E0yYbnL\u00D6\u00A2tm\u00E6\u009F\u00AD\u00D8\u00C6\u00D6*\u00D7\u00A2\r\u0081\rL\u0081\u00E2\u00DE\u00FF\u00CB\u00D8\x1D0\u0087\bz\u00FD\u00F4s\u00C7\u00DD}\x7F\u00F2\u009Cw\u00DC\x03\x00i\x159Xu\u00DC p\u009D*\u00E4\u008AK\u00C3)\x15x\u00C3\u00D7\u00BF\u009D\u00B6\x1A;{M\u00A9\x7F5v\r\u00BE\u00B0\x02\u00DF\u0086\u00B3\u00BB~\x03%\u00B4?0\x1E\u00E0v\x0E\u00BEQ\u0099]\u00BFBK:\u00B8\u00F5+\x1BY|\u00C9\x1A\x1F.\u00E3D\u00B5\x13\u00DD,-\u00F3\u00E5\u00FB\u00CF\u008DL\u009E\u00A8\u00FEi\u00CA\u00A5y\u00FE\u00FEM\x1EN\u00D5\x7F\u00E4S\u00FC4;\u009C\u00B9\u008E\u00AC\x05\x0779^\u00CD#t\u00F8\u0098\u0088\u00AA\u00E4\u00BD[\u00C7\u0093\u00A8\u00A6\u00F3\u0099oX\x1Fw\u00D6\x1B\u00D0W\u00EBYl\u00A8\u00E8\f8YD\u00A3\x12\u00AF\u00AF\u00FB\u009A\u00C9\u0080\u00BA~\u00B4\u00B5\u00E05\x1B\u008Fjw\u0090\u00F2\x05?c?dK\u00F6\u00E9N\u00E4u\u0096\x19G\n\x17\u00C3\u00EC2\u00F3\u00E8\u00BDA\u009E\u0097\u0080\u00FD\x06h\u00DF\u00DF\x02\u009C)(\u008Ar\" $\u0092Z\u0089KR\u0089\u00B4 PO\x0E+\u00DA\u00AD\u00F4L\x0E\u00C0\x0B\x19+\u008A=\u00EB!Z+q\u0089T\u00AC\u0092IbBjJX\x11FSz#\b\u00AA\u00A7a\u00FBr\x16\r\u00C7%\u00B2G\u00F6\u00A2\u0081^ \u00F4\u00A1\n&\u00AD\u00B0-`Y&_\tE\u00A5\u0084\u00C9'\u00C3p\u00EC\x00\u00AF\x1E\u00B5\u00A9A\u00D3T\x14\u0095\u00EA\b\u00E9j\u0086At\x01\u008E\u00BAO\u00B0\u0090\f\u00C9\u00C6\x18\u00DB\x19\u0086z\x00\u00F0\x0Em\u008B\u00BA\u0096\u009C\u0083\u0084E$bI\u00C0C\x1A\\\u00C2\u00D0\b\u0080\u00DB$A\u00E8x$\u0084\u00C1h\u00D1\u00A8J\u00F7/\u0089\u00A9\u0087\u00B5\u0099\x1A\x0F\u0084\u0086\u0097.p\x0E\x04Y\u0096\u00E9/\u00D0Z\x16\x04z-\u0091E@\u00A2D\u00FB\u00C4\x7F\x03a\u00A7\u00EC\u0080\u00EA\u0080}\u00A1\u00C3\u00BF\x15^=\u00C5\u00F0\x1D\x02n\u00FC\x14\u0083\u00C5\u0081\u00A2\u00FF\u009C\u009D\x7F\x11l\x01`\f\u00D9\r\u00E7\x06}\u0080~\u00B1\x1B\f\u00FA\x00\x15\u00BC5\u0087\u00DE\x7F\u00B5\u00BD0Y\u00C0[V\u00C3O\x18\x1D3\u00DE\x11\x1B\u00DF\u00F5\u00E3\u00D4R\u00F9\u0093{\u00D0'\u00B5oW\u00E6G\u00E5\x17\x16\u00C3\u00E5\u00FC\u00A8\x04\u00A5)\u00C3a|\u00EA%\u00D2Py\u00B6\u00D6\u00D1\u00F5\u00CB\u008B\t\u00A5\u00B3\u009A\x7F\u00EB\u00A5S\u00D0\u00FD\u00A0\u0096\u008F\u00EF\x0E\u00D3<IB\u009E\u009Ao\u00B8\u00F0\u00CAi\u009E\u00A6]3'\u00AC\u008E\u00FD;#\u00ED\u00D2\u00C4\u00EE\u00FFh\u00EF\u00A6\u00E9\u00BD\u00CE]Nb'*\u00C2\x07\u00F3\u00AC\u0099\u00C4\u009BgV\u00FE\u00AB\x03\u00D5&o\x06\u00CE\u00CDY\u00BBU\u00AF\u00B7\u00DA\u00E77N`\u00F2\u009B+\u00F0\u00E86\u00E4\u00F5g\u00E2a\u00ECM2_\x7F\u00FE\x02\u00CC\u00B9\u00BB\u00F0\u00D4\u008C>}\x00\x00\x00\x00IEND\u00AEB`\u0082" ;
                                      var notEnabledImage =  "\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x000\x00\x00\x000\b\x03\x00\x00\x00`\u00DC\t\u00B5\x00\x00\x00\x03sBIT\b\b\b\u00DB\u00E1O\u00E0\x00\x00\x003PLTE\x00\x00\x00\u00EF\u00EF\u00EF\x7F\x7F\x7F???\u00BF\u00BF\u00BF\x1F\x1F\x1F\u008F\u008F\u008FOOO\u00CC\u00CC\u00CC\u00FF\u00FF\u00FF\u00AF\u00AF\u00AF\x0F\x0F\x0F\u00DF\u00DF\u00DFooo333\u009F\u009F\u009F___\"e\u00F7\u008E\x00\x00\x00\tpHYs\x00\x00\x0B\x12\x00\x00\x0B\x12\x01\u00D2\u00DD~\u00FC\x00\x00\x00\x16tEXtCreation Time\x0006/24/13\b\u00BDv\u0096\x00\x00\x00\x1CtEXtSoftware\x00Adobe Fireworks CS6\u00E8\u00BC\u00B2\u008C\x00\x00\x010IDATH\u0089\u00ED\u0094\u00DDr\u0084 \f\u0085\x03\tJ\x04\t\u00EF\u00FF\u00B4M\u00F8\u00D9\u00B6\u00DB\u00CE\u00AAw\u00BB3\u00E6\x02%\u00C7o\f\u00C73\x02\\.\u00BET7p\x03'\x01\x11]|fv\u00E2\u00C51y\u00AB\u00FC\x02@ m\x12\u00BBR|I\u0099|\u0085\x03 \u0085\x06Tt\nUfz\x1A\u00F9\x0F\u00B0'o@\u00B2\u00D1$\u009D\x00\u00BC@V\u00C0&k\x0F\x1F\x03\u008Cv\u008E\u00B0\u00E8f\t\u00A7\u0080\f\n\u00F8\x109\x06\x7F\n`o.a\u00C2T\u00F9\x18\u0088f!9]257\x1D\u00BD\x06\x0E\u00EBM\x01\u00D1|\u00D1w\u00EC\u00FA\u00DD\u00E6\u00BD^\u00C4\u008E\u00DCum,\u00B1\x03\u0088\u00D6\u0098\u00B1c\x07\u00A0.i3`sy\u00EA\u00A8AD\u00D7\x00\u00EB>b\u00C7R\u0082\u00B4\x0F\u00B2\ri\u00E8\u00BA\u00C6\u00B44\u00A0\u0092:?c\u00C7\u00EB^W\u00B6f\u0099o\u00E8\u00BA\u00DD\u00EE\u00D8\u0080\u0080\x18\x1F\u00B1s\x107\u009DI\u009B\u00B0\x0F`\u00E8vF\u00FC1\u00D2\u0088\u009D\u00D8\x1F]l\x1B!>\u008D\u00C4e\u00FF\x05\u00B4\u00D8\u00AD\u009A \u009D\u00E9_`\x01\u009A#\u00ED3v\x0E6\u00F5\x14\u009C\u008DT\u00BB4\u00F4\u00A0\u00B6H\u00B35\x12Q\u009C\u00B1\u00EBa#\x17\u00ED\u00A0]\x1A:\u00B54\u00BEi\u0096n\u00E03\u0081\u008B\u00F5\x05\u00BB\u00EBDih\u008D\u00EAE\x00\x00\x00\x00IEND\u00AEB`\u0082" ;
                                      var mouseDownImage =   "\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x000\x00\x00\x000\b\x03\x00\x00\x00`\u00DC\t\u00B5\x00\x00\x00\x03sBIT\b\b\b\u00DB\u00E1O\u00E0\x00\x00\x01 PLTE\u00FF\u00FF\u00FF\u0087\u0087\u0087\u0081\u0081\u0081zzzxxxxxxvvvvvvtttfffbbbZZZYYYTTTJJJ333\u00FF\u00FF\u00FF\u00FB\u00FB\u00FB\u00F9\u00F9\u00F9\u00F7\u00F7\u00F7\u00F5\u00F5\u00F5\u00F1\u00F1\u00F1\u00EF\u00EF\u00EF\u00EB\u00EB\u00EB\u00E8\u00E8\u00E8\u00E7\u00E7\u00E7\u00E6\u00E6\u00E6\u00E1\u00E1\u00E1\u00DF\u00DF\u00DF\u00DD\u00DD\u00DD\u00D5\u00D5\u00D5\u00CF\u00CF\u00CF\u00CC\u00CC\u00CC\u00C9\u00C9\u00C9\u00C3\u00C3\u00C3\u00C1\u00C1\u00C1\u00BF\u00BF\u00BF\u00BD\u00BD\u00BD\u00BB\u00BB\u00BB\u00B8\u00B8\u00B8\u00B5\u00B5\u00B5\u00B3\u00B3\u00B3\u00AF\u00AF\u00AF\u00AC\u00AC\u00AC\u00A5\u00A5\u00A5\u00A1\u00A1\u00A1\u009F\u009F\u009F\u0099\u0099\u0099\u0094\u0094\u0094\u008F\u008F\u008F\u008B\u008B\u008B\u0089\u0089\u0089\u0087\u0087\u0087\u0081\u0081\u0081\x7F\x7F\x7F|||tttrrrpppmmmkkkbbb```___\\\\\\TTTPPPNNNJJJGGGEEE???:::777333000///,,,+++(((&&&$$$\"\"\"!!!\x1E\x1E\x1E\x1A\x1A\x1A\x18\x18\x18\x14\x14\x14\x12\x12\x12\x10\x10\x10\x0E\x0E\x0E\f\f\f\n\n\n\b\b\b\x04\x04\x04\x00\x00\x00\u00F5\x1D\u0087\x1B\x00\x00\x00`tRNS\x00\x11\x1133DDUU\u0099\u0099\u00BB\u00BB\u00BB\u00DD\u00EE\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00F2\u00B3d\u00C0\x00\x00\x00\tpHYs\x00\x00\x0B\x12\x00\x00\x0B\x12\x01\u00D2\u00DD~\u00FC\x00\x00\x00\x16tEXtCreation Time\x0006/24/13\b\u00BDv\u0096\x00\x00\x00\x1CtEXtSoftware\x00Adobe Fireworks CS6\u00E8\u00BC\u00B2\u008C\x00\x00\x03:IDATH\u0089\u0095V\t[\u009B@\x10\u00DDj\u00D4\x18\r\x19\u008F\u00E0Q*\u00B5\u00AE\u009A\u00A2\u00A2\u00B4J[z\u00A0\u00A9\x15[\u00A9IZ\x12\u00DD\u0080\u00EC\u00FF\u00FF\x17\u009D\u00E1\u008811\u009A\u00BE\u00EF\x03\u00F6xo\u0099\u00DD}\u00EC\u00C0\u00D8 \u00A6JJ\u00A5\u00DD\u008D\u00E3n\u00BB\u00A2\u0094\u00A6\u0086\u00BA\x07P\u0098kDW\u00DF\x0E6V\x16\u0096\u00D7\u00F4\u00C3\u00D3\u00DF\u00DD\u00C6|\u00E1\t\u00FA\u00B4\".\x0FW\u00A0\x0F\u00ABG\u008D;ez\x04}\u00A2,\u00CE^\u00C3\x106/\u00A2\u00F2\u00C4c\u00FCb\u00EBzk\u0098\u008EX4\u00AE\u009A3\u00C3\u00FC\u00D9\u009BO+\u008F\u00F2\x11\u00D5\u008F\u00B7\u00A5A\u00FE\u00DC\u00CD\u00DBQt\u00C2a<7\u00C0\u00BF}<\u009C\x1E\u00B6[\x0F\x14\u00A5\u00CE\u00CE\u00D3|\u0080\u00AD\u00B8/\u00AAb\u00B8\u00F7\x1C\x1F\u00A3\u00BA\u00ED\u00CD|\u00A2\u00F5a\u00E1y\x01|i\u00BD\u00C8\x04\u00E5\u00AB1\u00E8\u00B8\u0089\u008Dr\u00B6\u00BF\u00DD7\x00\u00A6\u0089M\u00DC\u00C6\u009Bn\u00DB:\u0080FE\u0093\u0083f\u00D9\x06V\x10\x00\u00FBQj-\u00E5\f\u00FB<\u00A9\x02\u00F8\x12I\u00D2q\u00A4\x03\\R\u00A3\u00ADI\u00D7v\u00B1\u0092\b\x16/\x15\u00E2\x17\"\u00F2\u0083/-\u00D0\u0084\u00E4\u009A4H\u00A4e\x02\u00DB\u00A7`\u0092\n=#r\u00E2\u00FC\x15\u00CDX\u00D6}\u00B0\u00EB\u0092[\x01\u00F5\x04V&\u00E0\u00D2\u00D5H\u00C0\u00B9N\u00ED\u00C9f4\u00F7\u00A9(q\u00D4\u00C0\u0090\u00DC\u00F6 c&\x0F0\u00BC$>\u00CFs\u00A8\u00FD]\x03\u00BF\u00978YR\t\u0081#\u00C0\u00E3\u00A6\u00A0\u009A0s\x01\u00C5\u00A7\u00E7!\u00C1j4\u00C9JM*i\x12\x1C\u00E1\u0082g\u00A9\x02\u0087r\u0084\u00AA\u00E2\u009Ct\u00A9c<z\u009F\x00\u009A%\u00A6|\u00CD\u00A6\u00A5\u00E3tqHS\u00F8\u00BE\u00D0i`\x0F\u00B5n\u00E0\t7\t\u00C9K&QWX\u00E5\u0080\n*G\x11\u008E\u00A6\u0091\u0098C\u00DAD\x15\u009D\u00EE*G\u00A8\u00D4\u00F8\u00BE\u00C2:\x1Bcms\u0086\u009D6\x0B\u00AB\u00FF#\u00D0\u00BAL>\u00CF\u00EAC5fr\x1C\u00A3\u00F6\u00B0\x12\u00B3\u00EEZRR\u00D1-F2\u00AF\u00D4|\u00E8\u00BB\u00EC\u00D2l\u00DAk3\x15\u00BC\u00EA\u00B2\u00F6fR\"\x7F\x05\u00C2\u00EC\u0099\u00CF\u00C1\x1D\x17xI\x03\u00D7\x14 5\x00\u00D2\u00DA\u00ACr\u0094\t\u00F0\u00E6\n\u00C8\u00CDgH\u00E0\u0081\u00A4f.q\u009C\\\u0080\u00CB\u00AA\u009C\u00DE\x0B\u00D4{\u00F3\u00A9R\u00B7]\u00C1\u00ED:\u00BD[\u00A8\u00B9\u00E0\u00BB\u00C2J\u00D7\u00F7\x02\u00B87\x1F\u00F8\u0096gz\u0096gQO\u00E0\u00E6\u0082V\u0089ME\u00EB=\u0081!\u00D5\u00DC|\u00E0\u00B8R\u00B3]\u00A9\u00A7Qy\u00A9\u00E0e<\u00C9X\u00C3\u00CA\x05\u009A\u00EFAn>0\u0084\x0F\\\x04i\u008F+S\u00C1I\u0083\u00CE\u00B0_\u00A9\u00C0\u00F3e\x1D\u00D757\u009F\u008AK\x05\u00D2M\x05\u00AAH\x05\r\u00FA\u0080\n!\x1Dz\u00E4\u00AFls\u00B2\x02\u00B9N\u00D7R_\u0082\u0096x\u00B5\x16&\u00C9B\u00B9\x18w\u009F\x7F*\u00E91\x13n\u008F\u00C7\u00DF\u008F\u00B2\u00D4R\u00FE;\u00F2\u00A0\u00EF\u00C7jP\u00EE\x1D\u0095\u009F\u00C7\x11\u00B8\u00BD\u00A3\u0092\u00CD\u00DC\u008Eq\x18\x1F\u0084\u00C5\u00BE\u00F4#\u009EU\u00ECG\u00B3\x0F\x13J\u00EDi\u00FE^8\u0098\u0082n\u008E\x16G\u00D3\u0097\u00ACA>&\u00A1\u00D0\x19-\u00F8\x1A\u00CE\x0E\u00F2)\u00ED6G\u0084U\x0B\u00FE\x14\u0087\u00F9\u0094\u00D8\u00A3\x1F\u00BBK\u0083\u00EC\u00E5\u00DA\u00E5\u0088\u00C4\u008E\u0098R\u00EE\u009A\u00C7\u00EB\u00FD\u00F4\u00F5\u00E3\u00D6\u00E8_\x07\u00C2\u00E4\\3n\u009F\x1F\u00EFnT\u00AB\x1B\u00BB'\u00E7\u00ED\u00B89?\u00F9\x04=}\r\u00FE\u00FEtB)\u00C3\u00CE\u00A3\u00BF?\u00FF\x00\u009A\u00F2\u00DF\u00B8\u00A3s\u008B?\x00\x00\x00\x00IEND\u00AEB`\u0082" ;
                                      var mouseOverImage =   "\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x000\x00\x00\x000\b\x03\x00\x00\x00`\u00DC\t\u00B5\x00\x00\x00\x03sBIT\b\b\b\u00DB\u00E1O\u00E0\x00\x00\x003PLTE\x00\x00\x00\u00EF\u00EF\u00EF\x7F\x7F\x7F333\u00BF\u00BF\u00BFOOO\u008F\u008F\u008F\x0F\x0F\x0F\u00CC\u00CC\u00CC\u00FF\u00FF\u00FF\u009F\u009F\u009F???ooo\u00DF\u00DF\u00DF\x1F\x1F\x1F\u00AF\u00AF\u00AF___\r\u00B3\u0089\u00CF\x00\x00\x00\tpHYs\x00\x00\x0B\x12\x00\x00\x0B\x12\x01\u00D2\u00DD~\u00FC\x00\x00\x00\x16tEXtCreation Time\x0006/24/13\b\u00BDv\u0096\x00\x00\x00\x1CtEXtSoftware\x00Adobe Fireworks CS6\u00E8\u00BC\u00B2\u008C\x00\x00\x01TIDATH\u0089\u00ED\u0094\u00EBr\u0084 \f\u0085\x13@!\"\u00E8\u00FB?mO\u00C0\u0082\u00BBKw\u00EAt:\u00ED\x0F\u00D9\x19$\u00D1\x0Fr9,\u00D1\u00E5!\u0097\u00C6\r\u00DC\u00C0_\x03\u00ECB\u0099S\u0099\u009D\u00BA\u0092\u00CEA\u00DD\u00C11,\f\u00EE\u0080\u00A3\u008Cy'#b({\u00BF\u00E8\x13\u009E\x18%\u00F8\u009C3\u00AC\x18c8\x03\u0084\r=\u0080\u0085f\u00E1\u009DR\x03\u00A6\u00CC\x12\u00AAu\ni#\u00BF\u00E3\u00DB\x1C\u00C5\u00EAQ\u0089\u00D6\x0Ex\u008D\u00F3\x190\u00B4{\u0099,\u00DEkT\u00E5\u00C3\x1E\u0092_\x19\u00961\u00E6\x01X\u00F0\u009BG\u0080\u00A4\u0095\u00EC\x00`\u00CA\u0094\u00E2CH(\u008A\u008D\u00FAv!\u00F7\x1C\u00D2ne\u00C2>\u0093\u00EFI\x07\u009C\u00E5`\x04\u0096\u0099\u00D23\u0080\u00AD\x11S\tc=\u00CA\u008A\u0085\u00A5\u00C8b\u00F1XkY\u0097\x0E\u00A0A\\\u00DA\u00D3\x1B'\u00C5s\u00F4\u00AD6.\u00FD@\x1A\u00FF\x17\u00A8\u00F9\u00A6\u0092\u00AC\x0B\u0087B\u00DDg\x11^\u0081C\u00A8\x1B\n\u00AC\u00BD\u00AB\n\u00C5\u00EC\u00BD\x1B\x02\u00ADg~\x124+\u0098C\x04\u00C2\u00EA\x18\x00M\x15\x13\x15\u00A3\x01\u0087B^\u0080\u00A6\u00BB\u0085\u00B6\x04\u00A3\n\u00CE\u00A8\u0090\u00B6\u00F7\x00\u00D3>\u0097+T\u0081X\u00AE\u00E3\u00BB\u0090p\u00CB\u00AC\u0095\x1E\u00D2\u00F6\u00C5\t-i\u00AC\u00B0<\u00E5\u00A0\u009B\u008C\u00CA\u00DA\u0084\u00CA\u00A4XU\u00A8\x021\u008F\u0081.\u00D4\u00F2\u00F7R\x15\u00AA\nN\u00E3>|k\u00DC\u00C0o\x01\x17\u00C7\x07.\u00F8D\u00BB\u00EC\u00CF\u00F8\u00DB\x00\x00\x00\x00IEND\u00AEB`\u0082" ;
                                          
                                      var w = new Window ('palette',"", [50, 50, 300, 680]);
                                      if (parseInt(app.version) > 8 || $.os.match(/Mac/i))
                                          {
                                              var image4 = w.add('image',[0,60,120,110], notEnabledImage);
                                              var image3 = w.add('image',[0,60,120,110], mouseOverImage);        
                                              var image2 = w.add('image',[0,60,120,110], mouseDownImage);        
                                              var image1 = w.add('image',[0,60,120,110], defaultImage); 
                                          }
                                      else 
                                          {
                                              var image1 = w.add('image',[0,60,120,110], defaultImage); 
                                              var image2 = w.add('image',[0,60,120,110], mouseDownImage);
                                              var image3 = w.add('image',[0,60,120,110], mouseOverImage);
                                              var image4 = w.add('image',[0,60,120,110], notEnabledImage);
                                          }
                                      w.add ('statictext {justify: "center", text: "Fake Icon Button"}', [0,15,120,32]);
                                      w.add ('statictext {justify: "center", text: "No Mess On Press"}', [0,32,120,47]);
                                      w.add ('statictext {justify: "center", text: "Real Icon Button"}', [130,15,250,32]);
                                      w.add ('statictext {justify: "center", text: "Real Mess On Press"}', [130,32,250,47]);
                                      be = w.add('button',[20,130, 100, 190], "Disable"),    
                                      myIconButton = w.add ('iconbutton', [130,60,250,110], ScriptUI.newImage (defaultImage, notEnabledImage, mouseDownImage, mouseOverImage), {style: "toolbutton"}),
                                      t = 0;
                                      beText = ["Disable", "Enable"];
                                      be.onClick = function() {enable (image1, t); enable (myIconButton, t); be.text = beText[t = !t * 1];};
                                      myButton = [image1, image2, image2, image3];
                                      
                                      w.add('image',[0,200,120,260], defaultImage);
                                      w.add('image',[0,260,120,320], mouseDownImage);
                                      w.add('image',[0,330,120,390], mouseOverImage);
                                      w.add('image',[0,400,120,460], notEnabledImage);
                                      makeButton (myButton, 'notToMuch();');
                                      w.show();
                                      function makeButton(uiObject, myFunction, myFunctionTrigger)
                                          {
                                              displayObject(uiObject,0);
                                              function myFunctionTrigger () {app.doScript(myFunctionTrigger)}
                                              if (!(uiObject instanceof Array)) uiObject && uiObject.addEventListener ("click",function (event) {app.doScript(myFunction)});
                                              else
                                                  {
                                                     if (uiObject.length ==1)
                                                          {
                                                              (makeButton.defaultImage = uiObject[0]).addEventListener ("click",function (event) {app.doScript(myFunction)});
                                                          }
                                                     else if (uiObject.length == 2)
                                                          {
                                                              makeButton.defaultImage = uiObject[0];
                                                              makeButton.deactivateImage = uiObject[1];
                                                              makeButton.defaultImage.addEventListener ("click",function (event) {app.doScript(myFunction)});     
                                                              (makeButton.defaultImage).watch('enabled', function (event) {if  (uiObject[0].enabled) displayObject(uiObject,0) else displayObject(uiObject,1);})
                                                          }
                                                      else if (uiObject.length == 3)
                                                          {
                                                              makeButton.defaultImage = uiObject[0];
                                                              makeButton.deactivateImage = uiObject[1];
                                                              makeButton.mouseDownImage = uiObject[2];
                                                              makeButton.defaultImage.addEventListener ("mousedown",function (event) {displayObject(uiObject,2)});
                                                              makeButton.mouseDownImage.addEventListener ("mouseout",function (event) {displayObject(uiObject,0);}); 
                                                              makeButton.mouseDownImage.addEventListener ("mouseup",function (event) {displayObject(uiObject,0); app.doScript(myFunction)});      
                                                              (makeButton.defaultImage).watch('enabled', function (event) {if  (uiObject[0].enabled) displayObject(uiObject,0) else displayObject(uiObject,1);})
                                                          }
                                                     else if (uiObject.length == 4)
                                                          {
                                                              makeButton.defaultImage = uiObject[0];
                                                              makeButton.deactivateImage = uiObject[1];
                                                              makeButton.mouseDownImage = uiObject[2];
                                                              makeButton.mouseOverImage =  uiObject[3];
                                                              makeButton.defaultImage.addEventListener ("mouseover",function (event) {displayObject(uiObject,3);});
                                                              makeButton.mouseOverImage.addEventListener ("mousedown",function (event) {displayObject(uiObject,2);});                        
                                                              makeButton.mouseOverImage.addEventListener ("mouseout",function (event) {displayObject(uiObject,0);}); 
                                                              makeButton.mouseDownImage.addEventListener ("mouseout",function (event) {displayObject(uiObject,0);});      
                                                              makeButton.mouseDownImage.addEventListener ("mouseup",function (event) {displayObject(uiObject,0); app.doScript(myFunction)});      
                                                              (makeButton.defaultImage).watch('enabled', function (event) {if  (uiObject[0].enabled) displayObject(uiObject,0) else displayObject(uiObject,1);})
                                                          }
                                                  }
                                          }
                                      function displayObject (uiObject, i, ac, al, o)
                                          {
                                             al = uiObject.length;
                                             for (ac =0; ac<al; ac++) uiObject[ac].visible = (ac == i); 
                                          }
                                          
                                      function notToMuch() {$.writeln(app.name + "\t" + app.version);}
                                      function enable (obj, bool) {obj.enabled = bool; obj.enabled = bool}
                                      
                                      • 17. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
                                        Trevorׅ Adobe Community Professional

                                        Fogot to mention please try convince them that the messed up edit text background color problem is an inportant one.

                                        Ta very Much

                                        • 18. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
                                          [Jongware] Most Valuable Participant

                                          > Harbs wrote:

                                          > The lack of font styling ability is a Drover ScriptUI limitation, and I don't think it can be addressed.

                                           

                                          So this is a clear case of "some useful features have been removed"!

                                           

                                          Why do scripters have to care about whatever this "new! improved!" Drover thing is? I would have thought the entire Scripting Interface idea is to shield us from dealing with the actual low level interface!

                                          • 19. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
                                            Trevorׅ Adobe Community Professional

                                            I also fogot to mention (past my bed time)  see the the real Icon button doesn't  go though it's states (mouseOver, MouseDown) see example in the script.

                                             

                                             

                                            Now off the topic for a momment, but as there's quite a few real big guns of the forum following this thread...

                                            Can someone show that they are the biggest gun and explain:

                                             

                                            1) Why the laying order of the images in my script is important when anyway I make 3 of the 4 images invisible.

                                             

                                            2) Given that the "myButton" array is made into an object

                                                                    makeButton.defaultImage = uiObject[0];
                                                                    makeButton.deactivateImage = uiObject[1];
                                                                    makeButton.mouseDownImage = uiObject[2];
                                                                    makeButton.mouseOverImage =  uiObject[3];

                                            and given that uiObject is the array myButton = [image1, image2, image3, image4]

                                            and given that

                                            image1 = defaultImage;

                                            image2 = mouseDownImage;

                                            image3 = MouseOverImage;

                                            image4 = notEnabledImage;

                                             

                                            So what on earth is going on!!!

                                             

                                            How and were does makeButton.deativateImage become image4 when it should be image2?

                                             

                                            By the way, I did write this script!

                                            • 20. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
                                              Harbs. Level 6

                                              [Jongware] wrote:

                                               

                                              > Harbs wrote:

                                              > The lack of font styling ability is a Drover ScriptUI limitation, and I don't think it can be addressed.

                                               

                                              So this is a clear case of "some useful features have been removed"!

                                               

                                              Why do scripters have to care about whatever this "new! improved!" Drover thing is? I would have thought the entire Scripting Interface idea is to shield us from dealing with the actual low level interface!

                                              The move to Drover was necessary on a few levels. One was offering the dark UI. A bigger issue was the 64 bit/Carbon support and having a single UI framework across applications.

                                               

                                              I actually spoke too soon. It seems they are looking into this one as well, so there is a possiblity it'll be fixed.

                                              • 21. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
                                                Marc Autret Level 4

                                                Hi Trevor,

                                                 

                                                Some notes about your "Fake Icon Button" example.

                                                 

                                                • First above all, the regular IconButton object has never properly worked in ScriptUI, so we cannot blame CC for that specific case ;-) I never found a way to make a 'toolbutton' IB consistant in all platforms and versions. In many contexts the official scheme for the multistate icon—ScriptUI.newImage(normal, disabled, pressed, rollover)—does not match what we see on screen.

                                                 

                                                • What I have noticed on how widgets are layered in CC—apart the fact that the stack order is now the same on Mac and Win, as already mentioned—is that ScriptUI CC deals differently with transparency when several visible elements are stacked. In particular, it seems that controls like EditTexts cannot be hidden by a Group anymore, even if you use a solid background color for that group. The visibility of controls has something of a precedence over passive widgets, so the only way to mask an EditText is to position another EditText over it. Also, a stack of Image containers now displays the ScriptUIImage elements with respect to their transparency (PNG), which can be fun but is not the behavior we used to experiment.

                                                 

                                                • However, since your approach is to play with the property 'visible' of the images, neither the stack order nor the transparency issues should impact your code. Just make sure that the only visible image is the one you need to at the corresponding event, and hide the other images. Well, this seems easy but there are tricky issues on the event side. For example, mouseover can be triggered after mousedown while the user is actually maintaining the mousedown state, because the event target has changed (i.e. a different image is made visible, and this image will only receive a mouseover at this stage).

                                                 

                                                • Thus, managing a set of Images at the same location and dealing with their respective events is complex. In addition, the event propagation is not always platform-consistant and—of course!—some new workarounds are required in CC. I had noticed a number of issues with nested mouseout events in the past, and things have changed again in CC.

                                                 

                                                • I strongly suggest you give a look at the "Sprite Button" approach— http://www.indiscripts.com/post/2011/04/sprite-buttons-in-scriptui —as it solves many problems at once. A single image is used for the different states of the button.

                                                 

                                                Anyway, here are my two pennies on your example. Although this is not the approach I recommend, this code should work in CS4/CS5/CS6/CC:

                                                 

                                                const defaultPng = "\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x000\x00\x00\x000\b\x03\x00\x00\x00`\u00DC\t\u00B5\x00\x00\x00\x03sBIT\b\b\b\u00DB\u00E1O\u00E0\x00\x00\x01\x1DPLTE\u00FF\u00FF\u00FF\u0087\u0087\u0087\u0081\u0081\u0081|||zzzxxxxxxvvvtttfffbbbZZZTTTJJJ333\u00FF\u00FF\u00FF\u00FB\u00FB\u00FB\u00F9\u00F9\u00F9\u00F7\u00F7\u00F7\u00F5\u00F5\u00F5\u00F1\u00F1\u00F1\u00EF\u00EF\u00EF\u00EB\u00EB\u00EB\u00E8\u00E8\u00E8\u00E7\u00E7\u00E7\u00E4\u00E4\u00E4\u00E1\u00E1\u00E1\u00DF\u00DF\u00DF\u00DD\u00DD\u00DD\u00D5\u00D5\u00D5\u00CF\u00CF\u00CF\u00CC\u00CC\u00CC\u00C9\u00C9\u00C9\u00C3\u00C3\u00C3\u00C1\u00C1\u00C1\u00BF\u00BF\u00BF\u00BD\u00BD\u00BD\u00BB\u00BB\u00BB\u00B8\u00B8\u00B8\u00B4\u00B4\u00B4\u00B3\u00B3\u00B3\u00AF\u00AF\u00AF\u00AC\u00AC\u00AC\u00AA\u00AA\u00AA\u00A5\u00A5\u00A5\u00A1\u00A1\u00A1\u009F\u009F\u009F\u0099\u0099\u0099\u0094\u0094\u0094\u008F\u008F\u008F\u008B\u008B\u008B\u0089\u0089\u0089\u0087\u0087\u0087\u0081\u0081\u0081\x7F\x7F\x7F|||tttrrrpppmmmjjjbbb```___\\\\\\TTTPPPNNNJJJGGGEEE???:::777333000,,,(((&&&$$$\"\"\"!!!\x1E\x1E\x1E\x1A\x1A\x1A\x18\x18\x18\x14\x14\x14\x12\x12\x12\x10\x10\x10\x0E\x0E\x0E\f\f\f\n\n\n\b\b\b\x05\x05\x05\x04\x04\x04\x00\x00\x00\u00CE\u00D2\u00BA\u00BB\x00\x00\x00_tRNS\x00\x11\x11333DDU\u0099\u0099\u00BB\u00BB\u00DD\u00EE\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00D9b\u00FDX\x00\x00\x00\tpHYs\x00\x00\x0B\x12\x00\x00\x0B\x12\x01\u00D2\u00DD~\u00FC\x00\x00\x00\x16tEXtCreation Time\x0006/24/13\b\u00BDv\u0096\x00\x00\x00\x1CtEXtSoftware\x00Adobe Fireworks CS6\u00E8\u00BC\u00B2\u008C\x00\x00\x02\u0087IDATH\u0089\u0095\u0096\x0F_\u009A@\x18\u00C7o\u0095\u00A6\u00E0yYbnL\u00D6\u00A2tm\u00E6\u009F\u00AD\u00D8\u00C6\u00D6*\u00D7\u00A2\r\u0081\rL\u0081\u00E2\u00DE\u00FF\u00CB\u00D8\x1D0\u0087\bz\u00FD\u00F4s\u00C7\u00DD}\x7F\u00F2\u009Cw\u00DC\x03\x00i\x159Xu\u00DC p\u009D*\u00E4\u008AK\u00C3)\x15x\u00C3\u00D7\u00BF\u009D\u00B6\x1A;{M\u00A9\x7F5v\r\u00BE\u00B0\x02\u00DF\u0086\u00B3\u00BB~\x03%\u00B4?0\x1E\u00E0v\x0E\u00BEQ\u0099]\u00BFBK:\u00B8\u00F5+\x1BY|\u00C9\x1A\x1F.\u00E3D\u00B5\x13\u00DD,-\u00F3\u00E5\u00FB\u00CF\u008DL\u009E\u00A8\u00FEi\u00CA\u00A5y\u00FE\u00FEM\x1EN\u00D5\x7F\u00E4S\u00FC4;\u009C\u00B9\u008E\u00AC\x05\x0779^\u00CD#t\u00F8\u0098\u0088\u00AA\u00E4\u00BD[\u00C7\u0093\u00A8\u00A6\u00F3\u0099oX\x1Fw\u00D6\x1B\u00D0W\u00EBYl\u00A8\u00E8\f8YD\u00A3\x12\u00AF\u00AF\u00FB\u009A\u00C9\u0080\u00BA~\u00B4\u00B5\u00E05\x1B\u008Fjw\u0090\u00F2\x05?c?dK\u00F6\u00E9N\u00E4u\u0096\x19G\n\x17\u00C3\u00EC2\u00F3\u00E8\u00BDA\u009E\u0097\u0080\u00FD\x06h\u00DF\u00DF\x02\u009C)(\u008Ar\" $\u0092Z\u0089KR\u0089\u00B4 PO\x0E+\u00DA\u00AD\u00F4L\x0E\u00C0\x0B\x19+\u008A=\u00EB!Z+q\u0089T\u00AC\u0092IbBjJX\x11FSz#\b\u00AA\u00A7a\u00FBr\x16\r\u00C7%\u00B2G\u00F6\u00A2\u0081^ \u00F4\u00A1\n&\u00AD\u00B0-`Y&_\tE\u00A5\u0084\u00C9'\u00C3p\u00EC\x00\u00AF\x1E\u00B5\u00A9A\u00D3T\x14\u0095\u00EA\b\u00E9j\u0086At\x01\u008E\u00BAO\u00B0\u0090\f\u00C9\u00C6\x18\u00DB\x19\u0086z\x00\u00F0\x0Em\u008B\u00BA\u0096\u009C\u0083\u0084E$bI\u00C0C\x1A\\\u00C2\u00D0\b\u0080\u00DB$A\u00E8x$\u0084\u00C1h\u00D1\u00A8J\u00F7/\u0089\u00A9\u0087\u00B5\u0099\x1A\x0F\u0084\u0086\u0097.p\x0E\x04Y\u0096\u00E9/\u00D0Z\x16\x04z-\u0091E@\u00A2D\u00FB\u00C4\x7F\x03a\u00A7\u00EC\u0080\u00EA\u0080}\u00A1\u00C3\u00BF\x15^=\u00C5\u00F0\x1D\x02n\u00FC\x14\u0083\u00C5\u0081\u00A2\u00FF\u009C\u009D\x7F\x11l\x01`\f\u00D9\r\u00E7\x06}\u0080~\u00B1\x1B\f\u00FA\x00\x15\u00BC5\u0087\u00DE\x7F\u00B5\u00BD0Y\u00C0[V\u00C3O\x18\x1D3\u00DE\x11\x1B\u00DF\u00F5\u00E3\u00D4R\u00F9\u0093{\u00D0'\u00B5oW\u00E6G\u00E5\x17\x16\u00C3\u00E5\u00FC\u00A8\x04\u00A5)\u00C3a|\u00EA%\u00D2Py\u00B6\u00D6\u00D1\u00F5\u00CB\u008B\t\u00A5\u00B3\u009A\x7F\u00EB\u00A5S\u00D0\u00FD\u00A0\u0096\u008F\u00EF\x0E\u00D3<IB\u009E\u009Ao\u00B8\u00F0\u00CAi\u009E\u00A6]3'\u00AC\u008E\u00FD;#\u00ED\u00D2\u00C4\u00EE\u00FFh\u00EF\u00A6\u00E9\u00BD\u00CE]Nb'*\u00C2\x07\u00F3\u00AC\u0099\u00C4\u009BgV\u00FE\u00AB\x03\u00D5&o\x06\u00CE\u00CDY\u00BBU\u00AF\u00B7\u00DA\u00E77N`\u00F2\u009B+\u00F0\u00E86\u00E4\u00F5g\u00E2a\u00ECM2_\x7F\u00FE\x02\u00CC\u00B9\u00BB\u00F0\u00D4\u008C>}\x00\x00\x00\x00IEND\u00AEB`\u0082",
                                                    notEnabledPng = "\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x000\x00\x00\x000\b\x03\x00\x00\x00`\u00DC\t\u00B5\x00\x00\x00\x03sBIT\b\b\b\u00DB\u00E1O\u00E0\x00\x00\x003PLTE\x00\x00\x00\u00EF\u00EF\u00EF\x7F\x7F\x7F???\u00BF\u00BF\u00BF\x1F\x1F\x1F\u008F\u008F\u008FOOO\u00CC\u00CC\u00CC\u00FF\u00FF\u00FF\u00AF\u00AF\u00AF\x0F\x0F\x0F\u00DF\u00DF\u00DFooo333\u009F\u009F\u009F___\"e\u00F7\u008E\x00\x00\x00\tpHYs\x00\x00\x0B\x12\x00\x00\x0B\x12\x01\u00D2\u00DD~\u00FC\x00\x00\x00\x16tEXtCreation Time\x0006/24/13\b\u00BDv\u0096\x00\x00\x00\x1CtEXtSoftware\x00Adobe Fireworks CS6\u00E8\u00BC\u00B2\u008C\x00\x00\x010IDATH\u0089\u00ED\u0094\u00DDr\u0084 \f\u0085\x03\tJ\x04\t\u00EF\u00FF\u00B4M\u00F8\u00D9\u00B6\u00DB\u00CE\u00AAw\u00BB3\u00E6\x02%\u00C7o\f\u00C73\x02\\.\u00BET7p\x03'\x01\x11]|fv\u00E2\u00C51y\u00AB\u00FC\x02@ m\x12\u00BBR|I\u0099|\u0085\x03 \u0085\x06Tt\nUfz\x1A\u00F9\x0F\u00B0'o@\u00B2\u00D1$\u009D\x00\u00BC@V\u00C0&k\x0F\x1F\x03\u008Cv\u008E\u00B0\u00E8f\t\u00A7\u0080\f\n\u00F8\x109\x06\x7F\n`o.a\u00C2T\u00F9\x18\u0088f!9]257\x1D\u00BD\x06\x0E\u00EBM\x01\u00D1|\u00D1w\u00EC\u00FA\u00DD\u00E6\u00BD^\u00C4\u008E\u00DCum,\u00B1\x03\u0088\u00D6\u0098\u00B1c\x07\u00A0.i3`sy\u00EA\u00A8AD\u00D7\x00\u00EB>b\u00C7R\u0082\u00B4\x0F\u00B2\ri\u00E8\u00BA\u00C6\u00B44\u00A0\u0092:?c\u00C7\u00EB^W\u00B6f\u0099o\u00E8\u00BA\u00DD\u00EE\u00D8\u0080\u0080\x18\x1F\u00B1s\x107\u009DI\u009B\u00B0\x0F`\u00E8vF\u00FC1\u00D2\u0088\u009D\u00D8\x1F]l\x1B!>\u008D\u00C4e\u00FF\x05\u00B4\u00D8\u00AD\u009A \u009D\u00E9_`\x01\u009A#\u00ED3v\x0E6\u00F5\x14\u009C\u008DT\u00BB4\u00F4\u00A0\u00B6H\u00B35\x12Q\u009C\u00B1\u00EBa#\x17\u00ED\u00A0]\x1A:\u00B54\u00BEi\u0096n\u00E03\u0081\u008B\u00F5\x05\u00BB\u00EBDih\u008D\u00EAE\x00\x00\x00\x00IEND\u00AEB`\u0082",
                                                    mouseDownPng = "\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x000\x00\x00\x000\b\x03\x00\x00\x00`\u00DC\t\u00B5\x00\x00\x00\x03sBIT\b\b\b\u00DB\u00E1O\u00E0\x00\x00\x01 PLTE\u00FF\u00FF\u00FF\u0087\u0087\u0087\u0081\u0081\u0081zzzxxxxxxvvvvvvtttfffbbbZZZYYYTTTJJJ333\u00FF\u00FF\u00FF\u00FB\u00FB\u00FB\u00F9\u00F9\u00F9\u00F7\u00F7\u00F7\u00F5\u00F5\u00F5\u00F1\u00F1\u00F1\u00EF\u00EF\u00EF\u00EB\u00EB\u00EB\u00E8\u00E8\u00E8\u00E7\u00E7\u00E7\u00E6\u00E6\u00E6\u00E1\u00E1\u00E1\u00DF\u00DF\u00DF\u00DD\u00DD\u00DD\u00D5\u00D5\u00D5\u00CF\u00CF\u00CF\u00CC\u00CC\u00CC\u00C9\u00C9\u00C9\u00C3\u00C3\u00C3\u00C1\u00C1\u00C1\u00BF\u00BF\u00BF\u00BD\u00BD\u00BD\u00BB\u00BB\u00BB\u00B8\u00B8\u00B8\u00B5\u00B5\u00B5\u00B3\u00B3\u00B3\u00AF\u00AF\u00AF\u00AC\u00AC\u00AC\u00A5\u00A5\u00A5\u00A1\u00A1\u00A1\u009F\u009F\u009F\u0099\u0099\u0099\u0094\u0094\u0094\u008F\u008F\u008F\u008B\u008B\u008B\u0089\u0089\u0089\u0087\u0087\u0087\u0081\u0081\u0081\x7F\x7F\x7F|||tttrrrpppmmmkkkbbb```___\\\\\\TTTPPPNNNJJJGGGEEE???:::777333000///,,,+++(((&&&$$$\"\"\"!!!\x1E\x1E\x1E\x1A\x1A\x1A\x18\x18\x18\x14\x14\x14\x12\x12\x12\x10\x10\x10\x0E\x0E\x0E\f\f\f\n\n\n\b\b\b\x04\x04\x04\x00\x00\x00\u00F5\x1D\u0087\x1B\x00\x00\x00`tRNS\x00\x11\x1133DDUU\u0099\u0099\u00BB\u00BB\u00BB\u00DD\u00EE\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00FF\u00F2\u00B3d\u00C0\x00\x00\x00\tpHYs\x00\x00\x0B\x12\x00\x00\x0B\x12\x01\u00D2\u00DD~\u00FC\x00\x00\x00\x16tEXtCreation Time\x0006/24/13\b\u00BDv\u0096\x00\x00\x00\x1CtEXtSoftware\x00Adobe Fireworks CS6\u00E8\u00BC\u00B2\u008C\x00\x00\x03:IDATH\u0089\u0095V\t[\u009B@\x10\u00DDj\u00D4\x18\r\x19\u008F\u00E0Q*\u00B5\u00AE\u009A\u00A2\u00A2\u00B4J[z\u00A0\u00A9\x15[\u00A9IZ\x12\u00DD\u0080\u00EC\u00FF\u00FF\x17\u009D\u00E1\u008811\u009A\u00BE\u00EF\x03\u00F6xo\u0099\u00DD}\u00EC\u00C0\u00D8 \u00A6JJ\u00A5\u00DD\u008D\u00E3n\u00BB\u00A2\u0094\u00A6\u0086\u00BA\x07P\u0098kDW\u00DF\x0E6V\x16\u0096\u00D7\u00F4\u00C3\u00D3\u00DF\u00DD\u00C6|\u00E1\t\u00FA\u00B4\".\x0FW\u00A0\x0F\u00ABG\u008D;ez\x04}\u00A2,\u00CE^\u00C3\x106/\u00A2\u00F2\u00C4c\u00FCb\u00EBzk\u0098\u008EX4\u00AE\u009A3\u00C3\u00FC\u00D9\u009BO+\u008F\u00F2\x11\u00D5\u008F\u00B7\u00A5A\u00FE\u00DC\u00CD\u00DBQt\u00C2a<7\u00C0\u00BF}<\u009C\x1E\u00B6[\x0F\x14\u00A5\u00CE\u00CE\u00D3|\u0080\u00AD\u00B8/\u00AAb\u00B8\u00F7\x1C\x1F\u00A3\u00BA\u00ED\u00CD|\u00A2\u00F5a\u00E1y\x01|i\u00BD\u00C8\x04\u00E5\u00AB1\u00E8\u00B8\u0089\u008Dr\u00B6\u00BF\u00DD7\x00\u00A6\u0089M\u00DC\u00C6\u009Bn\u00DB:\u0080FE\u0093\u0083f\u00D9\x06V\x10\x00\u00FBQj-\u00E5\f\u00FB<\u00A9\x02\u00F8\x12I\u00D2q\u00A4\x03\\R\u00A3\u00ADI\u00D7v\u00B1\u0092\b\x16/\x15\u00E2\x17\"\u00F2\u0083/-\u00D0\u0084\u00E4\u009A4H\u00A4e\x02\u00DB\u00A7`\u0092\n=#r\u00E2\u00FC\x15\u00CDX\u00D6}\u00B0\u00EB\u0092[\x01\u00F5\x04V&\u00E0\u00D2\u00D5H\u00C0\u00B9N\u00ED\u00C9f4\u00F7\u00A9(q\u00D4\u00C0\u0090\u00DC\u00F6 c&\x0F0\u00BC$>\u00CFs\u00A8\u00FD]\x03\u00BF\u00978YR\t\u0081#\u00C0\u00E3\u00A6\u00A0\u009A0s\x01\u00C5\u00A7\u00E7!\u00C1j4\u00C9JM*i\x12\x1C\u00E1\u0082g\u00A9\x02\u0087r\u0084\u00AA\u00E2\u009Ct\u00A9c<z\u009F\x00\u009A%\u00A6|\u00CD\u00A6\u00A5\u00E3tqHS\u00F8\u00BE\u00D0i`\x0F\u00B5n\u00E0\t7\t\u00C9K&QWX\u00E5\u0080\n*G\x11\u008E\u00A6\u0091\u0098C\u00DAD\x15\u009D\u00EE*G\u00A8\u00D4\u00F8\u00BE\u00C2:\x1Bcms\u0086\u009D6\x0B\u00AB\u00FF#\u00D0\u00BAL>\u00CF\u00EAC5fr\x1C\u00A3\u00F6\u00B0\x12\u00B3\u00EEZRR\u00D1-F2\u00AF\u00D4|\u00E8\u00BB\u00EC\u00D2l\u00DAk3\x15\u00BC\u00EA\u00B2\u00F6fR\"\x7F\x05\u00C2\u00EC\u0099\u00CF\u00C1\x1D\x17xI\x03\u00D7\x14 5\x00\u00D2\u00DA\u00ACr\u0094\t\u00F0\u00E6\n\u00C8\u00CDgH\u00E0\u0081\u00A4f.q\u009C\\\u0080\u00CB\u00AA\u009C\u00DE\x0B\u00D4{\u00F3\u00A9R\u00B7]\u00C1\u00ED:\u00BD[\u00A8\u00B9\u00E0\u00BB\u00C2J\u00D7\u00F7\x02\u00B87\x1F\u00F8\u0096gz\u0096gQO\u00E0\u00E6\u0082V\u0089ME\u00EB=\u0081!\u00D5\u00DC|\u00E0\u00B8R\u00B3]\u00A9\u00A7Qy\u00A9\u00E0e<\u00C9X\u00C3\u00CA\x05\u009A\u00EFAn>0\u0084\x0F\\\x04i\u008F+S\u00C1I\u0083\u00CE\u00B0_\u00A9\u00C0\u00F3e\x1D\u00D757\u009F\u008AK\x05\u00D2M\x05\u00AAH\x05\r\u00FA\u0080\n!\x1Dz\u00E4\u00AFls\u00B2\x02\u00B9N\u00D7R_\u0082\u0096x\u00B5\x16&\u00C9B\u00B9\x18w\u009F\x7F*\u00E91\x13n\u008F\u00C7\u00DF\u008F\u00B2\u00D4R\u00FE;\u00F2\u00A0\u00EF\u00C7jP\u00EE\x1D\u0095\u009F\u00C7\x11\u00B8\u00BD\u00A3\u0092\u00CD\u00DC\u008Eq\x18\x1F\u0084\u00C5\u00BE\u00F4#\u009EU\u00ECG\u00B3\x0F\x13J\u00EDi\u00FE^8\u0098\u0082n\u008E\x16G\u00D3\u0097\u00ACA>&\u00A1\u00D0\x19-\u00F8\x1A\u00CE\x0E\u00F2)\u00ED6G\u0084U\x0B\u00FE\x14\u0087\u00F9\u0094\u00D8\u00A3\x1F\u00BBK\u0083\u00EC\u00E5\u00DA\u00E5\u0088\u00C4\u008E\u0098R\u00EE\u009A\u00C7\u00EB\u00FD\u00F4\u00F5\u00E3\u00D6\u00E8_\x07\u00C2\u00E4\\3n\u009F\x1F\u00EFnT\u00AB\x1B\u00BB'\u00E7\u00ED\u00B89?\u00F9\x04=}\r\u00FE\u00FEtB)\u00C3\u00CE\u00A3\u00BF?\u00FF\x00\u009A\u00F2\u00DF\u00B8\u00A3s\u008B?\x00\x00\x00\x00IEND\u00AEB`\u0082",
                                                    mouseOverPng = "\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x000\x00\x00\x000\b\x03\x00\x00\x00`\u00DC\t\u00B5\x00\x00\x00\x03sBIT\b\b\b\u00DB\u00E1O\u00E0\x00\x00\x003PLTE\x00\x00\x00\u00EF\u00EF\u00EF\x7F\x7F\x7F333\u00BF\u00BF\u00BFOOO\u008F\u008F\u008F\x0F\x0F\x0F\u00CC\u00CC\u00CC\u00FF\u00FF\u00FF\u009F\u009F\u009F???ooo\u00DF\u00DF\u00DF\x1F\x1F\x1F\u00AF\u00AF\u00AF___\r\u00B3\u0089\u00CF\x00\x00\x00\tpHYs\x00\x00\x0B\x12\x00\x00\x0B\x12\x01\u00D2\u00DD~\u00FC\x00\x00\x00\x16tEXtCreation Time\x0006/24/13\b\u00BDv\u0096\x00\x00\x00\x1CtEXtSoftware\x00Adobe Fireworks CS6\u00E8\u00BC\u00B2\u008C\x00\x00\x01TIDATH\u0089\u00ED\u0094\u00EBr\u0084 \f\u0085\x13@!\"\u00E8\u00FB?mO\u00C0\u0082\u00BBKw\u00EAt:\u00ED\x0F\u00D9\x19$\u00D1\x0Fr9,\u00D1\u00E5!\u0097\u00C6\r\u00DC\u00C0_\x03\u00ECB\u0099S\u0099\u009D\u00BA\u0092\u00CEA\u00DD\u00C11,\f\u00EE\u0080\u00A3\u008Cy'#b({\u00BF\u00E8\x13\u009E\x18%\u00F8\u009C3\u00AC\x18c8\x03\u0084\r=\u0080\u0085f\u00E1\u009DR\x03\u00A6\u00CC\x12\u00AAu\ni#\u00BF\u00E3\u00DB\x1C\u00C5\u00EAQ\u0089\u00D6\x0Ex\u008D\u00F3\x190\u00B4{\u0099,\u00DEkT\u00E5\u00C3\x1E\u0092_\x19\u00961\u00E6\x01X\u00F0\u009BG\u0080\u00A4\u0095\u00EC\x00`\u00CA\u0094\u00E2CH(\u008A\u008D\u00FAv!\u00F7\x1C\u00D2ne\u00C2>\u0093\u00EFI\x07\u009C\u00E5`\x04\u0096\u0099\u00D23\u0080\u00AD\x11S\tc=\u00CA\u008A\u0085\u00A5\u00C8b\u00F1XkY\u0097\x0E\u00A0A\\\u00DA\u00D3\x1B'\u00C5s\u00F4\u00AD6.\u00FD@\x1A\u00FF\x17\u00A8\u00F9\u00A6\u0092\u00AC\x0B\u0087B\u00DDg\x11^\u0081C\u00A8\x1B\n\u00AC\u00BD\u00AB\n\u00C5\u00EC\u00BD\x1B\x02\u00ADg~\x124+\u0098C\x04\u00C2\u00EA\x18\x00M\x15\x13\x15\u00A3\x01\u0087B^\u0080\u00A6\u00BB\u0085\u00B6\x04\u00A3\n\u00CE\u00A8\u0090\u00B6\u00F7\x00\u00D3>\u0097+T\u0081X\u00AE\u00E3\u00BB\u0090p\u00CB\u00AC\u0095\x1E\u00D2\u00F6\u00C5\t-i\u00AC\u00B0<\u00E5\u00A0\u009B\u008C\u00CA\u00DA\u0084\u00CA\u00A4XU\u00A8\x021\u008F\u0081.\u00D4\u00F2\u00F7R\x15\u00AA\nN\u00E3>|k\u00DC\u00C0o\x01\x17\u00C7\x07.\u00F8D\u00BB\u00EC\u00CF\u00F8\u00DB\x00\x00\x00\x00IEND\u00AEB`\u0082";
                                                
                                                var PNGS = [defaultPng, notEnabledPng, mouseDownPng, mouseOverPng],
                                                    MOUSE_EVENTS = {mouseout:0, mouseup:3, mousedown:2, mouseover:3},
                                                    EV_BACK_TO_DEFAULT = {type:'mouseout'},
                                                    I_DISABLED = 1,
                                                    t, img;
                                                
                                                var fakeIconEventHandler = function FAKE_ICON_EH(/*MouseEvent|false*/ev)
                                                    {
                                                    var tp = ev && ev.type,
                                                        iVisible = tp ? MOUSE_EVENTS[tp] : I_DISABLED,
                                                        i;
                                                
                                                    if( !this.enabled && ev !== EV_BACK_TO_DEFAULT ) return;
                                                
                                                    if( FAKE_ICON_EH.down && 'mouseover'==tp ) return;
                                                
                                                    FAKE_ICON_EH.down = 'mousedown'==tp;
                                                    for( i=0 ; i < 4 ; ++i ){ this.children[i].visible = i==iVisible; }
                                                    };
                                                
                                                var w = new Window ('dialog', '', [50, 50, 300, 680]),
                                                    gp = w.add('group', [0,60,120,110]),
                                                    bn, ib;
                                                
                                                w.add('statictext {justify: "center", text: "Fake Icon Button"}', [0,15,120,32]);
                                                w.add('statictext {justify: "center", text: "No Mess On Press"}', [0,32,120,47]);
                                                w.add('statictext {justify: "center", text: "Real Icon Button"}', [130,15,250,32]);
                                                w.add('statictext {justify: "center", text: "Real Mess On Press"}', [130,32,250,47]);
                                                
                                                // Fake Icon Button
                                                // ---
                                                for( t = 0 ; t < 4 ; ++t )
                                                    {
                                                    gp.add('image', [0,0,120,50], PNGS[t]).visible = t==0;
                                                    }
                                                
                                                for( t in MOUSE_EVENTS )
                                                    {
                                                    if( !MOUSE_EVENTS.hasOwnProperty(t) ) continue;
                                                    gp.addEventListener(t, fakeIconEventHandler);
                                                    }
                                                
                                                gp.watch('enabled', function(_,ov,nv)
                                                    {
                                                    fakeIconEventHandler.call(this, nv && EV_BACK_TO_DEFAULT);
                                                    return nv;
                                                    });
                                                
                                                
                                                // True Icon Button
                                                // [Does not work properly in various environments, including CC]
                                                // ---
                                                ib = w.add('iconbutton', [130,60,250,110],
                                                    ScriptUI.newImage(defaultPng, notEnabledPng, mouseDownPng, mouseOverPng),
                                                    {style: 'toolbutton'}
                                                    );
                                                
                                                
                                                // Enable/disable button
                                                // ---
                                                (bn = w.add('button', [20,130, 100, 190], "Disable")).onClick = function ON_CLICK()
                                                    {
                                                    this.text = (ib.enabled=gp.enabled=("Enable"==this.text)) ? "Disable" : "Enable";
                                                    };
                                                
                                                
                                                // Legend
                                                // ---
                                                w.add('image',[0,200,120,260], defaultPng);
                                                w.add('image',[0,260,120,320], mouseDownPng);
                                                w.add('image',[0,330,120,390], mouseOverPng);
                                                w.add('image',[0,400,120,460], notEnabledPng);
                                                
                                                w.show();
                                                

                                                 

                                                @+

                                                Marc

                                                1 person found this helpful
                                                • 22. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
                                                  Trevorׅ Adobe Community Professional

                                                  Marc,

                                                   

                                                  Thanks works 100% super.

                                                   

                                                  I just added the line gp.addEventListener('click', '{alert("Well done!")}'); before the gp.watch line to finish it off.

                                                   

                                                  I never knew about the problems with the iconbuttons on cs as they work fine on Windows with CS5 and CS6, good to know.

                                                   

                                                  I had seen the non updated sprite button post before but avoided that approach because I unlike you like to hard code my widget positions into the palettes.

                                                   

                                                  There are pros and cons for that, but on the pro side, one can have more control and I use a function I made that makes it very easy to add grids of widgets so it's much easier for me to hard code them than not. (shall mail you the function later today)

                                                   

                                                  My challenge now is to functionalize your script in the form

                                                  myNewButton = fakeIconButton([30,30,100,100], myPNGs, myOnClickFunction);

                                                  Shouldn't be too tough.

                                                   

                                                  I was interested to note that you use const instead of var.

                                                  For use on a targetengine and a palette I would change to var.

                                                  Would you do something different?

                                                   

                                                  Thanks again,

                                                   

                                                  Trevor

                                                  • 23. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
                                                    Trevorׅ Adobe Community Professional

                                                    @Harbs

                                                     

                                                    another one to send off to the engineers

                                                     

                                                    // Sript by Marc CRASH by Trevor
                                                    #targetengine ManageSingletonPalette
                                                    
                                                    $.UserInterface || ($.UserInterface = function F(/*-1=destroy 0=restore 1=rebuild*/FLAG)
                                                    //--------------------------------------
                                                    {
                                                        F.W || (F.W=Window.find("palette", "My Palette"));
                                                    
                                                        // Destroy?
                                                        // ---
                                                        if( F.W && FLAG )
                                                            {
                                                            F.W.visible && F.W.close();
                                                            F.W = null;
                                                            delete F.W;
                                                            }
                                                    
                                                        if( -1===FLAG ) return;
                                                    
                                                        // Create?
                                                        // ---
                                                        if( !F.W )
                                                            {
                                                            F.W = new Window('palette', "My Palette",[100,100,350,350]);
                                                            myEditText = F.W.add('edittext', [10,50,240,200], "\rWARNING!!!!\r\rCLICK THE  BUTTON TO CRASH CC\r\rYOU HAVE BEEN WARNED!!!\r\rSAFE ON CS", {multiline: true});  
                                                            crashCloseButton =  F.W.add('button', [10,10,240,40],"CRASH CC / Close On CS");   // CRASH BUTTON BY TREVOR
                                                            crashCloseButton.onClick = function () {$.UserInterface(-1)};
                                                            }
                                                    
                                                        F.W.visible || F.W.show();
                                                    });
                                                    
                                                    $.UserInterface();  // use $.UserInterface() to show, $.UserInterface(-1) to KILL the palette, $.UserInterface(1) to REBUILD it from scratch
                                                    
                                                    • 25. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
                                                      Marc Autret Level 4

                                                      Hi Trevor,

                                                       

                                                      The crash is caused by F.W=null; and delete F.W; in the Destroy block. Remove these two lines and you won't get the bug anymore—of course our $.UserInterface wrapper is then broken.

                                                       

                                                      It's true that CS6 supports your code while CC crashes, but you have to consider how dangerous your onClick handler is. In fact, just replace your $.UserInterface(-1) by F.W=null; and you'll get the crash again:

                                                       

                                                      crashCloseButton.onClick = function(){ F.W=null; }; // CC CRASH
                                                      

                                                       

                                                      ScriptUI CC is very sensible to nullification or deletion of deep recursive references, especially when the following conditions are met:

                                                      • you use a palette Window in a persistent session;

                                                      • you have a child.onXXX event handler that attempts to kill a reference to the parent window;

                                                      • the reference that child.onXXX attempts to kill is internally referred to using an outer lexical [Workspace].

                                                       

                                                      Compare the code, above, with the following:

                                                       

                                                      crashCloseButton.onClick = function (){ this.window=null; }; // NO CRASH
                                                      

                                                       

                                                      Technically, this is the same statement—as  this.window===F.W strictly—but the second scheme does not create an extra closure context since it does not access to the F.W property.

                                                       

                                                      Also, it has been often observed that the onXXX shortcuts, which are not actual event listener, may introduce memory leaks or instability when they rely on a closure. According to my tests, this alternative code will not cause a crash:

                                                       

                                                      crashCloseButton.addEventListener('mousedown', function(){ F.W=null; }); // NO CRASH
                                                      

                                                       

                                                      so you can even use something like

                                                       

                                                      crashCloseButton.addEventListener('mousedown', function(){ F(-1); });
                                                      

                                                       

                                                      and have the expected result in CC.

                                                       

                                                      Anyway I don't find it elegant that $.UserInterface invokes itself from a child widget event listener. In design terms, a particular widget shouldn't have to know that its parent window is managed through a wrapper. So I'd prefer to use a basic myButton.onClick = function(){ this.window.close(); } and then improve the wrapper so that it can intelligently detect that the window is not visible anymore although F.W has still a non-NULL value. This shouldn't be complicate, I think.

                                                       

                                                      @+

                                                      Marc

                                                       

                                                      EDIT: Of course the statement myButton.onClick = function(){ this.window.close(); } is not recommended if the block it belongs to may be called multiple times (as this then creates a new function on each call). Better is to have somewhere a constant function onClickHandler = function(){ this.window.close(); } and then to use myButton.onClick = onClickHandler.

                                                      1 person found this helpful
                                                      • 26. Re: ID CC SUI - Insane Daft Crazy Cuckoo Stupid Useless Idiotic
                                                        Trevorׅ Adobe Community Professional

                                                        Hi Marc,

                                                         

                                                        Thanks for the feedback.

                                                         

                                                        Regarding your fake button script which I now made into a function and then discovered that the line I added before the gp.watch line

                                                         gp.addEventListener('click', '{alert("Well done!")}'); 
                                                        

                                                        Only works this time on CC but not CS!!!.


                                                         

                                                        gp.addEventListener('mouseup', '{alert("Well done!")}');
                                                        

                                                         

                                                        however works on CS but for CC will trigger the alert twice.

                                                         

                                                        So I figured out the sensible (I think) way of doing it is to add the eventListener to the mousedown image and not the group.

                                                         

                                                         

                                                        gp.children[2].addEventListener('mouseup', '{alert("Well Done!!")}');

                                                         

                                                         

                                                        Works great on both CC and CS.

                                                         

                                                        Thanks a million

                                                         

                                                        Trevor